@bbearai/react-native 0.5.3 → 0.5.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.
package/dist/index.js CHANGED
@@ -11746,6 +11746,8 @@ var BugBearClient = class {
11746
11746
  title: report.title || this.generateTitle(report),
11747
11747
  description: report.description,
11748
11748
  severity: report.severity,
11749
+ category: report.category,
11750
+ // Bug category (ui, performance, crash, etc.)
11749
11751
  failed_at_step: report.failedAtStep,
11750
11752
  voice_audio_url: report.voiceAudioUrl,
11751
11753
  voice_transcript: report.voiceTranscript,
@@ -13302,6 +13304,14 @@ function BugBearProvider({ config, children, appVersion, enabled = true }) {
13302
13304
  initializeBugBear(newClient);
13303
13305
  }
13304
13306
  }, [enabled, config, initializeBugBear]);
13307
+ (0, import_react.useEffect)(() => {
13308
+ if (!client || !isTester || !isQAEnabled) return;
13309
+ const interval = setInterval(() => {
13310
+ refreshThreads();
13311
+ refreshIssueCounts();
13312
+ }, 3e4);
13313
+ return () => clearInterval(interval);
13314
+ }, [client, isTester, isQAEnabled, refreshThreads, refreshIssueCounts]);
13305
13315
  const currentAssignment = assignments.find(
13306
13316
  (a) => a.status === "in_progress"
13307
13317
  ) || assignments.find(
@@ -13353,8 +13363,8 @@ function BugBearProvider({ config, children, appVersion, enabled = true }) {
13353
13363
  }
13354
13364
 
13355
13365
  // src/BugBearButton.tsx
13356
- var import_react18 = __toESM(require("react"));
13357
- var import_react_native17 = require("react-native");
13366
+ var import_react19 = __toESM(require("react"));
13367
+ var import_react_native18 = require("react-native");
13358
13368
 
13359
13369
  // src/widget/logo.ts
13360
13370
  var BUGBEAR_LOGO_BASE64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAAXNSR0IArs4c6QAAAJhlWElmTU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAASQBAACAAAAFAAAAISgAQADAAAAAQABAACgAgAEAAAAAQAAAGCgAwAEAAAAAQAAAGAAAAAAMjAyNjowMToyNCAxNjoyMTozOABbbVCuAAAACXBIWXMAAAsTAAALEwEAmpwYAAACo2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpJcHRjNHhtcEV4dD0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcEV4dC8yMDA4LTAyLTI5LyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIj4KICAgICAgICAgPElwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWE8L0lwdGM0eG1wRXh0OkRpZ2l0YWxTb3VyY2VUeXBlPgogICAgICAgICA8SXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPmZjNzJlN2Q2LTYyYTEtNDE1ZS04MjY5LWM2NjA4MjY0OWRiMDwvSXB0YzR4bXBFeHQ6RGlnSW1hZ2VHVUlEPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAyNi0wMS0yNFQxNjoyMTozODwveG1wOkNyZWF0ZURhdGU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+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";
@@ -14690,20 +14700,185 @@ var styles6 = import_react_native8.StyleSheet.create({
14690
14700
  });
14691
14701
 
14692
14702
  // src/widget/screens/ReportScreen.tsx
14703
+ var import_react11 = __toESM(require("react"));
14704
+ var import_react_native10 = require("react-native");
14705
+
14706
+ // src/widget/CategoryPicker.tsx
14693
14707
  var import_react10 = __toESM(require("react"));
14694
14708
  var import_react_native9 = require("react-native");
14709
+ var categoryOptions = [
14710
+ { value: "ui_ux", label: "UI/UX", icon: "\u{1F3A8}" },
14711
+ { value: "functional", label: "Functional", icon: "\u2699\uFE0F" },
14712
+ { value: "crash", label: "Crash", icon: "\u{1F4A5}" },
14713
+ { value: "security", label: "Security", icon: "\u{1F510}" },
14714
+ { value: "other", label: "Other", icon: "\u{1F4DD}" }
14715
+ ];
14716
+ function CategoryPicker({ value, onChange, optional = true }) {
14717
+ const [modalVisible, setModalVisible] = (0, import_react10.useState)(false);
14718
+ const selectedOption = value ? categoryOptions.find((o) => o.value === value) : null;
14719
+ const handleSelect = (category) => {
14720
+ onChange(category);
14721
+ setModalVisible(false);
14722
+ };
14723
+ return /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement(
14724
+ import_react_native9.TouchableOpacity,
14725
+ {
14726
+ style: styles7.trigger,
14727
+ onPress: () => setModalVisible(true)
14728
+ },
14729
+ /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: selectedOption ? styles7.triggerTextSelected : styles7.triggerTextPlaceholder }, selectedOption ? `${selectedOption.icon} ${selectedOption.label}` : optional ? "Select category (optional)" : "Select category"),
14730
+ /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: styles7.chevron }, "\u25BC")
14731
+ ), /* @__PURE__ */ import_react10.default.createElement(
14732
+ import_react_native9.Modal,
14733
+ {
14734
+ visible: modalVisible,
14735
+ transparent: true,
14736
+ animationType: "fade",
14737
+ onRequestClose: () => setModalVisible(false)
14738
+ },
14739
+ /* @__PURE__ */ import_react10.default.createElement(
14740
+ import_react_native9.TouchableOpacity,
14741
+ {
14742
+ style: styles7.overlay,
14743
+ activeOpacity: 1,
14744
+ onPress: () => setModalVisible(false)
14745
+ },
14746
+ /* @__PURE__ */ import_react10.default.createElement(import_react_native9.View, { style: styles7.modal, onStartShouldSetResponder: () => true }, /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: styles7.modalTitle }, "Select Category"), optional && /* @__PURE__ */ import_react10.default.createElement(
14747
+ import_react_native9.TouchableOpacity,
14748
+ {
14749
+ style: [styles7.option, !value && styles7.optionSelected],
14750
+ onPress: () => handleSelect(null)
14751
+ },
14752
+ /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: styles7.optionText }, "\u2014 None \u2014")
14753
+ ), categoryOptions.map(({ value: optValue, label, icon }) => /* @__PURE__ */ import_react10.default.createElement(
14754
+ import_react_native9.TouchableOpacity,
14755
+ {
14756
+ key: optValue,
14757
+ style: [styles7.option, value === optValue && styles7.optionSelected],
14758
+ onPress: () => handleSelect(optValue)
14759
+ },
14760
+ /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: styles7.optionIcon }, icon),
14761
+ /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: styles7.optionText }, label),
14762
+ value === optValue && /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: styles7.checkmark }, "\u2713")
14763
+ )), /* @__PURE__ */ import_react10.default.createElement(
14764
+ import_react_native9.TouchableOpacity,
14765
+ {
14766
+ style: styles7.cancelButton,
14767
+ onPress: () => setModalVisible(false)
14768
+ },
14769
+ /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: styles7.cancelText }, "Cancel")
14770
+ ))
14771
+ )
14772
+ ));
14773
+ }
14774
+ var styles7 = import_react_native9.StyleSheet.create({
14775
+ trigger: {
14776
+ flexDirection: "row",
14777
+ alignItems: "center",
14778
+ justifyContent: "space-between",
14779
+ backgroundColor: colors.card,
14780
+ borderWidth: 1,
14781
+ borderColor: colors.border,
14782
+ borderRadius: 8,
14783
+ paddingHorizontal: 12,
14784
+ paddingVertical: 10
14785
+ },
14786
+ triggerTextSelected: {
14787
+ fontSize: 14,
14788
+ color: colors.textPrimary
14789
+ },
14790
+ triggerTextPlaceholder: {
14791
+ fontSize: 14,
14792
+ color: colors.textMuted
14793
+ },
14794
+ chevron: {
14795
+ fontSize: 10,
14796
+ color: colors.textMuted
14797
+ },
14798
+ overlay: {
14799
+ flex: 1,
14800
+ backgroundColor: "rgba(0, 0, 0, 0.6)",
14801
+ justifyContent: "center",
14802
+ alignItems: "center",
14803
+ padding: 24
14804
+ },
14805
+ modal: {
14806
+ width: "100%",
14807
+ maxWidth: 300,
14808
+ backgroundColor: colors.card,
14809
+ borderRadius: 16,
14810
+ padding: 8,
14811
+ borderWidth: 1,
14812
+ borderColor: colors.border
14813
+ },
14814
+ modalTitle: {
14815
+ fontSize: 16,
14816
+ fontWeight: "600",
14817
+ color: colors.textPrimary,
14818
+ textAlign: "center",
14819
+ paddingVertical: 12,
14820
+ borderBottomWidth: 1,
14821
+ borderBottomColor: colors.border,
14822
+ marginBottom: 4
14823
+ },
14824
+ option: {
14825
+ flexDirection: "row",
14826
+ alignItems: "center",
14827
+ paddingVertical: 14,
14828
+ paddingHorizontal: 16,
14829
+ borderRadius: 8
14830
+ },
14831
+ optionSelected: {
14832
+ backgroundColor: colors.blue + "20"
14833
+ },
14834
+ optionIcon: {
14835
+ fontSize: 18,
14836
+ marginRight: 12
14837
+ },
14838
+ optionText: {
14839
+ flex: 1,
14840
+ fontSize: 15,
14841
+ color: colors.textPrimary
14842
+ },
14843
+ checkmark: {
14844
+ fontSize: 16,
14845
+ color: colors.blue,
14846
+ fontWeight: "600"
14847
+ },
14848
+ cancelButton: {
14849
+ marginTop: 8,
14850
+ paddingVertical: 12,
14851
+ borderTopWidth: 1,
14852
+ borderTopColor: colors.border
14853
+ },
14854
+ cancelText: {
14855
+ fontSize: 15,
14856
+ color: colors.textMuted,
14857
+ textAlign: "center"
14858
+ }
14859
+ });
14860
+
14861
+ // src/widget/screens/ReportScreen.tsx
14695
14862
  function ReportScreen({ nav, prefill }) {
14696
14863
  const { client, getDeviceInfo, uploadImage, refreshAssignments } = useBugBear();
14697
- const [reportType, setReportType] = (0, import_react10.useState)(prefill?.type || "bug");
14698
- const [severity, setSeverity] = (0, import_react10.useState)("medium");
14699
- const [description, setDescription] = (0, import_react10.useState)("");
14700
- const [affectedScreen, setAffectedScreen] = (0, import_react10.useState)("");
14701
- const [submitting, setSubmitting] = (0, import_react10.useState)(false);
14702
- const [error, setError] = (0, import_react10.useState)(null);
14703
- const submittingRef = (0, import_react10.useRef)(false);
14864
+ const [reportType, setReportType] = (0, import_react11.useState)(prefill?.type || "bug");
14865
+ const [severity, setSeverity] = (0, import_react11.useState)("medium");
14866
+ const [category, setCategory] = (0, import_react11.useState)(null);
14867
+ const [description, setDescription] = (0, import_react11.useState)("");
14868
+ const [affectedScreen, setAffectedScreen] = (0, import_react11.useState)("");
14869
+ const [submitting, setSubmitting] = (0, import_react11.useState)(false);
14870
+ const [error, setError] = (0, import_react11.useState)(null);
14871
+ const submittingRef = (0, import_react11.useRef)(false);
14704
14872
  const images = useImageAttachments(uploadImage, 5, "screenshots");
14705
14873
  const isRetestFailure = prefill?.type === "test_fail";
14706
14874
  const isBugType = reportType === "bug" || reportType === "test_fail";
14875
+ (0, import_react11.useEffect)(() => {
14876
+ if (reportType === "feedback" || reportType === "suggestion") {
14877
+ setCategory("other");
14878
+ } else {
14879
+ setCategory(null);
14880
+ }
14881
+ }, [reportType]);
14707
14882
  const handleSubmit = async () => {
14708
14883
  if (!client || !description.trim()) return;
14709
14884
  if (submittingRef.current) return;
@@ -14721,6 +14896,7 @@ function ReportScreen({ nav, prefill }) {
14721
14896
  type: reportType,
14722
14897
  description: description.trim(),
14723
14898
  severity: isBugType ? severity : void 0,
14899
+ category: category || void 0,
14724
14900
  assignmentId: prefill?.assignmentId,
14725
14901
  testCaseId: prefill?.testCaseId,
14726
14902
  appContext,
@@ -14745,23 +14921,23 @@ function ReportScreen({ nav, prefill }) {
14745
14921
  submittingRef.current = false;
14746
14922
  }
14747
14923
  };
14748
- return /* @__PURE__ */ import_react10.default.createElement(import_react_native9.View, null, isRetestFailure ? /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement(import_react_native9.View, { style: styles7.retestBanner }, /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: styles7.retestIcon }, "\u{1F504}"), /* @__PURE__ */ import_react10.default.createElement(import_react_native9.View, null, /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: styles7.retestTitle }, "Bug Still Present"), /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: styles7.retestSubtitle }, "The fix did not resolve this issue"))), /* @__PURE__ */ import_react10.default.createElement(import_react_native9.View, { style: styles7.section }, /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: shared.label }, "Severity"), /* @__PURE__ */ import_react10.default.createElement(import_react_native9.View, { style: styles7.severityRow }, [
14924
+ return /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, null, isRetestFailure ? /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, { style: styles8.retestBanner }, /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: styles8.retestIcon }, "\u{1F504}"), /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, null, /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: styles8.retestTitle }, "Bug Still Present"), /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: styles8.retestSubtitle }, "The fix did not resolve this issue"))), /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, { style: styles8.section }, /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: shared.label }, "Severity"), /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, { style: styles8.severityRow }, [
14749
14925
  { sev: "critical", color: "#ef4444" },
14750
14926
  { sev: "high", color: "#f97316" },
14751
14927
  { sev: "medium", color: "#eab308" },
14752
14928
  { sev: "low", color: "#6b7280" }
14753
- ].map(({ sev, color }) => /* @__PURE__ */ import_react10.default.createElement(
14754
- import_react_native9.TouchableOpacity,
14929
+ ].map(({ sev, color }) => /* @__PURE__ */ import_react11.default.createElement(
14930
+ import_react_native10.TouchableOpacity,
14755
14931
  {
14756
14932
  key: sev,
14757
- style: [styles7.sevButton, severity === sev && { backgroundColor: `${color}30`, borderColor: color }],
14933
+ style: [styles8.sevButton, severity === sev && { backgroundColor: `${color}30`, borderColor: color }],
14758
14934
  onPress: () => setSeverity(sev)
14759
14935
  },
14760
- /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: [styles7.sevText, severity === sev && { color }] }, sev)
14761
- )))), /* @__PURE__ */ import_react10.default.createElement(import_react_native9.View, { style: styles7.section }, /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: shared.label }, "What went wrong?"), /* @__PURE__ */ import_react10.default.createElement(
14762
- import_react_native9.TextInput,
14936
+ /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: [styles8.sevText, severity === sev && { color }] }, sev)
14937
+ )))), /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, { style: styles8.section }, /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: shared.label }, "Category (optional)"), /* @__PURE__ */ import_react11.default.createElement(CategoryPicker, { value: category, onChange: setCategory, optional: true })), /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, { style: styles8.section }, /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: shared.label }, "What went wrong?"), /* @__PURE__ */ import_react11.default.createElement(
14938
+ import_react_native10.TextInput,
14763
14939
  {
14764
- style: styles7.descInput,
14940
+ style: styles8.descInput,
14765
14941
  value: description,
14766
14942
  onChangeText: setDescription,
14767
14943
  placeholder: "Describe what you observed. What still doesn't work?",
@@ -14770,7 +14946,7 @@ function ReportScreen({ nav, prefill }) {
14770
14946
  numberOfLines: 4,
14771
14947
  textAlignVertical: "top"
14772
14948
  }
14773
- )), /* @__PURE__ */ import_react10.default.createElement(
14949
+ )), /* @__PURE__ */ import_react11.default.createElement(
14774
14950
  ImagePickerButtons,
14775
14951
  {
14776
14952
  images: images.images,
@@ -14780,44 +14956,44 @@ function ReportScreen({ nav, prefill }) {
14780
14956
  onRemove: images.removeImage,
14781
14957
  label: "Attachments (optional)"
14782
14958
  }
14783
- ), error && /* @__PURE__ */ import_react10.default.createElement(import_react_native9.View, { style: styles7.errorBanner }, /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: styles7.errorText }, error)), /* @__PURE__ */ import_react10.default.createElement(
14784
- import_react_native9.TouchableOpacity,
14959
+ ), error && /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, { style: styles8.errorBanner }, /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: styles8.errorText }, error)), /* @__PURE__ */ import_react11.default.createElement(
14960
+ import_react_native10.TouchableOpacity,
14785
14961
  {
14786
- style: [shared.primaryButton, styles7.retestSubmitButton, (!description.trim() || submitting || images.isUploading) && shared.primaryButtonDisabled, { marginTop: 20 }],
14962
+ style: [shared.primaryButton, styles8.retestSubmitButton, (!description.trim() || submitting || images.isUploading) && shared.primaryButtonDisabled, { marginTop: 20 }],
14787
14963
  onPress: handleSubmit,
14788
14964
  disabled: !description.trim() || submitting || images.isUploading
14789
14965
  },
14790
- /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: shared.primaryButtonText }, images.isUploading ? "Uploading images..." : submitting ? "Submitting..." : error ? "Retry" : "Submit Failed Retest")
14791
- )) : /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: shared.label }, "What are you reporting?"), /* @__PURE__ */ import_react10.default.createElement(import_react_native9.View, { style: styles7.typeRow }, [
14966
+ /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: shared.primaryButtonText }, images.isUploading ? "Uploading images..." : submitting ? "Submitting..." : error ? "Retry" : "Submit Failed Retest")
14967
+ )) : /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: shared.label }, "What are you reporting?"), /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, { style: styles8.typeRow }, [
14792
14968
  { type: "bug", label: "Bug", icon: "\u{1F41B}" },
14793
14969
  { type: "feedback", label: "Feedback", icon: "\u{1F4A1}" },
14794
14970
  { type: "suggestion", label: "Idea", icon: "\u2728" }
14795
- ].map(({ type, label, icon }) => /* @__PURE__ */ import_react10.default.createElement(
14796
- import_react_native9.TouchableOpacity,
14971
+ ].map(({ type, label, icon }) => /* @__PURE__ */ import_react11.default.createElement(
14972
+ import_react_native10.TouchableOpacity,
14797
14973
  {
14798
14974
  key: type,
14799
- style: [styles7.typeCard, reportType === type && styles7.typeCardActive],
14975
+ style: [styles8.typeCard, reportType === type && styles8.typeCardActive],
14800
14976
  onPress: () => setReportType(type)
14801
14977
  },
14802
- /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: styles7.typeIcon }, icon),
14803
- /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: [styles7.typeLabel, reportType === type && styles7.typeLabelActive] }, label)
14804
- ))), isBugType && /* @__PURE__ */ import_react10.default.createElement(import_react_native9.View, { style: styles7.section }, /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: shared.label }, "Severity"), /* @__PURE__ */ import_react10.default.createElement(import_react_native9.View, { style: styles7.severityRow }, [
14978
+ /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: styles8.typeIcon }, icon),
14979
+ /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: [styles8.typeLabel, reportType === type && styles8.typeLabelActive] }, label)
14980
+ ))), isBugType && /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, { style: styles8.section }, /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: shared.label }, "Severity"), /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, { style: styles8.severityRow }, [
14805
14981
  { sev: "critical", color: "#ef4444" },
14806
14982
  { sev: "high", color: "#f97316" },
14807
14983
  { sev: "medium", color: "#eab308" },
14808
14984
  { sev: "low", color: "#6b7280" }
14809
- ].map(({ sev, color }) => /* @__PURE__ */ import_react10.default.createElement(
14810
- import_react_native9.TouchableOpacity,
14985
+ ].map(({ sev, color }) => /* @__PURE__ */ import_react11.default.createElement(
14986
+ import_react_native10.TouchableOpacity,
14811
14987
  {
14812
14988
  key: sev,
14813
- style: [styles7.sevButton, severity === sev && { backgroundColor: `${color}30`, borderColor: color }],
14989
+ style: [styles8.sevButton, severity === sev && { backgroundColor: `${color}30`, borderColor: color }],
14814
14990
  onPress: () => setSeverity(sev)
14815
14991
  },
14816
- /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: [styles7.sevText, severity === sev && { color }] }, sev)
14817
- )))), /* @__PURE__ */ import_react10.default.createElement(import_react_native9.View, { style: styles7.section }, /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: shared.label }, "What happened?"), /* @__PURE__ */ import_react10.default.createElement(
14818
- import_react_native9.TextInput,
14992
+ /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: [styles8.sevText, severity === sev && { color }] }, sev)
14993
+ )))), isBugType && /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, { style: styles8.section }, /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: shared.label }, "Category (optional)"), /* @__PURE__ */ import_react11.default.createElement(CategoryPicker, { value: category, onChange: setCategory, optional: true })), /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, { style: styles8.section }, /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: shared.label }, "What happened?"), /* @__PURE__ */ import_react11.default.createElement(
14994
+ import_react_native10.TextInput,
14819
14995
  {
14820
- style: styles7.descInput,
14996
+ style: styles8.descInput,
14821
14997
  value: description,
14822
14998
  onChangeText: setDescription,
14823
14999
  placeholder: "Describe the issue...",
@@ -14826,16 +15002,16 @@ function ReportScreen({ nav, prefill }) {
14826
15002
  numberOfLines: 4,
14827
15003
  textAlignVertical: "top"
14828
15004
  }
14829
- )), isBugType && /* @__PURE__ */ import_react10.default.createElement(import_react_native9.View, { style: styles7.section }, /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: shared.label }, "Which screen?"), /* @__PURE__ */ import_react10.default.createElement(
14830
- import_react_native9.TextInput,
15005
+ )), isBugType && /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, { style: styles8.section }, /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: shared.label }, "Which screen?"), /* @__PURE__ */ import_react11.default.createElement(
15006
+ import_react_native10.TextInput,
14831
15007
  {
14832
- style: styles7.screenInput,
15008
+ style: styles8.screenInput,
14833
15009
  value: affectedScreen,
14834
15010
  onChangeText: setAffectedScreen,
14835
15011
  placeholder: "e.g. Reservations, Settings...",
14836
15012
  placeholderTextColor: colors.textMuted
14837
15013
  }
14838
- ), /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: styles7.screenHint }, "Which screen or area was the bug on? (optional)")), /* @__PURE__ */ import_react10.default.createElement(
15014
+ ), /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: styles8.screenHint }, "Which screen or area was the bug on? (optional)")), /* @__PURE__ */ import_react11.default.createElement(
14839
15015
  ImagePickerButtons,
14840
15016
  {
14841
15017
  images: images.images,
@@ -14845,17 +15021,17 @@ function ReportScreen({ nav, prefill }) {
14845
15021
  onRemove: images.removeImage,
14846
15022
  label: "Screenshots (optional)"
14847
15023
  }
14848
- ), error && /* @__PURE__ */ import_react10.default.createElement(import_react_native9.View, { style: styles7.errorBanner }, /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: styles7.errorText }, error)), /* @__PURE__ */ import_react10.default.createElement(
14849
- import_react_native9.TouchableOpacity,
15024
+ ), error && /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, { style: styles8.errorBanner }, /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: styles8.errorText }, error)), /* @__PURE__ */ import_react11.default.createElement(
15025
+ import_react_native10.TouchableOpacity,
14850
15026
  {
14851
15027
  style: [shared.primaryButton, (!description.trim() || submitting || images.isUploading) && shared.primaryButtonDisabled, { marginTop: 20 }],
14852
15028
  onPress: handleSubmit,
14853
15029
  disabled: !description.trim() || submitting || images.isUploading
14854
15030
  },
14855
- /* @__PURE__ */ import_react10.default.createElement(import_react_native9.Text, { style: shared.primaryButtonText }, images.isUploading ? "Uploading images..." : submitting ? "Submitting..." : error ? "Retry" : "Submit Report")
15031
+ /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: shared.primaryButtonText }, images.isUploading ? "Uploading images..." : submitting ? "Submitting..." : error ? "Retry" : "Submit Report")
14856
15032
  )));
