@bbearai/react 0.4.3 → 0.4.5

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 +313 -235
  2. package/dist/index.mjs +304 -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
@@ -2110,6 +2120,11 @@ function useImageAttachments(uploadFn, maxImages, bucket = "screenshots") {
2110
2120
  setImages((prev) => prev.map(
2111
2121
  (img) => img.id === id ? { ...img, remoteUrl: url, status: url ? "done" : "error" } : img
2112
2122
  ));
2123
+ }).catch((err) => {
2124
+ console.error("BugBear: Image upload failed", err);
2125
+ setImages((prev) => prev.map(
2126
+ (img) => img.id === id ? { ...img, status: "error" } : img
2127
+ ));
2113
2128
  });
2114
2129
  }
2115
2130
  }, [images.length, maxImages, uploadFn, bucket]);
@@ -2573,18 +2588,72 @@ var styles = {
2573
2588
  };
2574
2589
 
2575
2590
  // src/widget/screens/ReportScreen.tsx
2576
- var import_react8 = require("react");
2591
+ var import_react8 = __toESM(require("react"));
2592
+
2593
+ // src/widget/CategoryDropdown.tsx
2577
2594
  var import_jsx_runtime8 = require("react/jsx-runtime");
2595
+ var categoryOptions = [
2596
+ { value: "ui_ux", label: "UI/UX", icon: "\u{1F3A8}" },
2597
+ { value: "functional", label: "Functional", icon: "\u2699\uFE0F" },
2598
+ { value: "crash", label: "Crash", icon: "\u{1F4A5}" },
2599
+ { value: "security", label: "Security", icon: "\u{1F510}" },
2600
+ { value: "other", label: "Other", icon: "\u{1F4DD}" }
2601
+ ];
2602
+ function CategoryDropdown({ value, onChange, optional = true, disabled = false }) {
2603
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
2604
+ "select",
2605
+ {
2606
+ value: value || "",
2607
+ onChange: (e) => onChange(e.target.value ? e.target.value : null),
2608
+ disabled,
2609
+ style: {
2610
+ width: "100%",
2611
+ backgroundColor: disabled ? colors.bg : colors.card,
2612
+ border: `1px solid ${colors.border}`,
2613
+ borderRadius: 8,
2614
+ padding: "10px 12px",
2615
+ fontSize: 14,
2616
+ color: colors.textPrimary,
2617
+ cursor: disabled ? "not-allowed" : "pointer",
2618
+ opacity: disabled ? 0.5 : 1,
2619
+ appearance: "none",
2620
+ 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")`,
2621
+ backgroundRepeat: "no-repeat",
2622
+ backgroundPosition: "right 12px center",
2623
+ paddingRight: 32
2624
+ },
2625
+ children: [
2626
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "", children: optional ? "Select category (optional)" : "Select category" }),
2627
+ categoryOptions.map(({ value: value2, label, icon }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("option", { value: value2, children: [
2628
+ icon,
2629
+ " ",
2630
+ label
2631
+ ] }, value2))
2632
+ ]
2633
+ }
2634
+ );
2635
+ }
2636
+
2637
+ // src/widget/screens/ReportScreen.tsx
2638
+ var import_jsx_runtime9 = require("react/jsx-runtime");
2578
2639
  function ReportScreen({ nav, prefill }) {
2579
2640
  const { client, refreshAssignments, uploadImage } = useBugBear();
2580
2641
  const images = useImageAttachments(uploadImage, 5, "screenshots");
2581
2642
  const [reportType, setReportType] = (0, import_react8.useState)(prefill?.type || "bug");
2582
2643
  const [severity, setSeverity] = (0, import_react8.useState)("medium");
2644
+ const [category, setCategory] = (0, import_react8.useState)(null);
2583
2645
  const [description, setDescription] = (0, import_react8.useState)("");
2584
2646
  const [affectedRoute, setAffectedRoute] = (0, import_react8.useState)("");
2585
2647
  const [submitting, setSubmitting] = (0, import_react8.useState)(false);
2586
2648
  const [error, setError] = (0, import_react8.useState)(null);
2587
2649
  const submittingRef = (0, import_react8.useRef)(false);
2650
+ import_react8.default.useEffect(() => {
2651
+ if (reportType === "feedback" || reportType === "suggestion") {
2652
+ setCategory("other");
2653
+ } else {
2654
+ setCategory(null);
2655
+ }
2656
+ }, [reportType]);
2588
2657
  const observedRoute = (0, import_react8.useRef)(
2589
2658
  typeof window !== "undefined" ? window.location.pathname : "unknown"
2590
2659
  );
@@ -2607,6 +2676,7 @@ function ReportScreen({ nav, prefill }) {
2607
2676
  type: reportType,
2608
2677
  description: description.trim(),
2609
2678
  severity: isBugType ? severity : void 0,
2679
+ category: category || void 0,
2610
2680
  screenshots: screenshotUrls.length > 0 ? screenshotUrls : void 0,
2611
2681
  assignmentId: prefill?.assignmentId,
2612
2682
  testCaseId: prefill?.testCaseId,
@@ -2640,17 +2710,17 @@ function ReportScreen({ nav, prefill }) {
2640
2710
  { sev: "medium", color: "#eab308" },
2641
2711
  { sev: "low", color: "#6b7280" }
2642
2712
  ];
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" })
2713
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { children: isRetestFailure ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
2714
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.retestBanner, children: [
2715
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
2716
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { children: [
2717
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.retestTitle, children: "Bug Still Present" }),
2718
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.retestSubtitle, children: "The fix did not resolve this issue" })
2649
2719
  ] })
2650
2720
  ] }),
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)(
2721
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.section, children: [
2722
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "Severity" }),
2723
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.severityRow, children: severityOptions.map(({ sev, color }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2654
2724
  "button",
2655
2725
  {
2656
2726
  onClick: () => setSeverity(sev),
@@ -2658,14 +2728,18 @@ function ReportScreen({ nav, prefill }) {
2658
2728
  ...styles2.sevButton,
2659
2729
  ...severity === sev ? { backgroundColor: `${color}30`, borderColor: color } : {}
2660
2730
  },
2661
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { style: { ...styles2.sevText, ...severity === sev ? { color } : {} }, children: sev })
2731
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { ...styles2.sevText, ...severity === sev ? { color } : {} }, children: sev })
2662
2732
  },
2663
2733
  sev
2664
2734
  )) })
2665
2735
  ] }),
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)(
2736
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.section, children: [
2737
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "Category (optional)" }),
2738
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CategoryDropdown, { value: category, onChange: setCategory, optional: true })
2739
+ ] }),
2740
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.section, children: [
2741
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "What went wrong?" }),
2742
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2669
2743
  "textarea",
