@bbearai/react-native 0.1.7 → 0.1.8
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 +127 -71
- package/dist/index.mjs +127 -71
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -12345,6 +12345,7 @@ function BugBearButton({
|
|
|
12345
12345
|
const [modalVisible, setModalVisible] = (0, import_react2.useState)(false);
|
|
12346
12346
|
const [activeTab, setActiveTab] = (0, import_react2.useState)("tests");
|
|
12347
12347
|
const [showSteps, setShowSteps] = (0, import_react2.useState)(false);
|
|
12348
|
+
const [showProfileOverlay, setShowProfileOverlay] = (0, import_react2.useState)(false);
|
|
12348
12349
|
const [messageView, setMessageView] = (0, import_react2.useState)("list");
|
|
12349
12350
|
const [selectedThread, setSelectedThread] = (0, import_react2.useState)(null);
|
|
12350
12351
|
const [threadMessages, setThreadMessages] = (0, import_react2.useState)([]);
|
|
@@ -12545,6 +12546,15 @@ function BugBearButton({
|
|
|
12545
12546
|
}
|
|
12546
12547
|
setSendingNewMessage(false);
|
|
12547
12548
|
};
|
|
12549
|
+
const handleOpenProfile = () => {
|
|
12550
|
+
if (testerInfo) {
|
|
12551
|
+
setProfileName(testerInfo.name);
|
|
12552
|
+
setProfileAdditionalEmails(testerInfo.additionalEmails || []);
|
|
12553
|
+
setProfilePlatforms(testerInfo.platforms || []);
|
|
12554
|
+
}
|
|
12555
|
+
setProfileEditing(false);
|
|
12556
|
+
setShowProfileOverlay(true);
|
|
12557
|
+
};
|
|
12548
12558
|
const handleStartEditProfile = () => {
|
|
12549
12559
|
if (testerInfo) {
|
|
12550
12560
|
setProfileName(testerInfo.name);
|
|
@@ -12557,6 +12567,11 @@ function BugBearButton({
|
|
|
12557
12567
|
setProfileEditing(false);
|
|
12558
12568
|
setNewEmailInput("");
|
|
12559
12569
|
};
|
|
12570
|
+
const handleCloseProfile = () => {
|
|
12571
|
+
setShowProfileOverlay(false);
|
|
12572
|
+
setProfileEditing(false);
|
|
12573
|
+
setNewEmailInput("");
|
|
12574
|
+
};
|
|
12560
12575
|
const handleAddEmail = () => {
|
|
12561
12576
|
const email = newEmailInput.trim().toLowerCase();
|
|
12562
12577
|
if (email && email.includes("@") && !profileAdditionalEmails.includes(email)) {
|
|
@@ -12585,7 +12600,10 @@ function BugBearButton({
|
|
|
12585
12600
|
if (result.success) {
|
|
12586
12601
|
setProfileEditing(false);
|
|
12587
12602
|
setProfileSaved(true);
|
|
12588
|
-
setTimeout(() =>
|
|
12603
|
+
setTimeout(() => {
|
|
12604
|
+
setProfileSaved(false);
|
|
12605
|
+
setShowProfileOverlay(false);
|
|
12606
|
+
}, 1500);
|
|
12589
12607
|
}
|
|
12590
12608
|
setSavingProfile(false);
|
|
12591
12609
|
};
|
|
@@ -12751,7 +12769,7 @@ function BugBearButton({
|
|
|
12751
12769
|
behavior: import_react_native2.Platform.OS === "ios" ? "padding" : "height",
|
|
12752
12770
|
style: styles.modalContainer
|
|
12753
12771
|
},
|
|
12754
|
-
/* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.modalContent }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.header }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.headerLeft }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.headerEmoji }, "\u{1F43B}"), /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, null, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.headerTitle }, "BugBear"), /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.headerSubtitle }, testerInfo?.name))), /* @__PURE__ */ import_react2.default.createElement(
|
|
12772
|
+
/* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.modalContent }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.header }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.headerLeft }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.headerEmoji }, "\u{1F43B}"), /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, null, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.headerTitle }, "BugBear"), /* @__PURE__ */ import_react2.default.createElement(import_react_native2.TouchableOpacity, { onPress: handleOpenProfile, style: styles.headerNameButton }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.headerSubtitle }, testerInfo?.name), /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.headerPencil }, "\u270E")))), /* @__PURE__ */ import_react2.default.createElement(
|
|
12755
12773
|
import_react_native2.TouchableOpacity,
|
|
12756
12774
|
{
|
|
12757
12775
|
onPress: () => setModalVisible(false),
|
|
@@ -12772,13 +12790,6 @@ function BugBearButton({
|
|
|
12772
12790
|
onPress: () => setActiveTab("messages")
|
|
12773
12791
|
},
|
|
12774
12792
|
/* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.tabWithBadge }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: [styles.tabText, activeTab === "messages" && styles.activeTabText] }, "Messages"), unreadCount > 0 && /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.tabBadge }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.tabBadgeText }, unreadCount)))
|
|
12775
|
-
), /* @__PURE__ */ import_react2.default.createElement(
|
|
12776
|
-
import_react_native2.TouchableOpacity,
|
|
12777
|
-
{
|
|
12778
|
-
style: [styles.tab, activeTab === "profile" && styles.activeTab],
|
|
12779
|
-
onPress: () => setActiveTab("profile")
|
|
12780
|
-
},
|
|
12781
|
-
/* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: [styles.tabText, activeTab === "profile" && styles.activeTabText] }, "Profile")
|
|
12782
12793
|
), /* @__PURE__ */ import_react2.default.createElement(
|
|
12783
12794
|
import_react_native2.TouchableOpacity,
|
|
12784
12795
|
{
|
|
@@ -12930,7 +12941,70 @@ function BugBearButton({
|
|
|
12930
12941
|
message.senderType === "tester" && styles.messageTimeTester
|
|
12931
12942
|
] }, formatMessageTime(message.createdAt))
|
|
12932
12943
|
))))
|
|
12933
|
-
)), activeTab === "
|
|
12944
|
+
)), activeTab === "report" && /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, null, submitted ? /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.emptyState }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.emptyEmoji }, "\u{1F389}"), /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.emptyTitle }, "Report submitted!")) : /* @__PURE__ */ import_react2.default.createElement(import_react2.default.Fragment, null, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.reportTypes }, [
|
|
12945
|
+
{ type: "bug", label: "\u{1F41B} Bug" },
|
|
12946
|
+
{ type: "feedback", label: "\u{1F4A1} Feedback" },
|
|
12947
|
+
{ type: "suggestion", label: "\u2728 Idea" }
|
|
12948
|
+
].map(({ type, label }) => /* @__PURE__ */ import_react2.default.createElement(
|
|
12949
|
+
import_react_native2.TouchableOpacity,
|
|
12950
|
+
{
|
|
12951
|
+
key: type,
|
|
12952
|
+
style: [
|
|
12953
|
+
styles.reportTypeButton,
|
|
12954
|
+
reportType === type && styles.reportTypeActive
|
|
12955
|
+
],
|
|
12956
|
+
onPress: () => setReportType(type)
|
|
12957
|
+
},
|
|
12958
|
+
/* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: [
|
|
12959
|
+
styles.reportTypeText,
|
|
12960
|
+
reportType === type && styles.reportTypeTextActive
|
|
12961
|
+
] }, label)
|
|
12962
|
+
))), (reportType === "bug" || reportType === "test_fail") && /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.severitySection }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.label }, "Severity"), /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.severityButtons }, ["critical", "high", "medium", "low"].map((sev) => {
|
|
12963
|
+
const activeStyles = {
|
|
12964
|
+
critical: styles.severityCriticalActive,
|
|
12965
|
+
high: styles.severityHighActive,
|
|
12966
|
+
medium: styles.severityMediumActive,
|
|
12967
|
+
low: styles.severityLowActive
|
|
12968
|
+
};
|
|
12969
|
+
return /* @__PURE__ */ import_react2.default.createElement(
|
|
12970
|
+
import_react_native2.TouchableOpacity,
|
|
12971
|
+
{
|
|
12972
|
+
key: sev,
|
|
12973
|
+
style: [
|
|
12974
|
+
styles.severityButton,
|
|
12975
|
+
severity === sev && activeStyles[sev]
|
|
12976
|
+
],
|
|
12977
|
+
onPress: () => setSeverity(sev)
|
|
12978
|
+
},
|
|
12979
|
+
/* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: [
|
|
12980
|
+
styles.severityText,
|
|
12981
|
+
severity === sev && styles.severityTextActive
|
|
12982
|
+
] }, sev)
|
|
12983
|
+
);
|
|
12984
|
+
}))), /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.descriptionSection }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.label }, "What happened?"), /* @__PURE__ */ import_react2.default.createElement(
|
|
12985
|
+
import_react_native2.TextInput,
|
|
12986
|
+
{
|
|
12987
|
+
style: styles.textInput,
|
|
12988
|
+
value: description,
|
|
12989
|
+
onChangeText: setDescription,
|
|
12990
|
+
placeholder: "Describe the issue...",
|
|
12991
|
+
placeholderTextColor: "#9CA3AF",
|
|
12992
|
+
multiline: true,
|
|
12993
|
+
numberOfLines: 4,
|
|
12994
|
+
textAlignVertical: "top"
|
|
12995
|
+
}
|
|
12996
|
+
)), /* @__PURE__ */ import_react2.default.createElement(
|
|
12997
|
+
import_react_native2.TouchableOpacity,
|
|
12998
|
+
{
|
|
12999
|
+
style: [
|
|
13000
|
+
styles.submitButton,
|
|
13001
|
+
(!description.trim() || submitting) && styles.submitButtonDisabled
|
|
13002
|
+
],
|
|
13003
|
+
onPress: handleSubmitReport,
|
|
13004
|
+
disabled: !description.trim() || submitting
|
|
13005
|
+
},
|
|
13006
|
+
/* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.submitButtonText }, submitting ? "Submitting..." : "Submit Report")
|
|
13007
|
+
)))), showProfileOverlay && /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.profileOverlay }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.ScrollView, { style: styles.profileOverlayContent }, profileSaved ? /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.emptyState }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.emptyEmoji }, "\u2705"), /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.emptyTitle }, "Profile saved!")) : profileEditing ? (
|
|
12934
13008
|
/* Edit Profile Form */
|
|
12935
13009
|
/* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, null, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.profileEditHeader }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.profileEditTitle }, "Edit Profile"), /* @__PURE__ */ import_react2.default.createElement(import_react_native2.TouchableOpacity, { onPress: handleCancelEditProfile }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.cancelText }, "Cancel"))), /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.profileSection }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.label }, "Name"), /* @__PURE__ */ import_react2.default.createElement(
|
|
12936
13010
|
import_react_native2.TextInput,
|
|
@@ -12997,70 +13071,14 @@ function BugBearButton({
|
|
|
12997
13071
|
},
|
|
12998
13072
|
/* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.editProfileButtonText }, "Edit Profile")
|
|
12999
13073
|
))
|
|
13000
|
-
)),
|
|
13001
|
-
{ type: "bug", label: "\u{1F41B} Bug" },
|
|
13002
|
-
{ type: "feedback", label: "\u{1F4A1} Feedback" },
|
|
13003
|
-
{ type: "suggestion", label: "\u2728 Idea" }
|
|
13004
|
-
].map(({ type, label }) => /* @__PURE__ */ import_react2.default.createElement(
|
|
13074
|
+
)), /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.profileOverlayFooter }, /* @__PURE__ */ import_react2.default.createElement(
|
|
13005
13075
|
import_react_native2.TouchableOpacity,
|
|
13006
13076
|
{
|
|
13007
|
-
|
|
13008
|
-
|
|
13009
|
-
styles.reportTypeButton,
|
|
13010
|
-
reportType === type && styles.reportTypeActive
|
|
13011
|
-
],
|
|
13012
|
-
onPress: () => setReportType(type)
|
|
13077
|
+
style: styles.closeProfileButton,
|
|
13078
|
+
onPress: handleCloseProfile
|
|
13013
13079
|
},
|
|
13014
|
-
/* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style:
|
|
13015
|
-
|
|
13016
|
-
reportType === type && styles.reportTypeTextActive
|
|
13017
|
-
] }, label)
|
|
13018
|
-
))), (reportType === "bug" || reportType === "test_fail") && /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.severitySection }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.label }, "Severity"), /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.severityButtons }, ["critical", "high", "medium", "low"].map((sev) => {
|
|
13019
|
-
const activeStyles = {
|
|
13020
|
-
critical: styles.severityCriticalActive,
|
|
13021
|
-
high: styles.severityHighActive,
|
|
13022
|
-
medium: styles.severityMediumActive,
|
|
13023
|
-
low: styles.severityLowActive
|
|
13024
|
-
};
|
|
13025
|
-
return /* @__PURE__ */ import_react2.default.createElement(
|
|
13026
|
-
import_react_native2.TouchableOpacity,
|
|
13027
|
-
{
|
|
13028
|
-
key: sev,
|
|
13029
|
-
style: [
|
|
13030
|
-
styles.severityButton,
|
|
13031
|
-
severity === sev && activeStyles[sev]
|
|
13032
|
-
],
|
|
13033
|
-
onPress: () => setSeverity(sev)
|
|
13034
|
-
},
|
|
13035
|
-
/* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: [
|
|
13036
|
-
styles.severityText,
|
|
13037
|
-
severity === sev && styles.severityTextActive
|
|
13038
|
-
] }, sev)
|
|
13039
|
-
);
|
|
13040
|
-
}))), /* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.descriptionSection }, /* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.label }, "What happened?"), /* @__PURE__ */ import_react2.default.createElement(
|
|
13041
|
-
import_react_native2.TextInput,
|
|
13042
|
-
{
|
|
13043
|
-
style: styles.textInput,
|
|
13044
|
-
value: description,
|
|
13045
|
-
onChangeText: setDescription,
|
|
13046
|
-
placeholder: "Describe the issue...",
|
|
13047
|
-
placeholderTextColor: "#9CA3AF",
|
|
13048
|
-
multiline: true,
|
|
13049
|
-
numberOfLines: 4,
|
|
13050
|
-
textAlignVertical: "top"
|
|
13051
|
-
}
|
|
13052
|
-
)), /* @__PURE__ */ import_react2.default.createElement(
|
|
13053
|
-
import_react_native2.TouchableOpacity,
|
|
13054
|
-
{
|
|
13055
|
-
style: [
|
|
13056
|
-
styles.submitButton,
|
|
13057
|
-
(!description.trim() || submitting) && styles.submitButtonDisabled
|
|
13058
|
-
],
|
|
13059
|
-
onPress: handleSubmitReport,
|
|
13060
|
-
disabled: !description.trim() || submitting
|
|
13061
|
-
},
|
|
13062
|
-
/* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.submitButtonText }, submitting ? "Submitting..." : "Submit Report")
|
|
13063
|
-
)))), activeTab === "messages" && messageView === "thread" && selectedThread ? (
|
|
13080
|
+
/* @__PURE__ */ import_react2.default.createElement(import_react_native2.Text, { style: styles.closeProfileButtonText }, "\u2190 Back")
|
|
13081
|
+
))), activeTab === "messages" && messageView === "thread" && selectedThread ? (
|
|
13064
13082
|
/* Reply Composer */
|
|
13065
13083
|
/* @__PURE__ */ import_react2.default.createElement(import_react_native2.View, { style: styles.replyComposer }, /* @__PURE__ */ import_react2.default.createElement(
|
|
13066
13084
|
import_react_native2.TextInput,
|
|
@@ -13172,6 +13190,15 @@ var styles = import_react_native2.StyleSheet.create({
|
|
|
13172
13190
|
color: "#DDD6FE",
|
|
13173
13191
|
fontSize: 12
|
|
13174
13192
|
},
|
|
13193
|
+
headerNameButton: {
|
|
13194
|
+
flexDirection: "row",
|
|
13195
|
+
alignItems: "center",
|
|
13196
|
+
gap: 4
|
|
13197
|
+
},
|
|
13198
|
+
headerPencil: {
|
|
13199
|
+
color: "#DDD6FE",
|
|
13200
|
+
fontSize: 11
|
|
13201
|
+
},
|
|
13175
13202
|
closeButton: {
|
|
13176
13203
|
padding: 8
|
|
13177
13204
|
},
|
|
@@ -14297,6 +14324,35 @@ var styles = import_react_native2.StyleSheet.create({
|
|
|
14297
14324
|
fontSize: 16,
|
|
14298
14325
|
fontWeight: "600",
|
|
14299
14326
|
color: "#fff"
|
|
14327
|
+
},
|
|
14328
|
+
// Profile overlay styles
|
|
14329
|
+
profileOverlay: {
|
|
14330
|
+
position: "absolute",
|
|
14331
|
+
top: 0,
|
|
14332
|
+
left: 0,
|
|
14333
|
+
right: 0,
|
|
14334
|
+
bottom: 0,
|
|
14335
|
+
backgroundColor: "#fff",
|
|
14336
|
+
zIndex: 100
|
|
14337
|
+
},
|
|
14338
|
+
profileOverlayContent: {
|
|
14339
|
+
flex: 1,
|
|
14340
|
+
padding: 16
|
|
14341
|
+
},
|
|
14342
|
+
profileOverlayFooter: {
|
|
14343
|
+
borderTopWidth: 1,
|
|
14344
|
+
borderTopColor: "#E5E7EB",
|
|
14345
|
+
padding: 12,
|
|
14346
|
+
backgroundColor: "#F9FAFB"
|
|
14347
|
+
},
|
|
14348
|
+
closeProfileButton: {
|
|
14349
|
+
paddingVertical: 8,
|
|
14350
|
+
alignItems: "center"
|
|
14351
|
+
},
|
|
14352
|
+
closeProfileButtonText: {
|
|
14353
|
+
fontSize: 14,
|
|
14354
|
+
fontWeight: "500",
|
|
14355
|
+
color: "#7C3AED"
|
|
14300
14356
|
}
|
|
14301
14357
|
});
|
|
14302
14358
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/index.mjs
CHANGED
|
@@ -12320,6 +12320,7 @@ function BugBearButton({
|
|
|
12320
12320
|
const [modalVisible, setModalVisible] = useState2(false);
|
|
12321
12321
|
const [activeTab, setActiveTab] = useState2("tests");
|
|
12322
12322
|
const [showSteps, setShowSteps] = useState2(false);
|
|
12323
|
+
const [showProfileOverlay, setShowProfileOverlay] = useState2(false);
|
|
12323
12324
|
const [messageView, setMessageView] = useState2("list");
|
|
12324
12325
|
const [selectedThread, setSelectedThread] = useState2(null);
|
|
12325
12326
|
const [threadMessages, setThreadMessages] = useState2([]);
|
|
@@ -12520,6 +12521,15 @@ function BugBearButton({
|
|
|
12520
12521
|
}
|
|
12521
12522
|
setSendingNewMessage(false);
|
|
12522
12523
|
};
|
|
12524
|
+
const handleOpenProfile = () => {
|
|
12525
|
+
if (testerInfo) {
|
|
12526
|
+
setProfileName(testerInfo.name);
|
|
12527
|
+
setProfileAdditionalEmails(testerInfo.additionalEmails || []);
|
|
12528
|
+
setProfilePlatforms(testerInfo.platforms || []);
|
|
12529
|
+
}
|
|
12530
|
+
setProfileEditing(false);
|
|
12531
|
+
setShowProfileOverlay(true);
|
|
12532
|
+
};
|
|
12523
12533
|
const handleStartEditProfile = () => {
|
|
12524
12534
|
if (testerInfo) {
|
|
12525
12535
|
setProfileName(testerInfo.name);
|
|
@@ -12532,6 +12542,11 @@ function BugBearButton({
|
|
|
12532
12542
|
setProfileEditing(false);
|
|
12533
12543
|
setNewEmailInput("");
|
|
12534
12544
|
};
|
|
12545
|
+
const handleCloseProfile = () => {
|
|
12546
|
+
setShowProfileOverlay(false);
|
|
12547
|
+
setProfileEditing(false);
|
|
12548
|
+
setNewEmailInput("");
|
|
12549
|
+
};
|
|
12535
12550
|
const handleAddEmail = () => {
|
|
12536
12551
|
const email = newEmailInput.trim().toLowerCase();
|
|
12537
12552
|
if (email && email.includes("@") && !profileAdditionalEmails.includes(email)) {
|
|
@@ -12560,7 +12575,10 @@ function BugBearButton({
|
|
|
12560
12575
|
if (result.success) {
|
|
12561
12576
|
setProfileEditing(false);
|
|
12562
12577
|
setProfileSaved(true);
|
|
12563
|
-
setTimeout(() =>
|
|
12578
|
+
setTimeout(() => {
|
|
12579
|
+
setProfileSaved(false);
|
|
12580
|
+
setShowProfileOverlay(false);
|
|
12581
|
+
}, 1500);
|
|
12564
12582
|
}
|
|
12565
12583
|
setSavingProfile(false);
|
|
12566
12584
|
};
|
|
@@ -12726,7 +12744,7 @@ function BugBearButton({
|
|
|
12726
12744
|
behavior: Platform2.OS === "ios" ? "padding" : "height",
|
|
12727
12745
|
style: styles.modalContainer
|
|
12728
12746
|
},
|
|
12729
|
-
/* @__PURE__ */ React2.createElement(View, { style: styles.modalContent }, /* @__PURE__ */ React2.createElement(View, { style: styles.header }, /* @__PURE__ */ React2.createElement(View, { style: styles.headerLeft }, /* @__PURE__ */ React2.createElement(Text, { style: styles.headerEmoji }, "\u{1F43B}"), /* @__PURE__ */ React2.createElement(View, null, /* @__PURE__ */ React2.createElement(Text, { style: styles.headerTitle }, "BugBear"), /* @__PURE__ */ React2.createElement(Text, { style: styles.headerSubtitle }, testerInfo?.name))), /* @__PURE__ */ React2.createElement(
|
|
12747
|
+
/* @__PURE__ */ React2.createElement(View, { style: styles.modalContent }, /* @__PURE__ */ React2.createElement(View, { style: styles.header }, /* @__PURE__ */ React2.createElement(View, { style: styles.headerLeft }, /* @__PURE__ */ React2.createElement(Text, { style: styles.headerEmoji }, "\u{1F43B}"), /* @__PURE__ */ React2.createElement(View, null, /* @__PURE__ */ React2.createElement(Text, { style: styles.headerTitle }, "BugBear"), /* @__PURE__ */ React2.createElement(TouchableOpacity, { onPress: handleOpenProfile, style: styles.headerNameButton }, /* @__PURE__ */ React2.createElement(Text, { style: styles.headerSubtitle }, testerInfo?.name), /* @__PURE__ */ React2.createElement(Text, { style: styles.headerPencil }, "\u270E")))), /* @__PURE__ */ React2.createElement(
|
|
12730
12748
|
TouchableOpacity,
|
|
12731
12749
|
{
|
|
12732
12750
|
onPress: () => setModalVisible(false),
|
|
@@ -12747,13 +12765,6 @@ function BugBearButton({
|
|
|
12747
12765
|
onPress: () => setActiveTab("messages")
|
|
12748
12766
|
},
|
|
12749
12767
|
/* @__PURE__ */ React2.createElement(View, { style: styles.tabWithBadge }, /* @__PURE__ */ React2.createElement(Text, { style: [styles.tabText, activeTab === "messages" && styles.activeTabText] }, "Messages"), unreadCount > 0 && /* @__PURE__ */ React2.createElement(View, { style: styles.tabBadge }, /* @__PURE__ */ React2.createElement(Text, { style: styles.tabBadgeText }, unreadCount)))
|
|
12750
|
-
), /* @__PURE__ */ React2.createElement(
|
|
12751
|
-
TouchableOpacity,
|
|
12752
|
-
{
|
|
12753
|
-
style: [styles.tab, activeTab === "profile" && styles.activeTab],
|
|
12754
|
-
onPress: () => setActiveTab("profile")
|
|
12755
|
-
},
|
|
12756
|
-
/* @__PURE__ */ React2.createElement(Text, { style: [styles.tabText, activeTab === "profile" && styles.activeTabText] }, "Profile")
|
|
12757
12768
|
), /* @__PURE__ */ React2.createElement(
|
|
12758
12769
|
TouchableOpacity,
|
|
12759
12770
|
{
|
|
@@ -12905,7 +12916,70 @@ function BugBearButton({
|
|
|
12905
12916
|
message.senderType === "tester" && styles.messageTimeTester
|
|
12906
12917
|
] }, formatMessageTime(message.createdAt))
|
|
12907
12918
|
))))
|
|
12908
|
-
)), activeTab === "
|
|
12919
|
+
)), activeTab === "report" && /* @__PURE__ */ React2.createElement(View, null, submitted ? /* @__PURE__ */ React2.createElement(View, { style: styles.emptyState }, /* @__PURE__ */ React2.createElement(Text, { style: styles.emptyEmoji }, "\u{1F389}"), /* @__PURE__ */ React2.createElement(Text, { style: styles.emptyTitle }, "Report submitted!")) : /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(View, { style: styles.reportTypes }, [
|
|
12920
|
+
{ type: "bug", label: "\u{1F41B} Bug" },
|
|
12921
|
+
{ type: "feedback", label: "\u{1F4A1} Feedback" },
|
|
12922
|
+
{ type: "suggestion", label: "\u2728 Idea" }
|
|
12923
|
+
].map(({ type, label }) => /* @__PURE__ */ React2.createElement(
|
|
12924
|
+
TouchableOpacity,
|
|
12925
|
+
{
|
|
12926
|
+
key: type,
|
|
12927
|
+
style: [
|
|
12928
|
+
styles.reportTypeButton,
|
|
12929
|
+
reportType === type && styles.reportTypeActive
|
|
12930
|
+
],
|
|
12931
|
+
onPress: () => setReportType(type)
|
|
12932
|
+
},
|
|
12933
|
+
/* @__PURE__ */ React2.createElement(Text, { style: [
|
|
12934
|
+
styles.reportTypeText,
|
|
12935
|
+
reportType === type && styles.reportTypeTextActive
|
|
12936
|
+
] }, label)
|
|
12937
|
+
))), (reportType === "bug" || reportType === "test_fail") && /* @__PURE__ */ React2.createElement(View, { style: styles.severitySection }, /* @__PURE__ */ React2.createElement(Text, { style: styles.label }, "Severity"), /* @__PURE__ */ React2.createElement(View, { style: styles.severityButtons }, ["critical", "high", "medium", "low"].map((sev) => {
|
|
12938
|
+
const activeStyles = {
|
|
12939
|
+
critical: styles.severityCriticalActive,
|
|
12940
|
+
high: styles.severityHighActive,
|
|
12941
|
+
medium: styles.severityMediumActive,
|
|
12942
|
+
low: styles.severityLowActive
|
|
12943
|
+
};
|
|
12944
|
+
return /* @__PURE__ */ React2.createElement(
|
|
12945
|
+
TouchableOpacity,
|
|
12946
|
+
{
|
|
12947
|
+
key: sev,
|
|
12948
|
+
style: [
|
|
12949
|
+
styles.severityButton,
|
|
12950
|
+
severity === sev && activeStyles[sev]
|
|
12951
|
+
],
|
|
12952
|
+
onPress: () => setSeverity(sev)
|
|
12953
|
+
},
|
|
12954
|
+
/* @__PURE__ */ React2.createElement(Text, { style: [
|
|
12955
|
+
styles.severityText,
|
|
12956
|
+
severity === sev && styles.severityTextActive
|
|
12957
|
+
] }, sev)
|
|
12958
|
+
);
|
|
12959
|
+
}))), /* @__PURE__ */ React2.createElement(View, { style: styles.descriptionSection }, /* @__PURE__ */ React2.createElement(Text, { style: styles.label }, "What happened?"), /* @__PURE__ */ React2.createElement(
|
|
12960
|
+
TextInput,
|
|
12961
|
+
{
|
|
12962
|
+
style: styles.textInput,
|
|
12963
|
+
value: description,
|
|
12964
|
+
onChangeText: setDescription,
|
|
12965
|
+
placeholder: "Describe the issue...",
|
|
12966
|
+
placeholderTextColor: "#9CA3AF",
|
|
12967
|
+
multiline: true,
|
|
12968
|
+
numberOfLines: 4,
|
|
12969
|
+
textAlignVertical: "top"
|
|
12970
|
+
}
|
|
12971
|
+
)), /* @__PURE__ */ React2.createElement(
|
|
12972
|
+
TouchableOpacity,
|
|
12973
|
+
{
|
|
12974
|
+
style: [
|
|
12975
|
+
styles.submitButton,
|
|
12976
|
+
(!description.trim() || submitting) && styles.submitButtonDisabled
|
|
12977
|
+
],
|
|
12978
|
+
onPress: handleSubmitReport,
|
|
12979
|
+
disabled: !description.trim() || submitting
|
|
12980
|
+
},
|
|
12981
|
+
/* @__PURE__ */ React2.createElement(Text, { style: styles.submitButtonText }, submitting ? "Submitting..." : "Submit Report")
|
|
12982
|
+
)))), showProfileOverlay && /* @__PURE__ */ React2.createElement(View, { style: styles.profileOverlay }, /* @__PURE__ */ React2.createElement(ScrollView, { style: styles.profileOverlayContent }, profileSaved ? /* @__PURE__ */ React2.createElement(View, { style: styles.emptyState }, /* @__PURE__ */ React2.createElement(Text, { style: styles.emptyEmoji }, "\u2705"), /* @__PURE__ */ React2.createElement(Text, { style: styles.emptyTitle }, "Profile saved!")) : profileEditing ? (
|
|
12909
12983
|
/* Edit Profile Form */
|
|
12910
12984
|
/* @__PURE__ */ React2.createElement(View, null, /* @__PURE__ */ React2.createElement(View, { style: styles.profileEditHeader }, /* @__PURE__ */ React2.createElement(Text, { style: styles.profileEditTitle }, "Edit Profile"), /* @__PURE__ */ React2.createElement(TouchableOpacity, { onPress: handleCancelEditProfile }, /* @__PURE__ */ React2.createElement(Text, { style: styles.cancelText }, "Cancel"))), /* @__PURE__ */ React2.createElement(View, { style: styles.profileSection }, /* @__PURE__ */ React2.createElement(Text, { style: styles.label }, "Name"), /* @__PURE__ */ React2.createElement(
|
|
12911
12985
|
TextInput,
|
|
@@ -12972,70 +13046,14 @@ function BugBearButton({
|
|
|
12972
13046
|
},
|
|
12973
13047
|
/* @__PURE__ */ React2.createElement(Text, { style: styles.editProfileButtonText }, "Edit Profile")
|
|
12974
13048
|
))
|
|
12975
|
-
)),
|
|
12976
|
-
{ type: "bug", label: "\u{1F41B} Bug" },
|
|
12977
|
-
{ type: "feedback", label: "\u{1F4A1} Feedback" },
|
|
12978
|
-
{ type: "suggestion", label: "\u2728 Idea" }
|
|
12979
|
-
].map(({ type, label }) => /* @__PURE__ */ React2.createElement(
|
|
13049
|
+
)), /* @__PURE__ */ React2.createElement(View, { style: styles.profileOverlayFooter }, /* @__PURE__ */ React2.createElement(
|
|
12980
13050
|
TouchableOpacity,
|
|
12981
13051
|
{
|
|
12982
|
-
|
|
12983
|
-
|
|
12984
|
-
styles.reportTypeButton,
|
|
12985
|
-
reportType === type && styles.reportTypeActive
|
|
12986
|
-
],
|
|
12987
|
-
onPress: () => setReportType(type)
|
|
13052
|
+
style: styles.closeProfileButton,
|
|
13053
|
+
onPress: handleCloseProfile
|
|
12988
13054
|
},
|
|
12989
|
-
/* @__PURE__ */ React2.createElement(Text, { style:
|
|
12990
|
-
|
|
12991
|
-
reportType === type && styles.reportTypeTextActive
|
|
12992
|
-
] }, label)
|
|
12993
|
-
))), (reportType === "bug" || reportType === "test_fail") && /* @__PURE__ */ React2.createElement(View, { style: styles.severitySection }, /* @__PURE__ */ React2.createElement(Text, { style: styles.label }, "Severity"), /* @__PURE__ */ React2.createElement(View, { style: styles.severityButtons }, ["critical", "high", "medium", "low"].map((sev) => {
|
|
12994
|
-
const activeStyles = {
|
|
12995
|
-
critical: styles.severityCriticalActive,
|
|
12996
|
-
high: styles.severityHighActive,
|
|
12997
|
-
medium: styles.severityMediumActive,
|
|
12998
|
-
low: styles.severityLowActive
|
|
12999
|
-
};
|
|
13000
|
-
return /* @__PURE__ */ React2.createElement(
|
|
13001
|
-
TouchableOpacity,
|
|
13002
|
-
{
|
|
13003
|
-
key: sev,
|
|
13004
|
-
style: [
|
|
13005
|
-
styles.severityButton,
|
|
13006
|
-
severity === sev && activeStyles[sev]
|
|
13007
|
-
],
|
|
13008
|
-
onPress: () => setSeverity(sev)
|
|
13009
|
-
},
|
|
13010
|
-
/* @__PURE__ */ React2.createElement(Text, { style: [
|
|
13011
|
-
styles.severityText,
|
|
13012
|
-
severity === sev && styles.severityTextActive
|
|
13013
|
-
] }, sev)
|
|
13014
|
-
);
|
|
13015
|
-
}))), /* @__PURE__ */ React2.createElement(View, { style: styles.descriptionSection }, /* @__PURE__ */ React2.createElement(Text, { style: styles.label }, "What happened?"), /* @__PURE__ */ React2.createElement(
|
|
13016
|
-
TextInput,
|
|
13017
|
-
{
|
|
13018
|
-
style: styles.textInput,
|
|
13019
|
-
value: description,
|
|
13020
|
-
onChangeText: setDescription,
|
|
13021
|
-
placeholder: "Describe the issue...",
|
|
13022
|
-
placeholderTextColor: "#9CA3AF",
|
|
13023
|
-
multiline: true,
|
|
13024
|
-
numberOfLines: 4,
|
|
13025
|
-
textAlignVertical: "top"
|
|
13026
|
-
}
|
|
13027
|
-
)), /* @__PURE__ */ React2.createElement(
|
|
13028
|
-
TouchableOpacity,
|
|
13029
|
-
{
|
|
13030
|
-
style: [
|
|
13031
|
-
styles.submitButton,
|
|
13032
|
-
(!description.trim() || submitting) && styles.submitButtonDisabled
|
|
13033
|
-
],
|
|
13034
|
-
onPress: handleSubmitReport,
|
|
13035
|
-
disabled: !description.trim() || submitting
|
|
13036
|
-
},
|
|
13037
|
-
/* @__PURE__ */ React2.createElement(Text, { style: styles.submitButtonText }, submitting ? "Submitting..." : "Submit Report")
|
|
13038
|
-
)))), activeTab === "messages" && messageView === "thread" && selectedThread ? (
|
|
13055
|
+
/* @__PURE__ */ React2.createElement(Text, { style: styles.closeProfileButtonText }, "\u2190 Back")
|
|
13056
|
+
))), activeTab === "messages" && messageView === "thread" && selectedThread ? (
|
|
13039
13057
|
/* Reply Composer */
|
|
13040
13058
|
/* @__PURE__ */ React2.createElement(View, { style: styles.replyComposer }, /* @__PURE__ */ React2.createElement(
|
|
13041
13059
|
TextInput,
|
|
@@ -13147,6 +13165,15 @@ var styles = StyleSheet.create({
|
|
|
13147
13165
|
color: "#DDD6FE",
|
|
13148
13166
|
fontSize: 12
|
|
13149
13167
|
},
|
|
13168
|
+
headerNameButton: {
|
|
13169
|
+
flexDirection: "row",
|
|
13170
|
+
alignItems: "center",
|
|
13171
|
+
gap: 4
|
|
13172
|
+
},
|
|
13173
|
+
headerPencil: {
|
|
13174
|
+
color: "#DDD6FE",
|
|
13175
|
+
fontSize: 11
|
|
13176
|
+
},
|
|
13150
13177
|
closeButton: {
|
|
13151
13178
|
padding: 8
|
|
13152
13179
|
},
|
|
@@ -14272,6 +14299,35 @@ var styles = StyleSheet.create({
|
|
|
14272
14299
|
fontSize: 16,
|
|
14273
14300
|
fontWeight: "600",
|
|
14274
14301
|
color: "#fff"
|
|
14302
|
+
},
|
|
14303
|
+
// Profile overlay styles
|
|
14304
|
+
profileOverlay: {
|
|
14305
|
+
position: "absolute",
|
|
14306
|
+
top: 0,
|
|
14307
|
+
left: 0,
|
|
14308
|
+
right: 0,
|
|
14309
|
+
bottom: 0,
|
|
14310
|
+
backgroundColor: "#fff",
|
|
14311
|
+
zIndex: 100
|
|
14312
|
+
},
|
|
14313
|
+
profileOverlayContent: {
|
|
14314
|
+
flex: 1,
|
|
14315
|
+
padding: 16
|
|
14316
|
+
},
|
|
14317
|
+
profileOverlayFooter: {
|
|
14318
|
+
borderTopWidth: 1,
|
|
14319
|
+
borderTopColor: "#E5E7EB",
|
|
14320
|
+
padding: 12,
|
|
14321
|
+
backgroundColor: "#F9FAFB"
|
|
14322
|
+
},
|
|
14323
|
+
closeProfileButton: {
|
|
14324
|
+
paddingVertical: 8,
|
|
14325
|
+
alignItems: "center"
|
|
14326
|
+
},
|
|
14327
|
+
closeProfileButtonText: {
|
|
14328
|
+
fontSize: 14,
|
|
14329
|
+
fontWeight: "500",
|
|
14330
|
+
color: "#7C3AED"
|
|
14275
14331
|
}
|
|
14276
14332
|
});
|
|
14277
14333
|
export {
|