14857
15033
  }
14858
- var styles7 = import_react_native9.StyleSheet.create({
15034
+ var styles8 = import_react_native10.StyleSheet.create({
14859
15035
  typeRow: { flexDirection: "row", gap: 10, marginBottom: 20 },
14860
15036
  typeCard: { flex: 1, alignItems: "center", paddingVertical: 16, borderRadius: 12, backgroundColor: colors.card, borderWidth: 1, borderColor: colors.border },
14861
15037
  typeCardActive: { borderColor: colors.blue, backgroundColor: "#172554" },
@@ -14879,16 +15055,16 @@ var styles7 = import_react_native9.StyleSheet.create({
14879
15055
  });
14880
15056
 
14881
15057
  // src/widget/screens/ReportSuccessScreen.tsx
14882
- var import_react11 = __toESM(require("react"));
14883
- var import_react_native10 = require("react-native");
15058
+ var import_react12 = __toESM(require("react"));
15059
+ var import_react_native11 = require("react-native");
14884
15060
  function ReportSuccessScreen({ nav }) {
14885
- (0, import_react11.useEffect)(() => {
15061
+ (0, import_react12.useEffect)(() => {
14886
15062
  const timer = setTimeout(() => nav.reset(), 2e3);
14887
15063
  return () => clearTimeout(timer);
14888
15064
  }, [nav]);
14889
- return /* @__PURE__ */ import_react11.default.createElement(import_react_native10.View, { style: styles8.container }, /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: styles8.emoji }, "\u{1F389}"), /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: styles8.title }, "Report submitted!"), /* @__PURE__ */ import_react11.default.createElement(import_react_native10.Text, { style: styles8.subtitle }, "Thank you for your feedback"));
15065
+ return /* @__PURE__ */ import_react12.default.createElement(import_react_native11.View, { style: styles9.container }, /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: styles9.emoji }, "\u{1F389}"), /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: styles9.title }, "Report submitted!"), /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: styles9.subtitle }, "Thank you for your feedback"));
14890
15066
  }