2670
2744
  {
2671
2745
  style: styles2.descInput,
@@ -2676,7 +2750,7 @@ function ReportScreen({ nav, prefill }) {
2676
2750
  }
2677
2751
  )
2678
2752
  ] }),
2679
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2753
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2680
2754
  ImagePickerButtons,
2681
2755
  {
2682
2756
  images: images.images,
@@ -2687,8 +2761,8 @@ function ReportScreen({ nav, prefill }) {
2687
2761
  label: "Attachments (optional)"
2688
2762
  }
2689
2763
  ),
2690
- error && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.errorBanner, children: error }),
2691
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2764
+ error && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.errorBanner, children: error }),
2765
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2692
2766
  "button",
2693
2767
  {
2694
2768
  style: {
@@ -2701,9 +2775,9 @@ function ReportScreen({ nav, prefill }) {
2701
2775
  children: images.isUploading ? "Uploading images..." : submitting ? "Submitting..." : error ? "Retry" : "Submit Failed Retest"
2702
2776
  }
2703
2777
  )
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)(
2778
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
2779
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "What are you reporting?" }),
2780
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.typeRow, children: typeOptions.map(({ type, label, icon }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
2707
2781
  "button",
2708
2782
  {
2709
2783
  onClick: () => setReportType(type),
@@ -2712,8 +2786,8 @@ function ReportScreen({ nav, prefill }) {
2712
2786
  ...reportType === type ? styles2.typeCardActive : {}
2713
2787
  },
2714
2788
  children: [
2715
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.typeIcon, children: icon }),
2716
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2789
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.typeIcon, children: icon }),
2790
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2717
2791
  "div",
2718
2792
  {
2719
2793
  style: {
@@ -2727,9 +2801,9 @@ function ReportScreen({ nav, prefill }) {
2727
2801
  },
2728
2802
  type
2729
2803
  )) }),
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)(
2804
+ isBugType && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.section, children: [
2805
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "Severity" }),
2806
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.severityRow, children: severityOptions.map(({ sev, color }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2733
2807
  "button",
2734
2808
  {
2735
2809
  onClick: () => setSeverity(sev),
@@ -2740,7 +2814,7 @@ function ReportScreen({ nav, prefill }) {
2740
2814
  borderColor: color
2741
2815
  } : {}
2742
2816
  },
2743
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2817
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2744
2818
  "span",
2745
2819
  {
2746
2820
  style: {
@@ -2754,9 +2828,13 @@ function ReportScreen({ nav, prefill }) {
2754
2828
  sev
2755
2829
  )) })
2756
2830
  ] }),
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)(
2831
+ isBugType && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.section, children: [
2832
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "Category (optional)" }),
2833
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CategoryDropdown, { value: category, onChange: setCategory, optional: true })
2834
+ ] }),
2835
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.section, children: [
2836
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "What happened?" }),
2837
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2760
2838
  "textarea",
2761
2839
  {
2762
2840
  style: styles2.descInput,
@@ -2767,9 +2845,9 @@ function ReportScreen({ nav, prefill }) {
2767
2845
  }
2768
2846
  )
2769
2847
  ] }),
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)(
2848
+ isBugType && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.section, children: [
2849
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.label, children: "Where did it happen?" }),
2850
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2773
2851
  "input",
2774
2852
  {
2775
2853
  style: styles2.routeInput,
@@ -2778,13 +2856,13 @@ function ReportScreen({ nav, prefill }) {
2778
2856
  placeholder: observedRoute.current
2779
2857
  }
2780
2858
  ),
2781
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: styles2.routeHint, children: [
2859
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { style: styles2.routeHint, children: [
2782
2860
  "Leave blank to use current page (",
2783
2861
  observedRoute.current,
2784
2862
  ")"
2785
2863
  ] })
2786
2864
  ] }),
2787
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2865
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2788
2866
  ImagePickerButtons,
2789
2867
  {
2790
2868
  images: images.images,
@@ -2795,8 +2873,8 @@ function ReportScreen({ nav, prefill }) {
2795
2873
  label: "Screenshots (optional)"
2796
2874
  }
2797
2875
  ),
2798
- error && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: styles2.errorBanner, children: error }),
2799
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2876
+ error && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { style: styles2.errorBanner, children: error }),
2877
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
2800
2878
  "button",
2801
2879
  {
2802
2880
  style: {
@@ -2961,16 +3039,16 @@ var styles2 = {
2961
3039
 
2962
3040
  // src/widget/screens/ReportSuccessScreen.tsx
2963
3041
  var import_react9 = require("react");
2964
- var import_jsx_runtime9 = require("react/jsx-runtime");
3042
+ var import_jsx_runtime10 = require("react/jsx-runtime");
2965
3043
  function ReportSuccessScreen({ nav }) {
2966
3044
  (0, import_react9.useEffect)(() => {
2967
3045
  const timer = setTimeout(() => nav.reset(), 2e3);
2968
3046
  return () => clearTimeout(timer);
2969
3047
  }, [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" })
3048
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: styles3.container, children: [
3049
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles3.emoji, children: "\u{1F389}" }),
3050
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles3.title, children: "Report submitted!" }),
3051
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: styles3.subtitle, children: "Thank you for your feedback" })
2974
3052
  ] });
2975
3053
  }
