@bbearai/react 0.4.2 → 0.4.4

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.js CHANGED
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __export = (target, all) => {
7
9
  for (var name in all)
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
15
17
  }
16
18
  return to;
17
19
  };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
18
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
29
 
20
30
  // src/index.tsx
@@ -243,6 +253,14 @@ function BugBearProvider({ config, children, enabled = true }) {
243
253
  initializeBugBear(newClient);
244
254
  }
245
255
  }, [enabled, config, initializeBugBear]);
256
+ (0, import_react.useEffect)(() => {
257
+ if (!client || !isTester || !isQAEnabled) return;
258
+ const interval = setInterval(() => {
259
+ refreshThreads();
260
+ refreshIssueCounts();
261
+ }, 3e4);
262
+ return () => clearInterval(interval);
263
+ }, [client, isTester, isQAEnabled, refreshThreads, refreshIssueCounts]);
246
264
  const currentAssignment = assignments.find(
247
265
  (a) => a.status === "in_progress"
248
266
  ) || assignments.find(
@@ -2565,18 +2583,72 @@ var styles = {
2565
2583
  };
2566
2584
 
2567
2585
  // src/widget/screens/ReportScreen.tsx
2568
- var import_react8 = require("react");
2586
+ var import_react8 = __toESM(require("react"));
2587
+
2588
+ // src/widget/CategoryDropdown.tsx
2569
2589
  var import_jsx_runtime8 = require("react/jsx-runtime");
2590
+ var categoryOptions = [
2591
+ { value: "ui_ux", label: "UI/UX", icon: "\u{1F3A8}" },
2592
+ { value: "functional", label: "Functional", icon: "\u2699\uFE0F" },
2593
+ { value: "crash", label: "Crash", icon: "\u{1F4A5}" },
2594
+ { value: "security", label: "Security", icon: "\u{1F510}" },
2595
+ { value: "other", label: "Other", icon: "\u{1F4DD}" }
2596
+ ];
2597
+ function CategoryDropdown({ value, onChange, optional = true, disabled = false }) {
2598
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
2599
+ "select",
2600
+ {
2601
+ value: value || "",
2602
+ onChange: (e) => onChange(e.target.value ? e.target.value : null),
2603
+ disabled,
2604
+ style: {
2605
+ width: "100%",
2606
+ backgroundColor: disabled ? colors.bg : colors.card,
2607
+ border: `1px solid ${colors.border}`,
2608
+ borderRadius: 8,
2609
+ padding: "10px 12px",
2610
+ fontSize: 14,
2611
+ color: colors.textPrimary,
2612
+ cursor: disabled ? "not-allowed" : "pointer",
2613
+ opacity: disabled ? 0.5 : 1,
2614
+ appearance: "none",
2615
+ backgroundImage: `url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2371717a' d='M3 5l3 3 3-3'/%3E%3C/svg%3E")`,
2616
+ backgroundRepeat: "no-repeat",
2617
+ backgroundPosition: "right 12px center",
2618
+ paddingRight: 32
2619
+ },
2620
+ children: [
2621
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "", children: optional ? "Select category (optional)" : "Select category" }),
2622
+ categoryOptions.map(({ value: value2, label, icon }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("option", { value: value2, children: [
2623
+ icon,
2624
+ " ",
2625
+ label
2626
+ ] }, value2))
2627
+ ]
2628
+ }
2629
+ );
2630
+ }
2631
+
2632
+ // src/widget/screens/ReportScreen.tsx
2633
+ var import_jsx_runtime9 = require("react/jsx-runtime");
2570
2634
  function ReportScreen({ nav, prefill }) {
2571
2635
  const { client, refreshAssignments, uploadImage } = useBugBear();
2572
2636
  const images = useImageAttachments(uploadImage, 5, "screenshots");
2573
2637
  const [reportType, setReportType] = (0, import_react8.useState)(prefill?.type || "bug");
2574
2638
  const [severity, setSeverity] = (0, import_react8.useState)("medium");
2639
+ const [category, setCategory] = (0, import_react8.useState)(null);
2575
2640
  const [description, setDescription] = (0, import_react8.useState)("");
2576
2641
  const [affectedRoute, setAffectedRoute] = (0, import_react8.useState)("");
2577
2642
  const [submitting, setSubmitting] = (0, import_react8.useState)(false);
2578
2643
  const [error, setError] = (0, import_react8.useState)(null);
2579
2644
  const submittingRef = (0, import_react8.useRef)(false);
2645
+ import_react8.default.useEffect(() => {
2646
+ if (reportType === "feedback" || reportType === "suggestion") {
2647
+ setCategory("other");
2648
+ } else {
2649
+ setCategory(null);
2650
+ }
2651
+ }, [reportType]);
2580
2652
  const observedRoute = (0, import_react8.useRef)(
2581
2653
  typeof window !== "undefined" ? window.location.pathname : "unknown"
2582
2654
  );
@@ -2599,6 +2671,7 @@ function ReportScreen({ nav, prefill }) {
2599
2671
  type: reportType,
2600
2672
  description: description.trim(),
2601
2673
  severity: isBugType ? severity : void 0,
2674
+ category: category || void 0,
2602
2675
  screenshots: screenshotUrls.length > 0 ? screenshotUrls : void 0,
2603
2676
  assignmentId: prefill?.assignmentId,
2604
2677
  testCaseId: prefill?.testCaseId,
@@ -2632,17 +2705,17 @@ function ReportScreen({ nav, prefill }) {
2632
2705
  { sev: "medium", color: "#eab308" },
2633
2706
  { sev: "low", color: "#6b7280" }
2634
2707
  ];
2635
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { children: isRetestFailure ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
2636
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.retestBanner, children: [
2637
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
2638
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { children: [
2639
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.retestTitle, children: "Bug Still Present" }),
2640
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.retestSubtitle, children: "The fix did not resolve this issue" })
2708
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { children: isRetestFailure ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
2709
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.retestBanner, children: [
2710
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
2711
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { children: [
2712
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.retestTitle, children: "Bug Still Present" }),
2713
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.retestSubtitle, children: "The fix did not resolve this issue" })
2641
2714
  ] })
2642
2715
  ] }),
2643
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.section, children: [
2644
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.label, children: "Severity" }),
2645
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.severityRow, children: severityOptions.map(({ sev, color }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2716
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.section, children: [
2717
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "Severity" }),
2718
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.severityRow, children: severityOptions.map(({ sev, color }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2646
2719
  "button",
2647
2720
  {
2648
2721
  onClick: () => setSeverity(sev),
@@ -2650,14 +2723,18 @@ function ReportScreen({ nav, prefill }) {
2650
2723
  ...styles2.sevButton,
2651
2724
  ...severity === sev ? { backgroundColor: `${color}30`, borderColor: color } : {}
2652
2725
  },
2653
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { style: { ...styles2.sevText, ...severity === sev ? { color } : {} }, children: sev })
2726
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { ...styles2.sevText, ...severity === sev ? { color } : {} }, children: sev })
2654
2727
  },
2655
2728
  sev
2656
2729
  )) })
2657
2730
  ] }),
2658
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.section, children: [
2659
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.label, children: "What went wrong?" }),
2660
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2731
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.section, children: [
2732
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "Category (optional)" }),
2733
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CategoryDropdown, { value: category, onChange: setCategory, optional: true })
2734
+ ] }),
2735
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.section, children: [
2736
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "What went wrong?" }),
2737
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2661
2738
  "textarea",
2662
2739
  {
2663
2740
  style: styles2.descInput,
@@ -2668,7 +2745,7 @@ function ReportScreen({ nav, prefill }) {
2668
2745
  }
2669
2746
  )