14891
- var styles8 = import_react_native10.StyleSheet.create({
15067
+ var styles9 = import_react_native11.StyleSheet.create({
14892
15068
  container: { alignItems: "center", paddingVertical: 60 },
14893
15069
  emoji: { fontSize: 48, marginBottom: 16 },
14894
15070
  title: { fontSize: 22, fontWeight: "700", color: colors.textPrimary, marginBottom: 6 },
@@ -14896,29 +15072,29 @@ var styles8 = import_react_native10.StyleSheet.create({
14896
15072
  });
14897
15073
 
14898
15074
  // src/widget/screens/MessageListScreen.tsx
14899
- var import_react12 = __toESM(require("react"));
14900
- var import_react_native11 = require("react-native");
15075
+ var import_react13 = __toESM(require("react"));
15076
+ var import_react_native12 = require("react-native");
14901
15077
  function MessageListScreen({ nav }) {
14902
15078
  const { threads, unreadCount, refreshThreads } = useBugBear();
14903
- return /* @__PURE__ */ import_react12.default.createElement(import_react_native11.View, null, /* @__PURE__ */ import_react12.default.createElement(
14904
- import_react_native11.TouchableOpacity,
15079
+ return /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, null, /* @__PURE__ */ import_react13.default.createElement(
15080
+ import_react_native12.TouchableOpacity,
14905
15081
  {
14906
- style: styles9.newMsgButton,
15082
+ style: styles10.newMsgButton,
14907
15083
  onPress: () => nav.push({ name: "COMPOSE_MESSAGE" })
14908
15084
  },
14909
- /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: styles9.newMsgText }, "\u2709\uFE0F New Message")
14910
- ), threads.length === 0 ? /* @__PURE__ */ import_react12.default.createElement(import_react_native11.View, { style: shared.emptyState }, /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: shared.emptyEmoji }, "\u{1F4AC}"), /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: shared.emptyTitle }, "No messages yet"), /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: shared.emptySubtitle }, "Start a conversation or wait for messages from admins")) : /* @__PURE__ */ import_react12.default.createElement(import_react_native11.View, null, threads.map((thread) => /* @__PURE__ */ import_react12.default.createElement(
14911
- import_react_native11.TouchableOpacity,
15085
+ /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.newMsgText }, "\u2709\uFE0F New Message")
15086
+ ), threads.length === 0 ? /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: shared.emptyState }, /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: shared.emptyEmoji }, "\u{1F4AC}"), /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: shared.emptyTitle }, "No messages yet"), /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: shared.emptySubtitle }, "Start a conversation or wait for messages from admins")) : /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, null, threads.map((thread) => /* @__PURE__ */ import_react13.default.createElement(
15087
+ import_react_native12.TouchableOpacity,
14912
15088
  {
14913
15089
  key: thread.id,
14914
- style: [styles9.threadItem, thread.unreadCount > 0 && styles9.threadItemUnread],
15090
+ style: [styles10.threadItem, thread.unreadCount > 0 && styles10.threadItemUnread],
14915
15091
  onPress: () => nav.push({ name: "THREAD_DETAIL", thread })
14916
15092
  },
14917
- /* @__PURE__ */ import_react12.default.createElement(import_react_native11.View, { style: styles9.threadLeft }, /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: styles9.threadIcon }, getThreadTypeIcon(thread.threadType)), /* @__PURE__ */ import_react12.default.createElement(import_react_native11.View, { style: styles9.threadInfo }, /* @__PURE__ */ import_react12.default.createElement(import_react_native11.View, { style: styles9.threadTitleRow }, thread.isPinned && /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: styles9.pinIcon }, "\u{1F4CC}"), /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: styles9.threadSubject, numberOfLines: 1 }, thread.subject || "No subject")), thread.lastMessage && /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: styles9.threadPreview, numberOfLines: 1 }, thread.lastMessage.senderName, ": ", thread.lastMessage.content))),
14918
- /* @__PURE__ */ import_react12.default.createElement(import_react_native11.View, { style: styles9.threadRight }, /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: styles9.threadTime }, formatRelativeTime(thread.lastMessageAt)), thread.unreadCount > 0 && /* @__PURE__ */ import_react12.default.createElement(import_react_native11.View, { style: styles9.unreadBadge }, /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: styles9.unreadText }, thread.unreadCount)), thread.priority !== "normal" && /* @__PURE__ */ import_react12.default.createElement(import_react_native11.View, { style: [styles9.priorityDot, { backgroundColor: getPriorityColor(thread.priority) }] }))
14919
- ))), /* @__PURE__ */ import_react12.default.createElement(import_react_native11.View, { style: styles9.footer }, /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: styles9.footerText }, threads.length, " thread", threads.length !== 1 ? "s" : "", " \xB7 ", unreadCount, " unread"), /* @__PURE__ */ import_react12.default.createElement(import_react_native11.TouchableOpacity, { onPress: refreshThreads }, /* @__PURE__ */ import_react12.default.createElement(import_react_native11.Text, { style: styles9.refreshText }, "\u21BB Refresh"))));
15093
+ /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: styles10.threadLeft }, /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.threadIcon }, getThreadTypeIcon(thread.threadType)), /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: styles10.threadInfo }, /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: styles10.threadTitleRow }, thread.isPinned && /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.pinIcon }, "\u{1F4CC}"), /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.threadSubject, numberOfLines: 1 }, thread.subject || "No subject")), thread.lastMessage && /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.threadPreview, numberOfLines: 1 }, thread.lastMessage.senderName, ": ", thread.lastMessage.content))),
15094
+ /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: styles10.threadRight }, /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.threadTime }, formatRelativeTime(thread.lastMessageAt)), thread.unreadCount > 0 && /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: styles10.unreadBadge }, /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.unreadText }, thread.unreadCount)), thread.priority !== "normal" && /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: [styles10.priorityDot, { backgroundColor: getPriorityColor(thread.priority) }] }))
15095
+ ))), /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: styles10.footer }, /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.footerText }, threads.length, " thread", threads.length !== 1 ? "s" : "", " \xB7 ", unreadCount, " unread"), /* @__PURE__ */ import_react13.default.createElement(import_react_native12.TouchableOpacity, { onPress: refreshThreads }, /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.refreshText }, "\u21BB Refresh"))));
14920
15096
  }
