@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/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 useState10, useRef as useRef3, useEffect as useEffect7, useCallback as useCallback5 } from "react";
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 === "completed") return a.status === "passed" || a.status === "failed";
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
- (a) => a.status === "passed" || a.status === "failed"
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: "completed", label: "Done", count: doneCount }
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
- color: getStatusColor(assignment.status),
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 === "completed" ? "No completed tests yet" : "No tests assigned" })
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 jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
4395
+ import { Fragment as Fragment4, jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
4023
4396
  function BugBearIcon({ size = 24 }) {
4024
- return /* @__PURE__ */ jsx14(
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] = useState10(defaultCollapsed);
4070
- const [panelPosition, setPanelPosition] = useState10(null);
4071
- const [isDragging, setIsDragging] = useState10(false);
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
- useEffect7(() => {
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
- useEffect7(() => {
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
- useEffect7(() => {
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
- useEffect7(() => {
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__ */ jsx14(HomeScreen, { nav });
4562
+ return /* @__PURE__ */ jsx16(HomeScreen, { nav });
4186
4563
  case "TEST_DETAIL":
4187
- return /* @__PURE__ */ jsx14(TestDetailScreen, { testId: currentScreen.testId, nav });
4564
+ return /* @__PURE__ */ jsx16(TestDetailScreen, { testId: currentScreen.testId, nav });
4188
4565
  case "TEST_LIST":
4189
- return /* @__PURE__ */ jsx14(TestListScreen, { nav });
4566
+ return /* @__PURE__ */ jsx16(TestListScreen, { nav });
4190
4567
  case "TEST_FEEDBACK":
4191
- return /* @__PURE__ */ jsx14(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
4568
+ return /* @__PURE__ */ jsx16(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
4192
4569
  case "REPORT":
4193
- return /* @__PURE__ */ jsx14(ReportScreen, { nav, prefill: currentScreen.prefill });
4570
+ return /* @__PURE__ */ jsx16(ReportScreen, { nav, prefill: currentScreen.prefill });
4194
4571
  case "REPORT_SUCCESS":
4195
- return /* @__PURE__ */ jsx14(ReportSuccessScreen, { nav });
4572
+ return /* @__PURE__ */ jsx16(ReportSuccessScreen, { nav });
4196
4573
  case "MESSAGE_LIST":
4197
- return /* @__PURE__ */ jsx14(MessageListScreen, { nav });
4574
+ return /* @__PURE__ */ jsx16(MessageListScreen, { nav });
4198
4575
  case "THREAD_DETAIL":
4199
- return /* @__PURE__ */ jsx14(ThreadDetailScreen, { thread: currentScreen.thread, nav });
4576
+ return /* @__PURE__ */ jsx16(ThreadDetailScreen, { thread: currentScreen.thread, nav });
4200
4577
  case "COMPOSE_MESSAGE":
4201
- return /* @__PURE__ */ jsx14(ComposeMessageScreen, { nav });
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__ */ jsx14(ProfileScreen, { nav });
4584
+ return /* @__PURE__ */ jsx16(ProfileScreen, { nav });
4204
4585
  default:
4205
- return /* @__PURE__ */ jsx14(HomeScreen, { nav });
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__ */ jsxs13(
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__ */ jsxs13(
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__ */ jsx14(BugBearIcon, { size: 24 }),
4253
- /* @__PURE__ */ jsx14("span", { children: "BugBear" }),
4254
- badgeCount > 0 && /* @__PURE__ */ jsx14("span", { style: {
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__ */ jsxs13("div", { style: {
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__ */ jsxs13(
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__ */ jsx14("div", { style: { display: "flex", alignItems: "center", gap: 8, flex: 1, minWidth: 0 }, children: canGoBack ? /* @__PURE__ */ jsx14(
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__ */ jsxs13(Fragment4, { children: [
4306
- /* @__PURE__ */ jsx14(BugBearIcon, { size: 28 }),
4307
- /* @__PURE__ */ jsxs13("div", { children: [
4308
- /* @__PURE__ */ jsxs13("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
4309
- /* @__PURE__ */ jsx14("span", { style: { fontWeight: 600, fontSize: "0.875rem" }, children: "BugBear" }),
4310
- draggable && /* @__PURE__ */ jsx14("span", { style: { color: colors.textMuted, fontSize: "0.75rem" }, title: "Drag to move, double-click to reset", children: "\u22EE\u22EE" })
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__ */ jsxs13(
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__ */ jsx14("span", { style: { fontSize: "0.625rem" }, children: "\u270E" })
4711
+ /* @__PURE__ */ jsx16("span", { style: { fontSize: "0.625rem" }, children: "\u270E" })
4331
4712
  ]
4332
4713
  }
4333
4714
  )
4334
4715
  ] })
4335
4716
  ] }) }),
4336
- headerTitle ? /* @__PURE__ */ jsx14("span", { style: {
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__ */ jsx14(
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__ */ jsx14("div", { style: {
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__ */ jsx14("div", { style: { padding: "60px 0", textAlign: "center" }, children: /* @__PURE__ */ jsx14("div", { style: { color: colors.textMuted, fontSize: "0.875rem" }, children: "Loading..." }) }) : renderScreen() })
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 jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
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__ */ jsxs14(
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__ */ jsxs14("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "12px" }, children: [
4446
- /* @__PURE__ */ jsx15("img", { src: BUGBEAR_LOGO_BASE64, alt: "BugBear", width: 28, height: 28, style: { objectFit: "contain" } }),
4447
- /* @__PURE__ */ jsx15("h3", { style: { margin: 0, color: "#991b1b", fontSize: "16px" }, children: "Something went wrong" })
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__ */ jsx15("p", { style: { color: "#7f1d1d", fontSize: "14px", margin: "0 0 12px 0" }, children: error.message }),
4450
- /* @__PURE__ */ jsxs14("div", { style: { display: "flex", gap: "8px" }, children: [
4451
- /* @__PURE__ */ jsx15(
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__ */ jsx15(
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__ */ jsx15("p", { style: { color: "#9ca3af", fontSize: "12px", marginTop: "12px" }, children: "The error has been captured by BugBear" })
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
  );