2670
2747
  ] }),
2671
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2748
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2672
2749
  ImagePickerButtons,
2673
2750
  {
2674
2751
  images: images.images,
@@ -2679,8 +2756,8 @@ function ReportScreen({ nav, prefill }) {
2679
2756
  label: "Attachments (optional)"
2680
2757
  }
2681
2758
  ),
2682
- error && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.errorBanner, children: error }),
2683
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2759
+ error && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.errorBanner, children: error }),
2760
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2684
2761
  "button",
2685
2762
  {
2686
2763
  style: {
@@ -2693,9 +2770,9 @@ function ReportScreen({ nav, prefill }) {
2693
2770
  children: images.isUploading ? "Uploading images..." : submitting ? "Submitting..." : error ? "Retry" : "Submit Failed Retest"
2694
2771
  }
2695
2772
  )
2696
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
2697
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.label, children: "What are you reporting?" }),
2698
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.typeRow, children: typeOptions.map(({ type, label, icon }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
2773
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
2774
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "What are you reporting?" }),
2775
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.typeRow, children: typeOptions.map(({ type, label, icon }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2699
2776
  "button",
2700
2777
  {
2701
2778
  onClick: () => setReportType(type),
@@ -2704,8 +2781,8 @@ function ReportScreen({ nav, prefill }) {
2704
2781
  ...reportType === type ? styles2.typeCardActive : {}
2705
2782
  },
2706
2783
  children: [
2707
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.typeIcon, children: icon }),
2708
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2784
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.typeIcon, children: icon }),
2785
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2709
2786
  "div",
2710
2787
  {
2711
2788
  style: {
@@ -2719,9 +2796,9 @@ function ReportScreen({ nav, prefill }) {
2719
2796
  },
2720
2797
  type
2721
2798
  )) }),
2722
- isBugType && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.section, children: [
2723
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.label, children: "Severity" }),
2724
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.severityRow, children: severityOptions.map(({ sev, color }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2799
+ isBugType && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.section, children: [
2800
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "Severity" }),
2801
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.severityRow, children: severityOptions.map(({ sev, color }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2725
2802
  "button",
2726
2803
  {
2727
2804
  onClick: () => setSeverity(sev),
@@ -2732,7 +2809,7 @@ function ReportScreen({ nav, prefill }) {
2732
2809
  borderColor: color
2733
2810
  } : {}
2734
2811
  },
2735
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2812
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2736
2813
  "span",
2737
2814
  {
2738
2815
  style: {
@@ -2746,9 +2823,13 @@ function ReportScreen({ nav, prefill }) {
2746
2823
  sev
2747
2824
  )) })
2748
2825
  ] }),
2749
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.section, children: [
2750
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.label, children: "What happened?" }),
2751
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2826
+ isBugType && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.section, children: [
2827
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "Category (optional)" }),
2828
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CategoryDropdown, { value: category, onChange: setCategory, optional: true })
2829
+ ] }),
2830
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.section, children: [
2831
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "What happened?" }),
2832
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2752
2833
  "textarea",
2753
2834
  {
2754
2835
  style: styles2.descInput,
@@ -2759,9 +2840,9 @@ function ReportScreen({ nav, prefill }) {
2759
2840
  }
2760
2841
  )
2761
2842
  ] }),
2762
- isBugType && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.section, children: [
2763
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.label, children: "Where did it happen?" }),
2764
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2843
+ isBugType && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.section, children: [
2844
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "Where did it happen?" }),
2845
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2765
2846
  "input",
2766
2847
  {
2767
2848
  style: styles2.routeInput,
@@ -2770,13 +2851,13 @@ function ReportScreen({ nav, prefill }) {
2770
2851
  placeholder: observedRoute.current
2771
2852
  }
2772
2853
  ),
2773
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.routeHint, children: [
2854
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.routeHint, children: [
2774
2855
  "Leave blank to use current page (",
2775
2856
  observedRoute.current,
2776
2857
  ")"
2777
2858
  ] })
2778
2859
  ] }),
2779
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2860
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2780
2861
  ImagePickerButtons,
2781
2862
  {
2782
2863
  images: images.images,
@@ -2787,8 +2868,8 @@ function ReportScreen({ nav, prefill }) {
2787
2868
  label: "Screenshots (optional)"
2788
2869
  }
2789
2870
  ),
2790
- error && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.errorBanner, children: error }),
2791
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2871
+ error && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.errorBanner, children: error }),
2872
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2792
2873
  "button",
2793
2874
  {
2794
2875
  style: {
@@ -2953,16 +3034,16 @@ var styles2 = {
2953
3034
 
2954
3035
  // src/widget/screens/ReportSuccessScreen.tsx
2955
3036
  var import_react9 = require("react");
2956
- var import_jsx_runtime9 = require("react/jsx-runtime");
3037
+ var import_jsx_runtime10 = require("react/jsx-runtime");
2957
3038
  function ReportSuccessScreen({ nav }) {
2958
3039
  (0, import_react9.useEffect)(() => {
2959
3040
  const timer = setTimeout(() => nav.reset(), 2e3);
2960
3041
  return () => clearTimeout(timer);
2961
3042
  }, [nav]);
2962
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles3.container, children: [
2963
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles3.emoji, children: "\u{1F389}" }),
2964
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles3.title, children: "Report submitted!" }),
2965
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles3.subtitle, children: "Thank you for your feedback" })
3043
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: styles3.container, children: [
3044
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles3.emoji, children: "\u{1F389}" }),
3045
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles3.title, children: "Report submitted!" }),
3046
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles3.subtitle, children: "Thank you for your feedback" })
2966
3047
  ] });
2967
3048
  }