14921
- var styles9 = import_react_native11.StyleSheet.create({
15097
+ var styles10 = import_react_native12.StyleSheet.create({
14922
15098
  newMsgButton: { backgroundColor: colors.blue, paddingVertical: 12, borderRadius: 12, alignItems: "center", marginBottom: 16 },
14923
15099
  newMsgText: { fontSize: 15, fontWeight: "600", color: "#fff" },
14924
15100
  threadItem: { flexDirection: "row", justifyContent: "space-between", paddingVertical: 12, paddingHorizontal: 12, borderRadius: 10, marginBottom: 4, backgroundColor: colors.card },
@@ -14941,17 +15117,17 @@ var styles9 = import_react_native11.StyleSheet.create({
14941
15117
  });
14942
15118
 
14943
15119
  // src/widget/screens/ThreadDetailScreen.tsx
14944
- var import_react13 = __toESM(require("react"));
14945
- var import_react_native12 = require("react-native");
15120
+ var import_react14 = __toESM(require("react"));
15121
+ var import_react_native13 = require("react-native");
14946
15122
  function ThreadDetailScreen({ thread, nav }) {
14947
15123
  const { getThreadMessages, sendMessage, markAsRead, uploadImage } = useBugBear();
14948
- const [messages, setMessages] = (0, import_react13.useState)([]);
14949
- const [loading, setLoading] = (0, import_react13.useState)(true);
14950
- const [replyText, setReplyText] = (0, import_react13.useState)("");
14951
- const [sending, setSending] = (0, import_react13.useState)(false);
14952
- const [sendError, setSendError] = (0, import_react13.useState)(false);
15124
+ const [messages, setMessages] = (0, import_react14.useState)([]);
15125
+ const [loading, setLoading] = (0, import_react14.useState)(true);
15126
+ const [replyText, setReplyText] = (0, import_react14.useState)("");
15127
+ const [sending, setSending] = (0, import_react14.useState)(false);
15128
+ const [sendError, setSendError] = (0, import_react14.useState)(false);
14953
15129
  const replyImages = useImageAttachments(uploadImage, 3, "discussion-attachments");
14954
- (0, import_react13.useEffect)(() => {
15130
+ (0, import_react14.useEffect)(() => {
14955
15131
  (async () => {
14956
15132
  setLoading(true);
14957
15133
  const msgs = await getThreadMessages(thread.id);
@@ -14983,20 +15159,20 @@ function ThreadDetailScreen({ thread, nav }) {
14983
15159
  }
14984
15160
  setSending(false);
14985
15161
  };
14986
- return /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: styles10.container }, /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: styles10.header }, /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.headerIcon }, getThreadTypeIcon(thread.threadType)), /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.headerSubject, numberOfLines: 2 }, thread.subject || "No subject")), loading ? /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: styles10.loadingContainer }, /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.loadingText }, "Loading messages...")) : /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: styles10.messagesContainer }, messages.map((msg) => /* @__PURE__ */ import_react13.default.createElement(
14987
- import_react_native12.View,
15162
+ return /* @__PURE__ */ import_react14.default.createElement(import_react_native13.View, { style: styles11.container }, /* @__PURE__ */ import_react14.default.createElement(import_react_native13.View, { style: styles11.header }, /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Text, { style: styles11.headerIcon }, getThreadTypeIcon(thread.threadType)), /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Text, { style: styles11.headerSubject, numberOfLines: 2 }, thread.subject || "No subject")), loading ? /* @__PURE__ */ import_react14.default.createElement(import_react_native13.View, { style: styles11.loadingContainer }, /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Text, { style: styles11.loadingText }, "Loading messages...")) : /* @__PURE__ */ import_react14.default.createElement(import_react_native13.View, { style: styles11.messagesContainer }, messages.map((msg) => /* @__PURE__ */ import_react14.default.createElement(
15163
+ import_react_native13.View,
14988
15164
  {
14989
15165
  key: msg.id,
14990
- style: [styles10.bubble, msg.senderType === "tester" ? styles10.bubbleTester : styles10.bubbleAdmin]
15166
+ style: [styles11.bubble, msg.senderType === "tester" ? styles11.bubbleTester : styles11.bubbleAdmin]
14991
15167
  },
14992
- /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: [styles10.sender, msg.senderType === "tester" && styles10.senderTester] }, msg.senderType === "tester" ? "You" : msg.senderName),
14993
- /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: [styles10.content, msg.senderType === "tester" && styles10.contentTester] }, msg.content),
14994
- msg.attachments && msg.attachments.length > 0 && /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: styles10.attachments }, msg.attachments.filter((a) => a.type === "image").map((att, idx) => /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Image, { key: idx, source: { uri: att.url }, style: styles10.attachmentImage, resizeMode: "cover" }))),
14995
- /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: [styles10.time, msg.senderType === "tester" && styles10.timeTester] }, formatMessageTime(msg.createdAt))
14996
- ))), sendError && /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: styles10.errorBar }, /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.errorText }, "Failed to send. Tap Send to retry.")), replyImages.images.length > 0 && /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: styles10.replyPreview }, /* @__PURE__ */ import_react13.default.createElement(ImagePreviewStrip, { images: replyImages.images, onRemove: replyImages.removeImage })), /* @__PURE__ */ import_react13.default.createElement(import_react_native12.View, { style: styles10.composer }, IMAGE_PICKER_AVAILABLE && /* @__PURE__ */ import_react13.default.createElement(import_react_native12.TouchableOpacity, { style: styles10.attachBtn, onPress: replyImages.pickFromGallery, disabled: replyImages.images.length >= 3 }, /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.attachBtnText }, "\u{1F4CE}")), /* @__PURE__ */ import_react13.default.createElement(
14997
- import_react_native12.TextInput,
15168
+ /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Text, { style: [styles11.sender, msg.senderType === "tester" && styles11.senderTester] }, msg.senderType === "tester" ? "You" : msg.senderName),
15169
+ /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Text, { style: [styles11.content, msg.senderType === "tester" && styles11.contentTester] }, msg.content),
15170
+ msg.attachments && msg.attachments.length > 0 && /* @__PURE__ */ import_react14.default.createElement(import_react_native13.View, { style: styles11.attachments }, msg.attachments.filter((a) => a.type === "image").map((att, idx) => /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Image, { key: idx, source: { uri: att.url }, style: styles11.attachmentImage, resizeMode: "cover" }))),
15171
+ /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Text, { style: [styles11.time, msg.senderType === "tester" && styles11.timeTester] }, formatMessageTime(msg.createdAt))
15172
+ ))), sendError && /* @__PURE__ */ import_react14.default.createElement(import_react_native13.View, { style: styles11.errorBar }, /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Text, { style: styles11.errorText }, "Failed to send. Tap Send to retry.")), replyImages.images.length > 0 && /* @__PURE__ */ import_react14.default.createElement(import_react_native13.View, { style: styles11.replyPreview }, /* @__PURE__ */ import_react14.default.createElement(ImagePreviewStrip, { images: replyImages.images, onRemove: replyImages.removeImage })), /* @__PURE__ */ import_react14.default.createElement(import_react_native13.View, { style: styles11.composer }, IMAGE_PICKER_AVAILABLE && /* @__PURE__ */ import_react14.default.createElement(import_react_native13.TouchableOpacity, { style: styles11.attachBtn, onPress: replyImages.pickFromGallery, disabled: replyImages.images.length >= 3 }, /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Text, { style: styles11.attachBtnText }, "\u{1F4CE}")), /* @__PURE__ */ import_react14.default.createElement(
15173
+ import_react_native13.TextInput,
14998
15174
  {
14999
- style: styles10.replyInput,
15175
+ style: styles11.replyInput,
15000
15176
  value: replyText,
15001
15177
  onChangeText: setReplyText,
15002
15178
  placeholder: "Type a reply...",
@@ -15004,17 +15180,17 @@ function ThreadDetailScreen({ thread, nav }) {
15004
15180
  multiline: true,
15005
15181
  maxLength: 1e3
15006
15182
  }
15007
- ), /* @__PURE__ */ import_react13.default.createElement(
15008
- import_react_native12.TouchableOpacity,
15183
+ ), /* @__PURE__ */ import_react14.default.createElement(
15184
+ import_react_native13.TouchableOpacity,
15009
15185
  {
15010
- style: [styles10.sendBtn, (!replyText.trim() || sending || replyImages.isUploading) && styles10.sendBtnDisabled],
15186
+ style: [styles11.sendBtn, (!replyText.trim() || sending || replyImages.isUploading) && styles11.sendBtnDisabled],
15011
15187
  onPress: handleSend,
15012
15188
  disabled: !replyText.trim() || sending || replyImages.isUploading
15013
15189
  },
15014
- /* @__PURE__ */ import_react13.default.createElement(import_react_native12.Text, { style: styles10.sendBtnText }, sending ? "..." : "Send")
15190
+ /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Text, { style: styles11.sendBtnText }, sending ? "..." : "Send")
15015
15191
  )));
15016
15192
  }