2976
3054
  var styles3 = {
@@ -2999,11 +3077,11 @@ var styles3 = {
2999
3077
  };
3000
3078
 
3001
3079
  // src/widget/screens/MessageListScreen.tsx
3002
- var import_jsx_runtime10 = require("react/jsx-runtime");
3080
+ var import_jsx_runtime11 = require("react/jsx-runtime");
3003
3081
  function MessageListScreen({ nav }) {
3004
3082
  const { threads, unreadCount, refreshThreads } = useBugBear();
3005
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { children: [
3006
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3083
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { children: [
3084
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3007
3085
  "button",
3008
3086
  {
3009
3087
  style: {
@@ -3022,7 +3100,7 @@ function MessageListScreen({ nav }) {
3022
3100
  children: "\u2709\uFE0F New Message"
3023
3101
  }
3024
3102
  ),
3025
- threads.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3103
+ threads.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3026
3104
  "div",
3027
3105
  {
3028
3106
  style: {
@@ -3033,8 +3111,8 @@ function MessageListScreen({ nav }) {
3033
3111
  paddingBottom: 40
3034
3112
  },
3035
3113
  children: [
3036
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { style: { fontSize: 36, marginBottom: 12 }, children: "\u{1F4AC}" }),
3037
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3114
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { style: { fontSize: 36, marginBottom: 12 }, children: "\u{1F4AC}" }),
3115
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3038
3116
  "span",
3039
3117
  {
3040
3118
  style: {
@@ -3046,7 +3124,7 @@ function MessageListScreen({ nav }) {
3046
3124
  children: "No messages yet"
3047
3125
  }
3048
3126
  ),
3049
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3127
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3050
3128
  "span",
3051
3129
  {
3052
3130
  style: {
@@ -3059,7 +3137,7 @@ function MessageListScreen({ nav }) {
3059
3137
  )
3060
3138
  ]
3061
3139
  }
3062
- ) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { children: threads.map((thread) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3140
+ ) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { children: threads.map((thread) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3063
3141
  "button",
3064
3142
  {
3065
3143
  style: {
@@ -3077,8 +3155,8 @@ function MessageListScreen({ nav }) {
3077
3155
  },
3078
3156
  onClick: () => nav.push({ name: "THREAD_DETAIL", thread }),
3079
3157
  children: [
3080
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: { display: "flex", flex: 1, minWidth: 0 }, children: [
3081
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3158
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { style: { display: "flex", flex: 1, minWidth: 0 }, children: [
3159
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3082
3160
  "span",
3083
3161
  {
3084
3162
  style: {
@@ -3090,7 +3168,7 @@ function MessageListScreen({ nav }) {
3090
3168
  children: getThreadTypeIcon(thread.threadType)
3091
3169
  }
3092
3170
  ),
3093
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3171
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3094
3172
  "div",
3095
3173
  {
3096
3174
  style: {
@@ -3098,7 +3176,7 @@ function MessageListScreen({ nav }) {
3098
3176
  minWidth: 0
3099
3177
  },
3100
3178
  children: [
3101
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3179
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3102
3180
  "div",
3103
3181
  {
3104
3182
  style: {
@@ -3107,8 +3185,8 @@ function MessageListScreen({ nav }) {
3107
3185
  gap: 4
3108
3186
  },
3109
3187
  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)(
3188
+ thread.isPinned && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { style: { fontSize: 12, flexShrink: 0 }, children: "\u{1F4CC}" }),
3189
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3112
3190
  "span",
3113
3191
  {
3114
3192
  style: {
@@ -3125,7 +3203,7 @@ function MessageListScreen({ nav }) {
3125
3203
  ]
3126
3204
  }
3127
3205
  ),
3128
- thread.lastMessage && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3206
+ thread.lastMessage && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3129
3207
  "span",
3130
3208
  {
3131
3209
  style: {
@@ -3149,7 +3227,7 @@ function MessageListScreen({ nav }) {
3149
3227
  }
3150
3228
  )
3151
3229
  ] }),
3152
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3230
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3153
3231
  "div",
3154
3232
  {
3155
3233
  style: {
@@ -3161,8 +3239,8 @@ function MessageListScreen({ nav }) {
3161
3239
  flexShrink: 0
3162
3240
  },
3163
3241
  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)(
3242
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { style: { fontSize: 11, color: colors.textDim }, children: formatRelativeTime(thread.lastMessageAt) }),
3243
+ thread.unreadCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3166
3244
  "span",
3167
3245
  {
3168
3246
  style: {
@@ -3189,7 +3267,7 @@ function MessageListScreen({ nav }) {
3189
3267
  },
3190
3268
  thread.id
3191
3269
  )) }),
3192
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
3270
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3193
3271
  "div",
3194
3272
  {
3195
3273
  style: {
@@ -3201,7 +3279,7 @@ function MessageListScreen({ nav }) {
3201
3279
  paddingRight: 4
3202
3280
  },
3203
3281
  children: [
3204
- /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { style: { fontSize: 12, color: colors.textMuted }, children: [
3282
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { style: { fontSize: 12, color: colors.textMuted }, children: [
3205
3283
  threads.length,
3206
3284
  " thread",
3207
3285
  threads.length !== 1 ? "s" : "",
@@ -3210,7 +3288,7 @@ function MessageListScreen({ nav }) {
3210
3288
  unreadCount,
3211
3289
  " unread"
3212
3290
  ] }),
3213
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
3291
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3214
3292
  "button",
3215
3293
  {
3216
3294
  style: {
@@ -3233,7 +3311,7 @@ function MessageListScreen({ nav }) {
3233
3311
 
3234
3312
  // src/widget/screens/ThreadDetailScreen.tsx
3235
3313
  var import_react10 = require("react");
3236
- var import_jsx_runtime11 = require("react/jsx-runtime");
3314
+ var import_jsx_runtime12 = require("react/jsx-runtime");
3237
3315
  var inputStyle = {
3238
3316
  backgroundColor: "#27272a",
3239
3317
  border: "1px solid #3f3f46",
@@ -3292,8 +3370,8 @@ function ThreadDetailScreen({
3292
3370
  handleSend();
3293
3371
  }
3294
3372
  };
3295
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { style: { display: "flex", flexDirection: "column", flex: 1 }, children: [
3296
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3373
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: { display: "flex", flexDirection: "column", flex: 1 }, children: [
3374
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3297
3375
  "div",
3298
3376
  {
3299
3377
  style: {
@@ -3305,8 +3383,8 @@ function ThreadDetailScreen({
3305
3383
  borderBottom: `1px solid ${colors.border}`
3306
3384
  },
3307
3385
  children: [
3308
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { style: { fontSize: 20 }, children: getThreadTypeIcon(thread.threadType) }),
3309
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3386
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: { fontSize: 20 }, children: getThreadTypeIcon(thread.threadType) }),
3387
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3310
3388
  "span",
3311
3389
  {
3312
3390
  style: {
@@ -3326,7 +3404,7 @@ function ThreadDetailScreen({
3326
3404
  ]
3327
3405
  }
3328
3406
  ),
3329
- loading ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3407
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3330
3408
  "div",
3331
3409
  {
3332
3410
  style: {
@@ -3334,11 +3412,11 @@ function ThreadDetailScreen({
3334
3412
  paddingBottom: 40,
3335
3413
  textAlign: "center"
3336
3414
  },
3337
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { style: { fontSize: 14, color: colors.textMuted }, children: "Loading messages..." })
3415
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: { fontSize: 14, color: colors.textMuted }, children: "Loading messages..." })
3338
3416
  }
3339
- ) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { style: { paddingBottom: 8, marginBottom: 8 }, children: messages.map((msg) => {
3417
+ ) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { style: { paddingBottom: 8, marginBottom: 8 }, children: messages.map((msg) => {
3340
3418
  const isTester = msg.senderType === "tester";
3341
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
3419
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3342
3420
  "div",
3343
3421
  {
3344
3422
  style: {
@@ -3354,7 +3432,7 @@ function ThreadDetailScreen({
3354
3432
  borderBottomRightRadius: isTester ? 4 : 16
3355
3433
  },
3356
3434
  children: [
3357
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3435
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3358
3436
  "span",
3359
3437
  {
3360
3438
  style: {
@@ -3367,7 +3445,7 @@ function ThreadDetailScreen({
3367
3445
  children: isTester ? "You" : msg.senderName
3368
3446
  }
3369
3447
  ),
3370
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3448
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3371
3449
  "span",
3372
3450
  {
3373
3451
  style: {
@@ -3381,7 +3459,7 @@ function ThreadDetailScreen({
3381
3459
  children: msg.content
3382
3460
  }
3383
3461
  ),
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)(
3462
+ 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
3463
  "img",
3386
3464
  {
3387
3465
  src: att.url,
@@ -3390,7 +3468,7 @@ function ThreadDetailScreen({
3390
3468
  },
3391
3469
  idx
3392
3470
  )) }),
3393
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3471
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3394
3472
  "span",
3395
3473
  {
3396
3474
  style: {
@@ -3408,7 +3486,7 @@ function ThreadDetailScreen({
3408
3486
  msg.id
3409
3487
  );
3410
3488
  }) }),
3411
- sendError && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3489
+ sendError && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3412
3490
  "div",
3413
3491
  {
3414
3492
  style: {
@@ -3420,7 +3498,7 @@ function ThreadDetailScreen({
3420
3498
  borderRadius: 8,
3421
3499
  marginBottom: 8
3422
3500
  },
3423
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3501
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3424
3502
  "span",
3425
3503
  {
3426
3504
  style: {
@@ -3434,8 +3512,8 @@ function ThreadDetailScreen({
3434
3512
  )
3435
3513
  }
3436
3514
  ),
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)(
3515
+ 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 }) }),
3516
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3439
3517
  "div",
3440
3518
  {
3441
3519
  style: {
@@ -3446,7 +3524,7 @@ function ThreadDetailScreen({
3446
3524
  gap: 8
3447
3525
  },
3448
3526
  children: [
3449
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3527
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3450
3528
  "button",
3451
3529
  {
3452
3530
  type: "button",
@@ -3465,7 +3543,7 @@ function ThreadDetailScreen({
3465
3543
  children: "\u{1F4CE}"
3466
3544
  }
3467
3545
  ),
3468
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3546
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3469
3547
  "input",
3470
3548
  {
3471
3549
  type: "text",
@@ -3481,7 +3559,7 @@ function ThreadDetailScreen({
3481
3559
  }
3482
3560
  }
3483
3561
  ),
3484
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
3562
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3485
3563
  "button",
3486
3564
  {
3487
3565
  style: {
@@ -3509,7 +3587,7 @@ function ThreadDetailScreen({
3509
3587
 
3510
3588
  // src/widget/screens/ComposeMessageScreen.tsx
3511
3589
  var import_react11 = require("react");
3512
- var import_jsx_runtime12 = require("react/jsx-runtime");
3590
+ var import_jsx_runtime13 = require("react/jsx-runtime");
3513
3591
  var inputStyle2 = {
3514
3592
  backgroundColor: "#27272a",
3515
3593
  border: "1px solid #3f3f46",
@@ -3540,9 +3618,9 @@ function ComposeMessageScreen({ nav }) {
3540
3618
  nav.pop();
3541
3619
  }
3542
3620
  };
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)(
3621
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { children: [
3622
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: { marginBottom: 20 }, children: [
3623
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3546
3624
  "div",
3547
3625
  {
3548
3626
  style: {
@@ -3554,9 +3632,9 @@ function ComposeMessageScreen({ nav }) {
3554
3632
  children: "New Message"
3555
3633
  }
3556
3634
  ),
3557
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { style: { fontSize: 14, color: colors.textMuted }, children: "Send a message to the QA team" })
3635
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: { fontSize: 14, color: colors.textMuted }, children: "Send a message to the QA team" })
3558
3636
  ] }),
3559
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
3637
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
3560
3638
  "div",
3561
3639
  {
3562
3640
  style: {
@@ -3566,7 +3644,7 @@ function ComposeMessageScreen({ nav }) {
3566
3644
  border: `1px solid ${colors.border}`
3567
3645
  },
3568
3646
  children: [
3569
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3647
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3570
3648
  "label",
3571
3649
  {
3572
3650
  style: {
@@ -3579,7 +3657,7 @@ function ComposeMessageScreen({ nav }) {
3579
3657
  children: "Subject"
3580
3658
  }
3581
3659
  ),
3582
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3660
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3583
3661
  "input",
3584
3662
  {
3585
3663
  type: "text",
@@ -3594,7 +3672,7 @@ function ComposeMessageScreen({ nav }) {
3594
3672
  }
3595
3673
  }
3596
3674
  ),
3597
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3675
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3598
3676
  "label",
3599
3677
  {
3600
3678
  style: {
@@ -3608,7 +3686,7 @@ function ComposeMessageScreen({ nav }) {
3608
3686
  children: "Message"
3609
3687
  }
3610
3688
  ),
3611
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3689
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3612
3690
  "textarea",
3613
3691
  {
3614
3692
  value: message,
@@ -3627,7 +3705,7 @@ function ComposeMessageScreen({ nav }) {
3627
3705
  }
3628
3706
  }
3629
3707
  ),
3630
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3708
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3631
3709
  ImagePickerButtons,
3632
3710
  {
3633
3711
  images: images.images,
@@ -3638,7 +3716,7 @@ function ComposeMessageScreen({ nav }) {
3638
3716
  label: "Attachments (optional)"
3639
3717
  }
3640
3718
  ),
3641
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
3719
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3642
3720
  "button",
3643
3721
  {
3644
3722
  style: {
@@ -3667,7 +3745,7 @@ function ComposeMessageScreen({ nav }) {
3667
3745
 
3668
3746
  // src/widget/screens/ProfileScreen.tsx
3669
3747
  var import_react12 = require("react");
3670
- var import_jsx_runtime13 = require("react/jsx-runtime");
3748
+ var import_jsx_runtime14 = require("react/jsx-runtime");
3671
3749
  function ProfileScreen({ nav }) {
3672
3750
  const { testerInfo, assignments, updateTesterProfile, refreshTesterInfo } = useBugBear();
3673
3751
  const [editing, setEditing] = (0, import_react12.useState)(false);
@@ -3713,22 +3791,22 @@ function ProfileScreen({ nav }) {
3713
3791
  }
3714
3792
  };
3715
3793
  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!" })
3794
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.emptyState, children: [
3795
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.emptyEmoji, children: "\u2705" }),
3796
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.emptyTitle, children: "Profile saved!" })
3719
3797
  ] });
3720
3798
  }
3721
3799
  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" })
3800
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.emptyState, children: [
3801
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.emptyEmoji, children: "\u{1F464}" }),
3802
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.emptyTitle, children: "No profile found" })
3725
3803
  ] });
3726
3804
  }
3727
3805
  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)(
3806
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { children: [
3807
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.editHeader, children: [
3808
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.editTitle, children: "Edit Profile" }),
3809
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3732
3810
  "button",
3733
3811
  {
3734
3812
  style: styles4.cancelButton,
@@ -3740,9 +3818,9 @@ function ProfileScreen({ nav }) {
3740
3818
  }
3741
3819
  )
3742
3820
  ] }),
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)(
3821
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.field, children: [
3822
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("label", { style: styles4.label, children: "Name" }),
3823
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3746
3824
  "input",
3747
3825
  {
3748
3826
  style: styles4.input,
@@ -3752,15 +3830,15 @@ function ProfileScreen({ nav }) {
3752
3830
  }
3753
3831
  )
3754
3832
  ] }),
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 })
3833
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.field, children: [
3834
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("label", { style: styles4.label, children: "Primary Email" }),
3835
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.emailFixed, children: testerInfo.email })
3758
3836
  ] }),
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)(
3837
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.field, children: [
3838
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("label", { style: styles4.label, children: "Additional Emails" }),
3839
+ additionalEmails.map((email) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.emailRow, children: [
3840
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.emailText, children: email }),
3841
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3764
3842
  "button",
3765
3843
  {
3766
3844
  style: styles4.removeEmailButton,
@@ -3769,8 +3847,8 @@ function ProfileScreen({ nav }) {
3769
3847
  }
3770
3848
  )
3771
3849
  ] }, email)),
3772
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: styles4.addEmailRow, children: [
3773
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3850
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.addEmailRow, children: [
3851
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3774
3852
  "input",
3775
3853
  {
3776
3854
  style: { ...styles4.input, flex: 1, marginRight: 8 },
@@ -3783,18 +3861,18 @@ function ProfileScreen({ nav }) {
3783
3861
  }
3784
3862
  }
3785
3863
  ),
3786
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("button", { style: styles4.addButton, onClick: handleAddEmail, children: "Add" })
3864
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("button", { style: styles4.addButton, onClick: handleAddEmail, children: "Add" })
3787
3865
  ] })
3788
3866
  ] }),
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: [
3867
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.field, children: [
3868
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("label", { style: styles4.label, children: "Testing Platforms" }),
3869
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: styles4.platformRow, children: [
3792
3870
  { key: "ios", label: "\u{1F4F1} iOS" },
3793
3871
  { key: "android", label: "\u{1F916} Android" },
3794
3872
  { key: "web", label: "\u{1F310} Web" }
3795
3873
  ].map(({ key, label }) => {
3796
3874
  const isActive = platforms.includes(key);
3797
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3875
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3798
3876
  "button",
3799
3877
  {
3800
3878
  style: {
@@ -3804,13 +3882,13 @@ function ProfileScreen({ nav }) {
3804
3882
  onClick: () => setPlatforms(
3805
3883
  (prev) => prev.includes(key) ? prev.filter((p) => p !== key) : [...prev, key]
3806
3884
  ),
3807
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: isActive ? styles4.platformTextActive : styles4.platformText, children: label })
3885
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: isActive ? styles4.platformTextActive : styles4.platformText, children: label })
3808
3886
  },
3809
3887
  key
3810
3888
  );
3811
3889
  }) })
3812
3890
  ] }),
3813
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3891
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3814
3892
  "button",
3815
3893
  {
3816
3894
  style: { ...styles4.primaryButton, marginTop: 20 },
@@ -3821,45 +3899,45 @@ function ProfileScreen({ nav }) {
3821
3899
  )
3822
3900
  ] });
3823
3901
  }
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 })
3902
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { children: [
3903
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.profileCard, children: [
3904
+ /* @__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() }) }),
3905
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.profileName, children: testerInfo.name }),
3906
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.profileEmail, children: testerInfo.email })
3829
3907
  ] }),
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" })
3908
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.statsRow, children: [
3909
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.statItem, children: [
3910
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.statNumber, children: completedCount }),
3911
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.statLabel, children: "Completed" })
3834
3912
  ] }),
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" })
3913
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: styles4.statDivider }),
3914
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.statItem, children: [
3915
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.statNumber, children: assignments.length }),
3916
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.statLabel, children: "Total Assigned" })
3839
3917
  ] })
3840
3918
  ] }),
3841
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3919
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3842
3920
  "button",
3843
3921
  {
3844
3922
  style: styles4.detailsToggle,
3845
3923
  onClick: () => setShowDetails(!showDetails),
3846
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { style: styles4.detailsToggleText, children: [
3924
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { style: styles4.detailsToggleText, children: [
3847
3925
  showDetails ? "\u25BC" : "\u25B6",
3848
3926
  " Details"
3849
3927
  ] })
3850
3928
  }
3851
3929
  ),
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))
3930
+ showDetails && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.detailsSection, children: [
3931
+ additionalEmails.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.detailBlock, children: [
3932
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.detailLabel, children: "Additional Emails" }),
3933
+ additionalEmails.map((e) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.detailValue, children: e }, e))
3856
3934
  ] }),
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)) })
3935
+ platforms.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: styles4.detailBlock, children: [
3936
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: styles4.detailLabel, children: "Platforms" }),
3937
+ /* @__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
3938
  ] })
3861
3939
  ] }),
3862
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
3940
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
3863
3941
  "button",
3864
3942
  {
3865
3943
  style: { ...styles4.primaryButton, marginTop: 20 },
@@ -4143,7 +4221,7 @@ var styles4 = {
4143
4221
 
4144
4222
  // src/widget/screens/IssueListScreen.tsx
4145
4223
  var import_react13 = require("react");
4146
- var import_jsx_runtime14 = require("react/jsx-runtime");
4224
+ var import_jsx_runtime15 = require("react/jsx-runtime");
4147
4225
  var CATEGORY_CONFIG = {
4148
4226
  open: { label: "Open Issues", accent: "#f97316", emptyIcon: "\u2705", emptyText: "No open issues" },
4149
4227
  done: { label: "Done", accent: "#22c55e", emptyIcon: "\u{1F389}", emptyText: "No completed issues yet" },
@@ -4176,15 +4254,15 @@ function IssueListScreen({ nav, category }) {
4176
4254
  };
4177
4255
  }, [client, category]);
4178
4256
  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..." }) });
4257
+ 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
4258
  }
4181
4259
  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 })
4260
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { padding: "40px 0", textAlign: "center" }, children: [
4261
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: { fontSize: 36, marginBottom: 8 }, children: config.emptyIcon }),
4262
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: { color: colors.textMuted, fontSize: 14 }, children: config.emptyText })
4185
4263
  ] });
4186
4264
  }
4187
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { children: issues.map((issue) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
4265
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { children: issues.map((issue) => /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
4188
4266
  "div",
4189
4267
  {
4190
4268
  role: "button",
@@ -4203,8 +4281,8 @@ function IssueListScreen({ nav, category }) {
4203
4281
  userSelect: "none"
4204
4282
  },
4205
4283
  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)(
4284
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { display: "flex", alignItems: "flex-start", gap: 8 }, children: [
4285
+ issue.severity && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4208
4286
  "span",
4209
4287
  {
4210
4288
  style: {
@@ -4217,7 +4295,7 @@ function IssueListScreen({ nav, category }) {
4217
4295
  }
4218
4296
  }
4219
4297
  ),
4220
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: {
4298
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: {
4221
4299
  fontSize: 13,
4222
4300
  fontWeight: 600,
4223
4301
  color: colors.textPrimary,
@@ -4227,11 +4305,11 @@ function IssueListScreen({ nav, category }) {
4227
4305
  whiteSpace: "nowrap"
4228
4306
  }, children: issue.title })
4229
4307
  ] }),
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) })
4308
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { display: "flex", justifyContent: "space-between", marginTop: 6 }, children: [
4309
+ 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 }),
4310
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: { fontSize: 11, color: colors.textDim, marginLeft: "auto" }, children: formatRelativeTime(issue.updatedAt) })
4233
4311
  ] }),
4234
- category === "done" && issue.verifiedByName && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: {
4312
+ category === "done" && issue.verifiedByName && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: {
4235
4313
  display: "inline-flex",
4236
4314
  alignItems: "center",
4237
4315
  gap: 4,
@@ -4247,7 +4325,7 @@ function IssueListScreen({ nav, category }) {
4247
4325
  "\u2714 Verified by ",
4248
4326
  issue.verifiedByName
4249
4327
  ] }),
4250
- category === "reopened" && issue.originalBugTitle && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: {
4328
+ category === "reopened" && issue.originalBugTitle && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: {
4251
4329
  display: "inline-flex",
4252
4330
  alignItems: "center",
4253
4331
  gap: 4,
@@ -4274,7 +4352,7 @@ function IssueListScreen({ nav, category }) {
4274
4352
  }
4275
4353
 
4276
4354
  // src/widget/screens/IssueDetailScreen.tsx
4277
- var import_jsx_runtime15 = require("react/jsx-runtime");
4355
+ var import_jsx_runtime16 = require("react/jsx-runtime");
4278
4356
  var STATUS_LABELS = {
4279
4357
  new: { label: "New", bg: "#1e3a5f", color: "#60a5fa" },
4280
4358
  triaging: { label: "Triaging", bg: "#1e3a5f", color: "#60a5fa" },
@@ -4298,9 +4376,9 @@ var SEVERITY_CONFIG = {
4298
4376
  function IssueDetailScreen({ nav, issue }) {
4299
4377
  const statusConfig = STATUS_LABELS[issue.status] || { label: issue.status, bg: "#27272a", color: "#a1a1aa" };
4300
4378
  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: {
4379
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { children: [
4380
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { display: "flex", gap: 8, flexWrap: "wrap", marginBottom: 12 }, children: [
4381
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: {
4304
4382
  backgroundColor: statusConfig.bg,
4305
4383
  color: statusConfig.color,
4306
4384
  fontSize: 11,
@@ -4308,7 +4386,7 @@ function IssueDetailScreen({ nav, issue }) {
4308
4386
  padding: "3px 10px",
4309
4387
  borderRadius: 6
4310
4388
  }, children: statusConfig.label }),
4311
- severityConfig && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { style: {
4389
+ severityConfig && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: {
4312
4390
  backgroundColor: severityConfig.bg,
4313
4391
  color: severityConfig.color,
4314
4392
  fontSize: 11,
@@ -4317,9 +4395,9 @@ function IssueDetailScreen({ nav, issue }) {
4317
4395
  borderRadius: 6
4318
4396
  }, children: severityConfig.label })
4319
4397
  ] }),
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: {
4398
+ /* @__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 }),
4399
+ issue.route && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 12 }, children: issue.route }),
4400
+ issue.description && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: {
4323
4401
  backgroundColor: colors.card,
4324
4402
  border: `1px solid ${colors.border}`,
4325
4403
  borderRadius: 8,
@@ -4331,56 +4409,56 @@ function IssueDetailScreen({ nav, issue }) {
4331
4409
  whiteSpace: "pre-wrap",
4332
4410
  wordBreak: "break-word"
4333
4411
  }, children: issue.description }),
4334
- issue.verifiedByName && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: {
4412
+ issue.verifiedByName && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: {
4335
4413
  backgroundColor: "#14532d",
4336
4414
  border: "1px solid #166534",
4337
4415
  borderRadius: 8,
4338
4416
  padding: 12,
4339
4417
  marginBottom: 12
4340
4418
  }, 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" })
4419
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
4420
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { fontSize: 16 }, children: "\u2705" }),
4421
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { fontSize: 13, fontWeight: 600, color: "#4ade80" }, children: "Retesting Proof" })
4344
4422
  ] }),
4345
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { fontSize: 12, color: "#86efac" }, children: [
4423
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { fontSize: 12, color: "#86efac" }, children: [
4346
4424
  "Verified by ",
4347
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { children: issue.verifiedByName }),
4348
- issue.verifiedAt && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { children: [
4425
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("strong", { children: issue.verifiedByName }),
4426
+ issue.verifiedAt && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("span", { children: [
4349
4427
  " on ",
4350
4428
  new Date(issue.verifiedAt).toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" })
4351
4429
  ] })
4352
4430
  ] })
4353
4431
  ] }),
4354
- issue.originalBugTitle && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: {
4432
+ issue.originalBugTitle && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: {
4355
4433
  backgroundColor: "#422006",
4356
4434
  border: "1px solid #854d0e",
4357
4435
  borderRadius: 8,
4358
4436
  padding: 12,
4359
4437
  marginBottom: 12
4360
4438
  }, 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" })
4439
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8, marginBottom: 4 }, children: [
4440
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { fontSize: 16 }, children: "\u{1F504}" }),
4441
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { fontSize: 13, fontWeight: 600, color: "#fbbf24" }, children: "Original Bug" })
4364
4442
  ] }),
4365
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { fontSize: 12, color: "#fde68a" }, children: [
4443
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { fontSize: 12, color: "#fde68a" }, children: [
4366
4444
  "Retest of: ",
4367
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("strong", { children: issue.originalBugTitle })
4445
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("strong", { children: issue.originalBugTitle })
4368
4446
  ] })
4369
4447
  ] }),
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: [
4448
+ issue.screenshotUrls && issue.screenshotUrls.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { marginBottom: 12 }, children: [
4449
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { fontSize: 12, fontWeight: 600, color: colors.textMuted, marginBottom: 8 }, children: [
4372
4450
  "Screenshots (",
4373
4451
  issue.screenshotUrls.length,
4374
4452
  ")"
4375
4453
  ] }),
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)(
4454
+ /* @__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
4455
  "a",
4378
4456
  {
4379
4457
  href: url,
4380
4458
  target: "_blank",
4381
4459
  rel: "noopener noreferrer",
4382
4460
  style: { flexShrink: 0 },
4383
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
4461
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
4384
4462
  "img",
4385
4463
  {
4386
4464
  src: url,
@@ -4398,16 +4476,16 @@ function IssueDetailScreen({ nav, issue }) {
4398
4476
  i
4399
4477
  )) })
4400
4478
  ] }),
4401
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: {
4479
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: {
4402
4480
  borderTop: `1px solid ${colors.border}`,
4403
4481
  paddingTop: 12,
4404
4482
  marginTop: 4
4405
4483
  }, children: [
4406
- issue.reporterName && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 4 }, children: [
4484
+ issue.reporterName && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { fontSize: 12, color: colors.textDim, marginBottom: 4 }, children: [
4407
4485
  "Reported by ",
4408
4486
  issue.reporterName
4409
4487
  ] }),
4410
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { style: { fontSize: 11, color: colors.textDim }, children: [
4488
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: { fontSize: 11, color: colors.textDim }, children: [
4411
4489
  "Created ",
4412
4490
  formatRelativeTime(issue.createdAt),
4413
4491
  " \xB7 Updated ",
@@ -4421,9 +4499,9 @@ function IssueDetailScreen({ nav, issue }) {
4421
4499
  var BUGBEAR_LOGO_BASE64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAAXNSR0IArs4c6QAAAJhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAASQBAACAAAAFAAAAISgAQADAAAAAQABAACgAgAEAAAAAQAAAGCgAwAEAAAAAQAAAGAAAAAAMjAyNjowMToyNCAxNjoyMTozOABbbVCuAAAACXBIWXMAAAsTAAALEwEAmpwYAAACo2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpJcHRjNHhtcEV4dD0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcEV4dC8yMDA4LTAyLTI5LyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPElwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWE8L0lwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPgogICAgICAgICA8SXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPmZjNzJlN2Q2LTYyYTEtNDE1ZS04MjY5LWM2NjA4MjY0OWRiMDwvSXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAyNi0wMS0yNFQxNjoyMTozODwveG1wOkNyZWF0ZURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+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";
4422
4500
 
4423
4501
  // src/BugBearPanel.tsx
4424
- var import_jsx_runtime16 = require("react/jsx-runtime");
4502
+ var import_jsx_runtime17 = require("react/jsx-runtime");
4425
4503
  function BugBearIcon({ size = 24 }) {
4426
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
4504
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
4427
4505
  "img",
4428
4506
  {
4429
4507
  src: BUGBEAR_LOGO_BASE64,
@@ -4588,37 +4666,37 @@ function BugBearPanel({
4588
4666
  const renderScreen = () => {
4589
4667
  switch (currentScreen.name) {
4590
4668
  case "HOME":
4591
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(HomeScreen, { nav });
4669
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(HomeScreen, { nav });
4592
4670
  case "TEST_DETAIL":
4593
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(TestDetailScreen, { testId: currentScreen.testId, nav });
4671
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TestDetailScreen, { testId: currentScreen.testId, nav });
4594
4672
  case "TEST_LIST":
4595
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(TestListScreen, { nav });
4673
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TestListScreen, { nav });
4596
4674
  case "TEST_FEEDBACK":
4597
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
4675
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
4598
4676
  case "REPORT":
4599
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ReportScreen, { nav, prefill: currentScreen.prefill });
4677
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ReportScreen, { nav, prefill: currentScreen.prefill });
4600
4678
  case "REPORT_SUCCESS":
4601
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ReportSuccessScreen, { nav });
4679
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ReportSuccessScreen, { nav });
4602
4680
  case "MESSAGE_LIST":
4603
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(MessageListScreen, { nav });
4681
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(MessageListScreen, { nav });
4604
4682
  case "THREAD_DETAIL":
4605
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ThreadDetailScreen, { thread: currentScreen.thread, nav });
4683
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ThreadDetailScreen, { thread: currentScreen.thread, nav });
4606
4684
  case "COMPOSE_MESSAGE":
4607
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ComposeMessageScreen, { nav });
4685
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ComposeMessageScreen, { nav });
4608
4686
  case "ISSUE_LIST":
4609
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(IssueListScreen, { nav, category: currentScreen.category });
4687
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(IssueListScreen, { nav, category: currentScreen.category });
4610
4688
  case "ISSUE_DETAIL":
4611
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(IssueDetailScreen, { nav, issue: currentScreen.issue });
4689
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(IssueDetailScreen, { nav, issue: currentScreen.issue });
4612
4690
  case "PROFILE":
4613
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ProfileScreen, { nav });
4691
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ProfileScreen, { nav });
4614
4692
  default:
4615
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(HomeScreen, { nav });
4693
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(HomeScreen, { nav });
4616
4694
  }
4617
4695
  };
4618
4696
  if (typeof document === "undefined") return null;
4619
4697
  const headerTitle = getHeaderTitle();
4620
4698
  return (0, import_react_dom.createPortal)(
4621
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
4699
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4622
4700
  "div",
4623
4701
  {
4624
4702
  ref: panelRef,
@@ -4637,7 +4715,7 @@ function BugBearPanel({
4637
4715
  },
4638
4716
  onMouseDown: handleMouseDown,
4639
4717
  children: [
4640
- collapsed && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
4718
+ collapsed && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4641
4719
  "button",
4642
4720
  {
4643
4721
  onClick: () => setCollapsed(false),
@@ -4659,9 +4737,9 @@ function BugBearPanel({
4659
4737
  fontWeight: 500
4660
4738
  },
4661
4739
  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: {
4740
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(BugBearIcon, { size: 24 }),
4741
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: "BugBear" }),
4742
+ badgeCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: {
4665
4743
  backgroundColor: "#fff",
4666
4744
  color: colors.blue,
4667
4745
  fontSize: "0.75rem",
@@ -4672,7 +4750,7 @@ function BugBearPanel({
4672
4750
  ]
4673
4751
  }
4674
4752
  ),
4675
- !collapsed && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { style: {
4753
+ !collapsed && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: {
4676
4754
  width: PANEL_WIDTH,
4677
4755
  backgroundColor: colors.bg,
4678
4756
  borderRadius: 12,
@@ -4680,7 +4758,7 @@ function BugBearPanel({
4680
4758
  overflow: "hidden",
4681
4759
  boxShadow: "0 25px 50px -12px rgba(0,0,0,0.5)"
4682
4760
  }, children: [
4683
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
4761
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4684
4762
  "div",
4685
4763
  {
4686
4764
  "data-drag-handle": true,
@@ -4696,7 +4774,7 @@ function BugBearPanel({
4696
4774
  cursor: draggable ? isDragging ? "grabbing" : "grab" : "default"
4697
4775
  },
4698
4776
  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)(
4777
+ /* @__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
4778
  "button",
4701
4779
  {
4702
4780
  onClick: pop,
@@ -4712,14 +4790,14 @@ function BugBearPanel({
4712
4790
  },
4713
4791
  children: "\u2190 Back"
4714
4792
  }
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" })
4793
+ ) : /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
4794
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(BugBearIcon, { size: 28 }),
4795
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { children: [
4796
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [
4797
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { fontWeight: 600, fontSize: "0.875rem" }, children: "BugBear" }),
4798
+ 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
4799
  ] }),
4722
- testerInfo && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
4800
+ testerInfo && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4723
4801
  "button",
4724
4802
  {
4725
4803
  onClick: () => push({ name: "PROFILE" }),
@@ -4737,13 +4815,13 @@ function BugBearPanel({
4737
4815
  },
4738
4816
  children: [
4739
4817
  testerInfo.name,
4740
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: { fontSize: "0.625rem" }, children: "\u270E" })
4818
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: { fontSize: "0.625rem" }, children: "\u270E" })
4741
4819
  ]
4742
4820
  }
4743
4821
  )
4744
4822
  ] })
4745
4823
  ] }) }),
4746
- headerTitle ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { style: {
4824
+ headerTitle ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { style: {
4747
4825
  fontSize: "0.8125rem",
4748
4826
  fontWeight: 600,
4749
4827
  color: colors.textSecondary,
@@ -4753,7 +4831,7 @@ function BugBearPanel({
4753
4831
  textOverflow: "ellipsis",
4754
4832
  whiteSpace: "nowrap"
4755
4833
  }, children: headerTitle }) : null,
4756
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
4834
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
4757
4835
  "button",
4758
4836
  {
4759
4837
  onClick: handleClose,
@@ -4777,13 +4855,13 @@ function BugBearPanel({
4777
4855
  ]
4778
4856
  }
4779
4857
  ),
4780
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: {
4858
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { style: {
4781
4859
  padding: 16,
4782
4860
  maxHeight: 400,
4783
4861
  overflowY: "auto",
4784
4862
  backgroundColor: colors.bg,
4785
4863
  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() })
4864
+ }, 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
4865
  ] })
4788
4866
  ]
4789
4867
  }
@@ -4795,7 +4873,7 @@ function BugBearPanel({
4795
4873
  // src/BugBearErrorBoundary.tsx
4796
4874
  var import_react15 = require("react");
4797
4875
  var import_core2 = require("@bbearai/core");
4798
- var import_jsx_runtime17 = require("react/jsx-runtime");
4876
+ var import_jsx_runtime18 = require("react/jsx-runtime");
4799
4877
  var BugBearErrorBoundary = class extends import_react15.Component {
4800
4878
  constructor(props) {
4801
4879
  super(props);
@@ -4840,7 +4918,7 @@ var BugBearErrorBoundary = class extends import_react15.Component {
4840
4918
  if (fallback) {
4841
4919
  return fallback;
4842
4920
  }
4843
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
4921
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
4844
4922
  "div",
4845
4923
  {
4846
4924
  style: {
@@ -4852,13 +4930,13 @@ var BugBearErrorBoundary = class extends import_react15.Component {
4852
4930
  fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'
4853
4931
  },
4854
4932
  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" })
4933
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "8px", marginBottom: "12px" }, children: [
4934
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("img", { src: BUGBEAR_LOGO_BASE64, alt: "BugBear", width: 28, height: 28, style: { objectFit: "contain" } }),
4935
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h3", { style: { margin: 0, color: "#991b1b", fontSize: "16px" }, children: "Something went wrong" })
4858
4936
  ] }),
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)(
4937
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { style: { color: "#7f1d1d", fontSize: "14px", margin: "0 0 12px 0" }, children: error.message }),
4938
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { display: "flex", gap: "8px" }, children: [
4939
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
4862
4940
  "button",
4863
4941
  {
4864
4942
  onClick: this.reset,
@@ -4875,7 +4953,7 @@ var BugBearErrorBoundary = class extends import_react15.Component {
4875
4953
  children: "Try Again"
4876
4954
  }
4877
4955
  ),
4878
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
4956
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
4879
4957
  "button",
4880
4958
  {
4881
4959
  onClick: () => window.location.reload(),
@@ -4893,7 +4971,7 @@ var BugBearErrorBoundary = class extends import_react15.Component {
4893
4971
  }
4894
4972
  )
4895
4973
  ] }),
4896
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { style: { color: "#9ca3af", fontSize: "12px", marginTop: "12px" }, children: "The error has been captured by BugBear" })
4974
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { style: { color: "#9ca3af", fontSize: "12px", marginTop: "12px" }, children: "The error has been captured by BugBear" })
4897
4975
  ]
4898
4976
  }
4899
4977
  );