2968
3049
  var styles3 = {
@@ -2991,11 +3072,11 @@ var styles3 = {
2991
3072
  };
2992
3073
 
2993
3074
  // src/widget/screens/MessageListScreen.tsx
2994
- var import_jsx_runtime10 = require("react/jsx-runtime");
3075
+ var import_jsx_runtime11 = require("react/jsx-runtime");
2995
3076
  function MessageListScreen({ nav }) {
2996
3077
  const { threads, unreadCount, refreshThreads } = useBugBear();
2997
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { children: [
2998
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3078
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { children: [
3079
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2999
3080
  "button",
3000
3081
  {
3001
3082
  style: {
@@ -3014,7 +3095,7 @@ function MessageListScreen({ nav }) {
3014
3095
  children: "\u2709\uFE0F New Message"
3015
3096
  }
3016
3097
  ),
3017
- threads.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3098
+ threads.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3018
3099
  "div",
3019
3100
  {
3020
3101
  style: {
@@ -3025,8 +3106,8 @@ function MessageListScreen({ nav }) {
3025
3106
  paddingBottom: 40
3026
3107
  },
3027
3108
  children: [
3028
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { style: { fontSize: 36, marginBottom: 12 }, children: "\u{1F4AC}" }),
3029
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3109
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { style: { fontSize: 36, marginBottom: 12 }, children: "\u{1F4AC}" }),
3110
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3030
3111
  "span",
3031
3112
  {
3032
3113
  style: {
@@ -3038,7 +3119,7 @@ function MessageListScreen({ nav }) {
3038
3119
  children: "No messages yet"
3039
3120
  }
3040
3121
  ),
3041
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3122
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3042
3123
  "span",
3043
3124
  {
3044
3125
  style: {
@@ -3051,7 +3132,7 @@ function MessageListScreen({ nav }) {
3051
3132
  )
3052
3133
  ]
3053
3134
  }
3054
- ) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { children: threads.map((thread) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3135
+ ) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { children: threads.map((thread) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3055
3136
  "button",
3056
3137
  {
3057
3138
  style: {
@@ -3069,8 +3150,8 @@ function MessageListScreen({ nav }) {
3069
3150
  },
3070
3151
  onClick: () => nav.push({ name: "THREAD_DETAIL", thread }),
3071
3152
  children: [
3072
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: { display: "flex", flex: 1, minWidth: 0 }, children: [
3073
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3153
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { style: { display: "flex", flex: 1, minWidth: 0 }, children: [
3154
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3074
3155
  "span",
3075
3156
  {
3076
3157
  style: {
@@ -3082,7 +3163,7 @@ function MessageListScreen({ nav }) {
3082
3163
  children: getThreadTypeIcon(thread.threadType)
3083
3164
  }
3084
3165
  ),
3085
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3166
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3086
3167
  "div",
3087
3168
  {
3088
3169
  style: {
@@ -3090,7 +3171,7 @@ function MessageListScreen({ nav }) {
3090
3171
  minWidth: 0
3091
3172
  },
3092
3173
  children: [
3093
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3174
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3094
3175
  "div",
3095
3176
  {
3096
3177
  style: {
@@ -3099,8 +3180,8 @@ function MessageListScreen({ nav }) {
3099
3180
  gap: 4
3100
3181
  },
3101
3182
  children: [
3102
- thread.isPinned && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { style: { fontSize: 12, flexShrink: 0 }, children: "\u{1F4CC}" }),
3103
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3183
+ thread.isPinned && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { style: { fontSize: 12, flexShrink: 0 }, children: "\u{1F4CC}" }),
3184
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3104
3185
  "span",
3105
3186
  {
3106
3187
  style: {
@@ -3117,7 +3198,7 @@ function MessageListScreen({ nav }) {
3117
3198
  ]
3118
3199
  }
3119
3200
  ),
3120
- thread.lastMessage && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3201
+ thread.lastMessage && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3121
3202
  "span",
3122
3203
  {
3123
3204
  style: {
@@ -3141,7 +3222,7 @@ function MessageListScreen({ nav }) {
3141
3222
  }
3142
3223
  )
3143
3224
  ] }),
3144
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3225
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3145
3226
  "div",
3146
3227
  {
3147
3228
  style: {
@@ -3153,8 +3234,8 @@ function MessageListScreen({ nav }) {
3153
3234
  flexShrink: 0
3154
3235
  },
3155
3236
  children: [
3156
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { style: { fontSize: 11, color: colors.textDim }, children: formatRelativeTime(thread.lastMessageAt) }),
3157
- thread.unreadCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3237
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { style: { fontSize: 11, color: colors.textDim }, children: formatRelativeTime(thread.lastMessageAt) }),
3238
+ thread.unreadCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3158
3239
  "span",
3159
3240
  {
3160
3241
  style: {
@@ -3181,7 +3262,7 @@ function MessageListScreen({ nav }) {
3181
3262
  },
3182
3263
  thread.id
3183
3264
  )) }),
3184
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3265
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3185
3266
  "div",
3186
3267
  {
3187
3268
  style: {
@@ -3193,7 +3274,7 @@ function MessageListScreen({ nav }) {
3193
3274
  paddingRight: 4
3194
3275
  },
3195
3276
  children: [
3196
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { style: { fontSize: 12, color: colors.textMuted }, children: [
3277
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { style: { fontSize: 12, color: colors.textMuted }, children: [
3197
3278
  threads.length,
3198
3279
  " thread",
3199
3280
  threads.length !== 1 ? "s" : "",
@@ -3202,7 +3283,7 @@ function MessageListScreen({ nav }) {
3202
3283
  unreadCount,
3203
3284
  " unread"
3204
3285
  ] }),
3205
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3286
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3206
3287
  "button",
3207
3288
  {
3208
3289
  style: {
@@ -3225,7 +3306,7 @@ function MessageListScreen({ nav }) {
3225
3306
 
3226
3307
  // src/widget/screens/ThreadDetailScreen.tsx
3227
3308
  var import_react10 = require("react");
3228
- var import_jsx_runtime11 = require("react/jsx-runtime");
3309
+ var import_jsx_runtime12 = require("react/jsx-runtime");
3229
3310
  var inputStyle = {
3230
3311
  backgroundColor: "#27272a",
3231
3312
  border: "1px solid #3f3f46",
@@ -3284,8 +3365,8 @@ function ThreadDetailScreen({
3284
3365
  handleSend();
3285
3366
  }
3286
3367
  };
3287
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { style: { display: "flex", flexDirection: "column", flex: 1 }, children: [
3288
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3368
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: { display: "flex", flexDirection: "column", flex: 1 }, children: [
3369
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3289
3370
  "div",
3290
3371
  {
3291
3372
  style: {
@@ -3297,8 +3378,8 @@ function ThreadDetailScreen({
3297
3378
  borderBottom: `1px solid ${colors.border}`
3298
3379
  },
3299
3380
  children: [
3300
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { style: { fontSize: 20 }, children: getThreadTypeIcon(thread.threadType) }),
3301
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3381
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: { fontSize: 20 }, children: getThreadTypeIcon(thread.threadType) }),
3382
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3302
3383
  "span",
3303
3384
  {
3304
3385
  style: {
@@ -3318,7 +3399,7 @@ function ThreadDetailScreen({
3318
3399
  ]
3319
3400
  }
3320
3401
  ),
3321
- loading ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3402
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3322
3403
  "div",
3323
3404
  {
3324
3405
  style: {
@@ -3326,11 +3407,11 @@ function ThreadDetailScreen({
3326
3407
  paddingBottom: 40,
3327
3408
  textAlign: "center"
3328
3409
  },
3329
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { style: { fontSize: 14, color: colors.textMuted }, children: "Loading messages..." })
3410
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: { fontSize: 14, color: colors.textMuted }, children: "Loading messages..." })
3330
3411
  }
3331
- ) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { style: { paddingBottom: 8, marginBottom: 8 }, children: messages.map((msg) => {
3412
+ ) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { style: { paddingBottom: 8, marginBottom: 8 }, children: messages.map((msg) => {
3332
3413
  const isTester = msg.senderType === "tester";
3333
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3414
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3334
3415
  "div",
3335
3416
  {
3336
3417
  style: {
@@ -3346,7 +3427,7 @@ function ThreadDetailScreen({
3346
3427
  borderBottomRightRadius: isTester ? 4 : 16
3347
3428
  },
3348
3429
  children: [
3349
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3430
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3350
3431
  "span",
3351
3432
  {
3352
3433
  style: {
@@ -3359,7 +3440,7 @@ function ThreadDetailScreen({
3359
3440
  children: isTester ? "You" : msg.senderName
3360
3441
  }
3361
3442
  ),
3362
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3443
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3363
3444
  "span",
3364
3445
  {
3365
3446
  style: {
@@ -3373,7 +3454,7 @@ function ThreadDetailScreen({
3373
3454
  children: msg.content
3374
3455
  }
3375
3456
  ),
3376
- msg.attachments && msg.attachments.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { style: { marginTop: 8, display: "flex", flexDirection: "column", gap: 6 }, children: msg.attachments.filter((a) => a.type === "image" && typeof a.url === "string" && /^https?:\/\//i.test(a.url)).map((att, idx) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3457
+ msg.attachments && msg.attachments.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { style: { marginTop: 8, display: "flex", flexDirection: "column", gap: 6 }, children: msg.attachments.filter((a) => a.type === "image" && typeof a.url === "string" && /^https?:\/\//i.test(a.url)).map((att, idx) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3377
3458
  "img",
3378
3459
  {
3379
3460
  src: att.url,
@@ -3382,7 +3463,7 @@ function ThreadDetailScreen({
3382
3463
  },
3383
3464
  idx
3384
3465
  )) }),
3385
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3466
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3386
3467
  "span",
3387
3468
  {
3388
3469
  style: {
@@ -3400,7 +3481,7 @@ function ThreadDetailScreen({
3400
3481
  msg.id
3401
3482
  );
3402
3483
  }) }),
3403
- sendError && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3484
+ sendError && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3404
3485
  "div",
3405
3486
  {
3406
3487
  style: {
@@ -3412,7 +3493,7 @@ function ThreadDetailScreen({
3412
3493
  borderRadius: 8,
3413
3494
  marginBottom: 8
3414
3495
  },
3415
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3496
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3416
3497
  "span",
3417
3498
  {
3418
3499
  style: {
@@ -3426,8 +3507,8 @@ function ThreadDetailScreen({
3426
3507
  )
3427
3508
  }
3428
3509
  ),
3429
- replyImages.images.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { style: { paddingTop: 8 }, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ImagePreviewStrip, { images: replyImages.images, onRemove: replyImages.removeImage }) }),
3430
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3510
+ replyImages.images.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { style: { paddingTop: 8 }, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ImagePreviewStrip, { images: replyImages.images, onRemove: replyImages.removeImage }) }),
3511
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3431
3512
  "div",
3432
3513
  {
3433
3514
  style: {
@@ -3438,7 +3519,7 @@ function ThreadDetailScreen({
3438
3519
  gap: 8
3439
3520
  },
3440
3521
  children: [
3441
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3522
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3442
3523
  "button",
3443
3524
  {
3444
3525
  type: "button",
@@ -3457,7 +3538,7 @@ function ThreadDetailScreen({
3457
3538
  children: "\u{1F4CE}"
3458
3539
  }
3459
3540
  ),
3460
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3541
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3461
3542
  "input",
3462
3543
  {
3463
3544
  type: "text",
@@ -3473,7 +3554,7 @@ function ThreadDetailScreen({
3473
3554
  }
3474
3555
  }
3475
3556
  ),
3476
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3557
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3477
3558
  "button",
3478
3559
  {
3479
3560
  style: {
@@ -3501,7 +3582,7 @@ function ThreadDetailScreen({
3501
3582
 
3502
3583
  // src/widget/screens/ComposeMessageScreen.tsx
3503
3584
  var import_react11 = require("react");
3504
- var import_jsx_runtime12 = require("react/jsx-runtime");
3585
+ var import_jsx_runtime13 = require("react/jsx-runtime");
3505
3586
  var inputStyle2 = {
3506
3587
  backgroundColor: "#27272a",
3507
3588
  border: "1px solid #3f3f46",
@@ -3532,9 +3613,9 @@ function ComposeMessageScreen({ nav }) {
3532
3613
  nav.pop();
3533
3614
  }
3534
3615
  };
3535
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { children: [
3536
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: { marginBottom: 20 }, children: [
3537
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3616
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { children: [
3617
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: { marginBottom: 20 }, children: [
3618
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3538
3619
  "div",
3539
3620
  {
3540
3621
  style: {
@@ -3546,9 +3627,9 @@ function ComposeMessageScreen({ nav }) {
3546
3627
  children: "New Message"
3547
3628
  }
3548
3629
  ),
3549
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { style: { fontSize: 14, color: colors.textMuted }, children: "Send a message to the QA team" })
3630
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: { fontSize: 14, color: colors.textMuted }, children: "Send a message to the QA team" })
3550
3631
  ] }),
3551
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3632
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
3552
3633
  "div",
3553
3634
  {
3554
3635
  style: {
@@ -3558,7 +3639,7 @@ function ComposeMessageScreen({ nav }) {
3558
3639
  border: `1px solid ${colors.border}`
3559
3640
  },
3560
3641
  children: [
3561
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3642
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3562
3643
  "label",
3563
3644
  {
3564
3645
  style: {
@@ -3571,7 +3652,7 @@ function ComposeMessageScreen({ nav }) {
3571
3652
  children: "Subject"
3572
3653
  }
3573
3654
  ),
3574
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3655
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3575
3656
  "input",
3576
3657
  {
3577
3658
  type: "text",
@@ -3586,7 +3667,7 @@ function ComposeMessageScreen({ nav }) {
3586
3667
  }
3587
3668
  }
3588
3669
  ),
3589
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3670
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3590
3671
  "label",
3591
3672
  {
3592
3673
  style: {
@@ -3600,7 +3681,7 @@ function ComposeMessageScreen({ nav }) {
3600
3681
  children: "Message"
3601
3682
  }
3602
3683
  ),
3603
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3684
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3604
3685
  "textarea",
3605
3686
  {
3606
3687
  value: message,
@@ -3619,7 +3700,7 @@ function ComposeMessageScreen({ nav }) {
3619
3700
  }
3620
3701
  }
3621
3702
  ),
3622
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3703
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3623
3704
  ImagePickerButtons,
3624
3705
  {
3625
3706
  images: images.images,
@@ -3630,7 +3711,7 @@ function ComposeMessageScreen({ nav }) {
3630
3711
  label: "Attachments (optional)"
3631
3712
  }
3632
3713
  ),
3633
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3714
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3634
3715
  "button",
3635
3716
  {
3636
3717
  style: {
@@ -3659,7 +3740,7 @@ function ComposeMessageScreen({ nav }) {
3659
3740
 
3660
3741
  // src/widget/screens/ProfileScreen.tsx
3661
3742
  var import_react12 = require("react");
3662
- var import_jsx_runtime13 = require("react/jsx-runtime");
3743
+ var import_jsx_runtime14 = require("react/jsx-runtime");
3663
3744
  function ProfileScreen({ nav }) {
3664
3745
  const { testerInfo, assignments, updateTesterProfile, refreshTesterInfo } = useBugBear();
3665
3746
  const [editing, setEditing] = (0, import_react12.useState)(false);
@@ -3705,22 +3786,22 @@ function ProfileScreen({ nav }) {
3705
3786
  }
3706
3787
  };
3707
3788
  if (saved) {
3708
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.emptyState, children: [
3709
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.emptyEmoji, children: "\u2705" }),
3710
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.emptyTitle, children: "Profile saved!" })
3789
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.emptyState, children: [
3790
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.emptyEmoji, children: "\u2705" }),
3791
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.emptyTitle, children: "Profile saved!" })
3711
3792
  ] });
3712
3793
  }
3713
3794
  if (!testerInfo) {
3714
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.emptyState, children: [
3715
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.emptyEmoji, children: "\u{1F464}" }),
3716
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.emptyTitle, children: "No profile found" })
3795
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.emptyState, children: [
3796
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.emptyEmoji, children: "\u{1F464}" }),
3797
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.emptyTitle, children: "No profile found" })
3717
3798
  ] });
3718
3799
  }
3719
3800
  if (editing) {
3720
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { children: [
3721
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.editHeader, children: [
3722
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.editTitle, children: "Edit Profile" }),
3723
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3801
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { children: [
3802
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.editHeader, children: [
3803
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.editTitle, children: "Edit Profile" }),
3804
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3724
3805
  "button",
3725
3806
  {
3726
3807
  style: styles4.cancelButton,
@@ -3732,9 +3813,9 @@ function ProfileScreen({ nav }) {
3732
3813
  }
3733
3814
  )
3734
3815
  ] }),
3735
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.field, children: [
3736
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("label", { style: styles4.label, children: "Name" }),
3737
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3816
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.field, children: [
3817
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("label", { style: styles4.label, children: "Name" }),
3818
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3738
3819
  "input",
3739
3820
  {
3740
3821
  style: styles4.input,
@@ -3744,15 +3825,15 @@ function ProfileScreen({ nav }) {
3744
3825
  }
3745
3826
  )
3746
3827
  ] }),
3747
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.field, children: [
3748
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("label", { style: styles4.label, children: "Primary Email" }),
3749
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.emailFixed, children: testerInfo.email })
3828
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.field, children: [
3829
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("label", { style: styles4.label, children: "Primary Email" }),
3830
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.emailFixed, children: testerInfo.email })
3750
3831
  ] }),
3751
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.field, children: [
3752
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("label", { style: styles4.label, children: "Additional Emails" }),
3753
- additionalEmails.map((email) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.emailRow, children: [
3754
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.emailText, children: email }),
3755
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3832
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.field, children: [
3833
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("label", { style: styles4.label, children: "Additional Emails" }),
3834
+ additionalEmails.map((email) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.emailRow, children: [
3835
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.emailText, children: email }),
3836
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3756
3837
  "button",
3757
3838
  {
3758
3839
  style: styles4.removeEmailButton,
@@ -3761,8 +3842,8 @@ function ProfileScreen({ nav }) {
3761
3842
  }
3762
3843
  )
3763
3844
  ] }, email)),
3764
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.addEmailRow, children: [
3765
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3845
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.addEmailRow, children: [
3846
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3766
3847
  "input",
3767
3848
  {
3768
3849
  style: { ...styles4.input, flex: 1, marginRight: 8 },
@@ -3775,18 +3856,18 @@ function ProfileScreen({ nav }) {
3775
3856
  }
3776
3857
  }
3777
3858
  ),
3778
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("button", { style: styles4.addButton, onClick: handleAddEmail, children: "Add" })
3859
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("button", { style: styles4.addButton, onClick: handleAddEmail, children: "Add" })
3779
3860
  ] })
3780
3861
  ] }),
3781
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.field, children: [
3782
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("label", { style: styles4.label, children: "Testing Platforms" }),
3783
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: styles4.platformRow, children: [
3862
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.field, children: [
3863
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("label", { style: styles4.label, children: "Testing Platforms" }),
3864
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: styles4.platformRow, children: [
3784
3865
  { key: "ios", label: "\u{1F4F1} iOS" },
3785
3866
  { key: "android", label: "\u{1F916} Android" },
3786
3867
  { key: "web", label: "\u{1F310} Web" }
3787
3868
  ].map(({ key, label }) => {
3788
3869
  const isActive = platforms.includes(key);
3789
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3870
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3790
3871
  "button",
3791
3872
  {
3792
3873
  style: {
@@ -3796,13 +3877,13 @@ function ProfileScreen({ nav }) {
3796
3877
  onClick: () => setPlatforms(
3797
3878
  (prev) => prev.includes(key) ? prev.filter((p) => p !== key) : [...prev, key]
3798
3879
  ),
3799
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: isActive ? styles4.platformTextActive : styles4.platformText, children: label })
3880
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: isActive ? styles4.platformTextActive : styles4.platformText, children: label })
3800
3881
  },
3801
3882
  key
3802
3883
  );
3803
3884
  }) })
3804
3885
  ] }),
3805
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3886
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3806
3887
  "button",
3807
3888
  {
3808
3889
  style: { ...styles4.primaryButton, marginTop: 20 },
@@ -3813,45 +3894,45 @@ function ProfileScreen({ nav }) {
3813
3894
  )
3814
3895
  ] });
3815
3896
  }
3816
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { children: [
3817
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.profileCard, children: [
3818
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: styles4.avatar, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.avatarText, children: testerInfo.name.charAt(0).toUpperCase() }) }),
3819
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.profileName, children: testerInfo.name }),
3820
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.profileEmail, children: testerInfo.email })
3897
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { children: [
3898
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.profileCard, children: [
3899
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: styles4.avatar, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.avatarText, children: testerInfo.name.charAt(0).toUpperCase() }) }),
3900
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.profileName, children: testerInfo.name }),
3901
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.profileEmail, children: testerInfo.email })
3821
3902
  ] }),
3822
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.statsRow, children: [
3823
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.statItem, children: [
3824
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.statNumber, children: completedCount }),
3825
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.statLabel, children: "Completed" })
3903
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.statsRow, children: [
3904
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.statItem, children: [
3905
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.statNumber, children: completedCount }),
3906
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.statLabel, children: "Completed" })
3826
3907
  ] }),
3827
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: styles4.statDivider }),
3828
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.statItem, children: [
3829
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.statNumber, children: assignments.length }),
3830
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.statLabel, children: "Total Assigned" })
3908
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: styles4.statDivider }),
3909
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.statItem, children: [
3910
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.statNumber, children: assignments.length }),
3911
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.statLabel, children: "Total Assigned" })
3831
3912
  ] })