15017
- var styles10 = import_react_native12.StyleSheet.create({
15193
+ var styles11 = import_react_native13.StyleSheet.create({
15018
15194
  container: { flex: 1 },
15019
15195
  header: { flexDirection: "row", alignItems: "center", gap: 8, marginBottom: 16, paddingBottom: 12, borderBottomWidth: 1, borderBottomColor: colors.border },
15020
15196
  headerIcon: { fontSize: 20 },
@@ -15046,13 +15222,13 @@ var styles10 = import_react_native12.StyleSheet.create({
15046
15222
  });
15047
15223
 
15048
15224
  // src/widget/screens/ComposeMessageScreen.tsx
15049
- var import_react14 = __toESM(require("react"));
15050
- var import_react_native13 = require("react-native");
15225
+ var import_react15 = __toESM(require("react"));
15226
+ var import_react_native14 = require("react-native");
15051
15227
  function ComposeMessageScreen({ nav }) {
15052
15228
  const { createThread, uploadImage } = useBugBear();
15053
- const [subject, setSubject] = (0, import_react14.useState)("");
15054
- const [message, setMessage] = (0, import_react14.useState)("");
15055
- const [sending, setSending] = (0, import_react14.useState)(false);
15229
+ const [subject, setSubject] = (0, import_react15.useState)("");
15230
+ const [message, setMessage] = (0, import_react15.useState)("");
15231
+ const [sending, setSending] = (0, import_react15.useState)(false);
15056
15232
  const images = useImageAttachments(uploadImage, 3, "discussion-attachments");
15057
15233
  const handleSend = async () => {
15058
15234
  if (!subject.trim() || !message.trim()) return;
@@ -15068,20 +15244,20 @@ function ComposeMessageScreen({ nav }) {
15068
15244
  nav.pop();
15069
15245
  }
15070
15246
  };
15071
- return /* @__PURE__ */ import_react14.default.createElement(import_react_native13.View, null, /* @__PURE__ */ import_react14.default.createElement(import_react_native13.View, { style: styles11.header }, /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Text, { style: styles11.title }, "New Message"), /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Text, { style: styles11.subtitle }, "Send a message to the QA team")), /* @__PURE__ */ import_react14.default.createElement(import_react_native13.View, { style: styles11.form }, /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Text, { style: shared.label }, "Subject"), /* @__PURE__ */ import_react14.default.createElement(
15072
- import_react_native13.TextInput,
15247
+ return /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, null, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.header }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.title }, "New Message"), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.subtitle }, "Send a message to the QA team")), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.form }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: shared.label }, "Subject"), /* @__PURE__ */ import_react15.default.createElement(
15248
+ import_react_native14.TextInput,
15073
15249
  {
15074
- style: styles11.subjectInput,
15250
+ style: styles12.subjectInput,
15075
15251
  value: subject,
15076
15252
  onChangeText: setSubject,
15077
15253
  placeholder: "What's this about?",
15078
15254
  placeholderTextColor: colors.textMuted,
15079
15255
  maxLength: 100
15080
15256
  }
15081
- ), /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Text, { style: [shared.label, { marginTop: 16 }] }, "Message"), /* @__PURE__ */ import_react14.default.createElement(
15082
- import_react_native13.TextInput,
15257
+ ), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: [shared.label, { marginTop: 16 }] }, "Message"), /* @__PURE__ */ import_react15.default.createElement(
15258
+ import_react_native14.TextInput,
15083
15259
  {
15084
- style: styles11.messageInput,
15260
+ style: styles12.messageInput,
15085
15261
  value: message,
15086
15262
  onChangeText: setMessage,
15087
15263
  placeholder: "Write your message...",
@@ -15091,7 +15267,7 @@ function ComposeMessageScreen({ nav }) {
15091
15267
  textAlignVertical: "top",
15092
15268
  maxLength: 2e3
15093
15269
  }
15094
- ), /* @__PURE__ */ import_react14.default.createElement(
15270
+ ), /* @__PURE__ */ import_react15.default.createElement(
15095
15271
  ImagePickerButtons,
15096
15272
  {
15097
15273
  images: images.images,
@@ -15100,17 +15276,17 @@ function ComposeMessageScreen({ nav }) {
15100
15276
  onPickCamera: images.pickFromCamera,
15101
15277
  onRemove: images.removeImage
15102
15278
  }
15103
- ), /* @__PURE__ */ import_react14.default.createElement(
15104
- import_react_native13.TouchableOpacity,
15279
+ ), /* @__PURE__ */ import_react15.default.createElement(
15280
+ import_react_native14.TouchableOpacity,
15105
15281
  {
15106
15282
  style: [shared.primaryButton, (!subject.trim() || !message.trim() || sending || images.isUploading) && shared.primaryButtonDisabled, { marginTop: 20 }],
15107
15283
  onPress: handleSend,
15108
15284
  disabled: !subject.trim() || !message.trim() || sending || images.isUploading
15109
15285
  },
15110
- /* @__PURE__ */ import_react14.default.createElement(import_react_native13.Text, { style: shared.primaryButtonText }, images.isUploading ? "Uploading..." : sending ? "Sending..." : "Send Message")
15286
+ /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: shared.primaryButtonText }, images.isUploading ? "Uploading..." : sending ? "Sending..." : "Send Message")
15111
15287
  )));
15112
15288
  }
15113
- var styles11 = import_react_native13.StyleSheet.create({
15289
+ var styles12 = import_react_native14.StyleSheet.create({
15114
15290
  header: { marginBottom: 20 },
15115
15291
  title: { fontSize: 20, fontWeight: "600", color: colors.textPrimary, marginBottom: 4 },
15116
15292
  subtitle: { fontSize: 14, color: colors.textMuted },
@@ -15120,20 +15296,20 @@ var styles11 = import_react_native13.StyleSheet.create({
15120
15296
  });
15121
15297
 
15122
15298
  // src/widget/screens/ProfileScreen.tsx
15123
- var import_react15 = __toESM(require("react"));
15124
- var import_react_native14 = require("react-native");
15299
+ var import_react16 = __toESM(require("react"));
15300
+ var import_react_native15 = require("react-native");
15125
15301
  function ProfileScreen({ nav }) {
15126
15302
  const { testerInfo, assignments, updateTesterProfile, refreshTesterInfo } = useBugBear();
15127
- const [editing, setEditing] = (0, import_react15.useState)(false);
15128
- const [name, setName] = (0, import_react15.useState)(testerInfo?.name || "");
15129
- const [additionalEmails, setAdditionalEmails] = (0, import_react15.useState)(testerInfo?.additionalEmails || []);
15130
- const [newEmailInput, setNewEmailInput] = (0, import_react15.useState)("");
15131
- const [platforms, setPlatforms] = (0, import_react15.useState)(testerInfo?.platforms || []);
15132
- const [saving, setSaving] = (0, import_react15.useState)(false);
15133
- const [saved, setSaved] = (0, import_react15.useState)(false);
15134
- const [showDetails, setShowDetails] = (0, import_react15.useState)(false);
15303
+ const [editing, setEditing] = (0, import_react16.useState)(false);
15304
+ const [name, setName] = (0, import_react16.useState)(testerInfo?.name || "");
15305
+ const [additionalEmails, setAdditionalEmails] = (0, import_react16.useState)(testerInfo?.additionalEmails || []);
15306
+ const [newEmailInput, setNewEmailInput] = (0, import_react16.useState)("");
15307
+ const [platforms, setPlatforms] = (0, import_react16.useState)(testerInfo?.platforms || []);
15308
+ const [saving, setSaving] = (0, import_react16.useState)(false);
15309
+ const [saved, setSaved] = (0, import_react16.useState)(false);
15310
+ const [showDetails, setShowDetails] = (0, import_react16.useState)(false);
15135
15311
  const completedCount = assignments.filter((a) => a.status === "passed" || a.status === "failed").length;
15136
- (0, import_react15.useEffect)(() => {
15312
+ (0, import_react16.useEffect)(() => {
15137
15313
  if (testerInfo) {
15138
15314
  setName(testerInfo.name);
15139
15315
  setAdditionalEmails(testerInfo.additionalEmails || []);
@@ -15167,19 +15343,19 @@ function ProfileScreen({ nav }) {
15167
15343
  }
15168
15344
  };
15169
15345
  if (saved) {
15170
- return /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: shared.emptyState }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: shared.emptyEmoji }, "\u2705"), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: shared.emptyTitle }, "Profile saved!"));
15346
+ return /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: shared.emptyState }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: shared.emptyEmoji }, "\u2705"), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: shared.emptyTitle }, "Profile saved!"));
15171
15347
  }
15172
15348
  if (!testerInfo) {
15173
- return /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: shared.emptyState }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: shared.emptyEmoji }, "\u{1F464}"), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: shared.emptyTitle }, "No profile found"));
15349
+ return /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: shared.emptyState }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: shared.emptyEmoji }, "\u{1F464}"), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: shared.emptyTitle }, "No profile found"));
15174
15350
  }
15175
15351
  if (editing) {
15176
- return /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, null, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.editHeader }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.editTitle }, "Edit Profile"), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.TouchableOpacity, { onPress: () => {
15352
+ return /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, null, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.editHeader }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.editTitle }, "Edit Profile"), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.TouchableOpacity, { onPress: () => {
15177
15353
  setEditing(false);
15178
15354
  setNewEmailInput("");
15179
- } }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.cancelText }, "Cancel"))), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.field }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: shared.label }, "Name"), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.TextInput, { style: styles12.input, value: name, onChangeText: setName, placeholder: "Your name", placeholderTextColor: colors.textMuted })), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.field }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: shared.label }, "Primary Email"), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.emailFixed }, testerInfo.email)), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.field }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: shared.label }, "Additional Emails"), additionalEmails.map((email) => /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { key: email, style: styles12.emailRow }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.emailText }, email), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.TouchableOpacity, { onPress: () => setAdditionalEmails(additionalEmails.filter((e) => e !== email)) }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.removeEmail }, "\u2715")))), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.addEmailRow }, /* @__PURE__ */ import_react15.default.createElement(
15180
- import_react_native14.TextInput,
15355
+ } }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.cancelText }, "Cancel"))), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.field }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: shared.label }, "Name"), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.TextInput, { style: styles13.input, value: name, onChangeText: setName, placeholder: "Your name", placeholderTextColor: colors.textMuted })), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.field }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: shared.label }, "Primary Email"), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.emailFixed }, testerInfo.email)), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.field }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: shared.label }, "Additional Emails"), additionalEmails.map((email) => /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { key: email, style: styles13.emailRow }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.emailText }, email), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.TouchableOpacity, { onPress: () => setAdditionalEmails(additionalEmails.filter((e) => e !== email)) }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.removeEmail }, "\u2715")))), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.addEmailRow }, /* @__PURE__ */ import_react16.default.createElement(
15356
+ import_react_native15.TextInput,
15181
15357
  {
15182
- style: [styles12.input, { flex: 1, marginRight: 8 }],
15358
+ style: [styles13.input, { flex: 1, marginRight: 8 }],
15183
15359
  value: newEmailInput,
15184
15360
  onChangeText: setNewEmailInput,
15185
15361
  placeholder: "Add email",
@@ -15187,26 +15363,26 @@ function ProfileScreen({ nav }) {
15187
15363
  keyboardType: "email-address",
15188
15364
  autoCapitalize: "none"
15189
15365
  }
15190
- ), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.TouchableOpacity, { style: styles12.addButton, onPress: handleAddEmail }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.addButtonText }, "Add")))), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.field }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: shared.label }, "Testing Platforms"), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.platformRow }, [{ key: "ios", label: "\u{1F4F1} iOS" }, { key: "android", label: "\u{1F916} Android" }, { key: "web", label: "\u{1F310} Web" }].map(({ key, label }) => /* @__PURE__ */ import_react15.default.createElement(
15191
- import_react_native14.TouchableOpacity,
15366
+ ), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.TouchableOpacity, { style: styles13.addButton, onPress: handleAddEmail }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.addButtonText }, "Add")))), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.field }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: shared.label }, "Testing Platforms"), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.platformRow }, [{ key: "ios", label: "\u{1F4F1} iOS" }, { key: "android", label: "\u{1F916} Android" }, { key: "web", label: "\u{1F310} Web" }].map(({ key, label }) => /* @__PURE__ */ import_react16.default.createElement(
15367
+ import_react_native15.TouchableOpacity,
15192
15368
  {
15193
15369
  key,
15194
- style: [styles12.platformBtn, platforms.includes(key) && styles12.platformBtnActive],
15370
+ style: [styles13.platformBtn, platforms.includes(key) && styles13.platformBtnActive],
15195
15371
  onPress: () => setPlatforms((prev) => prev.includes(key) ? prev.filter((p) => p !== key) : [...prev, key])
15196
15372
  },
15197
- /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: [styles12.platformText, platforms.includes(key) && styles12.platformTextActive] }, label)
15198
- )))), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.TouchableOpacity, { style: [shared.primaryButton, { marginTop: 20 }], onPress: handleSave, disabled: saving }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: shared.primaryButtonText }, saving ? "Saving..." : "Save Profile")));
15373
+ /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: [styles13.platformText, platforms.includes(key) && styles13.platformTextActive] }, label)
15374
+ )))), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.TouchableOpacity, { style: [shared.primaryButton, { marginTop: 20 }], onPress: handleSave, disabled: saving }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: shared.primaryButtonText }, saving ? "Saving..." : "Save Profile")));
15199
15375
  }
