@bbearai/react 0.4.3 → 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.
Files changed (3) hide show
  1. package/dist/index.js +308 -235
  2. package/dist/index.mjs +299 -236
  3. package/package.json +1 -1
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
@@ -2573,18 +2583,72 @@ var styles = {
2573
2583
  };
2574
2584
 
2575
2585
  // src/widget/screens/ReportScreen.tsx
2576
- var import_react8 = require("react");
2586
+ var import_react8 = __toESM(require("react"));
2587
+
2588
+ // src/widget/CategoryDropdown.tsx
2577
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");
2578
2634
  function ReportScreen({ nav, prefill }) {
2579
2635
  const { client, refreshAssignments, uploadImage } = useBugBear();
2580
2636
  const images = useImageAttachments(uploadImage, 5, "screenshots");
2581
2637
  const [reportType, setReportType] = (0, import_react8.useState)(prefill?.type || "bug");
2582
2638
  const [severity, setSeverity] = (0, import_react8.useState)("medium");
2639
+ const [category, setCategory] = (0, import_react8.useState)(null);
2583
2640
  const [description, setDescription] = (0, import_react8.useState)("");
2584
2641
  const [affectedRoute, setAffectedRoute] = (0, import_react8.useState)("");
2585
2642
  const [submitting, setSubmitting] = (0, import_react8.useState)(false);
2586
2643
  const [error, setError] = (0, import_react8.useState)(null);
2587
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]);
2588
2652
  const observedRoute = (0, import_react8.useRef)(
2589
2653
  typeof window !== "undefined" ? window.location.pathname : "unknown"
2590
2654
  );