3832
3913
  ] }),
3833
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3914
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3834
3915
  "button",
3835
3916
  {
3836
3917
  style: styles4.detailsToggle,
3837
3918
  onClick: () => setShowDetails(!showDetails),
3838
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { style: styles4.detailsToggleText, children: [
3919
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { style: styles4.detailsToggleText, children: [
3839
3920
  showDetails ? "\u25BC" : "\u25B6",
3840
3921
  " Details"
3841
3922
  ] })
3842
3923
  }
3843
3924
  ),
3844
- showDetails && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.detailsSection, children: [
3845
- additionalEmails.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.detailBlock, children: [
3846
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.detailLabel, children: "Additional Emails" }),
3847
- additionalEmails.map((e) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.detailValue, children: e }, e))
3925
+ showDetails && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.detailsSection, children: [
3926
+ additionalEmails.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.detailBlock, children: [
3927
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.detailLabel, children: "Additional Emails" }),
3928
+ additionalEmails.map((e) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.detailValue, children: e }, e))
3848
3929
  ] }),
3849
- platforms.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.detailBlock, children: [
3850
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.detailLabel, children: "Platforms" }),
3851
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: styles4.platformTags, children: platforms.map((p) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.platformTag, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.platformTagText, children: p === "ios" ? "\u{1F4F1} iOS" : p === "android" ? "\u{1F916} Android" : "\u{1F310} Web" }) }, p)) })
3930
+ platforms.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.detailBlock, children: [
3931
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.detailLabel, children: "Platforms" }),
3932
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: styles4.platformTags, children: platforms.map((p) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.platformTag, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.platformTagText, children: p === "ios" ? "\u{1F4F1} iOS" : p === "android" ? "\u{1F916} Android" : "\u{1F310} Web" }) }, p)) })
3852
3933
  ] })