15200
- return /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, null, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.profileCard }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.avatar }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.avatarText }, testerInfo.name.charAt(0).toUpperCase())), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.profileName }, testerInfo.name), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.profileEmail }, testerInfo.email)), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.statsRow }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.statItem }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.statNumber }, completedCount), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.statLabel }, "Completed")), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.statDivider }), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.statItem }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.statNumber }, assignments.length), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.statLabel }, "Total Assigned"))), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.TouchableOpacity, { onPress: () => setShowDetails(!showDetails), style: styles12.detailsToggle }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.detailsToggleText }, showDetails ? "\u25BC" : "\u25B6", " Details")), showDetails && /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.detailsSection }, additionalEmails.length > 0 && /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.detailBlock }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.detailLabel }, "Additional Emails"), additionalEmails.map((e) => /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { key: e, style: styles12.detailValue }, e))), platforms.length > 0 && /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.detailBlock }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.detailLabel }, "Platforms"), /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { style: styles12.platformTags }, platforms.map((p) => /* @__PURE__ */ import_react15.default.createElement(import_react_native14.View, { key: p, style: styles12.platformTag }, /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: styles12.platformTagText }, p === "ios" ? "\u{1F4F1} iOS" : p === "android" ? "\u{1F916} Android" : "\u{1F310} Web")))))), /* @__PURE__ */ import_react15.default.createElement(
15201
- import_react_native14.TouchableOpacity,
15376
+ return /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, null, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.profileCard }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.avatar }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.avatarText }, testerInfo.name.charAt(0).toUpperCase())), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.profileName }, testerInfo.name), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.profileEmail }, testerInfo.email)), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.statsRow }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.statItem }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.statNumber }, completedCount), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.statLabel }, "Completed")), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.statDivider }), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.statItem }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.statNumber }, assignments.length), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.statLabel }, "Total Assigned"))), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.TouchableOpacity, { onPress: () => setShowDetails(!showDetails), style: styles13.detailsToggle }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.detailsToggleText }, showDetails ? "\u25BC" : "\u25B6", " Details")), showDetails && /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.detailsSection }, additionalEmails.length > 0 && /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.detailBlock }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.detailLabel }, "Additional Emails"), additionalEmails.map((e) => /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { key: e, style: styles13.detailValue }, e))), platforms.length > 0 && /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.detailBlock }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.detailLabel }, "Platforms"), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.platformTags }, platforms.map((p) => /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { key: p, style: styles13.platformTag }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.platformTagText }, p === "ios" ? "\u{1F4F1} iOS" : p === "android" ? "\u{1F916} Android" : "\u{1F310} Web")))))), /* @__PURE__ */ import_react16.default.createElement(
15377
+ import_react_native15.TouchableOpacity,
15202
15378
  {
15203
15379
  style: [shared.primaryButton, { marginTop: 20 }],
15204
15380
  onPress: () => setEditing(true)
15205
15381
  },
15206
- /* @__PURE__ */ import_react15.default.createElement(import_react_native14.Text, { style: shared.primaryButtonText }, "Edit Profile")
15382
+ /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: shared.primaryButtonText }, "Edit Profile")
15207
15383
  ));
15208
15384
  }
15209
- var styles12 = import_react_native14.StyleSheet.create({
15385
+ var styles13 = import_react_native15.StyleSheet.create({
15210
15386
  profileCard: { alignItems: "center", backgroundColor: colors.card, borderRadius: 16, padding: 24, marginBottom: 16 },
15211
15387
  avatar: { width: 64, height: 64, borderRadius: 32, backgroundColor: colors.blue, justifyContent: "center", alignItems: "center", marginBottom: 12 },
15212
15388
  avatarText: { fontSize: 28, fontWeight: "700", color: "#fff" },
@@ -15247,8 +15423,8 @@ var styles12 = import_react_native14.StyleSheet.create({
15247
15423
  });
15248
15424
 
15249
15425
  // src/widget/screens/IssueListScreen.tsx
15250
- var import_react16 = __toESM(require("react"));
15251
- var import_react_native15 = require("react-native");
15426
+ var import_react17 = __toESM(require("react"));
15427
+ var import_react_native16 = require("react-native");
15252
15428
  var CATEGORY_CONFIG = {
15253
15429
  open: { label: "Open Issues", accent: "#f97316", emptyIcon: "\u2705", emptyText: "No open issues" },
15254
15430
  done: { label: "Done", accent: "#22c55e", emptyIcon: "\u{1F389}", emptyText: "No completed issues yet" },
@@ -15262,10 +15438,10 @@ var SEVERITY_COLORS = {
15262
15438
  };
15263
15439
  function IssueListScreen({ nav, category }) {
15264
15440
  const { client } = useBugBear();
15265
- const [issues, setIssues] = (0, import_react16.useState)([]);
15266
- const [loading, setLoading] = (0, import_react16.useState)(true);
15441
+ const [issues, setIssues] = (0, import_react17.useState)([]);
15442
+ const [loading, setLoading] = (0, import_react17.useState)(true);
15267
15443
  const config = CATEGORY_CONFIG[category];
15268
- (0, import_react16.useEffect)(() => {
15444
+ (0, import_react17.useEffect)(() => {
15269
15445
  let cancelled = false;
15270
15446
  setLoading(true);
15271
15447
  (async () => {
@@ -15281,26 +15457,26 @@ function IssueListScreen({ nav, category }) {
15281
15457
  };
15282
15458
  }, [client, category]);
15283
15459
  if (loading) {
15284
- return /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.emptyContainer }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.ActivityIndicator, { size: "small", color: colors.textMuted }), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.emptyText }, "Loading..."));
15460
+ return /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.emptyContainer }, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.ActivityIndicator, { size: "small", color: colors.textMuted }), /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.emptyText }, "Loading..."));
15285
15461
  }
15286
15462
  if (issues.length === 0) {
15287
- return /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.emptyContainer }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.emptyIcon }, config.emptyIcon), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.emptyText }, config.emptyText));
15463
+ return /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.emptyContainer }, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.emptyIcon }, config.emptyIcon), /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.emptyText }, config.emptyText));
15288
15464
  }
15289
- return /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, null, issues.map((issue) => /* @__PURE__ */ import_react16.default.createElement(
15290
- import_react_native15.TouchableOpacity,
15465
+ return /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, null, issues.map((issue) => /* @__PURE__ */ import_react17.default.createElement(
15466
+ import_react_native16.TouchableOpacity,
15291
15467
  {
15292
15468
  key: issue.id,
15293
- style: styles13.issueCard,
15469
+ style: styles14.issueCard,
15294
15470
  onPress: () => nav.push({ name: "ISSUE_DETAIL", issue }),
15295
15471
  activeOpacity: 0.7
15296
15472
  },
15297
- /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.topRow }, issue.severity && /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: [styles13.severityDot, { backgroundColor: SEVERITY_COLORS[issue.severity] || colors.textDim }] }), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.issueTitle, numberOfLines: 1 }, issue.title)),
15298
- /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.bottomRow }, issue.route && /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.routeText, numberOfLines: 1 }, issue.route), /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.timeText }, formatRelativeTime(issue.updatedAt))),
15299
- category === "done" && issue.verifiedByName && /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.verifiedBadge }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.verifiedBadgeText }, "\u2714", " Verified by ", issue.verifiedByName)),
15300
- category === "reopened" && issue.originalBugTitle && /* @__PURE__ */ import_react16.default.createElement(import_react_native15.View, { style: styles13.reopenedBadge }, /* @__PURE__ */ import_react16.default.createElement(import_react_native15.Text, { style: styles13.reopenedBadgeText, numberOfLines: 1 }, "\u{1F504}", " Retest of: ", issue.originalBugTitle))
15473
+ /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.topRow }, issue.severity && /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: [styles14.severityDot, { backgroundColor: SEVERITY_COLORS[issue.severity] || colors.textDim }] }), /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.issueTitle, numberOfLines: 1 }, issue.title)),
15474
+ /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.bottomRow }, issue.route && /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.routeText, numberOfLines: 1 }, issue.route), /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.timeText }, formatRelativeTime(issue.updatedAt))),
15475
+ category === "done" && issue.verifiedByName && /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.verifiedBadge }, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.verifiedBadgeText }, "\u2714", " Verified by ", issue.verifiedByName)),
15476
+ category === "reopened" && issue.originalBugTitle && /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.reopenedBadge }, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.reopenedBadgeText, numberOfLines: 1 }, "\u{1F504}", " Retest of: ", issue.originalBugTitle))
15301
15477
  )));
15302
15478
  }
