@bbearai/react 0.4.0 → 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.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 useState10, useRef as useRef3, useEffect as useEffect7, useCallback as useCallback5 } from "react";
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 === "completed") return a.status === "passed" || a.status === "failed";
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
- (a) => a.status === "passed" || a.status === "failed"
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: "completed", label: "Done", count: doneCount }
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
- color: getStatusColor(assignment.status),
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 === "completed" ? "No completed tests yet" : "No tests assigned" })
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
  ),
@@ -2458,6 +2547,7 @@ function ReportScreen({ nav, prefill }) {
2458
2547
  const [affectedRoute, setAffectedRoute] = useState6("");
2459
2548
  const [submitting, setSubmitting] = useState6(false);
2460
2549
  const [error, setError] = useState6(null);
2550
+ const submittingRef = useRef2(false);
2461
2551
  const observedRoute = useRef2(
2462
2552
  typeof window !== "undefined" ? window.location.pathname : "unknown"
2463
2553
  );
@@ -2465,6 +2555,8 @@ function ReportScreen({ nav, prefill }) {
2465
2555
  const isBugType = reportType === "bug" || reportType === "test_fail";
2466
2556
  const handleSubmit = async () => {
2467
2557
  if (!client || !description.trim() || images.isUploading) return;
2558
+ if (submittingRef.current) return;
2559
+ submittingRef.current = true;
2468
2560
  setSubmitting(true);
2469
2561
  setError(null);
2470
2562
  try {
@@ -2486,17 +2578,18 @@ function ReportScreen({ nav, prefill }) {
2486
2578
  if (!result.success) {
2487
2579
  setError(result.error || "Failed to submit report. Please try again.");
2488
2580
  setSubmitting(false);
2581
+ submittingRef.current = false;
2489
2582
  return;
2490
2583
  }
2491
2584
  if (prefill?.assignmentId) {
2492
2585
  await refreshAssignments();
2493
2586
  }
2494
- setSubmitting(false);
2495
2587
  nav.replace({ name: "REPORT_SUCCESS" });
2496
2588
  } catch (err) {
2497
2589
  console.error("BugBear: Report submission error", err);
2498
2590
  setError(err instanceof Error ? err.message : "An unexpected error occurred. Please try again.");
2499
2591
  setSubmitting(false);
2592
+ submittingRef.current = false;
2500
2593
  }
2501
2594
  };
2502
2595
  const typeOptions = [
@@ -3251,7 +3344,7 @@ function ThreadDetailScreen({
3251
3344
  children: msg.content
3252
3345
  }
3253
3346
  ),
3254
- msg.attachments && msg.attachments.length > 0 && /* @__PURE__ */ jsx11("div", { style: { marginTop: 8, display: "flex", flexDirection: "column", gap: 6 }, children: msg.attachments.filter((a) => a.type === "image").map((att, idx) => /* @__PURE__ */ jsx11(
3347
+ msg.attachments && msg.attachments.length > 0 && /* @__PURE__ */ jsx11("div", { style: { marginTop: 8, display: "flex", flexDirection: "column", gap: 6 }, children: msg.attachments.filter((a) => a.type === "image" && typeof a.url === "string" && /^https?:\/\//i.test(a.url)).map((att, idx) => /* @__PURE__ */ jsx11(
3255
3348
  "img",
3256
3349
  {
3257
3350
  src: att.url,
@@ -4011,13 +4104,289 @@ var styles4 = {
4011
4104
  }
4012
4105
  };
4013
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
+
4014
4383
  // src/widget/logo.ts
4015
4384
  var BUGBEAR_LOGO_BASE64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAAXNSR0IArs4c6QAAAJhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAASQBAACAAAAFAAAAISgAQADAAAAAQABAACgAgAEAAAAAQAAAGCgAwAEAAAAAQAAAGAAAAAAMjAyNjowMToyNCAxNjoyMTozOABbbVCuAAAACXBIWXMAAAsTAAALEwEAmpwYAAACo2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpJcHRjNHhtcEV4dD0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcEV4dC8yMDA4LTAyLTI5LyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPElwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWE8L0lwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPgogICAgICAgICA8SXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPmZjNzJlN2Q2LTYyYTEtNDE1ZS04MjY5LWM2NjA4MjY0OWRiMDwvSXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAyNi0wMS0yNFQxNjoyMTozODwveG1wOkNyZWF0ZURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+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";
4016
4385
 
4017
4386
  // src/BugBearPanel.tsx
4018
- import { Fragment as Fragment4, jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
4387
+ import { Fragment as Fragment4, jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
4019
4388
  function BugBearIcon({ size = 24 }) {
4020
- return /* @__PURE__ */ jsx14(
4389
+ return /* @__PURE__ */ jsx16(
4021
4390
  "img",
4022
4391
  {
4023
4392
  src: BUGBEAR_LOGO_BASE64,
@@ -4062,12 +4431,12 @@ function BugBearPanel({
4062
4431
  }) {
4063
4432
  const { shouldShowWidget, testerInfo, assignments, isLoading, unreadCount } = useBugBear();
4064
4433
  const { currentScreen, canGoBack, push, pop, replace, reset } = useNavigation();
4065
- const [collapsed, setCollapsed] = useState10(defaultCollapsed);
4066
- const [panelPosition, setPanelPosition] = useState10(null);
4067
- const [isDragging, setIsDragging] = useState10(false);
4434
+ const [collapsed, setCollapsed] = useState11(defaultCollapsed);
4435
+ const [panelPosition, setPanelPosition] = useState11(null);
4436
+ const [isDragging, setIsDragging] = useState11(false);
4068
4437
  const dragStartRef = useRef3(null);
4069
4438
  const panelRef = useRef3(null);
4070
- useEffect7(() => {
4439
+ useEffect8(() => {
4071
4440
  if (typeof window === "undefined") return;
4072
4441
  try {
4073
4442
  const saved = localStorage.getItem(STORAGE_KEY);
@@ -4081,7 +4450,7 @@ function BugBearPanel({
4081
4450
  setPanelPosition(getDefaultPosition(position));
4082
4451
  }
4083
4452
  }, [position]);
4084
- useEffect7(() => {
4453
+ useEffect8(() => {
4085
4454
  if (panelPosition && typeof window !== "undefined") {
4086
4455
  try {
4087
4456
  localStorage.setItem(STORAGE_KEY, JSON.stringify(panelPosition));
@@ -4089,7 +4458,7 @@ function BugBearPanel({
4089
4458
  }
4090
4459
  }
4091
4460
  }, [panelPosition]);
4092
- useEffect7(() => {
4461
+ useEffect8(() => {
4093
4462
  if (typeof window === "undefined") return;
4094
4463
  const handleResize = () => {
4095
4464
  setPanelPosition((prev) => prev ? clampPosition(prev) : getDefaultPosition(position));
@@ -4110,7 +4479,7 @@ function BugBearPanel({
4110
4479
  panelY: panelPosition.y
4111
4480
  };
4112
4481
  }, [draggable, panelPosition]);
4113
- useEffect7(() => {
4482
+ useEffect8(() => {
4114
4483
  if (!isDragging) return;
4115
4484
  const handleMouseMove = (e) => {
4116
4485
  if (!dragStartRef.current) return;
@@ -4164,6 +4533,10 @@ function BugBearPanel({
4164
4533
  return currentScreen.thread.subject || "Thread";
4165
4534
  case "COMPOSE_MESSAGE":
4166
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";
4167
4540
  case "PROFILE":
4168
4541
  return "Profile";
4169
4542
  default:
@@ -4178,33 +4551,37 @@ function BugBearPanel({
4178
4551
  const renderScreen = () => {
4179
4552
  switch (currentScreen.name) {
4180
4553
  case "HOME":
4181
- return /* @__PURE__ */ jsx14(HomeScreen, { nav });
4554
+ return /* @__PURE__ */ jsx16(HomeScreen, { nav });
4182
4555
  case "TEST_DETAIL":
4183
- return /* @__PURE__ */ jsx14(TestDetailScreen, { testId: currentScreen.testId, nav });
4556
+ return /* @__PURE__ */ jsx16(TestDetailScreen, { testId: currentScreen.testId, nav });
4184
4557
  case "TEST_LIST":
4185
- return /* @__PURE__ */ jsx14(TestListScreen, { nav });
4558
+ return /* @__PURE__ */ jsx16(TestListScreen, { nav });
4186
4559
  case "TEST_FEEDBACK":
4187
- return /* @__PURE__ */ jsx14(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
4560
+ return /* @__PURE__ */ jsx16(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
4188
4561
  case "REPORT":
4189
- return /* @__PURE__ */ jsx14(ReportScreen, { nav, prefill: currentScreen.prefill });
4562
+ return /* @__PURE__ */ jsx16(ReportScreen, { nav, prefill: currentScreen.prefill });
4190
4563
  case "REPORT_SUCCESS":
4191
- return /* @__PURE__ */ jsx14(ReportSuccessScreen, { nav });
4564
+ return /* @__PURE__ */ jsx16(ReportSuccessScreen, { nav });
4192
4565
  case "MESSAGE_LIST":
4193
- return /* @__PURE__ */ jsx14(MessageListScreen, { nav });
4566
+ return /* @__PURE__ */ jsx16(MessageListScreen, { nav });
4194
4567
  case "THREAD_DETAIL":
4195
- return /* @__PURE__ */ jsx14(ThreadDetailScreen, { thread: currentScreen.thread, nav });
4568
+ return /* @__PURE__ */ jsx16(ThreadDetailScreen, { thread: currentScreen.thread, nav });
4196
4569
  case "COMPOSE_MESSAGE":
4197
- return /* @__PURE__ */ jsx14(ComposeMessageScreen, { nav });
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 });
4198
4575
  case "PROFILE":
4199
- return /* @__PURE__ */ jsx14(ProfileScreen, { nav });
4576
+ return /* @__PURE__ */ jsx16(ProfileScreen, { nav });
4200
4577
  default:
4201
- return /* @__PURE__ */ jsx14(HomeScreen, { nav });
4578
+ return /* @__PURE__ */ jsx16(HomeScreen, { nav });
4202
4579
  }
4203
4580
  };
4204
4581
  if (typeof document === "undefined") return null;
4205
4582
  const headerTitle = getHeaderTitle();
4206
4583
  return createPortal(
4207
- /* @__PURE__ */ jsxs13(
4584
+ /* @__PURE__ */ jsxs15(
4208
4585
  "div",
4209
4586
  {
4210
4587
  ref: panelRef,
@@ -4223,7 +4600,7 @@ function BugBearPanel({
4223
4600
  },
4224
4601
  onMouseDown: handleMouseDown,
4225
4602
  children: [
4226
- collapsed && /* @__PURE__ */ jsxs13(
4603
+ collapsed && /* @__PURE__ */ jsxs15(
4227
4604
  "button",
4228
4605
  {
4229
4606
  onClick: () => setCollapsed(false),
@@ -4245,9 +4622,9 @@ function BugBearPanel({
4245
4622
  fontWeight: 500
4246
4623
  },
4247
4624
  children: [
4248
- /* @__PURE__ */ jsx14(BugBearIcon, { size: 24 }),
4249
- /* @__PURE__ */ jsx14("span", { children: "BugBear" }),
4250
- badgeCount > 0 && /* @__PURE__ */ jsx14("span", { style: {
4625
+ /* @__PURE__ */ jsx16(BugBearIcon, { size: 24 }),
4626
+ /* @__PURE__ */ jsx16("span", { children: "BugBear" }),
4627
+ badgeCount > 0 && /* @__PURE__ */ jsx16("span", { style: {
4251
4628
  backgroundColor: "#fff",
4252
4629
  color: colors.blue,
4253
4630
  fontSize: "0.75rem",
@@ -4258,7 +4635,7 @@ function BugBearPanel({
4258
4635
  ]
4259
4636
  }
4260
4637
  ),
4261
- !collapsed && /* @__PURE__ */ jsxs13("div", { style: {
4638
+ !collapsed && /* @__PURE__ */ jsxs15("div", { style: {
4262
4639
  width: PANEL_WIDTH,
4263
4640
  backgroundColor: colors.bg,
4264
4641
  borderRadius: 12,
@@ -4266,7 +4643,7 @@ function BugBearPanel({
4266
4643
  overflow: "hidden",
4267
4644
  boxShadow: "0 25px 50px -12px rgba(0,0,0,0.5)"
4268
4645
  }, children: [
4269
- /* @__PURE__ */ jsxs13(
4646
+ /* @__PURE__ */ jsxs15(
4270
4647
  "div",
4271
4648
  {
4272
4649
  "data-drag-handle": true,
@@ -4282,7 +4659,7 @@ function BugBearPanel({
4282
4659
  cursor: draggable ? isDragging ? "grabbing" : "grab" : "default"
4283
4660
  },
4284
4661
  children: [
4285
- /* @__PURE__ */ jsx14("div", { style: { display: "flex", alignItems: "center", gap: 8, flex: 1, minWidth: 0 }, children: canGoBack ? /* @__PURE__ */ jsx14(
4662
+ /* @__PURE__ */ jsx16("div", { style: { display: "flex", alignItems: "center", gap: 8, flex: 1, minWidth: 0 }, children: canGoBack ? /* @__PURE__ */ jsx16(
4286
4663
  "button",
4287
4664
  {
4288
4665
  onClick: pop,
@@ -4298,14 +4675,14 @@ function BugBearPanel({
4298
4675
  },
4299
4676
  children: "\u2190 Back"
4300
4677
  }
4301
- ) : /* @__PURE__ */ jsxs13(Fragment4, { children: [
4302
- /* @__PURE__ */ jsx14(BugBearIcon, { size: 28 }),
4303
- /* @__PURE__ */ jsxs13("div", { children: [
4304
- /* @__PURE__ */ jsxs13("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
4305
- /* @__PURE__ */ jsx14("span", { style: { fontWeight: 600, fontSize: "0.875rem" }, children: "BugBear" }),
4306
- draggable && /* @__PURE__ */ jsx14("span", { style: { color: colors.textMuted, fontSize: "0.75rem" }, title: "Drag to move, double-click to reset", children: "\u22EE\u22EE" })
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" })
4307
4684
  ] }),
4308
- testerInfo && /* @__PURE__ */ jsxs13(
4685
+ testerInfo && /* @__PURE__ */ jsxs15(
4309
4686
  "button",
4310
4687
  {
4311
4688
  onClick: () => push({ name: "PROFILE" }),
@@ -4323,13 +4700,13 @@ function BugBearPanel({
4323
4700
  },
4324
4701
  children: [
4325
4702
  testerInfo.name,
4326
- /* @__PURE__ */ jsx14("span", { style: { fontSize: "0.625rem" }, children: "\u270E" })
4703
+ /* @__PURE__ */ jsx16("span", { style: { fontSize: "0.625rem" }, children: "\u270E" })
4327
4704
  ]
4328
4705
  }
4329
4706
  )
4330
4707
  ] })
4331
4708
  ] }) }),
4332
- headerTitle ? /* @__PURE__ */ jsx14("span", { style: {
4709
+ headerTitle ? /* @__PURE__ */ jsx16("span", { style: {
4333
4710
  fontSize: "0.8125rem",
4334
4711
  fontWeight: 600,
4335
4712
  color: colors.textSecondary,
@@ -4339,7 +4716,7 @@ function BugBearPanel({
4339
4716
  textOverflow: "ellipsis",
4340
4717
  whiteSpace: "nowrap"
4341
4718
  }, children: headerTitle }) : null,
4342
- /* @__PURE__ */ jsx14(
4719
+ /* @__PURE__ */ jsx16(
4343
4720
  "button",
4344
4721
  {
4345
4722
  onClick: handleClose,
@@ -4363,13 +4740,13 @@ function BugBearPanel({
4363
4740
  ]
4364
4741
  }
4365
4742
  ),
4366
- /* @__PURE__ */ jsx14("div", { style: {
4743
+ /* @__PURE__ */ jsx16("div", { style: {
4367
4744
  padding: 16,
4368
4745
  maxHeight: 400,
4369
4746
  overflowY: "auto",
4370
4747
  backgroundColor: colors.bg,
4371
4748
  color: colors.textSecondary
4372
- }, 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() })
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() })
4373
4750
  ] })
4374
4751
  ]
4375
4752
  }
@@ -4381,7 +4758,7 @@ function BugBearPanel({
4381
4758
  // src/BugBearErrorBoundary.tsx
4382
4759
  import { Component } from "react";
4383
4760
  import { captureError, contextCapture as contextCapture2 } from "@bbearai/core";
4384
- import { jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
4761
+ import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
4385
4762
  var BugBearErrorBoundary = class extends Component {
4386
4763
  constructor(props) {
4387
4764
  super(props);
@@ -4426,7 +4803,7 @@ var BugBearErrorBoundary = class extends Component {
4426
4803
  if (fallback) {
4427
4804
  return fallback;
4428
4805
  }
4429
- return /* @__PURE__ */ jsxs14(
4806
+ return /* @__PURE__ */ jsxs16(
4430
4807
  "div",
4431
4808
  {
4432
4809
  style: {
@@ -4438,13 +4815,13 @@ var BugBearErrorBoundary = class extends Component {
4438
4815
  fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'
4439
4816
  },
4440
4817
  children: [
4441
- /* @__PURE__ */ jsxs14("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "12px" }, children: [
4442
- /* @__PURE__ */ jsx15("img", { src: BUGBEAR_LOGO_BASE64, alt: "BugBear", width: 28, height: 28, style: { objectFit: "contain" } }),
4443
- /* @__PURE__ */ jsx15("h3", { style: { margin: 0, color: "#991b1b", fontSize: "16px" }, children: "Something went wrong" })
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" })
4444
4821
  ] }),
4445
- /* @__PURE__ */ jsx15("p", { style: { color: "#7f1d1d", fontSize: "14px", margin: "0 0 12px 0" }, children: error.message }),
4446
- /* @__PURE__ */ jsxs14("div", { style: { display: "flex", gap: "8px" }, children: [
4447
- /* @__PURE__ */ jsx15(
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(
4448
4825
  "button",
4449
4826
  {
4450
4827
  onClick: this.reset,
@@ -4461,7 +4838,7 @@ var BugBearErrorBoundary = class extends Component {
4461
4838
  children: "Try Again"
4462
4839
  }
4463
4840
  ),
4464
- /* @__PURE__ */ jsx15(
4841
+ /* @__PURE__ */ jsx17(
4465
4842
  "button",
4466
4843
  {
4467
4844
  onClick: () => window.location.reload(),
@@ -4479,7 +4856,7 @@ var BugBearErrorBoundary = class extends Component {
4479
4856
  }
4480
4857
  )
4481
4858
  ] }),
4482
- /* @__PURE__ */ jsx15("p", { style: { color: "#9ca3af", fontSize: "12px", marginTop: "12px" }, children: "The error has been captured by BugBear" })
4859
+ /* @__PURE__ */ jsx17("p", { style: { color: "#9ca3af", fontSize: "12px", marginTop: "12px" }, children: "The error has been captured by BugBear" })
4483
4860
  ]
4484
4861
  }
4485
4862
  );