3853
3934
  ] }),
3854
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3935
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3855
3936
  "button",
3856
3937
  {
3857
3938
  style: { ...styles4.primaryButton, marginTop: 20 },
@@ -4135,7 +4216,7 @@ var styles4 = {
4135
4216
 
4136
4217
  // src/widget/screens/IssueListScreen.tsx
4137
4218
  var import_react13 = require("react");
4138
- var import_jsx_runtime14 = require("react/jsx-runtime");
4219
+ var import_jsx_runtime15 = require("react/jsx-runtime");
4139
4220
  var CATEGORY_CONFIG = {
4140
4221
  open: { label: "Open Issues", accent: "#f97316", emptyIcon: "\u2705", emptyText: "No open issues" },
4141
4222
  done: { label: "Done", accent: "#22c55e", emptyIcon: "\u{1F389}", emptyText: "No completed issues yet" },
@@ -4168,15 +4249,15 @@ function IssueListScreen({ nav, category }) {
4168
4249
  };
4169
4250
  }, [client, category]);
4170
4251
  if (loading) {
4171
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: { padding: "40px 0", textAlign: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: { color: colors.textMuted, fontSize: 14 }, children: "Loading..." }) });
4252
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: { padding: "40px 0", textAlign: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: { color: colors.textMuted, fontSize: 14 }, children: "Loading..." }) });
4172
4253
  }
