@bbearai/react 0.4.1 → 0.4.3
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/README.md +21 -1
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +467 -86
- package/dist/index.mjs +461 -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);
|
|
@@ -202,6 +214,14 @@ function BugBearProvider({ config, children, enabled = true }) {
|
|
|
202
214
|
initializeBugBear(newClient);
|
|
203
215
|
}
|
|
204
216
|
}, [enabled, config, initializeBugBear]);
|
|
217
|
+
useEffect(() => {
|
|
218
|
+
if (!client || !isTester || !isQAEnabled) return;
|
|
219
|
+
const interval = setInterval(() => {
|
|
220
|
+
refreshThreads();
|
|
221
|
+
refreshIssueCounts();
|
|
222
|
+
}, 3e4);
|
|
223
|
+
return () => clearInterval(interval);
|
|
224
|
+
}, [client, isTester, isQAEnabled, refreshThreads, refreshIssueCounts]);
|
|
205
225
|
const currentAssignment = assignments.find(
|
|
206
226
|
(a) => a.status === "in_progress"
|
|
207
227
|
) || assignments.find(
|
|
@@ -241,6 +261,9 @@ function BugBearProvider({ config, children, enabled = true }) {
|
|
|
241
261
|
markAsRead,
|
|
242
262
|
createThread,
|
|
243
263
|
uploadImage,
|
|
264
|
+
// Issue tracking
|
|
265
|
+
issueCounts,
|
|
266
|
+
refreshIssueCounts,
|
|
244
267
|
onError: config.onError
|
|
245
268
|
},
|
|
246
269
|
children
|
|
@@ -249,7 +272,7 @@ function BugBearProvider({ config, children, enabled = true }) {
|
|
|
249
272
|
}
|
|
250
273
|
|
|
251
274
|
// src/BugBearPanel.tsx
|
|
252
|
-
import { useState as
|
|
275
|
+
import { useState as useState11, useRef as useRef3, useEffect as useEffect8, useCallback as useCallback5 } from "react";
|
|
253
276
|
import { createPortal } from "react-dom";
|
|
254
277
|
|
|
255
278
|
// src/widget/navigation.ts
|
|
@@ -369,10 +392,11 @@ function getThreadTypeIcon(type) {
|
|
|
369
392
|
import { useEffect as useEffect2 } from "react";
|
|
370
393
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
371
394
|
function HomeScreen({ nav }) {
|
|
372
|
-
const { assignments, unreadCount, threads, refreshAssignments, refreshThreads } = useBugBear();
|
|
395
|
+
const { assignments, unreadCount, threads, refreshAssignments, refreshThreads, issueCounts, refreshIssueCounts } = useBugBear();
|
|
373
396
|
useEffect2(() => {
|
|
374
397
|
refreshAssignments();
|
|
375
398
|
refreshThreads();
|
|
399
|
+
refreshIssueCounts();
|
|
376
400
|
}, []);
|
|
377
401
|
const pendingAssignments = assignments.filter((a) => a.status === "pending" || a.status === "in_progress");
|
|
378
402
|
const pendingCount = pendingAssignments.length;
|
|
@@ -657,6 +681,89 @@ function HomeScreen({ nav }) {
|
|
|
657
681
|
]
|
|
658
682
|
}
|
|
659
683
|
),
|
|
684
|
+
/* @__PURE__ */ jsxs("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr 1fr", gap: 10, marginBottom: 20 }, children: [
|
|
685
|
+
/* @__PURE__ */ jsxs(
|
|
686
|
+
"div",
|
|
687
|
+
{
|
|
688
|
+
role: "button",
|
|
689
|
+
tabIndex: 0,
|
|
690
|
+
onClick: () => nav.push({ name: "ISSUE_LIST", category: "open" }),
|
|
691
|
+
onKeyDown: (e) => {
|
|
692
|
+
if (e.key === "Enter" || e.key === " ") nav.push({ name: "ISSUE_LIST", category: "open" });
|
|
693
|
+
},
|
|
694
|
+
style: {
|
|
695
|
+
backgroundColor: "#27272a",
|
|
696
|
+
border: "1px solid #3f3f46",
|
|
697
|
+
borderTop: "3px solid #f97316",
|
|
698
|
+
borderRadius: 10,
|
|
699
|
+
padding: "12px 8px",
|
|
700
|
+
display: "flex",
|
|
701
|
+
flexDirection: "column",
|
|
702
|
+
alignItems: "center",
|
|
703
|
+
cursor: "pointer",
|
|
704
|
+
userSelect: "none"
|
|
705
|
+
},
|
|
706
|
+
children: [
|
|
707
|
+
/* @__PURE__ */ jsx2("span", { style: { fontSize: 22, fontWeight: 700, color: "#f97316" }, children: issueCounts.open }),
|
|
708
|
+
/* @__PURE__ */ jsx2("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Open" })
|
|
709
|
+
]
|
|
710
|
+
}
|
|
711
|
+
),
|
|
712
|
+
/* @__PURE__ */ jsxs(
|
|
713
|
+
"div",
|
|
714
|
+
{
|
|
715
|
+
role: "button",
|
|
716
|
+
tabIndex: 0,
|
|
717
|
+
onClick: () => nav.push({ name: "ISSUE_LIST", category: "done" }),
|
|
718
|
+
onKeyDown: (e) => {
|
|
719
|
+
if (e.key === "Enter" || e.key === " ") nav.push({ name: "ISSUE_LIST", category: "done" });
|
|
720
|
+
},
|
|
721
|
+
style: {
|
|
722
|
+
backgroundColor: "#27272a",
|
|
723
|
+
border: "1px solid #3f3f46",
|
|
724
|
+
borderTop: "3px solid #22c55e",
|
|
725
|
+
borderRadius: 10,
|
|
726
|
+
padding: "12px 8px",
|
|
727
|
+
display: "flex",
|
|
728
|
+
flexDirection: "column",
|
|
729
|
+
alignItems: "center",
|
|
730
|
+
cursor: "pointer",
|
|
731
|
+
userSelect: "none"
|
|
732
|
+
},
|
|
733
|
+
children: [
|
|
734
|
+
/* @__PURE__ */ jsx2("span", { style: { fontSize: 22, fontWeight: 700, color: "#22c55e" }, children: issueCounts.done }),
|
|
735
|
+
/* @__PURE__ */ jsx2("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Done" })
|
|
736
|
+
]
|
|
737
|
+
}
|
|
738
|
+
),
|
|
739
|
+
/* @__PURE__ */ jsxs(
|
|
740
|
+
"div",
|
|
741
|
+
{
|
|
742
|
+
role: "button",
|
|
743
|
+
tabIndex: 0,
|
|
744
|
+
onClick: () => nav.push({ name: "ISSUE_LIST", category: "reopened" }),
|
|
745
|
+
onKeyDown: (e) => {
|
|
746
|
+
if (e.key === "Enter" || e.key === " ") nav.push({ name: "ISSUE_LIST", category: "reopened" });
|
|
747
|
+
},
|
|
748
|
+
style: {
|
|
749
|
+
backgroundColor: "#27272a",
|
|
750
|
+
border: "1px solid #3f3f46",
|
|
751
|
+
borderTop: "3px solid #ef4444",
|
|
752
|
+
borderRadius: 10,
|
|
753
|
+
padding: "12px 8px",
|
|
754
|
+
display: "flex",
|
|
755
|
+
flexDirection: "column",
|
|
756
|
+
alignItems: "center",
|
|
757
|
+
cursor: "pointer",
|
|
758
|
+
userSelect: "none"
|
|
759
|
+
},
|
|
760
|
+
children: [
|
|
761
|
+
/* @__PURE__ */ jsx2("span", { style: { fontSize: 22, fontWeight: 700, color: "#ef4444" }, children: issueCounts.reopened }),
|
|
762
|
+
/* @__PURE__ */ jsx2("span", { style: { fontSize: 11, fontWeight: 600, color: "#a1a1aa", marginTop: 2 }, children: "Reopened" })
|
|
763
|
+
]
|
|
764
|
+
}
|
|
765
|
+
)
|
|
766
|
+
] }),
|
|
660
767
|
totalTests > 0 && /* @__PURE__ */ jsxs("div", { style: { marginBottom: 16 }, children: [
|
|
661
768
|
/* @__PURE__ */ jsx2(
|
|
662
769
|
"div",
|
|
@@ -696,6 +803,7 @@ function HomeScreen({ nav }) {
|
|
|
696
803
|
onClick: () => {
|
|
697
804
|
refreshAssignments();
|
|
698
805
|
refreshThreads();
|
|
806
|
+
refreshIssueCounts();
|
|
699
807
|
},
|
|
700
808
|
style: {
|
|
701
809
|
background: "none",
|
|
@@ -1579,36 +1687,21 @@ function TestListScreen({ nav }) {
|
|
|
1579
1687
|
const filterAssignment = (a) => {
|
|
1580
1688
|
if (roleFilter && a.testCase.role?.id !== roleFilter) return false;
|
|
1581
1689
|
if (filter === "pending") return a.status === "pending" || a.status === "in_progress";
|
|
1582
|
-
if (filter === "
|
|
1690
|
+
if (filter === "done") return a.status === "passed";
|
|
1691
|
+
if (filter === "reopened") return a.status === "failed";
|
|
1583
1692
|
return true;
|
|
1584
1693
|
};
|
|
1585
1694
|
const pendingCount = assignments.filter(
|
|
1586
1695
|
(a) => a.status === "pending" || a.status === "in_progress"
|
|
1587
1696
|
).length;
|
|
1588
|
-
const doneCount = assignments.filter(
|
|
1589
|
-
|
|
1590
|
-
).length;
|
|
1697
|
+
const doneCount = assignments.filter((a) => a.status === "passed").length;
|
|
1698
|
+
const reopenedCount = assignments.filter((a) => a.status === "failed").length;
|
|
1591
1699
|
const filters = [
|
|
1592
1700
|
{ key: "all", label: "All", count: assignments.length },
|
|
1593
1701
|
{ key: "pending", label: "To Do", count: pendingCount },
|
|
1594
|
-
{ key: "
|
|
1702
|
+
{ key: "done", label: "Done", count: doneCount },
|
|
1703
|
+
{ key: "reopened", label: "Re Opened", count: reopenedCount }
|
|
1595
1704
|
];
|
|
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
1705
|
return /* @__PURE__ */ jsxs3("div", { children: [
|
|
1613
1706
|
/* @__PURE__ */ jsx4("div", { style: { display: "flex", gap: 8, marginBottom: availableRoles.length >= 2 ? 8 : 16 }, children: filters.map((f) => /* @__PURE__ */ jsxs3(
|
|
1614
1707
|
"button",
|
|
@@ -1909,10 +2002,14 @@ function TestListScreen({ nav }) {
|
|
|
1909
2002
|
{
|
|
1910
2003
|
style: {
|
|
1911
2004
|
fontSize: 10,
|
|
1912
|
-
|
|
1913
|
-
fontWeight: 500,
|
|
2005
|
+
fontWeight: 600,
|
|
1914
2006
|
marginLeft: 8,
|
|
1915
|
-
flexShrink: 0
|
|
2007
|
+
flexShrink: 0,
|
|
2008
|
+
padding: "3px 8px",
|
|
2009
|
+
borderRadius: 6,
|
|
2010
|
+
color: assignment.status === "passed" ? "#4ade80" : assignment.status === "failed" ? "#f87171" : assignment.status === "in_progress" ? "#60a5fa" : "#d4d4d8",
|
|
2011
|
+
backgroundColor: assignment.status === "passed" ? "#14532d" : assignment.status === "failed" ? "#450a0a" : assignment.status === "in_progress" ? "#172554" : "#27272a",
|
|
2012
|
+
border: assignment.status === "passed" ? "1px solid #166534" : assignment.status === "failed" ? "1px solid #7f1d1d" : assignment.status === "in_progress" ? "1px solid #1e3a5f" : "1px solid #3f3f46"
|
|
1916
2013
|
},
|
|
1917
2014
|
children: badge.label
|
|
1918
2015
|
}
|
|
@@ -1937,8 +2034,8 @@ function TestListScreen({ nav }) {
|
|
|
1937
2034
|
padding: 32
|
|
1938
2035
|
},
|
|
1939
2036
|
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 === "
|
|
2037
|
+
/* @__PURE__ */ jsx4("span", { style: { fontSize: 32, marginBottom: 8 }, children: filter === "pending" ? "\u{1F389}" : filter === "reopened" ? "\u{1F44D}" : "\u{1F4CB}" }),
|
|
2038
|
+
/* @__PURE__ */ jsx4("span", { style: { fontSize: 14, color: colors.textMuted }, children: filter === "pending" ? "All tests completed!" : filter === "done" ? "No passed tests yet" : filter === "reopened" ? "No reopened issues" : "No tests assigned" })
|
|
1942
2039
|
]
|
|
1943
2040
|
}
|
|
1944
2041
|
),
|
|
@@ -4015,13 +4112,289 @@ var styles4 = {
|
|
|
4015
4112
|
}
|
|
4016
4113
|
};
|
|
4017
4114
|
|
|
4115
|
+
// src/widget/screens/IssueListScreen.tsx
|
|
4116
|
+
import { useState as useState10, useEffect as useEffect7 } from "react";
|
|
4117
|
+
import { jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
4118
|
+
var CATEGORY_CONFIG = {
|
|
4119
|
+
open: { label: "Open Issues", accent: "#f97316", emptyIcon: "\u2705", emptyText: "No open issues" },
|
|
4120
|
+
done: { label: "Done", accent: "#22c55e", emptyIcon: "\u{1F389}", emptyText: "No completed issues yet" },
|
|
4121
|
+
reopened: { label: "Reopened", accent: "#ef4444", emptyIcon: "\u{1F44D}", emptyText: "No reopened issues" }
|
|
4122
|
+
};
|
|
4123
|
+
var SEVERITY_COLORS = {
|
|
4124
|
+
critical: "#ef4444",
|
|
4125
|
+
high: "#f97316",
|
|
4126
|
+
medium: "#eab308",
|
|
4127
|
+
low: "#71717a"
|
|
4128
|
+
};
|
|
4129
|
+
function IssueListScreen({ nav, category }) {
|
|
4130
|
+
const { client } = useBugBear();
|
|
4131
|
+
const [issues, setIssues] = useState10([]);
|
|
4132
|
+
const [loading, setLoading] = useState10(true);
|
|
4133
|
+
const config = CATEGORY_CONFIG[category];
|
|
4134
|
+
useEffect7(() => {
|
|
4135
|
+
let cancelled = false;
|
|
4136
|
+
setLoading(true);
|
|
4137
|
+
(async () => {
|
|
4138
|
+
if (!client) return;
|
|
4139
|
+
const data = await client.getIssues(category);
|
|
4140
|
+
if (!cancelled) {
|
|
4141
|
+
setIssues(data);
|
|
4142
|
+
setLoading(false);
|
|
4143
|
+
}
|
|
4144
|
+
})();
|
|
4145
|
+
return () => {
|
|
4146
|
+
cancelled = true;
|
|
4147
|
+
};
|
|
4148
|
+
}, [client, category]);
|
|
4149
|
+
if (loading) {
|
|
4150
|
+
return /* @__PURE__ */ jsx14("div", { style: { padding: "40px 0", textAlign: "center" }, children: /* @__PURE__ */ jsx14("div", { style: { color: colors.textMuted, fontSize: 14 }, children: "Loading..." }) });
|
|
4151
|
+
}
|
|
4152
|
+
if (issues.length === 0) {
|
|
4153
|
+
return /* @__PURE__ */ jsxs13("div", { style: { padding: "40px 0", textAlign: "center" }, children: [
|
|
4154
|
+
/* @__PURE__ */ jsx14("div", { style: { fontSize: 36, marginBottom: 8 }, children: config.emptyIcon }),
|
|
4155
|
+
/* @__PURE__ */ jsx14("div", { style: { color: colors.textMuted, fontSize: 14 }, children: config.emptyText })
|
|
4156
|
+
] });
|
|
4157
|
+
}
|
|
4158
|
+
return /* @__PURE__ */ jsx14("div", { children: issues.map((issue) => /* @__PURE__ */ jsxs13(
|
|
4159
|
+
"div",
|
|
4160
|
+
{
|
|
4161
|
+
role: "button",
|
|
4162
|
+
tabIndex: 0,
|
|
4163
|
+
onClick: () => nav.push({ name: "ISSUE_DETAIL", issue }),
|
|
4164
|
+
onKeyDown: (e) => {
|
|
4165
|
+
if (e.key === "Enter" || e.key === " ") nav.push({ name: "ISSUE_DETAIL", issue });
|
|
4166
|
+
},
|
|
4167
|
+
style: {
|
|
4168
|
+
backgroundColor: colors.card,
|
|
4169
|
+
border: `1px solid ${colors.border}`,
|
|
4170
|
+
borderRadius: 10,
|
|
4171
|
+
padding: "12px 14px",
|
|
4172
|
+
marginBottom: 8,
|
|
4173
|
+
cursor: "pointer",
|
|
4174
|
+
userSelect: "none"
|
|
4175
|
+
},
|
|
4176
|
+
children: [
|
|
4177
|
+
/* @__PURE__ */ jsxs13("div", { style: { display: "flex", alignItems: "flex-start", gap: 8 }, children: [
|
|
4178
|
+
issue.severity && /* @__PURE__ */ jsx14(
|
|
4179
|
+
"span",
|
|
4180
|
+
{
|
|
4181
|
+
style: {
|
|
4182
|
+
width: 8,
|
|
4183
|
+
height: 8,
|
|
4184
|
+
borderRadius: 4,
|
|
4185
|
+
backgroundColor: SEVERITY_COLORS[issue.severity] || colors.textDim,
|
|
4186
|
+
flexShrink: 0,
|
|
4187
|
+
marginTop: 5
|
|
4188
|
+
}
|
|
4189
|
+
}
|
|
4190
|
+
),
|
|
4191
|
+
/* @__PURE__ */ jsx14("span", { style: {
|
|
4192
|
+
fontSize: 13,
|
|
4193
|
+
fontWeight: 600,
|
|
4194
|
+
color: colors.textPrimary,
|
|
4195
|
+
flex: 1,
|
|
4196
|
+
overflow: "hidden",
|
|
4197
|
+
textOverflow: "ellipsis",
|
|
4198
|
+
whiteSpace: "nowrap"
|
|
4199
|
+
}, children: issue.title })
|
|
4200
|
+
] }),
|
|
4201
|
+
/* @__PURE__ */ jsxs13("div", { style: { display: "flex", justifyContent: "space-between", marginTop: 6 }, children: [
|
|
4202
|
+
issue.route && /* @__PURE__ */ jsx14("span", { style: { fontSize: 11, color: colors.textDim, maxWidth: "60%", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: issue.route }),
|
|
4203
|
+
/* @__PURE__ */ jsx14("span", { style: { fontSize: 11, color: colors.textDim, marginLeft: "auto" }, children: formatRelativeTime(issue.updatedAt) })
|
|
4204
|
+
] }),
|
|
4205
|
+
category === "done" && issue.verifiedByName && /* @__PURE__ */ jsxs13("div", { style: {
|
|
4206
|
+
display: "inline-flex",
|
|
4207
|
+
alignItems: "center",
|
|
4208
|
+
gap: 4,
|
|
4209
|
+
backgroundColor: "#14532d",
|
|
4210
|
+
border: "1px solid #166534",
|
|
4211
|
+
borderRadius: 6,
|
|
4212
|
+
padding: "2px 8px",
|
|
4213
|
+
marginTop: 6,
|
|
4214
|
+
fontSize: 10,
|
|
4215
|
+
fontWeight: 600,
|
|
4216
|
+
color: "#4ade80"
|
|
4217
|
+
}, children: [
|
|
4218
|
+
"\u2714 Verified by ",
|
|
4219
|
+
issue.verifiedByName
|
|
4220
|
+
] }),
|
|
4221
|
+
category === "reopened" && issue.originalBugTitle && /* @__PURE__ */ jsxs13("div", { style: {
|
|
4222
|
+
display: "inline-flex",
|
|
4223
|
+
alignItems: "center",
|
|
4224
|
+
gap: 4,
|
|
4225
|
+
backgroundColor: "#422006",
|
|
4226
|
+
border: "1px solid #854d0e",
|
|
4227
|
+
borderRadius: 6,
|
|
4228
|
+
padding: "2px 8px",
|
|
4229
|
+
marginTop: 6,
|
|
4230
|
+
fontSize: 10,
|
|
4231
|
+
fontWeight: 600,
|
|
4232
|
+
color: "#fbbf24",
|
|
4233
|
+
maxWidth: "100%",
|
|
4234
|
+
overflow: "hidden",
|
|
4235
|
+
textOverflow: "ellipsis",
|
|
4236
|
+
whiteSpace: "nowrap"
|
|
4237
|
+
}, children: [
|
|
4238
|
+
"\u{1F504} Retest of: ",
|
|
4239
|
+
issue.originalBugTitle
|
|
4240
|
+
] })
|
|
4241
|
+
]
|
|
4242
|
+
},
|
|
4243
|
+
issue.id
|
|
4244
|
+
)) });
|
|
4245
|
+
}
|
|
4246
|
+
|
|
4247
|
+
// src/widget/screens/IssueDetailScreen.tsx
|
|
4248
|
+
import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
4249
|
+
var STATUS_LABELS = {
|
|
4250
|
+
new: { label: "New", bg: "#1e3a5f", color: "#60a5fa" },
|
|
4251
|
+
triaging: { label: "Triaging", bg: "#1e3a5f", color: "#60a5fa" },
|
|
4252
|
+
confirmed: { label: "Confirmed", bg: "#422006", color: "#fbbf24" },
|
|
4253
|
+
in_progress: { label: "In Progress", bg: "#1e3a5f", color: "#60a5fa" },
|
|
4254
|
+
fixed: { label: "Fixed", bg: "#14532d", color: "#4ade80" },
|
|
4255
|
+
ready_to_test: { label: "Ready to Test", bg: "#422006", color: "#fbbf24" },
|
|
4256
|
+
verified: { label: "Verified", bg: "#14532d", color: "#4ade80" },
|
|
4257
|
+
resolved: { label: "Resolved", bg: "#14532d", color: "#4ade80" },
|
|
4258
|
+
reviewed: { label: "Reviewed", bg: "#14532d", color: "#4ade80" },
|
|
4259
|
+
closed: { label: "Closed", bg: "#27272a", color: "#71717a" },
|
|
4260
|
+
wont_fix: { label: "Won't Fix", bg: "#27272a", color: "#71717a" },
|
|
4261
|
+
duplicate: { label: "Duplicate", bg: "#27272a", color: "#71717a" }
|
|
4262
|
+
};
|
|
4263
|
+
var SEVERITY_CONFIG = {
|
|
4264
|
+
critical: { label: "Critical", color: "#ef4444", bg: "#7f1d1d" },
|
|
4265
|
+
high: { label: "High", color: "#f97316", bg: "#431407" },
|
|
4266
|
+
medium: { label: "Medium", color: "#eab308", bg: "#422006" },
|
|
4267
|
+
low: { label: "Low", color: "#71717a", bg: "#27272a" }
|
|
4268
|
+
};
|
|
4269
|
+
function IssueDetailScreen({ nav, issue }) {
|
|
4270
|
+
const statusConfig = STATUS_LABELS[issue.status] || { label: issue.status, bg: "#27272a", color: "#a1a1aa" };
|
|
4271
|
+
const severityConfig = issue.severity ? SEVERITY_CONFIG[issue.severity] : null;
|
|
4272
|
+
return /* @__PURE__ */ jsxs14("div", { children: [
|
|
4273
|
+
/* @__PURE__ */ jsxs14("div", { style: { display: "flex", gap: 8, flexWrap: "wrap", marginBottom: 12 }, children: [
|
|
4274
|
+
/* @__PURE__ */ jsx15("span", { style: {
|
|
4275
|
+
backgroundColor: statusConfig.bg,
|
|
4276
|
+
color: statusConfig.color,
|
|
4277
|
+
fontSize: 11,
|
|
4278
|
+
fontWeight: 600,
|
|
4279
|
+
padding: "3px 10px",
|
|
4280
|
+
borderRadius: 6
|
|
4281
|
+
}, children: statusConfig.label }),
|
|
4282
|
+
severityConfig && /* @__PURE__ */ jsx15("span", { style: {
|
|
4283
|
+
backgroundColor: severityConfig.bg,
|
|
4284
|
+
color: severityConfig.color,
|
|
4285
|
+
fontSize: 11,
|
|
4286
|
+
fontWeight: 600,
|
|
4287
|
+
padding: "3px 10px",
|
|
4288
|
+
borderRadius: 6
|
|
4289
|
+
}, children: severityConfig.label })
|
|
4290
|
+
] }),
|
|
4291
|
+
/* @__PURE__ */ jsx15("h3", { style: { fontSize: 16, fontWeight: 700, color: colors.textPrimary, margin: "0 0 8px 0", lineHeight: 1.3 }, children: issue.title }),
|
|
4292
|
+
issue.route && /* @__PURE__ */ jsx15("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 12 }, children: issue.route }),
|
|
4293
|
+
issue.description && /* @__PURE__ */ jsx15("div", { style: {
|
|
4294
|
+
backgroundColor: colors.card,
|
|
4295
|
+
border: `1px solid ${colors.border}`,
|
|
4296
|
+
borderRadius: 8,
|
|
4297
|
+
padding: 12,
|
|
4298
|
+
marginBottom: 12,
|
|
4299
|
+
fontSize: 13,
|
|
4300
|
+
color: colors.textSecondary,
|
|
4301
|
+
lineHeight: 1.5,
|
|
4302
|
+
whiteSpace: "pre-wrap",
|
|
4303
|
+
wordBreak: "break-word"
|
|
4304
|
+
}, children: issue.description }),
|
|
4305
|
+
issue.verifiedByName && /* @__PURE__ */ jsxs14("div", { style: {
|
|
4306
|
+
backgroundColor: "#14532d",
|
|
4307
|
+
border: "1px solid #166534",
|
|
4308
|
+
borderRadius: 8,
|
|
4309
|
+
padding: 12,
|
|
4310
|
+
marginBottom: 12
|
|
4311
|
+
}, children: [
|
|
4312
|
+
/* @__PURE__ */ jsxs14("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
|
|
4313
|
+
/* @__PURE__ */ jsx15("span", { style: { fontSize: 16 }, children: "\u2705" }),
|
|
4314
|
+
/* @__PURE__ */ jsx15("span", { style: { fontSize: 13, fontWeight: 600, color: "#4ade80" }, children: "Retesting Proof" })
|
|
4315
|
+
] }),
|
|
4316
|
+
/* @__PURE__ */ jsxs14("div", { style: { fontSize: 12, color: "#86efac" }, children: [
|
|
4317
|
+
"Verified by ",
|
|
4318
|
+
/* @__PURE__ */ jsx15("strong", { children: issue.verifiedByName }),
|
|
4319
|
+
issue.verifiedAt && /* @__PURE__ */ jsxs14("span", { children: [
|
|
4320
|
+
" on ",
|
|
4321
|
+
new Date(issue.verifiedAt).toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" })
|
|
4322
|
+
] })
|
|
4323
|
+
] })
|
|
4324
|
+
] }),
|
|
4325
|
+
issue.originalBugTitle && /* @__PURE__ */ jsxs14("div", { style: {
|
|
4326
|
+
backgroundColor: "#422006",
|
|
4327
|
+
border: "1px solid #854d0e",
|
|
4328
|
+
borderRadius: 8,
|
|
4329
|
+
padding: 12,
|
|
4330
|
+
marginBottom: 12
|
|
4331
|
+
}, children: [
|
|
4332
|
+
/* @__PURE__ */ jsxs14("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
|
|
4333
|
+
/* @__PURE__ */ jsx15("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
|
|
4334
|
+
/* @__PURE__ */ jsx15("span", { style: { fontSize: 13, fontWeight: 600, color: "#fbbf24" }, children: "Original Bug" })
|
|
4335
|
+
] }),
|
|
4336
|
+
/* @__PURE__ */ jsxs14("div", { style: { fontSize: 12, color: "#fde68a" }, children: [
|
|
4337
|
+
"Retest of: ",
|
|
4338
|
+
/* @__PURE__ */ jsx15("strong", { children: issue.originalBugTitle })
|
|
4339
|
+
] })
|
|
4340
|
+
] }),
|
|
4341
|
+
issue.screenshotUrls && issue.screenshotUrls.length > 0 && /* @__PURE__ */ jsxs14("div", { style: { marginBottom: 12 }, children: [
|
|
4342
|
+
/* @__PURE__ */ jsxs14("div", { style: { fontSize: 12, fontWeight: 600, color: colors.textMuted, marginBottom: 8 }, children: [
|
|
4343
|
+
"Screenshots (",
|
|
4344
|
+
issue.screenshotUrls.length,
|
|
4345
|
+
")"
|
|
4346
|
+
] }),
|
|
4347
|
+
/* @__PURE__ */ jsx15("div", { style: { display: "flex", gap: 8, overflowX: "auto" }, children: issue.screenshotUrls.map((url, i) => /* @__PURE__ */ jsx15(
|
|
4348
|
+
"a",
|
|
4349
|
+
{
|
|
4350
|
+
href: url,
|
|
4351
|
+
target: "_blank",
|
|
4352
|
+
rel: "noopener noreferrer",
|
|
4353
|
+
style: { flexShrink: 0 },
|
|
4354
|
+
children: /* @__PURE__ */ jsx15(
|
|
4355
|
+
"img",
|
|
4356
|
+
{
|
|
4357
|
+
src: url,
|
|
4358
|
+
alt: `Screenshot ${i + 1}`,
|
|
4359
|
+
style: {
|
|
4360
|
+
width: 80,
|
|
4361
|
+
height: 60,
|
|
4362
|
+
objectFit: "cover",
|
|
4363
|
+
borderRadius: 6,
|
|
4364
|
+
border: `1px solid ${colors.border}`
|
|
4365
|
+
}
|
|
4366
|
+
}
|
|
4367
|
+
)
|
|
4368
|
+
},
|
|
4369
|
+
i
|
|
4370
|
+
)) })
|
|
4371
|
+
] }),
|
|
4372
|
+
/* @__PURE__ */ jsxs14("div", { style: {
|
|
4373
|
+
borderTop: `1px solid ${colors.border}`,
|
|
4374
|
+
paddingTop: 12,
|
|
4375
|
+
marginTop: 4
|
|
4376
|
+
}, children: [
|
|
4377
|
+
issue.reporterName && /* @__PURE__ */ jsxs14("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 4 }, children: [
|
|
4378
|
+
"Reported by ",
|
|
4379
|
+
issue.reporterName
|
|
4380
|
+
] }),
|
|
4381
|
+
/* @__PURE__ */ jsxs14("div", { style: { fontSize: 11, color: colors.textDim }, children: [
|
|
4382
|
+
"Created ",
|
|
4383
|
+
formatRelativeTime(issue.createdAt),
|
|
4384
|
+
" \xB7 Updated ",
|
|
4385
|
+
formatRelativeTime(issue.updatedAt)
|
|
4386
|
+
] })
|
|
4387
|
+
] })
|
|
4388
|
+
] });
|
|
4389
|
+
}
|
|
4390
|
+
|
|
4018
4391
|
// src/widget/logo.ts
|
|
4019
4392
|
var BUGBEAR_LOGO_BASE64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAAXNSR0IArs4c6QAAAJhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAASQBAACAAAAFAAAAISgAQADAAAAAQABAACgAgAEAAAAAQAAAGCgAwAEAAAAAQAAAGAAAAAAMjAyNjowMToyNCAxNjoyMTozOABbbVCuAAAACXBIWXMAAAsTAAALEwEAmpwYAAACo2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpJcHRjNHhtcEV4dD0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcEV4dC8yMDA4LTAyLTI5LyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPElwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWE8L0lwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPgogICAgICAgICA8SXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPmZjNzJlN2Q2LTYyYTEtNDE1ZS04MjY5LWM2NjA4MjY0OWRiMDwvSXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAyNi0wMS0yNFQxNjoyMTozODwveG1wOkNyZWF0ZURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+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";
|
|
4020
4393
|
|
|
4021
4394
|
// src/BugBearPanel.tsx
|
|
4022
|
-
import { Fragment as Fragment4, jsx as
|
|
4395
|
+
import { Fragment as Fragment4, jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
4023
4396
|
function BugBearIcon({ size = 24 }) {
|
|
4024
|
-
return /* @__PURE__ */
|
|
4397
|
+
return /* @__PURE__ */ jsx16(
|
|
4025
4398
|
"img",
|
|
4026
4399
|
{
|
|
4027
4400
|
src: BUGBEAR_LOGO_BASE64,
|
|
@@ -4066,12 +4439,12 @@ function BugBearPanel({
|
|
|
4066
4439
|
}) {
|
|
4067
4440
|
const { shouldShowWidget, testerInfo, assignments, isLoading, unreadCount } = useBugBear();
|
|
4068
4441
|
const { currentScreen, canGoBack, push, pop, replace, reset } = useNavigation();
|
|
4069
|
-
const [collapsed, setCollapsed] =
|
|
4070
|
-
const [panelPosition, setPanelPosition] =
|
|
4071
|
-
const [isDragging, setIsDragging] =
|
|
4442
|
+
const [collapsed, setCollapsed] = useState11(defaultCollapsed);
|
|
4443
|
+
const [panelPosition, setPanelPosition] = useState11(null);
|
|
4444
|
+
const [isDragging, setIsDragging] = useState11(false);
|
|
4072
4445
|
const dragStartRef = useRef3(null);
|
|
4073
4446
|
const panelRef = useRef3(null);
|
|
4074
|
-
|
|
4447
|
+
useEffect8(() => {
|
|
4075
4448
|
if (typeof window === "undefined") return;
|
|
4076
4449
|
try {
|
|
4077
4450
|
const saved = localStorage.getItem(STORAGE_KEY);
|
|
@@ -4085,7 +4458,7 @@ function BugBearPanel({
|
|
|
4085
4458
|
setPanelPosition(getDefaultPosition(position));
|
|
4086
4459
|
}
|
|
4087
4460
|
}, [position]);
|
|
4088
|
-
|
|
4461
|
+
useEffect8(() => {
|
|
4089
4462
|
if (panelPosition && typeof window !== "undefined") {
|
|
4090
4463
|
try {
|
|
4091
4464
|
localStorage.setItem(STORAGE_KEY, JSON.stringify(panelPosition));
|
|
@@ -4093,7 +4466,7 @@ function BugBearPanel({
|
|
|
4093
4466
|
}
|
|
4094
4467
|
}
|
|
4095
4468
|
}, [panelPosition]);
|
|
4096
|
-
|
|
4469
|
+
useEffect8(() => {
|
|
4097
4470
|
if (typeof window === "undefined") return;
|
|
4098
4471
|
const handleResize = () => {
|
|
4099
4472
|
setPanelPosition((prev) => prev ? clampPosition(prev) : getDefaultPosition(position));
|
|
@@ -4114,7 +4487,7 @@ function BugBearPanel({
|
|
|
4114
4487
|
panelY: panelPosition.y
|
|
4115
4488
|
};
|
|
4116
4489
|
}, [draggable, panelPosition]);
|
|
4117
|
-
|
|
4490
|
+
useEffect8(() => {
|
|
4118
4491
|
if (!isDragging) return;
|
|
4119
4492
|
const handleMouseMove = (e) => {
|
|
4120
4493
|
if (!dragStartRef.current) return;
|
|
@@ -4168,6 +4541,10 @@ function BugBearPanel({
|
|
|
4168
4541
|
return currentScreen.thread.subject || "Thread";
|
|
4169
4542
|
case "COMPOSE_MESSAGE":
|
|
4170
4543
|
return "New Message";
|
|
4544
|
+
case "ISSUE_LIST":
|
|
4545
|
+
return currentScreen.category === "open" ? "Open Issues" : currentScreen.category === "done" ? "Done" : "Reopened";
|
|
4546
|
+
case "ISSUE_DETAIL":
|
|
4547
|
+
return "Issue Detail";
|
|
4171
4548
|
case "PROFILE":
|
|
4172
4549
|
return "Profile";
|
|
4173
4550
|
default:
|
|
@@ -4182,33 +4559,37 @@ function BugBearPanel({
|
|
|
4182
4559
|
const renderScreen = () => {
|
|
4183
4560
|
switch (currentScreen.name) {
|
|
4184
4561
|
case "HOME":
|
|
4185
|
-
return /* @__PURE__ */
|
|
4562
|
+
return /* @__PURE__ */ jsx16(HomeScreen, { nav });
|
|
4186
4563
|
case "TEST_DETAIL":
|
|
4187
|
-
return /* @__PURE__ */
|
|
4564
|
+
return /* @__PURE__ */ jsx16(TestDetailScreen, { testId: currentScreen.testId, nav });
|
|
4188
4565
|
case "TEST_LIST":
|
|
4189
|
-
return /* @__PURE__ */
|
|
4566
|
+
return /* @__PURE__ */ jsx16(TestListScreen, { nav });
|
|
4190
4567
|
case "TEST_FEEDBACK":
|
|
4191
|
-
return /* @__PURE__ */
|
|
4568
|
+
return /* @__PURE__ */ jsx16(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
|
|
4192
4569
|
case "REPORT":
|
|
4193
|
-
return /* @__PURE__ */
|
|
4570
|
+
return /* @__PURE__ */ jsx16(ReportScreen, { nav, prefill: currentScreen.prefill });
|
|
4194
4571
|
case "REPORT_SUCCESS":
|
|
4195
|
-
return /* @__PURE__ */
|
|
4572
|
+
return /* @__PURE__ */ jsx16(ReportSuccessScreen, { nav });
|
|
4196
4573
|
case "MESSAGE_LIST":
|
|
4197
|
-
return /* @__PURE__ */
|
|
4574
|
+
return /* @__PURE__ */ jsx16(MessageListScreen, { nav });
|
|
4198
4575
|
case "THREAD_DETAIL":
|
|
4199
|
-
return /* @__PURE__ */
|
|
4576
|
+
return /* @__PURE__ */ jsx16(ThreadDetailScreen, { thread: currentScreen.thread, nav });
|
|
4200
4577
|
case "COMPOSE_MESSAGE":
|
|
4201
|
-
return /* @__PURE__ */
|
|
4578
|
+
return /* @__PURE__ */ jsx16(ComposeMessageScreen, { nav });
|
|
4579
|
+
case "ISSUE_LIST":
|
|
4580
|
+
return /* @__PURE__ */ jsx16(IssueListScreen, { nav, category: currentScreen.category });
|
|
4581
|
+
case "ISSUE_DETAIL":
|
|
4582
|
+
return /* @__PURE__ */ jsx16(IssueDetailScreen, { nav, issue: currentScreen.issue });
|
|
4202
4583
|
case "PROFILE":
|
|
4203
|
-
return /* @__PURE__ */
|
|
4584
|
+
return /* @__PURE__ */ jsx16(ProfileScreen, { nav });
|
|
4204
4585
|
default:
|
|
4205
|
-
return /* @__PURE__ */
|
|
4586
|
+
return /* @__PURE__ */ jsx16(HomeScreen, { nav });
|
|
4206
4587
|
}
|
|
4207
4588
|
};
|
|
4208
4589
|
if (typeof document === "undefined") return null;
|
|
4209
4590
|
const headerTitle = getHeaderTitle();
|
|
4210
4591
|
return createPortal(
|
|
4211
|
-
/* @__PURE__ */
|
|
4592
|
+
/* @__PURE__ */ jsxs15(
|
|
4212
4593
|
"div",
|
|
4213
4594
|
{
|
|
4214
4595
|
ref: panelRef,
|
|
@@ -4227,7 +4608,7 @@ function BugBearPanel({
|
|
|
4227
4608
|
},
|
|
4228
4609
|
onMouseDown: handleMouseDown,
|
|
4229
4610
|
children: [
|
|
4230
|
-
collapsed && /* @__PURE__ */
|
|
4611
|
+
collapsed && /* @__PURE__ */ jsxs15(
|
|
4231
4612
|
"button",
|
|
4232
4613
|
{
|
|
4233
4614
|
onClick: () => setCollapsed(false),
|
|
@@ -4249,9 +4630,9 @@ function BugBearPanel({
|
|
|
4249
4630
|
fontWeight: 500
|
|
4250
4631
|
},
|
|
4251
4632
|
children: [
|
|
4252
|
-
/* @__PURE__ */
|
|
4253
|
-
/* @__PURE__ */
|
|
4254
|
-
badgeCount > 0 && /* @__PURE__ */
|
|
4633
|
+
/* @__PURE__ */ jsx16(BugBearIcon, { size: 24 }),
|
|
4634
|
+
/* @__PURE__ */ jsx16("span", { children: "BugBear" }),
|
|
4635
|
+
badgeCount > 0 && /* @__PURE__ */ jsx16("span", { style: {
|
|
4255
4636
|
backgroundColor: "#fff",
|
|
4256
4637
|
color: colors.blue,
|
|
4257
4638
|
fontSize: "0.75rem",
|
|
@@ -4262,7 +4643,7 @@ function BugBearPanel({
|
|
|
4262
4643
|
]
|
|
4263
4644
|
}
|
|
4264
4645
|
),
|
|
4265
|
-
!collapsed && /* @__PURE__ */
|
|
4646
|
+
!collapsed && /* @__PURE__ */ jsxs15("div", { style: {
|
|
4266
4647
|
width: PANEL_WIDTH,
|
|
4267
4648
|
backgroundColor: colors.bg,
|
|
4268
4649
|
borderRadius: 12,
|
|
@@ -4270,7 +4651,7 @@ function BugBearPanel({
|
|
|
4270
4651
|
overflow: "hidden",
|
|
4271
4652
|
boxShadow: "0 25px 50px -12px rgba(0,0,0,0.5)"
|
|
4272
4653
|
}, children: [
|
|
4273
|
-
/* @__PURE__ */
|
|
4654
|
+
/* @__PURE__ */ jsxs15(
|
|
4274
4655
|
"div",
|
|
4275
4656
|
{
|
|
4276
4657
|
"data-drag-handle": true,
|
|
@@ -4286,7 +4667,7 @@ function BugBearPanel({
|
|
|
4286
4667
|
cursor: draggable ? isDragging ? "grabbing" : "grab" : "default"
|
|
4287
4668
|
},
|
|
4288
4669
|
children: [
|
|
4289
|
-
/* @__PURE__ */
|
|
4670
|
+
/* @__PURE__ */ jsx16("div", { style: { display: "flex", alignItems: "center", gap: 8, flex: 1, minWidth: 0 }, children: canGoBack ? /* @__PURE__ */ jsx16(
|
|
4290
4671
|
"button",
|
|
4291
4672
|
{
|
|
4292
4673
|
onClick: pop,
|
|
@@ -4302,14 +4683,14 @@ function BugBearPanel({
|
|
|
4302
4683
|
},
|
|
4303
4684
|
children: "\u2190 Back"
|
|
4304
4685
|
}
|
|
4305
|
-
) : /* @__PURE__ */
|
|
4306
|
-
/* @__PURE__ */
|
|
4307
|
-
/* @__PURE__ */
|
|
4308
|
-
/* @__PURE__ */
|
|
4309
|
-
/* @__PURE__ */
|
|
4310
|
-
draggable && /* @__PURE__ */
|
|
4686
|
+
) : /* @__PURE__ */ jsxs15(Fragment4, { children: [
|
|
4687
|
+
/* @__PURE__ */ jsx16(BugBearIcon, { size: 28 }),
|
|
4688
|
+
/* @__PURE__ */ jsxs15("div", { children: [
|
|
4689
|
+
/* @__PURE__ */ jsxs15("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
|
|
4690
|
+
/* @__PURE__ */ jsx16("span", { style: { fontWeight: 600, fontSize: "0.875rem" }, children: "BugBear" }),
|
|
4691
|
+
draggable && /* @__PURE__ */ jsx16("span", { style: { color: colors.textMuted, fontSize: "0.75rem" }, title: "Drag to move, double-click to reset", children: "\u22EE\u22EE" })
|
|
4311
4692
|
] }),
|
|
4312
|
-
testerInfo && /* @__PURE__ */
|
|
4693
|
+
testerInfo && /* @__PURE__ */ jsxs15(
|
|
4313
4694
|
"button",
|
|
4314
4695
|
{
|
|
4315
4696
|
onClick: () => push({ name: "PROFILE" }),
|
|
@@ -4327,13 +4708,13 @@ function BugBearPanel({
|
|
|
4327
4708
|
},
|
|
4328
4709
|
children: [
|
|
4329
4710
|
testerInfo.name,
|
|
4330
|
-
/* @__PURE__ */
|
|
4711
|
+
/* @__PURE__ */ jsx16("span", { style: { fontSize: "0.625rem" }, children: "\u270E" })
|
|
4331
4712
|
]
|
|
4332
4713
|
}
|
|
4333
4714
|
)
|
|
4334
4715
|
] })
|
|
4335
4716
|
] }) }),
|
|
4336
|
-
headerTitle ? /* @__PURE__ */
|
|
4717
|
+
headerTitle ? /* @__PURE__ */ jsx16("span", { style: {
|
|
4337
4718
|
fontSize: "0.8125rem",
|
|
4338
4719
|
fontWeight: 600,
|
|
4339
4720
|
color: colors.textSecondary,
|
|
@@ -4343,7 +4724,7 @@ function BugBearPanel({
|
|
|
4343
4724
|
textOverflow: "ellipsis",
|
|
4344
4725
|
whiteSpace: "nowrap"
|
|
4345
4726
|
}, children: headerTitle }) : null,
|
|
4346
|
-
/* @__PURE__ */
|
|
4727
|
+
/* @__PURE__ */ jsx16(
|
|
4347
4728
|
"button",
|
|
4348
4729
|
{
|
|
4349
4730
|
onClick: handleClose,
|
|
@@ -4367,13 +4748,13 @@ function BugBearPanel({
|
|
|
4367
4748
|
]
|
|
4368
4749
|
}
|
|
4369
4750
|
),
|
|
4370
|
-
/* @__PURE__ */
|
|
4751
|
+
/* @__PURE__ */ jsx16("div", { style: {
|
|
4371
4752
|
padding: 16,
|
|
4372
4753
|
maxHeight: 400,
|
|
4373
4754
|
overflowY: "auto",
|
|
4374
4755
|
backgroundColor: colors.bg,
|
|
4375
4756
|
color: colors.textSecondary
|
|
4376
|
-
}, children: isLoading ? /* @__PURE__ */
|
|
4757
|
+
}, 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
4758
|
] })
|
|
4378
4759
|
]
|
|
4379
4760
|
}
|
|
@@ -4385,7 +4766,7 @@ function BugBearPanel({
|
|
|
4385
4766
|
// src/BugBearErrorBoundary.tsx
|
|
4386
4767
|
import { Component } from "react";
|
|
4387
4768
|
import { captureError, contextCapture as contextCapture2 } from "@bbearai/core";
|
|
4388
|
-
import { jsx as
|
|
4769
|
+
import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
4389
4770
|
var BugBearErrorBoundary = class extends Component {
|
|
4390
4771
|
constructor(props) {
|
|
4391
4772
|
super(props);
|
|
@@ -4430,7 +4811,7 @@ var BugBearErrorBoundary = class extends Component {
|
|
|
4430
4811
|
if (fallback) {
|
|
4431
4812
|
return fallback;
|
|
4432
4813
|
}
|
|
4433
|
-
return /* @__PURE__ */
|
|
4814
|
+
return /* @__PURE__ */ jsxs16(
|
|
4434
4815
|
"div",
|
|
4435
4816
|
{
|
|
4436
4817
|
style: {
|
|
@@ -4442,13 +4823,13 @@ var BugBearErrorBoundary = class extends Component {
|
|
|
4442
4823
|
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'
|
|
4443
4824
|
},
|
|
4444
4825
|
children: [
|
|
4445
|
-
/* @__PURE__ */
|
|
4446
|
-
/* @__PURE__ */
|
|
4447
|
-
/* @__PURE__ */
|
|
4826
|
+
/* @__PURE__ */ jsxs16("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "12px" }, children: [
|
|
4827
|
+
/* @__PURE__ */ jsx17("img", { src: BUGBEAR_LOGO_BASE64, alt: "BugBear", width: 28, height: 28, style: { objectFit: "contain" } }),
|
|
4828
|
+
/* @__PURE__ */ jsx17("h3", { style: { margin: 0, color: "#991b1b", fontSize: "16px" }, children: "Something went wrong" })
|
|
4448
4829
|
] }),
|
|
4449
|
-
/* @__PURE__ */
|
|
4450
|
-
/* @__PURE__ */
|
|
4451
|
-
/* @__PURE__ */
|
|
4830
|
+
/* @__PURE__ */ jsx17("p", { style: { color: "#7f1d1d", fontSize: "14px", margin: "0 0 12px 0" }, children: error.message }),
|
|
4831
|
+
/* @__PURE__ */ jsxs16("div", { style: { display: "flex", gap: "8px" }, children: [
|
|
4832
|
+
/* @__PURE__ */ jsx17(
|
|
4452
4833
|
"button",
|
|
4453
4834
|
{
|
|
4454
4835
|
onClick: this.reset,
|
|
@@ -4465,7 +4846,7 @@ var BugBearErrorBoundary = class extends Component {
|
|
|
4465
4846
|
children: "Try Again"
|
|
4466
4847
|
}
|
|
4467
4848
|
),
|
|
4468
|
-
/* @__PURE__ */
|
|
4849
|
+
/* @__PURE__ */ jsx17(
|
|
4469
4850
|
"button",
|
|
4470
4851
|
{
|
|
4471
4852
|
onClick: () => window.location.reload(),
|
|
@@ -4483,7 +4864,7 @@ var BugBearErrorBoundary = class extends Component {
|
|
|
4483
4864
|
}
|
|
4484
4865
|
)
|
|
4485
4866
|
] }),
|
|
4486
|
-
/* @__PURE__ */
|
|
4867
|
+
/* @__PURE__ */ jsx17("p", { style: { color: "#9ca3af", fontSize: "12px", marginTop: "12px" }, children: "The error has been captured by BugBear" })
|
|
4487
4868
|
]
|
|
4488
4869
|
}
|
|
4489
4870
|
);
|