15303
- var styles13 = import_react_native15.StyleSheet.create({
15479
+ var styles14 = import_react_native16.StyleSheet.create({
15304
15480
  emptyContainer: {
15305
15481
  alignItems: "center",
15306
15482
  paddingVertical: 40
@@ -15391,8 +15567,8 @@ var styles13 = import_react_native15.StyleSheet.create({
15391
15567
  });
15392
15568
 
15393
15569
  // src/widget/screens/IssueDetailScreen.tsx
15394
- var import_react17 = __toESM(require("react"));
15395
- var import_react_native16 = require("react-native");
15570
+ var import_react18 = __toESM(require("react"));
15571
+ var import_react_native17 = require("react-native");
15396
15572
  var STATUS_LABELS = {
15397
15573
  new: { label: "New", bg: "#1e3a5f", color: "#60a5fa" },
15398
15574
  triaging: { label: "Triaging", bg: "#1e3a5f", color: "#60a5fa" },
@@ -15416,9 +15592,9 @@ var SEVERITY_CONFIG = {
15416
15592
  function IssueDetailScreen({ nav, issue }) {
15417
15593
  const statusConfig = STATUS_LABELS[issue.status] || { label: issue.status, bg: "#27272a", color: "#a1a1aa" };
15418
15594
  const severityConfig = issue.severity ? SEVERITY_CONFIG[issue.severity] : null;
15419
- return /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, null, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.badgeRow }, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: [styles14.badge, { backgroundColor: statusConfig.bg }] }, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: [styles14.badgeText, { color: statusConfig.color }] }, statusConfig.label)), severityConfig && /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: [styles14.badge, { backgroundColor: severityConfig.bg }] }, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: [styles14.badgeText, { color: severityConfig.color }] }, severityConfig.label))), /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.title }, issue.title), issue.route && /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.route }, issue.route), issue.description && /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.descriptionCard }, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.descriptionText }, issue.description)), issue.verifiedByName && /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.verifiedCard }, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.verifiedHeader }, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.verifiedIcon }, "\u2705"), /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.verifiedTitle }, "Retesting Proof")), /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.verifiedBody }, "Verified by ", issue.verifiedByName, issue.verifiedAt && ` on ${new Date(issue.verifiedAt).toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" })}`)), issue.originalBugTitle && /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.originalBugCard }, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.originalBugHeader }, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.originalBugIcon }, "\u{1F504}"), /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.originalBugTitle }, "Original Bug")), /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.originalBugBody }, "Retest of: ", issue.originalBugTitle)), issue.screenshotUrls && issue.screenshotUrls.length > 0 && /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.screenshotSection }, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.screenshotLabel }, "Screenshots (", issue.screenshotUrls.length, ")"), /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.screenshotRow }, issue.screenshotUrls.map((url, i) => /* @__PURE__ */ import_react17.default.createElement(import_react_native16.TouchableOpacity, { key: i, onPress: () => import_react_native16.Linking.openURL(url), activeOpacity: 0.7 }, /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Image, { source: { uri: url }, style: styles14.screenshotThumb }))))), /* @__PURE__ */ import_react17.default.createElement(import_react_native16.View, { style: styles14.metaSection }, issue.reporterName && /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.metaText }, "Reported by ", issue.reporterName), /* @__PURE__ */ import_react17.default.createElement(import_react_native16.Text, { style: styles14.metaTextSmall }, "Created ", formatRelativeTime(issue.createdAt), " ", "\xB7", " Updated ", formatRelativeTime(issue.updatedAt))));
15595
+ return /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, null, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.badgeRow }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: [styles15.badge, { backgroundColor: statusConfig.bg }] }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: [styles15.badgeText, { color: statusConfig.color }] }, statusConfig.label)), severityConfig && /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: [styles15.badge, { backgroundColor: severityConfig.bg }] }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: [styles15.badgeText, { color: severityConfig.color }] }, severityConfig.label))), /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.title }, issue.title), issue.route && /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.route }, issue.route), issue.description && /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.descriptionCard }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.descriptionText }, issue.description)), issue.verifiedByName && /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.verifiedCard }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.verifiedHeader }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.verifiedIcon }, "\u2705"), /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.verifiedTitle }, "Retesting Proof")), /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.verifiedBody }, "Verified by ", issue.verifiedByName, issue.verifiedAt && ` on ${new Date(issue.verifiedAt).toLocaleDateString(void 0, { month: "short", day: "numeric", year: "numeric" })}`)), issue.originalBugTitle && /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.originalBugCard }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.originalBugHeader }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.originalBugIcon }, "\u{1F504}"), /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.originalBugTitle }, "Original Bug")), /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.originalBugBody }, "Retest of: ", issue.originalBugTitle)), issue.screenshotUrls && issue.screenshotUrls.length > 0 && /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.screenshotSection }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.screenshotLabel }, "Screenshots (", issue.screenshotUrls.length, ")"), /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.screenshotRow }, issue.screenshotUrls.map((url, i) => /* @__PURE__ */ import_react18.default.createElement(import_react_native17.TouchableOpacity, { key: i, onPress: () => import_react_native17.Linking.openURL(url), activeOpacity: 0.7 }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Image, { source: { uri: url }, style: styles15.screenshotThumb }))))), /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.metaSection }, issue.reporterName && /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.metaText }, "Reported by ", issue.reporterName), /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.metaTextSmall }, "Created ", formatRelativeTime(issue.createdAt), " ", "\xB7", " Updated ", formatRelativeTime(issue.updatedAt))));
15420
15596
  }