4173
4254
  if (issues.length === 0) {
4174
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: { padding: "40px 0", textAlign: "center" }, children: [
4175
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: { fontSize: 36, marginBottom: 8 }, children: config.emptyIcon }),
4176
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: { color: colors.textMuted, fontSize: 14 }, children: config.emptyText })
4255
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { padding: "40px 0", textAlign: "center" }, children: [
4256
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: { fontSize: 36, marginBottom: 8 }, children: config.emptyIcon }),
4257
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: { color: colors.textMuted, fontSize: 14 }, children: config.emptyText })
4177
4258
  ] });
4178
4259
  }
4179
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { children: issues.map((issue) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
4260
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { children: issues.map((issue) => /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
4180
4261
  "div",
4181
4262
  {
4182
4263
  role: "button",
@@ -4195,8 +4276,8 @@ function IssueListScreen({ nav, category }) {
4195
4276
  userSelect: "none"
4196
4277
  },
4197
4278
  children: [
4198
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: { display: "flex", alignItems: "flex-start", gap: 8 }, children: [
4199
- issue.severity && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
4279
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { display: "flex", alignItems: "flex-start", gap: 8 }, children: [
4280
+ issue.severity && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4200
4281
  "span",
4201
4282
  {
4202
4283
  style: {
@@ -4209,7 +4290,7 @@ function IssueListScreen({ nav, category }) {
4209
4290
  }
4210
4291
  }
4211
4292
  ),
4212
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: {
4293
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: {
4213
4294
  fontSize: 13,
4214
4295
  fontWeight: 600,
4215
4296
  color: colors.textPrimary,
@@ -4219,11 +4300,11 @@ function IssueListScreen({ nav, category }) {
4219
4300
  whiteSpace: "nowrap"
4220
4301
  }, children: issue.title })
4221
4302
  ] }),
4222
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: { display: "flex", justifyContent: "space-between", marginTop: 6 }, children: [
4223
- issue.route && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: { fontSize: 11, color: colors.textDim, maxWidth: "60%", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: issue.route }),
4224
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: { fontSize: 11, color: colors.textDim, marginLeft: "auto" }, children: formatRelativeTime(issue.updatedAt) })
4303
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { display: "flex", justifyContent: "space-between", marginTop: 6 }, children: [
4304
+ issue.route && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: { fontSize: 11, color: colors.textDim, maxWidth: "60%", overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: issue.route }),
4305
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: { fontSize: 11, color: colors.textDim, marginLeft: "auto" }, children: formatRelativeTime(issue.updatedAt) })
4225
4306
  ] }),
4226
- category === "done" && issue.verifiedByName && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: {
4307
+ category === "done" && issue.verifiedByName && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: {
4227
4308
  display: "inline-flex",
4228
4309
  alignItems: "center",
4229
4310
  gap: 4,
@@ -4239,7 +4320,7 @@ function IssueListScreen({ nav, category }) {
4239
4320
  "\u2714 Verified by ",
4240
4321
  issue.verifiedByName
4241
4322
  ] }),
4242
- category === "reopened" && issue.originalBugTitle && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: {
4323
+ category === "reopened" && issue.originalBugTitle && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: {
4243
4324
  display: "inline-flex",
4244
4325
  alignItems: "center",
4245
4326
  gap: 4,
@@ -4266,7 +4347,7 @@ function IssueListScreen({ nav, category }) {
4266
4347
  }
4267
4348
 
4268
4349
  // src/widget/screens/IssueDetailScreen.tsx
4269
- var import_jsx_runtime15 = require("react/jsx-runtime");
4350
+ var import_jsx_runtime16 = require("react/jsx-runtime");
4270
4351
  var STATUS_LABELS = {
4271
4352
  new: { label: "New", bg: "#1e3a5f", color: "#60a5fa" },
4272
4353
  triaging: { label: "Triaging", bg: "#1e3a5f", color: "#60a5fa" },
@@ -4290,9 +4371,9 @@ var SEVERITY_CONFIG = {
4290
4371
  function IssueDetailScreen({ nav, issue }) {
4291
4372
  const statusConfig = STATUS_LABELS[issue.status] || { label: issue.status, bg: "#27272a", color: "#a1a1aa" };
4292
4373
  const severityConfig = issue.severity ? SEVERITY_CONFIG[issue.severity] : null;
4293
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { children: [
4294
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { display: "flex", gap: 8, flexWrap: "wrap", marginBottom: 12 }, children: [
4295
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: {
4374
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { children: [
4375
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { display: "flex", gap: 8, flexWrap: "wrap", marginBottom: 12 }, children: [
4376
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: {
4296
4377
  backgroundColor: statusConfig.bg,
4297
4378
  color: statusConfig.color,
4298
4379
  fontSize: 11,
@@ -4300,7 +4381,7 @@ function IssueDetailScreen({ nav, issue }) {
4300
4381
  padding: "3px 10px",
4301
4382
  borderRadius: 6
4302
4383
  }, children: statusConfig.label }),
4303
- severityConfig && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: {
4384
+ severityConfig && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: {
4304
4385
  backgroundColor: severityConfig.bg,
4305
4386
  color: severityConfig.color,
4306
4387
  fontSize: 11,
@@ -4309,9 +4390,9 @@ function IssueDetailScreen({ nav, issue }) {
4309
4390
  borderRadius: 6
4310
4391
  }, children: severityConfig.label })
4311
4392
  ] }),
4312
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("h3", { style: { fontSize: 16, fontWeight: 700, color: colors.textPrimary, margin: "0 0 8px 0", lineHeight: 1.3 }, children: issue.title }),
4313
- issue.route && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 12 }, children: issue.route }),
4314
- issue.description && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: {
4393
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("h3", { style: { fontSize: 16, fontWeight: 700, color: colors.textPrimary, margin: "0 0 8px 0", lineHeight: 1.3 }, children: issue.title }),
4394
+ issue.route && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 12 }, children: issue.route }),
4395
+ issue.description && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: {
4315
4396
  backgroundColor: colors.card,
4316
4397
  border: `1px solid ${colors.border}`,
4317
4398
  borderRadius: 8,
@@ -4323,56 +4404,56 @@ function IssueDetailScreen({ nav, issue }) {
4323
4404
  whiteSpace: "pre-wrap",
4324
4405
  wordBreak: "break-word"
4325
4406
  }, children: issue.description }),
4326
- issue.verifiedByName && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: {
4407
+ issue.verifiedByName && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: {
4327
4408
  backgroundColor: "#14532d",
4328
4409
  border: "1px solid #166534",
4329
4410
  borderRadius: 8,
4330
4411
  padding: 12,
4331
4412
  marginBottom: 12
4332
4413
  }, children: [
4333
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
4334
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: { fontSize: 16 }, children: "\u2705" }),
4335
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: { fontSize: 13, fontWeight: 600, color: "#4ade80" }, children: "Retesting Proof" })
4414
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
4415
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { fontSize: 16 }, children: "\u2705" }),
4416
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { fontSize: 13, fontWeight: 600, color: "#4ade80" }, children: "Retesting Proof" })
4336
4417
  ] }),
4337
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { fontSize: 12, color: "#86efac" }, children: [
4418
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { fontSize: 12, color: "#86efac" }, children: [
4338
4419
  "Verified by ",
4339
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { children: issue.verifiedByName }),
4340
- issue.verifiedAt && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { children: [
4420
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("strong", { children: issue.verifiedByName }),
4421
+ issue.verifiedAt && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("span", { children: [
4341
4422
  " on ",
4342
4423
  new Date(issue.verifiedAt).toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" })
4343
4424
  ] })
4344
4425
  ] })