@@ -2607,6 +2671,7 @@ function ReportScreen({ nav, prefill }) {
2607
2671
  type: reportType,
2608
2672
  description: description.trim(),
2609
2673
  severity: isBugType ? severity : void 0,
2674
+ category: category || void 0,
2610
2675
  screenshots: screenshotUrls.length > 0 ? screenshotUrls : void 0,
2611
2676
  assignmentId: prefill?.assignmentId,
2612
2677
  testCaseId: prefill?.testCaseId,
@@ -2640,17 +2705,17 @@ function ReportScreen({ nav, prefill }) {
2640
2705
  { sev: "medium", color: "#eab308" },
2641
2706
  { sev: "low", color: "#6b7280" }
2642
2707
  ];
2643
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { children: isRetestFailure ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
2644
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.retestBanner, children: [
2645
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
2646
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { children: [
2647
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.retestTitle, children: "Bug Still Present" }),
2648
- /* @__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" })
2649
2714
  ] })
2650
2715
  ] }),
2651
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.section, children: [
2652
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.label, children: "Severity" }),
2653
- /* @__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)(
2654
2719
  "button",
2655
2720
  {
2656
2721
  onClick: () => setSeverity(sev),
@@ -2658,14 +2723,18 @@ function ReportScreen({ nav, prefill }) {
2658
2723
  ...styles2.sevButton,
2659
2724
  ...severity === sev ? { backgroundColor: `${color}30`, borderColor: color } : {}
2660
2725
  },
2661
- 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 })
2662
2727
  },
2663
2728
  sev
2664
2729
  )) })
2665
2730
  ] }),
2666
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.section, children: [
2667
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.label, children: "What went wrong?" }),
2668
- /* @__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)(
2669
2738
  "textarea",
2670
2739
  {
2671
2740
  style: styles2.descInput,
@@ -2676,7 +2745,7 @@ function ReportScreen({ nav, prefill }) {
2676
2745
  }
2677
2746
  )
2678
2747
  ] }),
2679
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2748
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2680
2749
  ImagePickerButtons,
2681
2750
  {
2682
2751
  images: images.images,
@@ -2687,8 +2756,8 @@ function ReportScreen({ nav, prefill }) {
2687
2756
  label: "Attachments (optional)"
2688
2757
  }
2689
2758
  ),
2690
- error && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.errorBanner, children: error }),
2691
- /* @__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)(
2692
2761
  "button",
2693
2762
  {
2694
2763
  style: {
@@ -2701,9 +2770,9 @@ function ReportScreen({ nav, prefill }) {
2701
2770
  children: images.isUploading ? "Uploading images..." : submitting ? "Submitting..." : error ? "Retry" : "Submit Failed Retest"
2702
2771
  }
2703
2772
  )
2704
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
2705
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.label, children: "What are you reporting?" }),
2706
- /* @__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)(
2707
2776
  "button",
2708
2777
  {
2709
2778
  onClick: () => setReportType(type),
@@ -2712,8 +2781,8 @@ function ReportScreen({ nav, prefill }) {
2712
2781
  ...reportType === type ? styles2.typeCardActive : {}
2713
2782
  },
2714
2783
  children: [
2715
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.typeIcon, children: icon }),
2716
- /* @__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)(
2717
2786
  "div",
2718
2787
  {
2719
2788
  style: {
@@ -2727,9 +2796,9 @@ function ReportScreen({ nav, prefill }) {
2727
2796
  },
2728
2797
  type
2729
2798
  )) }),
2730
- isBugType && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.section, children: [
2731
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.label, children: "Severity" }),
2732
- /* @__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)(
2733
2802
  "button",
2734
2803
  {
2735
2804
  onClick: () => setSeverity(sev),
@@ -2740,7 +2809,7 @@ function ReportScreen({ nav, prefill }) {
2740
2809
  borderColor: color
2741
2810
  } : {}
2742
2811
  },
2743
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2812
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2744
2813
  "span",
2745
2814
  {
2746
2815
  style: {
@@ -2754,9 +2823,13 @@ function ReportScreen({ nav, prefill }) {
2754
2823
  sev
2755
2824
  )) })
2756
2825
  ] }),
2757
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.section, children: [
2758
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.label, children: "What happened?" }),
2759
- /* @__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)(
2760
2833
  "textarea",
2761
2834
  {
2762
2835
  style: styles2.descInput,
@@ -2767,9 +2840,9 @@ function ReportScreen({ nav, prefill }) {
2767
2840
  }
2768
2841
  )
2769
2842
  ] }),
2770
- isBugType && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.section, children: [
2771
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.label, children: "Where did it happen?" }),
2772
- /* @__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)(
2773
2846
  "input",
2774
2847
  {
2775
2848
  style: styles2.routeInput,
@@ -2778,13 +2851,13 @@ function ReportScreen({ nav, prefill }) {
2778
2851
  placeholder: observedRoute.current
2779
2852
  }
2780
2853
  ),
2781
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.routeHint, children: [
2854
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.routeHint, children: [
2782
2855
  "Leave blank to use current page (",
2783
2856
  observedRoute.current,
2784
2857
  ")"
2785
2858
  ] })
2786
2859
  ] }),
2787
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2860
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2788
2861
  ImagePickerButtons,
2789
2862
  {
2790
2863
  images: images.images,
@@ -2795,8 +2868,8 @@ function ReportScreen({ nav, prefill }) {
2795
2868
  label: "Screenshots (optional)"
2796
2869
  }
2797
2870
  ),
2798
- error && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.errorBanner, children: error }),
2799
- /* @__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)(
2800
2873
  "button",
2801
2874
  {
2802
2875
  style: {
@@ -2961,16 +3034,16 @@ var styles2 = {
2961
3034
 
2962
3035
  // src/widget/screens/ReportSuccessScreen.tsx
2963
3036
  var import_react9 = require("react");
2964
- var import_jsx_runtime9 = require("react/jsx-runtime");
3037
+ var import_jsx_runtime10 = require("react/jsx-runtime");
2965
3038
  function ReportSuccessScreen({ nav }) {
2966
3039
  (0, import_react9.useEffect)(() => {
2967
3040
  const timer = setTimeout(() => nav.reset(), 2e3);
2968
3041
  return () => clearTimeout(timer);
2969
3042
  }, [nav]);
2970
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles3.container, children: [
2971
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles3.emoji, children: "\u{1F389}" }),
2972
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles3.title, children: "Report submitted!" }),
2973
- /* @__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" })
2974
3047
  ] });
2975
3048
  }
2976
3049
  var styles3 = {
@@ -2999,11 +3072,11 @@ var styles3 = {
2999
3072
  };
3000
3073
 
3001
3074
  // src/widget/screens/MessageListScreen.tsx
3002
- var import_jsx_runtime10 = require("react/jsx-runtime");
3075
+ var import_jsx_runtime11 = require("react/jsx-runtime");
3003
3076
  function MessageListScreen({ nav }) {
3004
3077
  const { threads, unreadCount, refreshThreads } = useBugBear();
3005
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { children: [
3006
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3078
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { children: [
3079
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3007
3080
  "button",
3008
3081
  {
3009
3082
  style: {
@@ -3022,7 +3095,7 @@ function MessageListScreen({ nav }) {
3022
3095
  children: "\u2709\uFE0F New Message"
3023
3096
  }
3024
3097
  ),
3025
- threads.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3098
+ threads.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3026
3099
  "div",
3027
3100
  {
3028
3101
  style: {
@@ -3033,8 +3106,8 @@ function MessageListScreen({ nav }) {
3033
3106
  paddingBottom: 40
3034
3107
  },
3035
3108
  children: [
3036
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { style: { fontSize: 36, marginBottom: 12 }, children: "\u{1F4AC}" }),
3037
- /* @__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)(
3038
3111
  "span",
3039
3112
  {
3040
3113
  style: {
@@ -3046,7 +3119,7 @@ function MessageListScreen({ nav }) {
3046
3119
  children: "No messages yet"
3047
3120
  }
3048
3121
  ),
3049
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3122
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3050
3123
  "span",
3051
3124
  {
3052
3125
  style: {
@@ -3059,7 +3132,7 @@ function MessageListScreen({ nav }) {
3059
3132
  )
3060
3133
  ]
3061
3134
  }
3062
- ) : /* @__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)(
3063
3136
  "button",
3064
3137
  {
3065
3138
  style: {
@@ -3077,8 +3150,8 @@ function MessageListScreen({ nav }) {
3077
3150
  },
3078
3151
  onClick: () => nav.push({ name: "THREAD_DETAIL", thread }),
3079
3152
  children: [
3080
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: { display: "flex", flex: 1, minWidth: 0 }, children: [
3081
- /* @__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)(
3082
3155
  "span",
3083
3156
  {
3084
3157
  style: {
@@ -3090,7 +3163,7 @@ function MessageListScreen({ nav }) {
3090
3163
  children: getThreadTypeIcon(thread.threadType)
3091
3164
  }
3092
3165
  ),
3093
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3166
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3094
3167
  "div",
3095
3168
  {
3096
3169
  style: {
@@ -3098,7 +3171,7 @@ function MessageListScreen({ nav }) {
3098
3171
  minWidth: 0
3099
3172
  },
3100
3173
  children: [
3101
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3174
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3102
3175
  "div",
3103
3176
  {
3104
3177
  style: {
@@ -3107,8 +3180,8 @@ function MessageListScreen({ nav }) {
3107
3180
  gap: 4
3108
3181
  },
3109
3182
  children: [
3110
- thread.isPinned && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { style: { fontSize: 12, flexShrink: 0 }, children: "\u{1F4CC}" }),
3111
- /* @__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)(
3112
3185
  "span",
3113
3186
  {
3114
3187
  style: {
@@ -3125,7 +3198,7 @@ function MessageListScreen({ nav }) {
3125
3198
  ]
3126
3199
  }
3127
3200
  ),
3128
- thread.lastMessage && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3201
+ thread.lastMessage && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3129
3202
  "span",
3130
3203
  {
3131
3204
  style: {
@@ -3149,7 +3222,7 @@ function MessageListScreen({ nav }) {
3149
3222
  }
3150
3223
  )
3151
3224
  ] }),
3152
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3225
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3153
3226
  "div",
3154
3227
  {
3155
3228
  style: {
@@ -3161,8 +3234,8 @@ function MessageListScreen({ nav }) {
3161
3234
  flexShrink: 0
3162
3235
  },
3163
3236
  children: [
3164
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { style: { fontSize: 11, color: colors.textDim }, children: formatRelativeTime(thread.lastMessageAt) }),
3165
- 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)(
3166
3239
  "span",
3167
3240
  {
3168
3241
  style: {
@@ -3189,7 +3262,7 @@ function MessageListScreen({ nav }) {
3189
3262
  },
3190
3263
  thread.id
3191
3264
  )) }),
3192
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3265
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3193
3266
  "div",
3194
3267
  {
3195
3268
  style: {
@@ -3201,7 +3274,7 @@ function MessageListScreen({ nav }) {
3201
3274
  paddingRight: 4
3202
3275
  },
3203
3276
  children: [
3204
- /* @__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: [
3205
3278
  threads.length,
3206
3279
  " thread",
3207
3280
  threads.length !== 1 ? "s" : "",
@@ -3210,7 +3283,7 @@ function MessageListScreen({ nav }) {
3210
3283
  unreadCount,
3211
3284
  " unread"
3212
3285
  ] }),
3213
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3286
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3214
3287
  "button",
3215
3288
  {
3216
3289
  style: {
@@ -3233,7 +3306,7 @@ function MessageListScreen({ nav }) {
3233
3306
 
3234
3307
  // src/widget/screens/ThreadDetailScreen.tsx
3235
3308
  var import_react10 = require("react");
3236
- var import_jsx_runtime11 = require("react/jsx-runtime");
3309
+ var import_jsx_runtime12 = require("react/jsx-runtime");
3237
3310
  var inputStyle = {
3238
3311
  backgroundColor: "#27272a",
3239
3312
  border: "1px solid #3f3f46",
@@ -3292,8 +3365,8 @@ function ThreadDetailScreen({
3292
3365
  handleSend();
3293
3366
  }
3294
3367
  };
3295
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { style: { display: "flex", flexDirection: "column", flex: 1 }, children: [
3296
- /* @__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)(
3297
3370
  "div",
3298
3371
  {
3299
3372
  style: {
@@ -3305,8 +3378,8 @@ function ThreadDetailScreen({
3305
3378
  borderBottom: `1px solid ${colors.border}`
3306
3379
  },
3307
3380
  children: [
3308
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { style: { fontSize: 20 }, children: getThreadTypeIcon(thread.threadType) }),
3309
- /* @__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)(
3310
3383
  "span",
3311
3384
  {
3312
3385
  style: {
@@ -3326,7 +3399,7 @@ function ThreadDetailScreen({
3326
3399
  ]
3327
3400
  }
3328
3401
  ),
3329
- loading ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3402
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3330
3403
  "div",
3331
3404
  {
3332
3405
  style: {
@@ -3334,11 +3407,11 @@ function ThreadDetailScreen({
3334
3407
  paddingBottom: 40,
3335
3408
  textAlign: "center"
3336
3409
  },
3337
- 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..." })
3338
3411
  }
3339
- ) : /* @__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) => {
3340
3413
  const isTester = msg.senderType === "tester";
3341
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3414
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3342
3415
  "div",
3343
3416
  {
3344
3417
  style: {
@@ -3354,7 +3427,7 @@ function ThreadDetailScreen({
3354
3427
  borderBottomRightRadius: isTester ? 4 : 16
3355
3428
  },
3356
3429
  children: [
3357
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3430
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3358
3431
  "span",
3359
3432
  {
3360
3433
  style: {
@@ -3367,7 +3440,7 @@ function ThreadDetailScreen({
3367
3440
  children: isTester ? "You" : msg.senderName
3368
3441
  }
3369
3442
  ),
3370
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3443
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3371
3444
  "span",
3372
3445
  {
3373
3446
  style: {
@@ -3381,7 +3454,7 @@ function ThreadDetailScreen({
3381
3454
  children: msg.content
3382
3455
  }
3383
3456
  ),
3384
- 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)(
3385
3458
  "img",
3386
3459
  {
3387
3460
  src: att.url,
@@ -3390,7 +3463,7 @@ function ThreadDetailScreen({
3390
3463
  },
3391
3464
  idx
3392
3465
  )) }),
3393
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3466
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3394
3467
  "span",
3395
3468
  {
3396
3469
  style: {
@@ -3408,7 +3481,7 @@ function ThreadDetailScreen({
3408
3481
  msg.id
3409
3482
  );
3410
3483
  }) }),
3411
- sendError && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3484
+ sendError && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3412
3485
  "div",
3413
3486
  {
3414
3487
  style: {
@@ -3420,7 +3493,7 @@ function ThreadDetailScreen({
3420
3493
  borderRadius: 8,
3421
3494
  marginBottom: 8
3422
3495
  },
3423
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3496
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3424
3497
  "span",
3425
3498
  {
3426
3499
  style: {
@@ -3434,8 +3507,8 @@ function ThreadDetailScreen({
3434
3507
  )
3435
3508
  }
3436
3509
  ),
3437
- 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 }) }),
3438
- /* @__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)(
3439
3512
  "div",
3440
3513
  {
3441
3514
  style: {
@@ -3446,7 +3519,7 @@ function ThreadDetailScreen({
3446
3519
  gap: 8
3447
3520
  },
3448
3521
  children: [
3449
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3522
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3450
3523
  "button",
3451
3524
  {
3452
3525
  type: "button",
@@ -3465,7 +3538,7 @@ function ThreadDetailScreen({
3465
3538
  children: "\u{1F4CE}"
3466
3539
  }
3467
3540
  ),
3468
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3541
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3469
3542
  "input",
3470
3543
  {
3471
3544
  type: "text",
@@ -3481,7 +3554,7 @@ function ThreadDetailScreen({
3481
3554
  }
3482
3555
  }
3483
3556
  ),
3484
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3557
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3485
3558
  "button",
3486
3559
  {
3487
3560
  style: {
@@ -3509,7 +3582,7 @@ function ThreadDetailScreen({
3509
3582
 
3510
3583
  // src/widget/screens/ComposeMessageScreen.tsx
3511
3584
  var import_react11 = require("react");
3512
- var import_jsx_runtime12 = require("react/jsx-runtime");
3585
+ var import_jsx_runtime13 = require("react/jsx-runtime");
3513
3586
  var inputStyle2 = {
3514
3587
  backgroundColor: "#27272a",
3515
3588
  border: "1px solid #3f3f46",
@@ -3540,9 +3613,9 @@ function ComposeMessageScreen({ nav }) {
3540
3613
  nav.pop();
3541
3614
  }
3542
3615
  };
3543
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { children: [
3544
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: { marginBottom: 20 }, children: [
3545
- /* @__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)(
3546
3619
  "div",
3547
3620
  {
3548
3621
  style: {
@@ -3554,9 +3627,9 @@ function ComposeMessageScreen({ nav }) {
3554
3627
  children: "New Message"
3555
3628
  }
3556
3629
  ),
3557
- /* @__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" })
3558
3631
  ] }),
3559
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3632
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
3560
3633
  "div",
3561
3634
  {
3562
3635
  style: {
@@ -3566,7 +3639,7 @@ function ComposeMessageScreen({ nav }) {
3566
3639
  border: `1px solid ${colors.border}`
3567
3640
  },
3568
3641
  children: [
3569
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3642
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3570
3643
  "label",
3571
3644
  {
3572
3645
  style: {
@@ -3579,7 +3652,7 @@ function ComposeMessageScreen({ nav }) {
3579
3652
  children: "Subject"
3580
3653
  }
3581
3654
  ),
3582
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3655
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3583
3656
  "input",
3584
3657
  {
3585
3658
  type: "text",
@@ -3594,7 +3667,7 @@ function ComposeMessageScreen({ nav }) {
3594
3667
  }
3595
3668
  }
3596
3669
  ),
3597
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3670
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3598
3671
  "label",
3599
3672
  {
3600
3673
  style: {
@@ -3608,7 +3681,7 @@ function ComposeMessageScreen({ nav }) {
3608
3681
  children: "Message"
3609
3682
  }
3610
3683
  ),
3611
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3684
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3612
3685
  "textarea",
3613
3686
  {
3614
3687
  value: message,
@@ -3627,7 +3700,7 @@ function ComposeMessageScreen({ nav }) {
3627
3700
  }
3628
3701
  }
3629
3702
  ),
3630
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3703
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3631
3704
  ImagePickerButtons,
3632
3705
  {
3633
3706
  images: images.images,
@@ -3638,7 +3711,7 @@ function ComposeMessageScreen({ nav }) {
3638
3711
  label: "Attachments (optional)"
3639
3712
  }
3640
3713
  ),
3641
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3714
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3642
3715
  "button",
3643
3716
  {
3644
3717
  style: {
@@ -3667,7 +3740,7 @@ function ComposeMessageScreen({ nav }) {
3667
3740
 
3668
3741
  // src/widget/screens/ProfileScreen.tsx
3669
3742
  var import_react12 = require("react");
3670
- var import_jsx_runtime13 = require("react/jsx-runtime");
3743
+ var import_jsx_runtime14 = require("react/jsx-runtime");
3671
3744
  function ProfileScreen({ nav }) {
3672
3745
  const { testerInfo, assignments, updateTesterProfile, refreshTesterInfo } = useBugBear();
3673
3746
  const [editing, setEditing] = (0, import_react12.useState)(false);
@@ -3713,22 +3786,22 @@ function ProfileScreen({ nav }) {
3713
3786
  }
3714
3787
  };
3715
3788
  if (saved) {
3716
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.emptyState, children: [
3717
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.emptyEmoji, children: "\u2705" }),
3718
- /* @__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!" })
3719
3792
  ] });
3720
3793
  }
3721
3794
  if (!testerInfo) {
3722
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.emptyState, children: [
3723
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.emptyEmoji, children: "\u{1F464}" }),
3724
- /* @__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" })
3725
3798
  ] });
3726
3799
  }
3727
3800
  if (editing) {
3728
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { children: [
3729
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.editHeader, children: [
3730
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.editTitle, children: "Edit Profile" }),
3731
- /* @__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)(
3732
3805
  "button",
3733
3806
  {
3734
3807
  style: styles4.cancelButton,
@@ -3740,9 +3813,9 @@ function ProfileScreen({ nav }) {
3740
3813
  }
3741
3814
  )
3742
3815
  ] }),
3743
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.field, children: [
3744
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("label", { style: styles4.label, children: "Name" }),
3745
- /* @__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)(
3746
3819
  "input",
3747
3820
  {
3748
3821
  style: styles4.input,
@@ -3752,15 +3825,15 @@ function ProfileScreen({ nav }) {
3752
3825
  }
3753
3826
  )
3754
3827
  ] }),
3755
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.field, children: [
3756
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("label", { style: styles4.label, children: "Primary Email" }),
3757
- /* @__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 })
3758
3831
  ] }),
3759
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.field, children: [
3760
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("label", { style: styles4.label, children: "Additional Emails" }),
3761
- additionalEmails.map((email) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.emailRow, children: [
3762
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.emailText, children: email }),
3763
- /* @__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)(
3764
3837
  "button",
3765
3838
  {
3766
3839
  style: styles4.removeEmailButton,
@@ -3769,8 +3842,8 @@ function ProfileScreen({ nav }) {
3769
3842
  }
3770
3843
  )
3771
3844
  ] }, email)),
3772
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.addEmailRow, children: [
3773
- /* @__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)(
3774
3847
  "input",
3775
3848
  {
3776
3849
  style: { ...styles4.input, flex: 1, marginRight: 8 },
@@ -3783,18 +3856,18 @@ function ProfileScreen({ nav }) {
3783
3856
  }
3784
3857
  }
3785
3858
  ),
3786
- /* @__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" })
3787
3860
  ] })
3788
3861
  ] }),
3789
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.field, children: [
3790
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("label", { style: styles4.label, children: "Testing Platforms" }),
3791
- /* @__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: [
3792
3865
  { key: "ios", label: "\u{1F4F1} iOS" },
3793
3866
  { key: "android", label: "\u{1F916} Android" },
3794
3867
  { key: "web", label: "\u{1F310} Web" }
3795
3868
  ].map(({ key, label }) => {
3796
3869
  const isActive = platforms.includes(key);
3797
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3870
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3798
3871
  "button",
3799
3872
  {
3800
3873
  style: {
@@ -3804,13 +3877,13 @@ function ProfileScreen({ nav }) {
3804
3877
  onClick: () => setPlatforms(
3805
3878
  (prev) => prev.includes(key) ? prev.filter((p) => p !== key) : [...prev, key]
3806
3879
  ),
3807
- 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 })
3808
3881
  },
3809
3882
  key
3810
3883
  );
3811
3884
  }) })
3812
3885
  ] }),
3813
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3886
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3814
3887
  "button",
3815
3888
  {
3816
3889
  style: { ...styles4.primaryButton, marginTop: 20 },
@@ -3821,45 +3894,45 @@ function ProfileScreen({ nav }) {
3821
3894
  )
3822
3895
  ] });
3823
3896
  }
3824
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { children: [
3825
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.profileCard, children: [
3826
- /* @__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() }) }),
3827
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.profileName, children: testerInfo.name }),
3828
- /* @__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 })
3829
3902
  ] }),
3830
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.statsRow, children: [
3831
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.statItem, children: [
3832
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.statNumber, children: completedCount }),
3833
- /* @__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" })
3834
3907
  ] }),
3835
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: styles4.statDivider }),
3836
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.statItem, children: [
3837
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.statNumber, children: assignments.length }),
3838
- /* @__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" })
3839
3912
  ] })
3840
3913
  ] }),
3841
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3914
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3842
3915
  "button",
3843
3916
  {
3844
3917
  style: styles4.detailsToggle,
3845
3918
  onClick: () => setShowDetails(!showDetails),
3846
- 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: [
3847
3920
  showDetails ? "\u25BC" : "\u25B6",
3848
3921
  " Details"
3849
3922
  ] })
3850
3923
  }
3851
3924
  ),
3852
- showDetails && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.detailsSection, children: [
3853
- additionalEmails.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.detailBlock, children: [
3854
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.detailLabel, children: "Additional Emails" }),
3855
- 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))
3856
3929
  ] }),
3857
- platforms.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.detailBlock, children: [
3858
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: styles4.detailLabel, children: "Platforms" }),
3859
- /* @__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)) })
3860
3933
  ] })
3861
3934
  ] }),
3862
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3935
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3863
3936
  "button",
3864
3937
  {
3865
3938
  style: { ...styles4.primaryButton, marginTop: 20 },
@@ -4143,7 +4216,7 @@ var styles4 = {
4143
4216
 
4144
4217
  // src/widget/screens/IssueListScreen.tsx
4145
4218
  var import_react13 = require("react");
4146
- var import_jsx_runtime14 = require("react/jsx-runtime");
4219
+ var import_jsx_runtime15 = require("react/jsx-runtime");
4147
4220
  var CATEGORY_CONFIG = {
4148
4221
  open: { label: "Open Issues", accent: "#f97316", emptyIcon: "\u2705", emptyText: "No open issues" },
4149
4222
  done: { label: "Done", accent: "#22c55e", emptyIcon: "\u{1F389}", emptyText: "No completed issues yet" },
@@ -4176,15 +4249,15 @@ function IssueListScreen({ nav, category }) {
4176
4249
  };
4177
4250
  }, [client, category]);
4178
4251
  if (loading) {
4179
- 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..." }) });
4180
4253
  }
4181
4254
  if (issues.length === 0) {
4182
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: { padding: "40px 0", textAlign: "center" }, children: [
4183
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: { fontSize: 36, marginBottom: 8 }, children: config.emptyIcon }),
4184
- /* @__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 })
4185
4258
  ] });
4186
4259
  }
4187
- 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)(
4188
4261
  "div",
4189
4262
  {
4190
4263
  role: "button",
@@ -4203,8 +4276,8 @@ function IssueListScreen({ nav, category }) {
4203
4276
  userSelect: "none"
4204
4277
  },
4205
4278
  children: [
4206
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: { display: "flex", alignItems: "flex-start", gap: 8 }, children: [
4207
- 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)(
4208
4281
  "span",
4209
4282
  {
4210
4283
  style: {
@@ -4217,7 +4290,7 @@ function IssueListScreen({ nav, category }) {
4217
4290
  }
4218
4291
  }
4219
4292
  ),
4220
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: {
4293
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: {
4221
4294
  fontSize: 13,
4222
4295
  fontWeight: 600,
4223
4296
  color: colors.textPrimary,
@@ -4227,11 +4300,11 @@ function IssueListScreen({ nav, category }) {
4227
4300
  whiteSpace: "nowrap"
4228
4301
  }, children: issue.title })
4229
4302
  ] }),
4230
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: { display: "flex", justifyContent: "space-between", marginTop: 6 }, children: [
4231
- 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 }),
4232
- /* @__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) })
4233
4306
  ] }),
4234
- 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: {
4235
4308
  display: "inline-flex",
4236
4309
  alignItems: "center",
4237
4310
  gap: 4,
@@ -4247,7 +4320,7 @@ function IssueListScreen({ nav, category }) {
4247
4320
  "\u2714 Verified by ",
4248
4321
  issue.verifiedByName
4249
4322
  ] }),
4250
- 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: {
4251
4324
  display: "inline-flex",
4252
4325
  alignItems: "center",
4253
4326
  gap: 4,
@@ -4274,7 +4347,7 @@ function IssueListScreen({ nav, category }) {
4274
4347
  }
4275
4348
 
4276
4349
  // src/widget/screens/IssueDetailScreen.tsx
4277
- var import_jsx_runtime15 = require("react/jsx-runtime");
4350
+ var import_jsx_runtime16 = require("react/jsx-runtime");
4278
4351
  var STATUS_LABELS = {
4279
4352
  new: { label: "New", bg: "#1e3a5f", color: "#60a5fa" },
4280
4353
  triaging: { label: "Triaging", bg: "#1e3a5f", color: "#60a5fa" },
@@ -4298,9 +4371,9 @@ var SEVERITY_CONFIG = {
4298
4371
  function IssueDetailScreen({ nav, issue }) {
4299
4372
  const statusConfig = STATUS_LABELS[issue.status] || { label: issue.status, bg: "#27272a", color: "#a1a1aa" };
4300
4373
  const severityConfig = issue.severity ? SEVERITY_CONFIG[issue.severity] : null;
4301
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { children: [
4302
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { display: "flex", gap: 8, flexWrap: "wrap", marginBottom: 12 }, children: [
4303
- /* @__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: {
4304
4377
  backgroundColor: statusConfig.bg,
4305
4378
  color: statusConfig.color,
4306
4379
  fontSize: 11,
@@ -4308,7 +4381,7 @@ function IssueDetailScreen({ nav, issue }) {
4308
4381
  padding: "3px 10px",
4309
4382
  borderRadius: 6
4310
4383
  }, children: statusConfig.label }),
4311
- severityConfig && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: {
4384
+ severityConfig && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: {
4312
4385
  backgroundColor: severityConfig.bg,
4313
4386
  color: severityConfig.color,
4314
4387
  fontSize: 11,
@@ -4317,9 +4390,9 @@ function IssueDetailScreen({ nav, issue }) {
4317
4390
  borderRadius: 6
4318
4391
  }, children: severityConfig.label })
4319
4392
  ] }),
4320
- /* @__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 }),
4321
- issue.route && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 12 }, children: issue.route }),
4322
- 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: {
4323
4396
  backgroundColor: colors.card,
4324
4397
  border: `1px solid ${colors.border}`,
4325
4398
  borderRadius: 8,
@@ -4331,56 +4404,56 @@ function IssueDetailScreen({ nav, issue }) {
4331
4404
  whiteSpace: "pre-wrap",
4332
4405
  wordBreak: "break-word"
4333
4406
  }, children: issue.description }),
4334
- issue.verifiedByName && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: {
4407
+ issue.verifiedByName && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: {
4335
4408
  backgroundColor: "#14532d",
4336
4409
  border: "1px solid #166534",
4337
4410
  borderRadius: 8,
4338
4411
  padding: 12,
4339
4412
  marginBottom: 12
4340
4413
  }, children: [
4341
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
4342
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: { fontSize: 16 }, children: "\u2705" }),
4343
- /* @__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" })
4344
4417
  ] }),
4345
- /* @__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: [
4346
4419
  "Verified by ",
4347
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { children: issue.verifiedByName }),
4348
- 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: [
4349
4422
  " on ",
4350
4423
  new Date(issue.verifiedAt).toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" })
4351
4424
  ] })
4352
4425
  ] })
4353
4426
  ] }),
4354
- issue.originalBugTitle && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: {
4427
+ issue.originalBugTitle && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: {
4355
4428
  backgroundColor: "#422006",
4356
4429
  border: "1px solid #854d0e",
4357
4430
  borderRadius: 8,
4358
4431
  padding: 12,
4359
4432
  marginBottom: 12
4360
4433
  }, children: [
4361
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
4362
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
4363
- /* @__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" })
4364
4437
  ] }),
4365
- /* @__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: [
4366
4439
  "Retest of: ",
4367
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { children: issue.originalBugTitle })
4440
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("strong", { children: issue.originalBugTitle })
4368
4441
  ] })
4369
4442
  ] }),
4370
- issue.screenshotUrls && issue.screenshotUrls.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { marginBottom: 12 }, children: [
4371
- /* @__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: [
4372
4445
  "Screenshots (",
4373
4446
  issue.screenshotUrls.length,
4374
4447
  ")"
4375
4448
  ] }),
4376
- /* @__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)(
4377
4450
  "a",
4378
4451
  {
4379
4452
  href: url,
4380
4453
  target: "_blank",
4381
4454
  rel: "noopener noreferrer",
4382
4455
  style: { flexShrink: 0 },
4383
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4456
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
4384
4457
  "img",
4385
4458
  {
4386
4459
  src: url,
@@ -4398,16 +4471,16 @@ function IssueDetailScreen({ nav, issue }) {
4398
4471
  i
4399
4472
  )) })
4400
4473
  ] }),
4401
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: {
4474
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: {
4402
4475
  borderTop: `1px solid ${colors.border}`,
4403
4476
  paddingTop: 12,
4404
4477
  marginTop: 4
4405
4478
  }, children: [
4406
- 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: [
4407
4480
  "Reported by ",
4408
4481
  issue.reporterName
4409
4482
  ] }),
4410
- /* @__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: [
4411
4484
  "Created ",
4412
4485
  formatRelativeTime(issue.createdAt),
4413
4486
  " \xB7 Updated ",
@@ -4421,9 +4494,9 @@ function IssueDetailScreen({ nav, issue }) {
4421
4494
  var BUGBEAR_LOGO_BASE64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAAXNSR0IArs4c6QAAAJhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAASQBAACAAAAFAAAAISgAQADAAAAAQABAACgAgAEAAAAAQAAAGCgAwAEAAAAAQAAAGAAAAAAMjAyNjowMToyNCAxNjoyMTozOABbbVCuAAAACXBIWXMAAAsTAAALEwEAmpwYAAACo2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpJcHRjNHhtcEV4dD0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcEV4dC8yMDA4LTAyLTI5LyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPElwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWE8L0lwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPgogICAgICAgICA8SXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPmZjNzJlN2Q2LTYyYTEtNDE1ZS04MjY5LWM2NjA4MjY0OWRiMDwvSXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAyNi0wMS0yNFQxNjoyMTozODwveG1wOkNyZWF0ZURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgri4oBIAAAq4ElEQVR4Ae19B3gd1bXuPzOnnyPpqFfLstxkuQM22MZgmsGAacFAILQb4F4ghRJqCp0ESEIgkAAJCRACOBhw6MTEFhgwxrhhIxdZltWt3s7R6bPfv+ZIhst79/ueLTlw82nj0Wkze/Zea+1V/rX2AIy0EQqMUGCEAiMUGKHACAVGKDBCgREKjFBghAIjFBihwAgFRigwQoERCoxQYIQCIxT4BlJAKWgLFiyw5ebmetPT09PkyMjISC0pKXHdfvvtugK0b+Cw/8chfaMHK8RM8fmy4/H4lLhSM8x4fIIJjIOpcqHg5azsPGQO/BphHkFoWqNuaLsMw9hh0/WNDodjR09PTxd/+0a2byQDnCnOiWbUXBSPm4tUQs0AVM4g9dxODaluwMNXF8mvawoJkj8SA/ojQG9IIRQdPNt6bdQM41Ob3fa6z+3+R2dnZ72m8aJvSPvGMKCgoMDT3t5+asxMXKzi5tGkj9dmABPyNcwao2H2GGDKKIXiLCDdo8Fpo/jzIHNAtWQxIRzX0BkE6tqBrQ3AJ7uBdbsVdu4lkxJyrtZtGPq7Npfx5JxZc96tqKiIy7dfZ/vaGSC6nFJ5QSyR+B5Vy1QhxqElGs48TMMplP2powCDmr29B6huA3a1aqjtANp6NQTCJuKUfruRXBXZaQqjMjWM43oZm62QmQbE4zq21AGvbwJeWqewuVa0FVlhM9a67PaHysvLl61fv57r5+tpXysDDIfjrEQs/jOK8HSHXcPpM3VceazCgkkmopTYD6t0vLNFw+odJnY2K3QE/v81R1aKhokFOo6aqOHk6cCc8bzWVHj3c+CxVTre2GQiFqdFt+mrPV7XnYHuwD+/SarpoIqDy+UqpV5+kTdRMumzDjPU+jt0pZ7T1M5f6uqWxYaakG85NELxgYOf7Q4Fj08hNUNp/iyl8VVP8Sff+ynyfA+3V8HG82Dp+eS1vMfkUbq641u62vMb3ucFQ318u00tnmkMnKcn7E774zk5ObkHdeL/j87/5SuAXsnZ0Xj8IZhmwZQiHb84h6pmlsLWGuCBN3W89KmJIFWL1QwqebcXmtsHuGh5bQ4gFoEK9AIhKnuTmsM0oeWXQLnoFClex88w49BE6UfFKndChfv3Td3v1XHuHB3Xn2hifCGw/BMdt/xNYXuTCd1m7Ezxeq+m1/Tuvgv+jd4Yus12JyUzIVJ/9fE2FXhCV52/19U1i2zK6xSJT0q75vYoLbtQYfREhTHlCmMnK23MJKWlU8oHzsnwu6g/KOVycCUgI9e6RisYo7SSiUorLOVqSd13/n9bEewj1a2pm7jSev+gqZ4/6Oq/jrPxXOlPDzndzh8qpf7lwnnweF1U5NYN/RmZYKZPV3+9yrDUzfJrbGpsrqiBATUj6iOvOEl0IXhWHpkwwTo0D3/jeWXjstRLjy5Ux88t+OI6fi9M1XX2w1fN4eRvuvI4DfUfS8rU334zX334l6PUO0/MUffdMF0dOTufvydV1KQiXb19E8ez1FB//k+bSvcmVZ/T6XxIAr6DR5R/Vc/0cjRDe0WINz7PUOvu0lXiL5r60ck2EmxA6u1OpeUUkfCTrEMrLVcaJVqu0VxuHh7r/eITxqnWisVq92OjVGaaU1149hT1zAML1BoS9/n7pqtZ5SnWeXLdZBJ2zR+mKrXmcKXeyFPqlVSllqcptaJIxT84VL308Bw1tiTdOp9elPrpWSIUvOYOQ43JSdoGh8vxzKJFi5wHk1QHdZmNGzfOWVNT81wikThrVqmBF78PpNKGXvx7Ha9tsBxzhrppUOn0G20UNtHnGoeUiEM17aEP+YV3uPDIYrx0x1h469fQx1foHXci5k0MALXb8btXu3Hv8ggaO5N9FmXqqPiZHSW5bnQ19cBF04GEAlcIxKxo9Lgc2emoUaU4/64mfLy+yaLxkiMM/OlyE02ddIMf0lDZYMLhsj8994i5lx2smOGgMUBwmTvvuutx0zQv06gZhAGZVMlVnOuulqSRpQcDMyufFCFlTCEeBVLe08gaHY1YNCsVr6/tRVlJGlbePwZZ3VsRi8ZhS/XBkZGCxk3NuGmZDSvqXcjP8yIcU6hv7EOuN4ynLzMw3m6iizzqYiDWTTvcm9CQR6GfUMJgjgssbtrRnjUd86+rQiMZJe2oSTqW/YAM7tdw6i81bG824XQ7Hgz3h68XNWedNIx/DhoDbDbbrfFE4h4rTB0YsM1uh/j7URKRMAO/5e1dHmjpWV94McKA1iYUp4Tx5nXpuOQ3rbjuuyU4p6QBkTC9Gl1Lwg9KR3V7DvZ683HoWB3pqXa6+Rp2ksF3P9uE5f+sx5WzNSzKNrGqQcPT28mMiAYfbe25ZRquPhY0L0BHLAV3vuvGE8tbOByOh2H13AkGXrueK6FLx8L7FJq7FHw+79WBQOB3w0h7q6uDwgC6mudEo9FneQd7yahUfOe0Uhw/JwfFeS5GrSY6emJYu7kNS1+twsr1fcmBpGUkVZHIWGMdjiwz8colOvbUxeDPtSHDEYKbwZUykwwQHMKeXwyjdy86a4NoIf3e3g68ulNHVbcNjR1UX5zdfLq6H9PFPDY/A4sK/WiPxPFsdSt+cFgYly7S8Wa1gWtfSKC1JwFNxhAJEdYLYeE0Ha9er1BRqeOMX0tgqPX7/f7jGbWvsQY8TH+ItgxvI/HPJ/GfYq+Oqy+ahmd/MROLZ8dR4miCP1KLlEgT8p1dOHSaAxefWoBpRSbWVobRTRBHE3+9l8BlPITZE2w4sTQBm6yWQAKp2RROaikbFbq4+wL+mP1d6G6No6ndg5veceGRj6II6U40d8Zw6SQN3znEjj9uimNhQSauL89Hjs+JsSkuTErxoLI3gPKMOFx+A799l5AQDYRGlcgAz4oxqpvi2NtD5pxiwsZV+e5W005UdnZpaelfyQQuxeFpw8oAj8czKxKJLKN343ngljm4+7t+uJo+RbRmF2JtHUj09iHWHUR3XS96atphi/dh2oxsLJoax8rNMbRxXlk+Ez8604NbznDwvCgSUfEsNdTXiwGlCskwoMgUk6oioRvo69GQku7G/GNKaFwNjCEWdMWZY/CPLWH0tIewp8/AjVMKkEObkZmfCXeaFy4ae7sWQboviFZiRS+so/FnwKcyGQizT83JoK+/Dxt2J5CbauCaRSY+3mUQDonnhkIhGxmxYnjIz9sNV0clTIhwcL9lAOO7/vIZuP4MhfCm9xBpbIMZlsiUn3sVAp2cLAng0E1EWvsQ3LEbE/39ePwcHX5CzKfPcODHR8WQr/UiGk6gjoTvoH0sKNaRkkk9Hxr0jKiOQiY21Tpw5oP9uOqubTCiJHhbDIm2Pfj9TWOwNubHKKcdo9M88GenwbDrsBNG9ef4ke4yQAwPNfR4rCZEF51FvIhWF3SDra9vZZS8jTbkwQsU/B4d4Ujke1lZWYckLxr632FbAf39/WfR3bxm2qRcPHtTNsxtn5BYcU6a86HkbqYEvbmJS3kzoeJdxO+7NRgEw9yOBD0bwje9CZgBDRU7EjhxTAJpmYrf6yS8Bg/DAJcLSCHaaYVsVAliq3W66xOpqtriduyqi6PcFkJjSwxvb0vgRws6cfoJE7BiC79nAmF0rt+CrGU10TNDf38dMjKieIWA3+Z6rrJMusL0UcVjs/4JQxIxhAMhC4G99mQKEMdTsc20c54FXAUv3HHHHUPmwLAxgCO/nbq5/J4rRmFaYgeizIrYHZyOZuCO13R8/8UECaNjXaOOt/eYPBQiQQ2FFLogYZ1gSIOd9q8ppGPRTOJqqSS4HISBfHx1kAEW8QemLA5LLKqhqTqOYjJib9yGm8/UsJCoZzZtRbDXxLyyTkw7ohx3vt6M2Vmp8FDke6kC+3rbYRiNiHsM3LcygQA8gD+T/ZMRX+pfc/L7YC+qmxMoyzdw4TyFpWs1tPeZ4x5+6KFV4XC4bqgcGBYGZGdn+4LB/ruz0+3+86Yl0FLbh7HFNJh0GW9+UcMj7+i4dFw+rhifgzOKM7AgLw2SPHluZxhdJPwUxgd9dIbi/eICEkaeKBkv6ni6lXuJ+1Mr0+kR2Rwkj3iMmoX1NzcSc+s3kWZXKKJBzyF6UUZ1dfPLGqHsBM6Z2YeMsaW494XtmEFG9Qf6YOq1SM+I4c/bDayuYq+5BfTXHBYthbHJ2/CNwTvLUusPYFuzhquO50qlsX77M6VzaKnxWOzFoa6CYbEBRA9PVMosKWAC5Ml3++DOoq7lZKuov5//ELhtZhFOL/ajMN3DQMiLsiwfrpmUj++V5eLlnQov79Jgo/RJWjHbT2KSISu2GTjhVxqm/kThmmUGmSFskJb8y9OpqknsqWQYXcYT55pw854S8XbGDdRrLvzlY2DBT7pwypgWTDkyG09V7UZmVi186WG8WGfHU2tomzKyGYNQ0kX381+y/+Q9rBjGx0lRHUlU/NwaHZfMJ6Np6KOR6CIKHiOJobVhWQEcwj00vpN6ggo9TI3fuIj5REpwxUZKdVcWTipOR2puOtJpCH30Qjw0igaN43iXDb30y1+p6ccJo5lmZEel4whJVxr49mMms+wO3HZpFi5a6EUKPxFFGpjtIIFkJVAqKf02yQ9zNqap02bYcfmSApxwRBpeWRtDe3Mb7v1uLh5YFcGezn78dYeBlzYloMTlFNUz2OtAt4OfOSd2Snsjy4JeUUO3ju8tZJzI1w93mnbakk7agorB8w/kdcgrwOv15nEgR4vkhGP0bHjQtlrIgh514OicVHjTffDR97bmx98MLusUMiK9MAsXluUh1XCgnioom/T4lDbiqmcSmDnRjY8ezMYPju7H6GgbYoEYiTsQhA0ag336guqJOsFy6qj2tHgUPZuqaYta8eataehTHti7avCTi/Px/FaFDQ2cdt4oEp83FCLLwb6UqBse/JRs8pmjVl4aIbsTG2tMvL9Nw7ePYG6ImBLzGmdNnjw5qbsGr9nP1yGvAErHSfQKLl40zUBeqoaqFoUzpuvIohMRbLXT189GZl4G50XCJFlgTUrGyUoFGkYDlS2dmFkQRo5Xw72reJ1uw9t3+lFidqDyk37sJIzQRHXW1SYJMeZo6A7uI5L1TohvsZf5Y2DPLqq/HQqtjCM8tPALaNSNRBQzSgys2WPH7mbGUVl5MgSL4JbuYaJHpFwSOOiRg4nnvm4rKrZQPGE2A0UHXdnLFii8uoEOQKfKjETCrzP2aUp2tv9/hcVDaiT+sdLB2bOAJYdrlqu3spLBJF1KpzsCNwMrwYCEYGJECdxbgioMiVLpN3X0Yk5xFMTbrDxwKz2ia053YSyj5c3roqivE1CU11BK+5gT3rGFDOqzerLoNkj4Qd6KKpffI2ENSwkj3PmWQsPOGFLJXCPYjh+dTvUHRr4ScVPCtQCJ3FBN+GM3HPR4nERi/V4fRpdOxNiJk5GfmQVnT3uSIZzDu1xBYqsWThGGKyMWi1nz54cDalxIB96WLFliLFv20uE2unezShX9ZVlQJv70kcKx9ETSXXF0m00I9GRaul8n8ROEEITw/YEIQc9Oxgl1OLwwbAFpqcR65ky1Y8khJtqJAbW1Ul2xxzAFM0Ekk+oY8bDCbmI+5YfwgzTSQUghHCZ7rXP8XIlLP1R4YpuwXcPWlymxo4Gi/DiOLQ1h/ow0VGyihIeDUME+5JRMwMyjTyLW5EdRSSkJnEBzYx0XQCeR8RgrwVgQUFeFqvUfMtCL4LMGA8eWKfz8NbrCscR82or7qQnkZvvdhsSAlStXMtOhxhamJ0tBnlqdhJnrOkz8fi3zriSSbutBd8dWruxCrggPcRxKUH+YUHCAsHITHFrUWhWMjWgngMuOYdTrCmPPbgWTBVZiE97bS+3A34uZ9j02j5LMubYRYs4pIMm/NG1ZXfJRYqodXEkiDN+58ELMmn8cHnvxCvxiSRR6pA/nz01BxQaKcTCGqUefjMmHH01mNyN7VAn2trZhy0cr0VK5Af1cJYp5Ck9aOsZMm4VDFy3B2jdexsdVIZzP1e6n89Qdipfn5eXxHavyDqANiNEBXMlLent7aclU6rhcDW66MJvrZPrJYykn+OhGGmbCxt7Ubno9OxjGb2M0WQXlqIHDX0upjlJViJchl9GTYR+zi+PQhUkM0rZ0GLhns8I/iWau2WtiabWJG9eY2BWgPaCtsbwU634yft5X/tEYe7kCNJe1LvD5559jyVmnYQdmoLaVsUUshiPyyHz+PP2401A6bTa2fvohsotKsKdqO1Yve5qS/h665x2C6IJ5MN1uhEIRbK54C500ROVHLsRjK0WVGhjLefOeBWYoxEDiwNqQVgCX3WgucW08YZMoBUoKpqRp9J1NQrp/pg6vqCImP8ZAWXoCKa4gXMTjJWMbploNhDSMyqNo85/HzViAoxGiircTITyxfA8ZQb/e4hC/n3vkfMyeMw+/fepBjCGMUEw742EW0kJHhYvCAPZlZ84hK00YoLBxw3rMOWwm2trasabYjuLCBJZ9EoUrt5Su8ShsWPUGckonoam2BrvWVqC1qwH6XT9BzhGHwUWorGn9BuCRP8ITSMWujWswbcEp2B4rJqxSj8mFOtbXJJz9iQTpgCqZ+/62ITGA7meR3LCE3lwPYYQOSqY0lZLOlBP1QHcbanr68LuNCet7B9ebg6KXQsWeR6N4PiHjEvr2QjSCkUgl0UwhOP910YjuZCLEwiDEQ2EbXVKCB+//OWtAY1j+j19hykRW6PKapBpKElwuFlV07GQdf9pByQh2oHbPHuv69XU2TKq149EKE6MO44r4fAMcPj/8GZmoqdyMvTXboN11K0rnz8Ebk48gbO7AVf4M/IXlL/p9j8GRnoc9W9YRGi/Ga5tqMTE/ST46IhYdrJvs558hqSDeK1smnEMPpqefeppSa0mrWEsJ7bMLoRWNocuXT1DHj6jdgwA9muaQwgVHGTiqhJ4NVY3430Eyz+EiUsr+pBRRWBZhilGuE29F2kt/W4pfPPAAIeowPmgG2uktDmYybTzFQ/fUQfeXNpsJIIUbFgYwejT9Vvb6y/Nc+NX1U7B6lx1dWhY9K+Yg2lsIb2cj0NeL1sqN0BedADXvcOzlYO6v3YFH6quxLUAodvpUJKZPoO/vIDTUA6lZ3dbqtFasjIuCOODTyqf9a0NaAVQXMjsaI2IsTPdFB9SFRgYQmkiORIqpUh0kQXpSUlsbYA/3Ymoh1Ut7spiNZKYtYOqvXkMpsSChvp96isEtG/+WTAYBJkTpJt5y443Wt0UpOvrIdEXr7XGwsKqdaOt2Dz6qT0NjkPlh9pFp68MJTNwffaIHS6ZEEGvcidfXhwhrj0Owi/kIFnN5vF50ULeHEmFoZ51CqJzgHMf+x8Zqds6RSfzCojBzWjnURmoZCpaKhdATcxOLElZbLXPwzf6+Do0BlpdIf580klpOi+YccLINvlL+kjqCTKB8k2BplFQXz6umzUilsUyl8ZWJNtbSzeQq2t3CmlCmCifQICutHn1aF5p9NnQHZSXwRuxnIjVcSTEha66Yn1f48fimInTH/eyfxkhFMX3esYgzen3+vdUY7V9PD8xES1eEkktcKSXBTFoT0gpG02010MMbm+PHQi8ZLf6uDMXyfgaGnRx3Ku0aJ6izT8VYgbk6ir6IDs/VkoJofdjPP0NiwOC9BgRF6MLGQSXHNfhz8lW+o/souEp30MRZT9KXzyPEO4GFbc6kHSCMw7JEA94CA5fP0HH/pNE0qC4EG3exGpr+d7Mdz3xgQ09zHA8voR4v1bF8ows/fp6BlY9Bg07LPtA2vfcWr3Wgv7kZReSw0uMsXWdcEibmT7DPpH8v9AsSHQ11tUGbewy9M5KD2JSEeTIVce1FqOS9ouqRb4VhyalQVUqQwkaZsmae/LR/f4fEAA6HM2ctJ22km6tAYADZLGFxwBr1wHt5sYbIP2SAFEQsZGXCVdMZlAWkSjlpgIvGU4fTUmf6ojA1Ds3uY9arn54TY4AUk/ncBE4tt7EsVKceNtBojkE5wbsTx9fgnR2MaGUAkubiPQIBRrok8oIyN46ZWYqOSBtC4RYwxoKDEmyNjJSMRSKISyLen2oNmzI+kCbkj0JpLgcVJ2ra0MyYhpNUdJP56jLoSdHbksYUbETW5YE0WdMH3Lj0aKGATrqDqYSGrQGJyAyu3f+2FDjYSD8UsfUjmcX61VlUH1wJcY5c3MbsQqoC1uCY/QmpQCDt4ohVb0K8eaeV0pTzJIegwjF47IykbZmI6W74/A789srRuGWhC+OpiW0E4uQ+1GUoy2UccWEB1Y8Nq5kbsFKSlFp6LdCYqpPVKE3yyyocZkVEbN931g/8XeodwXy2Vl0Lg7C18JcZZeS4Q5ZHJ+fRFg444NZV+/VnSCvAMLS9LERm/QzzpfQ+5AgSjk66JsnJJcWI3/GjIrilc/g/PEZDF4nNUEGKnaU0CHtrE5gyQ97TAyIDLOGzlrhcaFrCLUDYXibhrWuyksioSWK605245sLRuOjkMHY1hFHPvHDlli6cc1Iuxo9LoXEPYt32Xhy1mIbZQ5iBy0AkLx5l0p9GV5wGsEoCTY30j2lciF2xd55Arrd3QG2vgq2hBba0HMTCPfTcgjh0XByBSFIHMUlDpXhgTcZxwI2LtU4IXN3CgIheS54V/LC7GKVQpGuQB3IHwRr6CS1n65jKfG9drZxGWEFWNX/OpsvOzXXkHSNjfh7QwlYfUkLaTcb+4AUNh90FHH0fsPajbtiZs+VOF2vBiQ7wZXhw2KHZ+PbCXGQwrmhu7EZ8byeeea0RxbkJqjaFaazLjYm0czxhgRrIXIcEIc0t1PMBqJ3VUHvqkJCjqpoMaIde8QFXtxeJUB/v50SovRGncDNJNdFZaVwBpMOBtSExgNVve0ihRBXtn9B7It19q9FPT5JVPiXJaVkzGohCv4ZcYkdO1uk7WfDsoBckxqybSY4WgrpSuymXSH/WpWSP+N2fMZ/c38gEfkShtodZspf7serN3Qjubke8N0T1wVIV5qEjLb1Ys6Iaf6tUeGVnOn765xYktDDOn014ulFhdo5JNUiDSqmPEYwLUyichKZVJYOwAOEcjlH19HK19lnM0d/7CK7Pd8NGhDRChkVMA7PzezC/DKi0QGgtwlqoGpnpgTRO7cAbkzGRcDhyMeeecvnRVJV9koelVAj1JJU30ISW9NUsfD2FZf02loYU2akG+N0AsIwQ88FpZI6fQbRJXa8LWGM1rgp2WZCuMIMRdykhi0+44hoJTa/YFUfNnj70NnSjtbYb27d14JX32/HEVh/O+/GDOPV7d+PV19/CDybspeHWsLtaIZcMX9PALBmTRTqlX5H7zlQ/wvV7uProwk5nzEFPR+/qgfHWP+H8ZCuc/myEGIc4GRQGmhvw41PiGMcVe8dyy2nak5OdfR9xsQPSQkOyAd1s3Gr0eUfALPiMWaZ54wUOJsFkZ4pUNks0PGiQRc8yYPi8IYqt9TqOm8GEBv1OJ6sXwiS+kDtCbKizXZhC15SrRIA1g3le6UIKFFJyNExgbvZxRrWXLYuzXiiO5bu5y2U3bYRGA87zSiZNw/X3/wz9PT247fv/gYy+nUgQ1miWHALFzc3jSu4bu3dzF3pZnCsuqIvlF/5xU9BBaddaGKDxZkZbFwzWM8kcggzK3MyehXsJKpr9rMo2sL6WZoMQrWEzNjc0NNCaHVgbkgqSW9oN4wOh0IpKDdNGAWOySUpL3wswlJRi0iXZHBJxATOKFZ7fbeDql3iGRD1s8jdAIrWxcrqLEfLeBhZNsWJBcgjymxhmVrLDRkM/yojhjiVueiE2zM7ORxnh4gEICXuqt+GHl12IG6/6Lta+/0+U5Qg7uaI4U+lJapCmjTKQw9yDQBrhzmb0EYq2U7ozx8+EY3cD4hs3IdrciFBPKxL9vfBk5iFCByJMbGsCy1PKGcW//ZmMWtSjUSHvDrQNSQXJTan/wvF44tJgVNOvPB7ck6tZe3MtnT+ghoSAQgQrIiacYGcJ4bMfJxAkMc6bTSmnXs/KpjHlie0kfoSwBu0kyw651VS8Ha4CbvKgtFm9oLbGxNyJZESpHbHWQtx/6HE4gxLcSuN/Ym4x44UM7KG+ZjSBa4k51TCfkE7vSmKVOJn2TK2BVVUsc2e1g92TgkhXK6I8X1SMJ68YLlZrO8lUR2qGtYKDbY10mbkvje2S+TqOLweup0PQ0YeI2+26mbWwbdaPB/BnyAwoKSlp7+ruPbu918w+ldHrlAKFpz7guCV4Ee9C1BDJL/+orqBxItsbY/TwFJPaCoexFLxslI4Ei6Si3XFrX53klqQSnSqaRbvEmejWZ5AR4rd7fBoLq+i21iWw+Ah2ndODR9buRbGWh+8fciSza8W4aOwM9FEp5JR14JzxJpYzBphF2HtLD4u33gdW7xR1TayJApI3ZTZcGfno62hFsLmGFXvtlHYaW+aEQ50thMW5KVAyRcwHU27w2++IkAG/fpuRsM1Yd9rixQ9UVlbuW+T7y4MhM4CVwgmH3ZYTiycWOBnFXn6sYmGsjnpmxTShoPcLYyzGTSoWxE2VSmRuFEADY4gQk/ABIqSFrBe1OentUFSdDJclN0A+WgQXAUxhooVJNcLHOm0FPcf6BI6ZquOYoxJYzbz4q7t2YVtLG95oroSjrAW/ODOGVR8GUMfYoYdlhT95j/v96OYfOoYl7PTc4lxmPfT9jQTVJccl7imfR4GEN4WJGEbhLFe3KieCjDcZkR9XbuCG04CfLWOpZR3dV7v915999tma/SX6l88X7TDklpKSMqEvENxIWNqz9R5gVSVw7qMi8vyXX5IsfBJmsGkCAzB4Uk4XtNZGbjmlt0HJPvdwHfcdp+G2VTpWVJn43akaMlkFLYkZ5mcss+LgYsrM1bkhkl0Q1t6xjUaQfY4fzxLHCV70s2SiJWqH1GcVEKlcs7IHV/9dquqALe3clsqCqrU/ZbwVNDDjNhKQnta1i5044xBeQNT25bUKD7xCbCiVN5B6IbHq4lI31Vjq8/VrdUv/T2cfXGFd6en+aRRAWqsDb0NeAXJr6sAOw26bGuhPTEmjf38FV8Hbn+ncs8VVIAS3bMEAr8UaWkWwvJAhsHwr0WxjRxxtCRueXB21vIt1zSJ8ditTJviSoK1SPyqVIr0MgHqpmrpYR7qqQQpzGajVh1kVTT+eR/P2Hjz/Thg/ZupwZ7eJZn4ttJxOBpw0RuH+d4EN9azau8qB/5wfRQZd08K5C3DM3ExU7WzB5h1cpXRNRU1pHS10z8I4htJ/9zkm7lzOHDWT/Xan4+lgIPA8TxpSG6DKkPqwLk5NTT28t69vdb5fs2+8mxPczT1WD9I15My17AJmjsXBJxXEGLAlb0xXU7wcYguquTbpuhJ714jTC/ookIbLmQT6uL/dsgkpNKQzcjXMK2RMwGppxiBY16pjeyeLZhkb9LBkvY36v1uSOdaNeCcyXeO9jx+l4ZxxDOJoo8oYczx3HhO6tBEGsSjNk864ALjuxSgefZNvSkutkhXV0gAHxXTVrQZy00wcSuln3Nfv9XpmccsS1/rQGhfn8DTWh37icDqXNXdFv33337nr5BLuxTrcwPNrCO/Sy7AAHysu+PL9yBxhCtFFLa/YUkdiGxQxd9G9Gg1imMYwTC9psHWSuLXcZ/B35ppTeFoK1ZKdtqOfbmoHfyPP2Oi+MjWmJN0p8QhX2GRCINfOMrFshybFEOihA7B9hyAQTOLTTBnohGeUCys2c7mJfaJNUCL9ZPx3j7ZhbnkCFzysM/OXoBdnf3o4iC8jHXIcIJ1Io4ei3C7XbQzxu/9YYeLD7Tp+eb4UsvIW4hF10HXgZP6vJktBvhfmpLNQVrAIftaoa5RUpwkxyRCby8cYIIXVFVwhcg6h5z5qiibGDgJNtBHWNi0snNcSYDJcKdY1yftpKCdNBcn8hDQlgApJ5T20XcOuDkFegfxiA+/ssWEnDbuWmgKtvdlyFsqYm7j3XBOvr9Ox9GP2reuttHn3Jvsd+t9hsQGDw2CJXqfT5TAjkcQJG2s1XHk8q5fzNSz7lNExcXdLh3iIuw+oIblO4t7BJrwQGEOjzlXtTfzAQMeVahFeJwgmjLBeuVlAZz2pQSnXaTw18a5EzfC9SL4wSxInonoU4QVFyHYqGRAi+LeCuj+NDLh1pgRkrLQ4QkMZ/Xpfhovem42b8gQdpbpj1OuhR7b0ajoDHPLZD3OFUcVxy+r1gd7AqsExD/V1WBkggymbWPZpZ1fnvKbOxJg2Jk5uOI06lrVBUq5IrMHy5VmvyA8kvEg6CT7YhBXWpzYSn66q4fR+SYqTZ1nnCJMGiK5T2oUxBpliMHtmMUSS+AN9S8LfrSKYQxzpM0p7E2GJENXUIYQ1yohLRVjRvZe1/x0NCm/wsThbGKOIzy8jefhCA986wsSljxv4gDt3CD6+fsZpZ9w4FL9/cK6Dr8POgLa2toTP6/2YZdtL1u9WPj+fbnXjYoWWbgOf1pB8fMqJRXNJAgwQfx8P5I0UyLI41iBsYfNSbEnIJFcEqqY9sfD7wb0CnIZwRNoXfEx+HviOaRiM88UwPS2O1TRFDkKroqk2Mf7IZVDnEW1GQ17JB0H9/tOEtdlbLuUjc3DTWSbuflnHIyuYJ9P1OjoaZ/PhTt1f3GDo74adATIkcUvdbvd2BmdnV1QqY2I+V8KpzAGw0m2TPLGKQY1UH1ilzkJ0ITKbtRqIt4j0u+jsK64cmlX5RX6mro4wUGIQR6m2VMxXqS6nSVfymrwk2Se/LPFEsZbBWzYjbgHuGhjYVXChhZSNldzcRvVhAm39yXFce5IN919o4s8rWV75nHX/kMfjPo+I5yb2PKztoDBARsiq4Sqnx90VicRP5pYePnpMww3cc9veZ0tiRaKOJBcrMKfkWtk0sYaSIKd68eSMIv4SGFwkdGdNBl8sHeF/1ioQWENUzb7lY3WR/DNAfKtP/t7HbE2WI4Z66nA3C4hsZIi4lj4GYt8eq+GNahMbiUEJ125ZnCT+0g8Z1T/JfDUdKZfLeSV3gBI6HP520BggQ2Ud5jqHyxULhRPHvboRhAGojk434SVk8T5dwHiEbgwxBjGg1gOZBG/gYSfsafOmIy6/WQQmcklPSgkDxLCKeNO11L/MhEGp/xLxZTWYXGkJQh5u6hkBA2u4GzNEHCpCt5Ub9lHRCGzv4vYmbih88AIDt5xNLIvR+OVPclckfyfYdiM34z06/KT/F/VIPEdzuB03UboUN9qp+85nSPW8pt650bAeX8NhiOgpAnfM6jOzz/dEJJWveJJypOUopz+PR67SXSwCFVjU4H4kh8865DtHavbAOXLel460XGXz8tFmTl5n9ymfw1CsrFY5fFCTuMzkrHUvuV95oa5W3ZJ8XM3dS+zKsB6joyWoRq+T8fOc//3N5fFcQfGle6Gpi+YbqutxQ3U8ZrOeVCWM4Qz3He7cIuXJHZMkaHq+cpKYmoN4svisEjwbLIUjEzRn8uBqUfaULIsZwhAhvO5K5TUD58griXocGTA9Q1fEnqx7cf+y+v5Cm+rhk7vaH9PVeXOId3N8ZE7A5XVd8r+f6l+ZgTfNewLVRo0QexKl7i3rSVW6+uBnNnXCVIHQhDDJg66lsnv9JH6ORVgGVwMMEAIJE+xJAgtxBw9Ku0j8vs/yvZ2PP9NJWEvqB5msqZOmGWrNbfIAP129dp08JDB5f46vyufzLfjK0P99Pvrz/CVM4vxdCM30pbr4KEPtfpCE+KuuVtxsU2ccZlN8Oi4ZMUAsRkWabIMUtTCwAvYRkyrJIvAgAxze5GebK7lKRGVZDJW+GKk7NHXGobp692a5n6aqfmmoC+bZkiqJv3NcL2ZmZhb++1D7f5jJ7XyYEx/scSUTNDSBfEqNj48wO9XgIyWph/lIye0P2NRdS2zq8HEGn/v2JWYMMsUi6pe+l9BVDgtO+9L3PM/l0NWsUl3d9S1D7bxf7I+uqh801DUn2VSaJ8kgel21Lq/3kq9D33+tBoaPKx7V0dVxQyQUu5T+ii+NQdtibmu66Eg+uWoiw35CBjVEOtcwNyyPId5az8cSd8gDXJOl8FJmKGkGcZQkWyW7dDK472AU8yjlhfLIY7BQgPmCfNk+y+dQEPt5erXGp+iaxPNlkWldDqftj2mpab9mAEmw6l/fvlYGDE6Xj5+fHAwG/ysSjZ1LimaTMBibpzEDpeGEKeAGQNaGZlLISWTGaNZehF7mSeRh3QKmyn4CNyFlPgoIaUzaS+JG4rz6Tnl2tIZ/fK5h5ecmC8iE6GysamE26zk+QPYJBle7kl9+PX+/EQwYnHphYWERM0xnMog7m480m0X5JjmZ1SRhi5lMGZ+XjCWKMpjEZ1WDj99bmzmYMpPtTm0scWnoYtl7K3dsEvWU1WKVSiZvEDBs+hoW1i7N9Nte3bs3cMCJ9MHxDsfrN4oBgxMSXcxn8kxk9LkgEosdlYgnZhCXKObvzPJ/tVmqhF8OSLf1szUt1hFqtXabsYH/L4H3aGDfZ86i2ooBvtrF1/j5G8mAr9JDHn9JHV3EYLhUqVgpYYkCVjinUv1zo73hTMQSIaISQbqQfMweGoha1krZ5NixYxu/ziejf3UeI59HKDBCgREKjFBghAIjFBihwAgFRigwQoERCoxQYIQCIxQYocAIBUYoMEKBEQqMUGCEAl8TBf4Psyet2W9C97cAAAAASUVORK5CYII=";
4422
4495
 
4423
4496
  // src/BugBearPanel.tsx
4424
- var import_jsx_runtime16 = require("react/jsx-runtime");
4497
+ var import_jsx_runtime17 = require("react/jsx-runtime");
4425
4498
  function BugBearIcon({ size = 24 }) {
4426
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
4499
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
4427
4500
  "img",
4428
4501
  {
4429
4502
  src: BUGBEAR_LOGO_BASE64,
@@ -4588,37 +4661,37 @@ function BugBearPanel({
4588
4661
  const renderScreen = () => {
4589
4662
  switch (currentScreen.name) {
4590
4663
  case "HOME":
4591
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(HomeScreen, { nav });
4664
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(HomeScreen, { nav });
4592
4665
  case "TEST_DETAIL":
4593
- 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 });
4594
4667
  case "TEST_LIST":
4595
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(TestListScreen, { nav });
4668
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TestListScreen, { nav });
4596
4669
  case "TEST_FEEDBACK":
4597
- 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 });
4598
4671
  case "REPORT":
4599
- 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 });
4600
4673
  case "REPORT_SUCCESS":
4601
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ReportSuccessScreen, { nav });
4674
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ReportSuccessScreen, { nav });
4602
4675
  case "MESSAGE_LIST":
4603
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(MessageListScreen, { nav });
4676
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(MessageListScreen, { nav });
4604
4677
  case "THREAD_DETAIL":
4605
- 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 });
4606
4679
  case "COMPOSE_MESSAGE":
4607
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ComposeMessageScreen, { nav });
4680
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ComposeMessageScreen, { nav });
4608
4681
  case "ISSUE_LIST":
4609
- 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 });
4610
4683
  case "ISSUE_DETAIL":
4611
- 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 });
4612
4685
  case "PROFILE":
4613
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ProfileScreen, { nav });
4686
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ProfileScreen, { nav });
4614
4687
  default:
4615
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(HomeScreen, { nav });
4688
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(HomeScreen, { nav });
4616
4689
  }
4617
4690
  };
4618
4691
  if (typeof document === "undefined") return null;
4619
4692
  const headerTitle = getHeaderTitle();
4620
4693
  return (0, import_react_dom.createPortal)(
4621
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
4694
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4622
4695
  "div",
4623
4696
  {
4624
4697
  ref: panelRef,
@@ -4637,7 +4710,7 @@ function BugBearPanel({
4637
4710
  },
4638
4711
  onMouseDown: handleMouseDown,
4639
4712
  children: [
4640
- collapsed && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
4713
+ collapsed && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4641
4714
  "button",
4642
4715
  {
4643
4716
  onClick: () => setCollapsed(false),
@@ -4659,9 +4732,9 @@ function BugBearPanel({
4659
4732
  fontWeight: 500
4660
4733
  },
4661
4734
  children: [
4662
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(BugBearIcon, { size: 24 }),
4663
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: "BugBear" }),
4664
- 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: {
4665
4738
  backgroundColor: "#fff",
4666
4739
  color: colors.blue,
4667
4740
  fontSize: "0.75rem",
@@ -4672,7 +4745,7 @@ function BugBearPanel({
4672
4745
  ]
4673
4746
  }
4674
4747
  ),
4675
- !collapsed && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: {
4748
+ !collapsed && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: {
4676
4749
  width: PANEL_WIDTH,
4677
4750
  backgroundColor: colors.bg,
4678
4751
  borderRadius: 12,
@@ -4680,7 +4753,7 @@ function BugBearPanel({
4680
4753
  overflow: "hidden",
4681
4754
  boxShadow: "0 25px 50px -12px rgba(0,0,0,0.5)"
4682
4755
  }, children: [
4683
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
4756
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4684
4757
  "div",
4685
4758
  {
4686
4759
  "data-drag-handle": true,
@@ -4696,7 +4769,7 @@ function BugBearPanel({
4696
4769
  cursor: draggable ? isDragging ? "grabbing" : "grab" : "default"
4697
4770
  },
4698
4771
  children: [
4699
- /* @__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)(
4700
4773
  "button",
4701
4774
  {
4702
4775
  onClick: pop,
@@ -4712,14 +4785,14 @@ function BugBearPanel({
4712
4785
  },
4713
4786
  children: "\u2190 Back"
4714
4787
  }
4715
- ) : /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
4716
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(BugBearIcon, { size: 28 }),
4717
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { children: [
4718
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
4719
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { fontWeight: 600, fontSize: "0.875rem" }, children: "BugBear" }),
4720
- 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" })
4721
4794
  ] }),
4722
- testerInfo && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
4795
+ testerInfo && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4723
4796
  "button",
4724
4797
  {
4725
4798
  onClick: () => push({ name: "PROFILE" }),
@@ -4737,13 +4810,13 @@ function BugBearPanel({
4737
4810
  },
4738
4811
  children: [
4739
4812
  testerInfo.name,
4740
- /* @__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" })
4741
4814
  ]
4742
4815
  }
4743
4816
  )
4744
4817
  ] })
4745
4818
  ] }) }),
4746
- headerTitle ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: {
4819
+ headerTitle ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: {
4747
4820
  fontSize: "0.8125rem",
4748
4821
  fontWeight: 600,
4749
4822
  color: colors.textSecondary,
@@ -4753,7 +4826,7 @@ function BugBearPanel({
4753
4826
  textOverflow: "ellipsis",
4754
4827
  whiteSpace: "nowrap"
4755
4828
  }, children: headerTitle }) : null,
4756
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
4829
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
4757
4830
  "button",
4758
4831
  {
4759
4832
  onClick: handleClose,
@@ -4777,13 +4850,13 @@ function BugBearPanel({
4777
4850
  ]
4778
4851
  }
4779
4852
  ),
4780
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: {
4853
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: {
4781
4854
  padding: 16,
4782
4855
  maxHeight: 400,
4783
4856
  overflowY: "auto",
4784
4857
  backgroundColor: colors.bg,
4785
4858
  color: colors.textSecondary
4786
- }, 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() })
4787
4860
  ] })
4788
4861
  ]
4789
4862
  }
@@ -4795,7 +4868,7 @@ function BugBearPanel({
4795
4868
  // src/BugBearErrorBoundary.tsx
4796
4869
  var import_react15 = require("react");
4797
4870
  var import_core2 = require("@bbearai/core");
4798
- var import_jsx_runtime17 = require("react/jsx-runtime");
4871
+ var import_jsx_runtime18 = require("react/jsx-runtime");
4799
4872
  var BugBearErrorBoundary = class extends import_react15.Component {
4800
4873
  constructor(props) {
4801
4874
  super(props);
@@ -4840,7 +4913,7 @@ var BugBearErrorBoundary = class extends import_react15.Component {
4840
4913
  if (fallback) {
4841
4914
  return fallback;
4842
4915
  }
4843
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4916
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
4844
4917
  "div",
4845
4918
  {
4846
4919
  style: {
@@ -4852,13 +4925,13 @@ var BugBearErrorBoundary = class extends import_react15.Component {
4852
4925
  fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'
4853
4926
  },
4854
4927
  children: [
4855
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "12px" }, children: [
4856
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("img", { src: BUGBEAR_LOGO_BASE64, alt: "BugBear", width: 28, height: 28, style: { objectFit: "contain" } }),
4857
- /* @__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" })
4858
4931
  ] }),
4859
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { style: { color: "#7f1d1d", fontSize: "14px", margin: "0 0 12px 0" }, children: error.message }),
4860
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", gap: "8px" }, children: [
4861
- /* @__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)(
4862
4935
  "button",
4863
4936
  {
4864
4937
  onClick: this.reset,
@@ -4875,7 +4948,7 @@ var BugBearErrorBoundary = class extends import_react15.Component {
4875
4948
  children: "Try Again"
4876
4949
  }
4877
4950
  ),
4878
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
4951
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
4879
4952
  "button",
4880
4953
  {
4881
4954
  onClick: () => window.location.reload(),
@@ -4893,7 +4966,7 @@ var BugBearErrorBoundary = class extends import_react15.Component {
4893
4966
  }
4894
4967
  )
4895
4968
  ] }),
4896
- /* @__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" })
4897
4970
  ]
4898
4971
  }
4899
4972
  );