15421
- var styles14 = import_react_native16.StyleSheet.create({
15597
+ var styles15 = import_react_native17.StyleSheet.create({
15422
15598
  badgeRow: {
15423
15599
  flexDirection: "row",
15424
15600
  gap: 8,
@@ -15549,8 +15725,8 @@ var styles14 = import_react_native16.StyleSheet.create({
15549
15725
  });
15550
15726
 
15551
15727
  // src/BugBearButton.tsx
15552
- var screenWidth = import_react_native17.Dimensions.get("window").width;
15553
- var screenHeight = import_react_native17.Dimensions.get("window").height;
15728
+ var screenWidth = import_react_native18.Dimensions.get("window").width;
15729
+ var screenHeight = import_react_native18.Dimensions.get("window").height;
15554
15730
  function BugBearButton({
15555
15731
  position = "bottom-right",
15556
15732
  buttonStyle,
@@ -15562,7 +15738,7 @@ function BugBearButton({
15562
15738
  }) {
15563
15739
  const { shouldShowWidget, testerInfo, isLoading, unreadCount, assignments } = useBugBear();
15564
15740
  const { currentScreen, canGoBack, push, pop, replace, reset } = useNavigation();
15565
- const [modalVisible, setModalVisible] = (0, import_react18.useState)(false);
15741
+ const [modalVisible, setModalVisible] = (0, import_react19.useState)(false);
15566
15742
  const getInitialPosition = () => {
15567
15743
  const buttonSize = 56;
15568
15744
  const margin = 16;
@@ -15574,10 +15750,10 @@ function BugBearButton({
15574
15750
  return { x, y };
15575
15751
  };
15576
15752
  const initialPos = getInitialPosition();
15577
- const pan = (0, import_react18.useRef)(new import_react_native17.Animated.ValueXY(initialPos)).current;
15578
- const isDragging = (0, import_react18.useRef)(false);
15579
- const panResponder = (0, import_react18.useRef)(
15580
- import_react_native17.PanResponder.create({
15753
+ const pan = (0, import_react19.useRef)(new import_react_native18.Animated.ValueXY(initialPos)).current;
15754
+ const isDragging = (0, import_react19.useRef)(false);
15755
+ const panResponder = (0, import_react19.useRef)(
15756
+ import_react_native18.PanResponder.create({
15581
15757
  onStartShouldSetPanResponder: () => draggable,
15582
15758
  onMoveShouldSetPanResponder: (_, gs) => draggable && (Math.abs(gs.dx) > 5 || Math.abs(gs.dy) > 5),
15583
15759
  onPanResponderGrant: () => {
@@ -15592,7 +15768,7 @@ function BugBearButton({
15592
15768
  if (Math.abs(gs.dx) > 5 || Math.abs(gs.dy) > 5) {
15593
15769
  isDragging.current = true;
15594
15770
  }
15595
- import_react_native17.Animated.event(
15771
+ import_react_native18.Animated.event(
15596
15772
  [null, { dx: pan.x, dy: pan.y }],
15597
15773
  { useNativeDriver: false }
15598
15774
  )(_, gs);
@@ -15605,7 +15781,7 @@ function BugBearButton({
15605
15781
  const margin = 16;
15606
15782
  const snapX = currentX < screenWidth / 2 ? margin : screenWidth - buttonSize - margin;
15607
15783
  const snapY = Math.max(minY, Math.min(currentY, screenHeight - maxYOffset));
15608
- import_react_native17.Animated.spring(pan, {
15784
+ import_react_native18.Animated.spring(pan, {
15609
15785
  toValue: { x: snapX, y: snapY },
15610
15786
  useNativeDriver: false,
15611
15787
  friction: 7,
@@ -15652,24 +15828,24 @@ function BugBearButton({
15652
15828
  }
15653
15829
  };
15654
15830
  const handleClose = () => {
15655
- import_react_native17.Keyboard.dismiss();
15831
+ import_react_native18.Keyboard.dismiss();
15656
15832
  setModalVisible(false);
15657
15833
  };
15658
15834
  const nav = {
15659
15835
  push: (screen) => {
15660
- import_react_native17.Keyboard.dismiss();
15836
+ import_react_native18.Keyboard.dismiss();
15661
15837
  push(screen);
15662
15838
  },
15663
15839
  pop: () => {
15664
- import_react_native17.Keyboard.dismiss();
15840
+ import_react_native18.Keyboard.dismiss();
15665
15841
  pop();
15666
15842
  },
15667
15843
  replace: (screen) => {
15668
- import_react_native17.Keyboard.dismiss();
15844
+ import_react_native18.Keyboard.dismiss();
15669
15845
  replace(screen);
15670
15846
  },
15671
15847
  reset: () => {
15672
- import_react_native17.Keyboard.dismiss();
15848
+ import_react_native18.Keyboard.dismiss();
15673
15849
  reset();
15674
15850
  },
15675
15851
  canGoBack,
@@ -15678,77 +15854,77 @@ function BugBearButton({
15678
15854
  const renderScreen = () => {
15679
15855
  switch (currentScreen.name) {
15680
15856
  case "HOME":
15681
- return /* @__PURE__ */ import_react18.default.createElement(HomeScreen, { nav });
15857
+ return /* @__PURE__ */ import_react19.default.createElement(HomeScreen, { nav });
15682
15858
  case "TEST_DETAIL":
15683
- return /* @__PURE__ */ import_react18.default.createElement(TestDetailScreen, { testId: currentScreen.testId, nav });
15859
+ return /* @__PURE__ */ import_react19.default.createElement(TestDetailScreen, { testId: currentScreen.testId, nav });
15684
15860
  case "TEST_LIST":
15685
- return /* @__PURE__ */ import_react18.default.createElement(TestListScreen, { nav });
15861
+ return /* @__PURE__ */ import_react19.default.createElement(TestListScreen, { nav });
15686
15862
  case "TEST_FEEDBACK":
15687
- return /* @__PURE__ */ import_react18.default.createElement(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
15863
+ return /* @__PURE__ */ import_react19.default.createElement(TestFeedbackScreen, { status: currentScreen.status, assignmentId: currentScreen.assignmentId, nav });
15688
15864
  case "REPORT":
15689
- return /* @__PURE__ */ import_react18.default.createElement(ReportScreen, { nav, prefill: currentScreen.prefill });
15865
+ return /* @__PURE__ */ import_react19.default.createElement(ReportScreen, { nav, prefill: currentScreen.prefill });
15690
15866
  case "REPORT_SUCCESS":
15691
- return /* @__PURE__ */ import_react18.default.createElement(ReportSuccessScreen, { nav });
15867
+ return /* @__PURE__ */ import_react19.default.createElement(ReportSuccessScreen, { nav });
15692
15868
  case "MESSAGE_LIST":
15693
- return /* @__PURE__ */ import_react18.default.createElement(MessageListScreen, { nav });
15869
+ return /* @__PURE__ */ import_react19.default.createElement(MessageListScreen, { nav });
15694
15870
  case "THREAD_DETAIL":
15695
- return /* @__PURE__ */ import_react18.default.createElement(ThreadDetailScreen, { thread: currentScreen.thread, nav });
15871
+ return /* @__PURE__ */ import_react19.default.createElement(ThreadDetailScreen, { thread: currentScreen.thread, nav });
15696
15872
  case "COMPOSE_MESSAGE":
15697
- return /* @__PURE__ */ import_react18.default.createElement(ComposeMessageScreen, { nav });
15873
+ return /* @__PURE__ */ import_react19.default.createElement(ComposeMessageScreen, { nav });
15698
15874
  case "ISSUE_LIST":
15699
- return /* @__PURE__ */ import_react18.default.createElement(IssueListScreen, { nav, category: currentScreen.category });
15875
+ return /* @__PURE__ */ import_react19.default.createElement(IssueListScreen, { nav, category: currentScreen.category });
15700
15876
  case "ISSUE_DETAIL":
15701
- return /* @__PURE__ */ import_react18.default.createElement(IssueDetailScreen, { nav, issue: currentScreen.issue });
15877
+ return /* @__PURE__ */ import_react19.default.createElement(IssueDetailScreen, { nav, issue: currentScreen.issue });
15702
15878
  case "PROFILE":
15703
- return /* @__PURE__ */ import_react18.default.createElement(ProfileScreen, { nav });
15879
+ return /* @__PURE__ */ import_react19.default.createElement(ProfileScreen, { nav });
15704
15880
  default:
15705
- return /* @__PURE__ */ import_react18.default.createElement(HomeScreen, { nav });
15881
+ return /* @__PURE__ */ import_react19.default.createElement(HomeScreen, { nav });
15706
15882
  }
15707
15883
  };
15708
- return /* @__PURE__ */ import_react18.default.createElement(import_react18.default.Fragment, null, /* @__PURE__ */ import_react18.default.createElement(
15709
- import_react_native17.Animated.View,
15884
+ return /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement(
15885
+ import_react_native18.Animated.View,
15710
15886
  {
15711
- style: [styles15.fabContainer, { transform: pan.getTranslateTransform() }, buttonStyle],
15887
+ style: [styles16.fabContainer, { transform: pan.getTranslateTransform() }, buttonStyle],
15712
15888
  ...panResponder.panHandlers
15713
15889
  },
15714
- /* @__PURE__ */ import_react18.default.createElement(
15715
- import_react_native17.TouchableOpacity,
15890
+ /* @__PURE__ */ import_react19.default.createElement(
15891
+ import_react_native18.TouchableOpacity,
15716
15892
  {
15717
- style: styles15.fab,
15893
+ style: styles16.fab,
15718
15894
  onPress: () => setModalVisible(true),
15719
15895
  activeOpacity: draggable ? 1 : 0.7
15720
15896
  },
15721
- /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Image, { source: { uri: BUGBEAR_LOGO_BASE64 }, style: styles15.fabIcon }),
15722
- badgeCount > 0 && /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.badge }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.badgeText }, badgeCount > 9 ? "9+" : badgeCount))
15897
+ /* @__PURE__ */ import_react19.default.createElement(import_react_native18.Image, { source: { uri: BUGBEAR_LOGO_BASE64 }, style: styles16.fabIcon }),
15898
+ badgeCount > 0 && /* @__PURE__ */ import_react19.default.createElement(import_react_native18.View, { style: styles16.badge }, /* @__PURE__ */ import_react19.default.createElement(import_react_native18.Text, { style: styles16.badgeText }, badgeCount > 9 ? "9+" : badgeCount))
15723
15899
  )
15724
- ), /* @__PURE__ */ import_react18.default.createElement(
15725
- import_react_native17.Modal,
15900
+ ), /* @__PURE__ */ import_react19.default.createElement(
15901
+ import_react_native18.Modal,
15726
15902
  {
15727
15903
  visible: modalVisible,
15728
15904
  animationType: "slide",
15729
15905
  transparent: true,
15730
15906
  onRequestClose: handleClose
15731
15907
  },
15732
- /* @__PURE__ */ import_react18.default.createElement(
15733
- import_react_native17.KeyboardAvoidingView,
15908
+ /* @__PURE__ */ import_react19.default.createElement(
15909
+ import_react_native18.KeyboardAvoidingView,
15734
15910
  {
15735
- behavior: import_react_native17.Platform.OS === "ios" ? "padding" : "height",
15736
- style: styles15.modalOverlay
15911
+ behavior: import_react_native18.Platform.OS === "ios" ? "padding" : "height",
15912
+ style: styles16.modalOverlay
15737
15913
  },
15738
- /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.modalContainer }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.header }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.headerLeft }, canGoBack ? /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.headerNavRow }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.TouchableOpacity, { onPress: () => nav.pop(), style: styles15.backButton }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.backText }, "\u2190 Back")), /* @__PURE__ */ import_react18.default.createElement(import_react_native17.TouchableOpacity, { onPress: () => nav.reset(), style: styles15.homeButton }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.homeText }, "\u{1F3E0}"))) : /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.headerTitleRow }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.headerTitle }, "BugBear"), testerInfo && /* @__PURE__ */ import_react18.default.createElement(import_react_native17.TouchableOpacity, { onPress: () => push({ name: "PROFILE" }) }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.headerName }, testerInfo.name, " \u270E")))), getHeaderTitle() ? /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.headerScreenTitle, numberOfLines: 1 }, getHeaderTitle()) : null, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.TouchableOpacity, { onPress: handleClose, style: styles15.closeButton }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.closeText }, "\u2715"))), /* @__PURE__ */ import_react18.default.createElement(
15739
- import_react_native17.ScrollView,
15914
+ /* @__PURE__ */ import_react19.default.createElement(import_react_native18.View, { style: styles16.modalContainer }, /* @__PURE__ */ import_react19.default.createElement(import_react_native18.View, { style: styles16.header }, /* @__PURE__ */ import_react19.default.createElement(import_react_native18.View, { style: styles16.headerLeft }, canGoBack ? /* @__PURE__ */ import_react19.default.createElement(import_react_native18.View, { style: styles16.headerNavRow }, /* @__PURE__ */ import_react19.default.createElement(import_react_native18.TouchableOpacity, { onPress: () => nav.pop(), style: styles16.backButton }, /* @__PURE__ */ import_react19.default.createElement(import_react_native18.Text, { style: styles16.backText }, "\u2190 Back")), /* @__PURE__ */ import_react19.default.createElement(import_react_native18.TouchableOpacity, { onPress: () => nav.reset(), style: styles16.homeButton }, /* @__PURE__ */ import_react19.default.createElement(import_react_native18.Text, { style: styles16.homeText }, "\u{1F3E0}"))) : /* @__PURE__ */ import_react19.default.createElement(import_react_native18.View, { style: styles16.headerTitleRow }, /* @__PURE__ */ import_react19.default.createElement(import_react_native18.Text, { style: styles16.headerTitle }, "BugBear"), testerInfo && /* @__PURE__ */ import_react19.default.createElement(import_react_native18.TouchableOpacity, { onPress: () => push({ name: "PROFILE" }) }, /* @__PURE__ */ import_react19.default.createElement(import_react_native18.Text, { style: styles16.headerName }, testerInfo.name, " \u270E")))), getHeaderTitle() ? /* @__PURE__ */ import_react19.default.createElement(import_react_native18.Text, { style: styles16.headerScreenTitle, numberOfLines: 1 }, getHeaderTitle()) : null, /* @__PURE__ */ import_react19.default.createElement(import_react_native18.TouchableOpacity, { onPress: handleClose, style: styles16.closeButton }, /* @__PURE__ */ import_react19.default.createElement(import_react_native18.Text, { style: styles16.closeText }, "\u2715"))), /* @__PURE__ */ import_react19.default.createElement(
15915
+ import_react_native18.ScrollView,
15740
15916
  {
15741
- style: styles15.content,
15742
- contentContainerStyle: styles15.contentContainer,
15917
+ style: styles16.content,
15918
+ contentContainerStyle: styles16.contentContainer,
15743
15919
  keyboardShouldPersistTaps: "handled",
15744
15920
  showsVerticalScrollIndicator: false
15745
15921
  },
15746
- isLoading ? /* @__PURE__ */ import_react18.default.createElement(import_react_native17.View, { style: styles15.loadingContainer }, /* @__PURE__ */ import_react18.default.createElement(import_react_native17.ActivityIndicator, { size: "large", color: colors.blue }), /* @__PURE__ */ import_react18.default.createElement(import_react_native17.Text, { style: styles15.loadingText }, "Loading...")) : renderScreen()
15922
+ isLoading ? /* @__PURE__ */ import_react19.default.createElement(import_react_native18.View, { style: styles16.loadingContainer }, /* @__PURE__ */ import_react19.default.createElement(import_react_native18.ActivityIndicator, { size: "large", color: colors.blue }), /* @__PURE__ */ import_react19.default.createElement(import_react_native18.Text, { style: styles16.loadingText }, "Loading...")) : renderScreen()
15747
15923
  ))
15748
15924
  )
15749
15925
  ));
15750
15926
  }
15751
- var styles15 = import_react_native17.StyleSheet.create({
15927
+ var styles16 = import_react_native18.StyleSheet.create({
15752
15928
  // FAB
15753
15929
  fabContainer: {
15754
15930
  position: "absolute",
@@ -15890,9 +16066,9 @@ var styles15 = import_react_native17.StyleSheet.create({
15890
16066
  });
15891
16067
 
15892
16068
  // src/BugBearErrorBoundary.tsx
15893
- var import_react19 = __toESM(require("react"));
15894
- var import_react_native18 = require("react-native");
15895
- var BugBearErrorBoundary = class extends import_react19.Component {
16069
+ var import_react20 = __toESM(require("react"));
16070
+ var import_react_native19 = require("react-native");
16071
+ var BugBearErrorBoundary = class extends import_react20.Component {
15896
16072
  constructor(props) {
15897
16073
  super(props);
15898
16074
  this.reset = () => {
@@ -15936,7 +16112,7 @@ var BugBearErrorBoundary = class extends import_react19.Component {
15936
16112
  if (fallback) {
15937
16113
  return fallback;
15938
16114
  }
15939
- return /* @__PURE__ */ import_react19.default.createElement(import_react_native18.View, { style: styles16.container }, /* @__PURE__ */ import_react19.default.createElement(import_react_native18.Text, { style: styles16.title }, "Something went wrong"), /* @__PURE__ */ import_react19.default.createElement(import_react_native18.Text, { style: styles16.message }, error.message), /* @__PURE__ */ import_react19.default.createElement(import_react_native18.TouchableOpacity, { style: styles16.button, onPress: this.reset }, /* @__PURE__ */ import_react19.default.createElement(import_react_native18.Text, { style: styles16.buttonText }, "Try Again")), /* @__PURE__ */ import_react19.default.createElement(import_react_native18.Text, { style: styles16.caption }, "The error has been captured by BugBear"));
16115
+ return /* @__PURE__ */ import_react20.default.createElement(import_react_native19.View, { style: styles17.container }, /* @__PURE__ */ import_react20.default.createElement(import_react_native19.Text, { style: styles17.title }, "Something went wrong"), /* @__PURE__ */ import_react20.default.createElement(import_react_native19.Text, { style: styles17.message }, error.message), /* @__PURE__ */ import_react20.default.createElement(import_react_native19.TouchableOpacity, { style: styles17.button, onPress: this.reset }, /* @__PURE__ */ import_react20.default.createElement(import_react_native19.Text, { style: styles17.buttonText }, "Try Again")), /* @__PURE__ */ import_react20.default.createElement(import_react_native19.Text, { style: styles17.caption }, "The error has been captured by BugBear"));
15940
16116
  }
15941
16117
  return children;
15942
16118
  }
@@ -15947,7 +16123,7 @@ function useErrorContext() {
15947
16123
  getEnhancedContext: () => contextCapture.getEnhancedContext()
15948
16124
  };
15949
16125
  }
15950
- var styles16 = import_react_native18.StyleSheet.create({
16126
+ var styles17 = import_react_native19.StyleSheet.create({
15951
16127
  container: {
15952
16128
  padding: 20,
15953
16129
  margin: 20,