4345
4426
  ] }),
4346
- issue.originalBugTitle && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: {
4427
+ issue.originalBugTitle && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: {
4347
4428
  backgroundColor: "#422006",
4348
4429
  border: "1px solid #854d0e",
4349
4430
  borderRadius: 8,
4350
4431
  padding: 12,
4351
4432
  marginBottom: 12
4352
4433
  }, children: [
4353
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
4354
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
4355
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: { fontSize: 13, fontWeight: 600, color: "#fbbf24" }, children: "Original Bug" })
4434
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
4435
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
4436
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { fontSize: 13, fontWeight: 600, color: "#fbbf24" }, children: "Original Bug" })
4356
4437
  ] }),
4357
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { fontSize: 12, color: "#fde68a" }, children: [
4438
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { fontSize: 12, color: "#fde68a" }, children: [
4358
4439
  "Retest of: ",
4359
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { children: issue.originalBugTitle })
4440
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("strong", { children: issue.originalBugTitle })
4360
4441
  ] })
4361
4442
  ] }),
4362
- issue.screenshotUrls && issue.screenshotUrls.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { marginBottom: 12 }, children: [
4363
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { fontSize: 12, fontWeight: 600, color: colors.textMuted, marginBottom: 8 }, children: [
4443
+ issue.screenshotUrls && issue.screenshotUrls.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { marginBottom: 12 }, children: [
4444
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { fontSize: 12, fontWeight: 600, color: colors.textMuted, marginBottom: 8 }, children: [
4364
4445
  "Screenshots (",
4365
4446
  issue.screenshotUrls.length,
4366
4447
  ")"
4367
4448
  ] }),
4368
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: { display: "flex", gap: 8, overflowX: "auto" }, children: issue.screenshotUrls.map((url, i) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4449
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { display: "flex", gap: 8, overflowX: "auto" }, children: issue.screenshotUrls.map((url, i) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
4369
4450
  "a",
4370
4451
  {
4371
4452
  href: url,
4372
4453
  target: "_blank",
4373
4454
  rel: "noopener noreferrer",
4374
4455
  style: { flexShrink: 0 },
4375
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4456
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
4376
4457
  "img",
4377
4458
  {
4378
4459
  src: url,
@@ -4390,16 +4471,16 @@ function IssueDetailScreen({ nav, issue }) {
4390
4471
  i
4391
4472
  )) })
4392
4473
  ] }),
4393
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: {
4474
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: {
4394
4475
  borderTop: `1px solid ${colors.border}`,
4395
4476
  paddingTop: 12,
4396
4477
  marginTop: 4
4397
4478
  }, children: [
4398
- issue.reporterName && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 4 }, children: [
4479
+ issue.reporterName && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 4 }, children: [
4399
4480
  "Reported by ",
4400
4481
  issue.reporterName
4401
4482
  ] }),
4402
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { fontSize: 11, color: colors.textDim }, children: [
4483
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { fontSize: 11, color: colors.textDim }, children: [
4403
4484
  "Created ",
4404
4485
  formatRelativeTime(issue.createdAt),
4405
4486
  " \xB7 Updated ",
@@ -4413,9 +4494,9 @@ function IssueDetailScreen({ nav, issue }) {
4413
4494
  var BUGBEAR_LOGO_BASE64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAAXNSR0IArs4c6QAAAJhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAASQBAACAAAAFAAAAISgAQADAAAAAQABAACgAgAEAAAAAQAAAGCgAwAEAAAAAQAAAGAAAAAAMjAyNjowMToyNCAxNjoyMTozOABbbVCuAAAACXBIWXMAAAsTAAALEwEAmpwYAAACo2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpJcHRjNHhtcEV4dD0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcEV4dC8yMDA4LTAyLTI5LyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPElwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWE8L0lwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPgogICAgICAgICA8SXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPmZjNzJlN2Q2LTYyYTEtNDE1ZS04MjY5LWM2NjA4MjY0OWRiMDwvSXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAyNi0wMS0yNFQxNjoyMTozODwveG1wOkNyZWF0ZURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+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";
4414
4495
 
4415
4496
  // src/BugBearPanel.tsx
4416
- var import_jsx_runtime16 = require("react/jsx-runtime");
4497
+ var import_jsx_runtime17 = require("react/jsx-runtime");
4417
4498
  function BugBearIcon({ size = 24 }) {
4418
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
4499
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
4419
4500
  "img",
4420
4501
  {
4421
4502
  src: BUGBEAR_LOGO_BASE64,
@@ -4580,37 +4661,37 @@ function BugBearPanel({
4580
4661
  const renderScreen = () => {
4581
4662
  switch (currentScreen.name) {
4582
4663
  case "HOME":
4583
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(HomeScreen, { nav });
4664
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(HomeScreen, { nav });
4584
4665
  case "TEST_DETAIL":
4585
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(TestDetailScreen, { testId: currentScreen.testId, nav });
4666
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TestDetailScreen, { testId: currentScreen.testId, nav });
4586
4667
  case "TEST_LIST":
4587
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(TestListScreen, { nav });
4668
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TestListScreen, { nav });
4588
4669
  case "TEST_FEEDBACK":
4589
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
4670
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
4590
4671
  case "REPORT":
4591
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ReportScreen, { nav, prefill: currentScreen.prefill });
4672
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ReportScreen, { nav, prefill: currentScreen.prefill });
4592
4673
  case "REPORT_SUCCESS":
4593
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ReportSuccessScreen, { nav });
4674
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ReportSuccessScreen, { nav });
4594
4675
  case "MESSAGE_LIST":
4595
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(MessageListScreen, { nav });
4676
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(MessageListScreen, { nav });
4596
4677
  case "THREAD_DETAIL":
4597
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ThreadDetailScreen, { thread: currentScreen.thread, nav });
4678
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ThreadDetailScreen, { thread: currentScreen.thread, nav });
4598
4679
  case "COMPOSE_MESSAGE":
4599
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ComposeMessageScreen, { nav });
4680
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ComposeMessageScreen, { nav });
4600
4681
  case "ISSUE_LIST":
4601
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(IssueListScreen, { nav, category: currentScreen.category });
4682
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(IssueListScreen, { nav, category: currentScreen.category });
4602
4683
  case "ISSUE_DETAIL":
4603
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(IssueDetailScreen, { nav, issue: currentScreen.issue });
4684
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(IssueDetailScreen, { nav, issue: currentScreen.issue });
4604
4685
  case "PROFILE":
4605
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ProfileScreen, { nav });
4686
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ProfileScreen, { nav });
4606
4687
  default:
4607
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(HomeScreen, { nav });
4688
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(HomeScreen, { nav });
4608
4689
  }
4609
4690
  };
4610
4691
  if (typeof document === "undefined") return null;
4611
4692
  const headerTitle = getHeaderTitle();
4612
4693
  return (0, import_react_dom.createPortal)(
4613
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
4694
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4614
4695
  "div",
4615
4696
  {
4616
4697
  ref: panelRef,
@@ -4629,7 +4710,7 @@ function BugBearPanel({
4629
4710
  },
4630
4711
  onMouseDown: handleMouseDown,
4631
4712
  children: [
4632
- collapsed && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
4713
+ collapsed && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4633
4714
  "button",
4634
4715
  {
4635
4716
  onClick: () => setCollapsed(false),
@@ -4651,9 +4732,9 @@ function BugBearPanel({
4651
4732
  fontWeight: 500
4652
4733
  },
4653
4734
  children: [
4654
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(BugBearIcon, { size: 24 }),
4655
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: "BugBear" }),
4656
- badgeCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: {
4735
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(BugBearIcon, { size: 24 }),
4736
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: "BugBear" }),
4737
+ badgeCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: {
4657
4738
  backgroundColor: "#fff",
4658
4739
  color: colors.blue,
4659
4740
  fontSize: "0.75rem",
@@ -4664,7 +4745,7 @@ function BugBearPanel({
4664
4745
  ]
4665
4746
  }
4666
4747
  ),
4667
- !collapsed && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: {
4748
+ !collapsed && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: {
4668
4749
  width: PANEL_WIDTH,
4669
4750
  backgroundColor: colors.bg,
4670
4751
  borderRadius: 12,
@@ -4672,7 +4753,7 @@ function BugBearPanel({
4672
4753
  overflow: "hidden",
4673
4754
  boxShadow: "0 25px 50px -12px rgba(0,0,0,0.5)"
4674
4755
  }, children: [
4675
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
4756
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4676
4757
  "div",
4677
4758
  {
4678
4759
  "data-drag-handle": true,
@@ -4688,7 +4769,7 @@ function BugBearPanel({
4688
4769
  cursor: draggable ? isDragging ? "grabbing" : "grab" : "default"
4689
4770
  },
4690
4771
  children: [
4691
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { display: "flex", alignItems: "center", gap: 8, flex: 1, minWidth: 0 }, children: canGoBack ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
4772
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { display: "flex", alignItems: "center", gap: 8, flex: 1, minWidth: 0 }, children: canGoBack ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
4692
4773
  "button",
4693
4774
  {
4694
4775
  onClick: pop,
@@ -4704,14 +4785,14 @@ function BugBearPanel({
4704
4785
  },
4705
4786
  children: "\u2190 Back"
4706
4787
  }
4707
- ) : /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
4708
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(BugBearIcon, { size: 28 }),
4709
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { children: [
4710
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
4711
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { fontWeight: 600, fontSize: "0.875rem" }, children: "BugBear" }),
4712
- draggable && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { color: colors.textMuted, fontSize: "0.75rem" }, title: "Drag to move, double-click to reset", children: "\u22EE\u22EE" })
4788
+ ) : /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
4789
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(BugBearIcon, { size: 28 }),
4790
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { children: [
4791
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
4792
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { fontWeight: 600, fontSize: "0.875rem" }, children: "BugBear" }),
4793
+ draggable && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { color: colors.textMuted, fontSize: "0.75rem" }, title: "Drag to move, double-click to reset", children: "\u22EE\u22EE" })
4713
4794
  ] }),
4714
- testerInfo && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
4795
+ testerInfo && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4715
4796
  "button",
4716
4797
  {
4717
4798
  onClick: () => push({ name: "PROFILE" }),
@@ -4729,13 +4810,13 @@ function BugBearPanel({
4729
4810
  },
4730
4811
  children: [
4731
4812
  testerInfo.name,
4732
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { fontSize: "0.625rem" }, children: "\u270E" })
4813
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { fontSize: "0.625rem" }, children: "\u270E" })
4733
4814
  ]
4734
4815
  }
4735
4816
  )
4736
4817
  ] })
4737
4818
  ] }) }),
4738
- headerTitle ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: {
4819
+ headerTitle ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: {
4739
4820
  fontSize: "0.8125rem",
4740
4821
  fontWeight: 600,
4741
4822
  color: colors.textSecondary,
@@ -4745,7 +4826,7 @@ function BugBearPanel({
4745
4826
  textOverflow: "ellipsis",
4746
4827
  whiteSpace: "nowrap"
4747
4828
  }, children: headerTitle }) : null,
4748
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
4829
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
4749
4830
  "button",
4750
4831
  {
4751
4832
  onClick: handleClose,
@@ -4769,13 +4850,13 @@ function BugBearPanel({
4769
4850
  ]
4770
4851
  }
4771
4852
  ),
4772
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: {
4853
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: {
4773
4854
  padding: 16,
4774
4855
  maxHeight: 400,
4775
4856
  overflowY: "auto",
4776
4857
  backgroundColor: colors.bg,
4777
4858
  color: colors.textSecondary
4778
- }, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { padding: "60px 0", textAlign: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { color: colors.textMuted, fontSize: "0.875rem" }, children: "Loading..." }) }) : renderScreen() })
4859
+ }, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { padding: "60px 0", textAlign: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: { color: colors.textMuted, fontSize: "0.875rem" }, children: "Loading..." }) }) : renderScreen() })
4779
4860
  ] })
4780
4861
  ]
4781
4862
  }
@@ -4787,7 +4868,7 @@ function BugBearPanel({
4787
4868
  // src/BugBearErrorBoundary.tsx
4788
4869
  var import_react15 = require("react");
4789
4870
  var import_core2 = require("@bbearai/core");
4790
- var import_jsx_runtime17 = require("react/jsx-runtime");
4871
+ var import_jsx_runtime18 = require("react/jsx-runtime");
4791
4872
  var BugBearErrorBoundary = class extends import_react15.Component {
4792
4873
  constructor(props) {
4793
4874
  super(props);
@@ -4832,7 +4913,7 @@ var BugBearErrorBoundary = class extends import_react15.Component {
4832
4913
  if (fallback) {
4833
4914
  return fallback;
4834
4915
  }
4835
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4916
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
4836
4917
  "div",
4837
4918
  {
4838
4919
  style: {
@@ -4844,13 +4925,13 @@ var BugBearErrorBoundary = class extends import_react15.Component {
4844
4925
  fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'
4845
4926
  },
4846
4927
  children: [
4847
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "12px" }, children: [
4848
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("img", { src: BUGBEAR_LOGO_BASE64, alt: "BugBear", width: 28, height: 28, style: { objectFit: "contain" } }),
4849
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h3", { style: { margin: 0, color: "#991b1b", fontSize: "16px" }, children: "Something went wrong" })
4928
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "12px" }, children: [
4929
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("img", { src: BUGBEAR_LOGO_BASE64, alt: "BugBear", width: 28, height: 28, style: { objectFit: "contain" } }),
4930
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h3", { style: { margin: 0, color: "#991b1b", fontSize: "16px" }, children: "Something went wrong" })
4850
4931
  ] }),
4851
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { style: { color: "#7f1d1d", fontSize: "14px", margin: "0 0 12px 0" }, children: error.message }),
4852
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", gap: "8px" }, children: [
4853
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
4932
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { style: { color: "#7f1d1d", fontSize: "14px", margin: "0 0 12px 0" }, children: error.message }),
4933
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", gap: "8px" }, children: [
4934
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
4854
4935
  "button",
4855
4936
  {
4856
4937
  onClick: this.reset,
@@ -4867,7 +4948,7 @@ var BugBearErrorBoundary = class extends import_react15.Component {
4867
4948
  children: "Try Again"
4868
4949
  }
4869
4950
  ),
4870
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
4951
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
4871
4952
  "button",
4872
4953
  {
4873
4954
  onClick: () => window.location.reload(),
@@ -4885,7 +4966,7 @@ var BugBearErrorBoundary = class extends import_react15.Component {
4885
4966
  }
4886
4967
  )
4887
4968
  ] }),
4888
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { style: { color: "#9ca3af", fontSize: "12px", marginTop: "12px" }, children: "The error has been captured by BugBear" })
4969
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { style: { color: "#9ca3af", fontSize: "12px", marginTop: "12px" }, children: "The error has been captured by BugBear" })
4889
4970
  ]
4890
4971
  }
4891
4972
  );