@originallyus/feedback-rn-sdk 3.1.0 → 4.0.0-beta.2

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.

Potentially problematic release.


This version of @originallyus/feedback-rn-sdk might be problematic. Click here for more details.

Files changed (166) hide show
  1. package/{LICENSE.txt → LICENSE} +1 -2
  2. package/README.md +69 -176
  3. package/lib/module/AIAContentUsefulness.js +273 -0
  4. package/lib/module/AIAContentUsefulness.js.map +1 -0
  5. package/lib/module/AIAFeedback.js +295 -0
  6. package/lib/module/AIAFeedback.js.map +1 -0
  7. package/lib/module/AIAFeedbackForm.js +212 -0
  8. package/lib/module/AIAFeedbackForm.js.map +1 -0
  9. package/lib/module/AIAFeedbackSplash.js +57 -0
  10. package/lib/module/AIAFeedbackSplash.js.map +1 -0
  11. package/lib/module/AIAFeedbackStyles.js +329 -0
  12. package/lib/module/AIAFeedbackStyles.js.map +1 -0
  13. package/lib/module/AIAFeedbackSuccess.js +68 -0
  14. package/lib/module/AIAFeedbackSuccess.js.map +1 -0
  15. package/lib/module/assets/CheckIcon.js +21 -0
  16. package/lib/module/assets/CheckIcon.js.map +1 -0
  17. package/lib/module/assets/CloseIcon.js +21 -0
  18. package/lib/module/assets/CloseIcon.js.map +1 -0
  19. package/lib/module/assets/ErrorIcon.js +23 -0
  20. package/lib/module/assets/ErrorIcon.js.map +1 -0
  21. package/lib/module/assets/PlusIcon.js +21 -0
  22. package/lib/module/assets/PlusIcon.js.map +1 -0
  23. package/lib/module/assets/StarIcon.js +21 -0
  24. package/lib/module/assets/StarIcon.js.map +1 -0
  25. package/lib/module/component/Button.js +49 -0
  26. package/lib/module/component/Button.js.map +1 -0
  27. package/lib/module/component/ButtonSubmit.js +194 -0
  28. package/lib/module/component/ButtonSubmit.js.map +1 -0
  29. package/lib/module/component/Input.js +172 -0
  30. package/lib/module/component/Input.js.map +1 -0
  31. package/lib/module/component/MultiSelectButtons.js +174 -0
  32. package/lib/module/component/MultiSelectButtons.js.map +1 -0
  33. package/lib/module/component/README.md +215 -0
  34. package/lib/module/component/READMEVI.md +192 -0
  35. package/lib/module/component/Rating.js +168 -0
  36. package/lib/module/component/Rating.js.map +1 -0
  37. package/lib/module/component/RatingNumber.js +268 -0
  38. package/lib/module/component/RatingNumber.js.map +1 -0
  39. package/lib/module/component/Textarea.js +163 -0
  40. package/lib/module/component/Textarea.js.map +1 -0
  41. package/lib/module/component/YesNoButtons.js +161 -0
  42. package/lib/module/component/YesNoButtons.js.map +1 -0
  43. package/lib/module/index.js +13 -0
  44. package/lib/module/index.js.map +1 -0
  45. package/lib/module/package.json +1 -0
  46. package/lib/module/service/feedbackService.js +77 -0
  47. package/lib/module/service/feedbackService.js.map +1 -0
  48. package/lib/module/utils/common.js +199 -0
  49. package/lib/module/utils/common.js.map +1 -0
  50. package/lib/module/utils/constants.js +48 -0
  51. package/lib/module/utils/constants.js.map +1 -0
  52. package/lib/module/utils/index.js +140 -0
  53. package/lib/module/utils/index.js.map +1 -0
  54. package/lib/module/utils/networking.js +121 -0
  55. package/lib/module/utils/networking.js.map +1 -0
  56. package/lib/typescript/AIAContentUsefulness.d.ts +14 -0
  57. package/lib/typescript/AIAContentUsefulness.d.ts.map +1 -0
  58. package/lib/typescript/AIAFeedback.d.ts +15 -0
  59. package/lib/typescript/AIAFeedback.d.ts.map +1 -0
  60. package/lib/typescript/AIAFeedbackForm.d.ts +22 -0
  61. package/lib/typescript/AIAFeedbackForm.d.ts.map +1 -0
  62. package/lib/typescript/AIAFeedbackSplash.d.ts +10 -0
  63. package/lib/typescript/AIAFeedbackSplash.d.ts.map +1 -0
  64. package/lib/typescript/AIAFeedbackStyles.d.ts +342 -0
  65. package/lib/typescript/AIAFeedbackStyles.d.ts.map +1 -0
  66. package/lib/typescript/AIAFeedbackSuccess.d.ts +11 -0
  67. package/lib/typescript/AIAFeedbackSuccess.d.ts.map +1 -0
  68. package/lib/typescript/assets/CheckIcon.d.ts +7 -0
  69. package/lib/typescript/assets/CheckIcon.d.ts.map +1 -0
  70. package/lib/typescript/assets/CloseIcon.d.ts +7 -0
  71. package/lib/typescript/assets/CloseIcon.d.ts.map +1 -0
  72. package/lib/typescript/assets/ErrorIcon.d.ts +7 -0
  73. package/lib/typescript/assets/ErrorIcon.d.ts.map +1 -0
  74. package/lib/typescript/assets/PlusIcon.d.ts +7 -0
  75. package/lib/typescript/assets/PlusIcon.d.ts.map +1 -0
  76. package/lib/typescript/assets/StarIcon.d.ts +7 -0
  77. package/lib/typescript/assets/StarIcon.d.ts.map +1 -0
  78. package/lib/typescript/component/Button.d.ts +30 -0
  79. package/lib/typescript/component/Button.d.ts.map +1 -0
  80. package/lib/typescript/component/ButtonSubmit.d.ts +115 -0
  81. package/lib/typescript/component/ButtonSubmit.d.ts.map +1 -0
  82. package/lib/typescript/component/Input.d.ts +112 -0
  83. package/lib/typescript/component/Input.d.ts.map +1 -0
  84. package/lib/typescript/component/MultiSelectButtons.d.ts +103 -0
  85. package/lib/typescript/component/MultiSelectButtons.d.ts.map +1 -0
  86. package/lib/typescript/component/Rating.d.ts +83 -0
  87. package/lib/typescript/component/Rating.d.ts.map +1 -0
  88. package/lib/typescript/component/RatingNumber.d.ts +135 -0
  89. package/lib/typescript/component/RatingNumber.d.ts.map +1 -0
  90. package/lib/typescript/component/Textarea.d.ts +115 -0
  91. package/lib/typescript/component/Textarea.d.ts.map +1 -0
  92. package/lib/typescript/component/YesNoButtons.d.ts +94 -0
  93. package/lib/typescript/component/YesNoButtons.d.ts.map +1 -0
  94. package/lib/typescript/index.d.ts +21 -0
  95. package/lib/typescript/index.d.ts.map +1 -0
  96. package/lib/typescript/package.json +1 -0
  97. package/lib/typescript/service/feedbackService.d.ts +33 -0
  98. package/lib/typescript/service/feedbackService.d.ts.map +1 -0
  99. package/lib/typescript/utils/common.d.ts +23 -0
  100. package/lib/typescript/utils/common.d.ts.map +1 -0
  101. package/lib/typescript/utils/constants.d.ts +38 -0
  102. package/lib/typescript/utils/constants.d.ts.map +1 -0
  103. package/lib/typescript/utils/index.d.ts +12 -0
  104. package/lib/typescript/utils/index.d.ts.map +1 -0
  105. package/lib/typescript/utils/networking.d.ts +12 -0
  106. package/lib/typescript/utils/networking.d.ts.map +1 -0
  107. package/package.json +175 -39
  108. package/src/AIAContentUsefulness.tsx +296 -0
  109. package/src/AIAFeedback.tsx +354 -0
  110. package/src/AIAFeedbackForm.tsx +267 -0
  111. package/src/AIAFeedbackSplash.tsx +49 -0
  112. package/src/AIAFeedbackStyles.ts +311 -0
  113. package/src/AIAFeedbackSuccess.tsx +67 -0
  114. package/src/assets/CheckIcon.tsx +18 -0
  115. package/src/assets/CloseIcon.tsx +18 -0
  116. package/src/assets/ErrorIcon.tsx +18 -0
  117. package/src/assets/PlusIcon.tsx +18 -0
  118. package/src/assets/StarIcon.tsx +18 -0
  119. package/src/component/Button.tsx +68 -0
  120. package/src/component/ButtonSubmit.tsx +335 -0
  121. package/src/component/Input.tsx +288 -0
  122. package/src/component/MultiSelectButtons.tsx +272 -0
  123. package/src/component/README.md +215 -0
  124. package/src/component/READMEVI.md +192 -0
  125. package/src/component/Rating.tsx +248 -0
  126. package/src/component/RatingNumber.tsx +421 -0
  127. package/src/component/Textarea.tsx +282 -0
  128. package/src/component/YesNoButtons.tsx +236 -0
  129. package/src/index.tsx +33 -0
  130. package/src/service/feedbackService.ts +108 -0
  131. package/src/utils/common.ts +241 -0
  132. package/src/utils/constants.ts +60 -0
  133. package/src/utils/index.ts +167 -0
  134. package/src/utils/networking.ts +134 -0
  135. package/fonts/AIAEverest-CondensedMedium.ttf +0 -0
  136. package/fonts/AIAEverest-Medium.ttf +0 -0
  137. package/fonts/AIAEverest-Regular.ttf +0 -0
  138. package/fonts/AIAEverestBold.ttf +0 -0
  139. package/fonts/OpenSans-Bold.ttf +0 -0
  140. package/fonts/OpenSans-Light.ttf +0 -0
  141. package/fonts/OpenSans-Regular.ttf +0 -0
  142. package/fonts/OpenSans-SemiBold.ttf +0 -0
  143. package/lib/commonjs/api/index.js +0 -1
  144. package/lib/commonjs/assets/index.js +0 -1
  145. package/lib/commonjs/component/confirmStep.js +0 -1
  146. package/lib/commonjs/component/confirmStepTablet.js +0 -1
  147. package/lib/commonjs/component/contentUI.js +0 -1
  148. package/lib/commonjs/component/contentUITablet.js +0 -1
  149. package/lib/commonjs/component/header.js +0 -1
  150. package/lib/commonjs/component/index.js +0 -1
  151. package/lib/commonjs/component/inlineSurvey.js +0 -1
  152. package/lib/commonjs/index.js +0 -1
  153. package/lib/commonjs/ui/ButtonSubmit.js +0 -1
  154. package/lib/commonjs/ui/Fineprint.js +0 -1
  155. package/lib/commonjs/ui/Instruction.js +0 -1
  156. package/lib/commonjs/ui/MultipleSelectInput.js +0 -1
  157. package/lib/commonjs/ui/Question.js +0 -1
  158. package/lib/commonjs/ui/RatingNumber.js +0 -1
  159. package/lib/commonjs/ui/RatingStar.js +0 -1
  160. package/lib/commonjs/ui/SecondaryQuestion.js +0 -1
  161. package/lib/commonjs/ui/TextArea.js +0 -1
  162. package/lib/commonjs/ui/index.js +0 -1
  163. package/lib/commonjs/utils/MyFunction.js +0 -1
  164. package/lib/commonjs/utils/NetworkHelper.js +0 -1
  165. package/lib/commonjs/utils/StatusBarHeight.js +0 -1
  166. package/lib/commonjs/utils/const.js +0 -1
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+
3
+ import * as f from '@utils/common';
4
+ import { useMemo } from 'react';
5
+ import { ActivityIndicator, Pressable, StyleSheet, Text, View } from 'react-native';
6
+ import { BG_BUTTON_SECONDARY, BG_DISABLED, BG_DISABLED_SECONDARY, ERROR_COLOR, PRESSED_COLOR, PRIMARY_COLOR, TEXT_DISABLED, TEXT_WHITE } from '@utils/constants';
7
+
8
+ /**
9
+ * Visual style variant for `ButtonSubmit`.
10
+ *
11
+ * - `'primary'` – solid primary background with white text.
12
+ * - `'secondary'` – light background with colored border and text.
13
+ */
14
+
15
+ /**
16
+ * Props for the form submit button.
17
+ *
18
+ * This is a higher-level button component that supports loading state,
19
+ * primary/secondary variants, full-width layout and basic theming.
20
+ */
21
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
22
+ function ButtonSubmit({
23
+ onPress,
24
+ title,
25
+ leftIcon,
26
+ variant = 'primary',
27
+ fullWidth = true,
28
+ disabled = false,
29
+ loading = false,
30
+ appWidth,
31
+ isTabletInstrusive,
32
+ fontFamily,
33
+ fontSize = 16,
34
+ textColor: textColorProp,
35
+ backgroundColor: backgroundColorProp,
36
+ pressedColor: pressedColorProp,
37
+ disabledBackgroundColor: disabledBgProp,
38
+ disabledTextColor: disabledTextProp,
39
+ borderColor: borderColorProp,
40
+ containerStyle,
41
+ style,
42
+ textStyle,
43
+ numberOfLines = 1
44
+ }) {
45
+ // const [pressed, setPressed] = useState(false)
46
+ const isPrimary = variant === 'primary';
47
+ const currentStyles = useMemo(() => {
48
+ const base = (() => {
49
+ if (isPrimary) {
50
+ return {
51
+ bg: PRIMARY_COLOR,
52
+ disabledBg: BG_DISABLED,
53
+ textColor: TEXT_WHITE,
54
+ border: undefined,
55
+ borderW: 0,
56
+ pressedBg: pressedColorProp ?? PRESSED_COLOR,
57
+ pressedText: TEXT_WHITE,
58
+ pressedBorder: undefined
59
+ };
60
+ }
61
+ return {
62
+ bg: BG_BUTTON_SECONDARY,
63
+ disabledBg: BG_DISABLED_SECONDARY,
64
+ textColor: ERROR_COLOR,
65
+ border: borderColorProp ?? ERROR_COLOR,
66
+ borderW: 1.2,
67
+ pressedBg: BG_BUTTON_SECONDARY,
68
+ pressedText: pressedColorProp ?? PRESSED_COLOR,
69
+ pressedBorder: pressedColorProp ?? PRESSED_COLOR
70
+ };
71
+ })();
72
+ if (disabled || loading) {
73
+ return {
74
+ bg: disabledBgProp ?? base.disabledBg,
75
+ text: disabledTextProp ?? TEXT_DISABLED,
76
+ border: isPrimary ? undefined : disabledTextProp ?? TEXT_DISABLED,
77
+ borderW: base.borderW
78
+ };
79
+ }
80
+
81
+ // if (pressed) {
82
+ // return {
83
+ // bg: base.pressedBg,
84
+ // text: base.pressedText,
85
+ // border: base.pressedBorder,
86
+ // borderW: base.borderW,
87
+ // }
88
+ // }
89
+
90
+ return {
91
+ bg: backgroundColorProp ?? base.bg,
92
+ text: textColorProp ?? base.textColor,
93
+ border: base.border,
94
+ borderW: base.borderW
95
+ };
96
+ }, [isPrimary, disabled, loading, pressedColorProp, borderColorProp, disabledBgProp, disabledTextProp, backgroundColorProp, textColorProp]);
97
+ const layout = useMemo(() => {
98
+ const widthStyle = (() => {
99
+ if (isTabletInstrusive) return {
100
+ width: 200
101
+ };
102
+ if (fullWidth) return {
103
+ width: '100%'
104
+ };
105
+ return {
106
+ alignSelf: 'flex-start'
107
+ };
108
+ })();
109
+ const loaderColor = (() => {
110
+ if (disabled) return TEXT_DISABLED;
111
+ if (isPrimary) return TEXT_WHITE;
112
+ return ERROR_COLOR;
113
+ })();
114
+ return {
115
+ width: widthStyle,
116
+ loaderColor,
117
+ opacity: loading ? 0 : 1,
118
+ marginTop: f.w_p(appWidth, 10)
119
+ };
120
+ }, [isTabletInstrusive, fullWidth, disabled, isPrimary, loading, appWidth]);
121
+ return /*#__PURE__*/_jsx(View, {
122
+ style: [styles.container, {
123
+ marginTop: layout.marginTop
124
+ }, containerStyle],
125
+ children: /*#__PURE__*/_jsxs(Pressable, {
126
+ onPress: disabled || loading ? undefined : onPress
127
+ // onPressIn={() => setPressed(true)}
128
+ // onPressOut={() => setPressed(false)}
129
+ ,
130
+ disabled: disabled,
131
+ style: [styles.button, layout.width, {
132
+ backgroundColor: currentStyles.bg,
133
+ borderWidth: currentStyles.borderW,
134
+ borderColor: currentStyles.border
135
+ }, style],
136
+ children: [loading && /*#__PURE__*/_jsx(ActivityIndicator, {
137
+ style: styles.loader,
138
+ color: layout.loaderColor
139
+ }), /*#__PURE__*/_jsxs(View, {
140
+ style: styles.contentRow,
141
+ children: [leftIcon != null && leftIcon !== '' && /*#__PURE__*/_jsx(Text, {
142
+ style: [styles.text, styles.leftIcon, {
143
+ fontSize,
144
+ fontFamily,
145
+ color: currentStyles.text,
146
+ opacity: layout.opacity
147
+ }, textStyle],
148
+ children: leftIcon
149
+ }), /*#__PURE__*/_jsx(Text, {
150
+ style: [styles.text, {
151
+ fontSize,
152
+ fontFamily,
153
+ color: currentStyles.text,
154
+ opacity: layout.opacity
155
+ }, textStyle],
156
+ numberOfLines: numberOfLines,
157
+ ellipsizeMode: "tail",
158
+ children: title
159
+ })]
160
+ })]
161
+ })
162
+ });
163
+ }
164
+ export default ButtonSubmit;
165
+ const styles = StyleSheet.create({
166
+ container: {
167
+ width: '100%'
168
+ },
169
+ button: {
170
+ borderRadius: 8,
171
+ paddingVertical: 14,
172
+ paddingHorizontal: 20,
173
+ justifyContent: 'center',
174
+ alignItems: 'center',
175
+ minHeight: 44,
176
+ maxWidth: '100%'
177
+ },
178
+ loader: {
179
+ position: 'absolute'
180
+ },
181
+ contentRow: {
182
+ flexDirection: 'row',
183
+ alignItems: 'center',
184
+ gap: 6
185
+ },
186
+ leftIcon: {
187
+ marginRight: 0
188
+ },
189
+ text: {
190
+ fontWeight: '500',
191
+ flexShrink: 1
192
+ }
193
+ });
194
+ //# sourceMappingURL=ButtonSubmit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["f","useMemo","ActivityIndicator","Pressable","StyleSheet","Text","View","BG_BUTTON_SECONDARY","BG_DISABLED","BG_DISABLED_SECONDARY","ERROR_COLOR","PRESSED_COLOR","PRIMARY_COLOR","TEXT_DISABLED","TEXT_WHITE","jsx","_jsx","jsxs","_jsxs","ButtonSubmit","onPress","title","leftIcon","variant","fullWidth","disabled","loading","appWidth","isTabletInstrusive","fontFamily","fontSize","textColor","textColorProp","backgroundColor","backgroundColorProp","pressedColor","pressedColorProp","disabledBackgroundColor","disabledBgProp","disabledTextColor","disabledTextProp","borderColor","borderColorProp","containerStyle","style","textStyle","numberOfLines","isPrimary","currentStyles","base","bg","disabledBg","border","undefined","borderW","pressedBg","pressedText","pressedBorder","text","layout","widthStyle","width","alignSelf","loaderColor","opacity","marginTop","w_p","styles","container","children","button","borderWidth","loader","color","contentRow","ellipsizeMode","create","borderRadius","paddingVertical","paddingHorizontal","justifyContent","alignItems","minHeight","maxWidth","position","flexDirection","gap","marginRight","fontWeight","flexShrink"],"sourceRoot":"../../../src","sources":["component/ButtonSubmit.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+
3
+ import { useMemo, useState } from 'react';
4
+ import { View, Text, StyleSheet, TextInput } from 'react-native';
5
+ import * as f from '@utils/common';
6
+ import { BG_DEFAULT, BORDER_FOCUS, BORDER_SECONDARY, ERROR_COLOR, TEXT_DARK, TEXT_NOTE, TEXT_PLACEHOLDER } from '@utils/constants';
7
+ import ErrorIcon from '@/assets/ErrorIcon';
8
+
9
+ /**
10
+ * Props for the single-line `Input` component.
11
+ *
12
+ * Renders a label, single-line text input, optional note, error,
13
+ * and an optional character counter.
14
+ */
15
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
+ const DEFAULT_BG = BG_DEFAULT;
17
+ const DEFAULT_BORDER = BORDER_SECONDARY;
18
+ const DEFAULT_FOCUS_BORDER = BORDER_FOCUS;
19
+ const DEFAULT_TEXT = TEXT_DARK;
20
+ const DEFAULT_PLACEHOLDER = TEXT_PLACEHOLDER;
21
+ const DEFAULT_COUNTER = TEXT_PLACEHOLDER;
22
+ const DEFAULT_NOTE = TEXT_NOTE;
23
+ const DEFAULT_ERROR = ERROR_COLOR;
24
+ function Input({
25
+ value,
26
+ onChangeText,
27
+ placeholder = 'Placeholder',
28
+ label,
29
+ note,
30
+ error,
31
+ maxLength,
32
+ showCounter = true,
33
+ appWidth,
34
+ backgroundColor = DEFAULT_BG,
35
+ borderColor = DEFAULT_BORDER,
36
+ focusBackgroundColor = DEFAULT_BG,
37
+ focusBorderColor = DEFAULT_FOCUS_BORDER,
38
+ errorBorderColor = DEFAULT_ERROR,
39
+ fontFamily,
40
+ fontSize = 16,
41
+ placeholderTextColor = DEFAULT_PLACEHOLDER,
42
+ textColor = DEFAULT_TEXT,
43
+ labelStyle,
44
+ noteStyle,
45
+ errorStyle,
46
+ counterStyle,
47
+ style
48
+ }) {
49
+ const [focused, setFocused] = useState(false);
50
+ const length = value.length;
51
+ const hasError = useMemo(() => error != null && error !== '', [error]);
52
+ const showCounterEl = useMemo(() => maxLength != null && showCounter, [maxLength, showCounter]);
53
+ const effectiveBorderColor = useMemo(() => {
54
+ if (hasError) return errorBorderColor;
55
+ if (focused) return focusBorderColor;
56
+ return borderColor;
57
+ }, [hasError, focused, errorBorderColor, focusBorderColor, borderColor]);
58
+ const inputContainerStyle = useMemo(() => [styles.inputWrapper, {
59
+ paddingHorizontal: f.w_p(appWidth, 8),
60
+ paddingVertical: 10,
61
+ borderRadius: f.isTablet ? 6 : 4,
62
+ backgroundColor: focused ? focusBackgroundColor : backgroundColor,
63
+ borderColor: effectiveBorderColor,
64
+ borderWidth: 1
65
+ }], [appWidth, focused, focusBackgroundColor, backgroundColor, effectiveBorderColor]);
66
+ const textInputStyle = useMemo(() => [styles.input, {
67
+ fontFamily,
68
+ fontSize,
69
+ color: textColor,
70
+ paddingRight: showCounterEl ? 48 : 0
71
+ }], [fontFamily, fontSize, textColor, showCounterEl]);
72
+ return /*#__PURE__*/_jsxs(View, {
73
+ style: [styles.wrapper, style],
74
+ children: [label != null && label !== '' && /*#__PURE__*/_jsx(Text, {
75
+ style: [styles.label, labelStyle],
76
+ children: label
77
+ }), /*#__PURE__*/_jsxs(View, {
78
+ style: inputContainerStyle,
79
+ children: [/*#__PURE__*/_jsx(TextInput, {
80
+ placeholder: placeholder,
81
+ placeholderTextColor: placeholderTextColor,
82
+ style: textInputStyle,
83
+ value: value,
84
+ onChangeText: text => {
85
+ if (maxLength == null || text.length <= maxLength) {
86
+ onChangeText(text);
87
+ } else {
88
+ onChangeText(text.slice(0, maxLength));
89
+ }
90
+ },
91
+ onFocus: () => setFocused(true),
92
+ onBlur: () => setFocused(false),
93
+ autoCorrect: false
94
+ }), showCounterEl && /*#__PURE__*/_jsx(View, {
95
+ style: styles.counterWrapper,
96
+ pointerEvents: "none",
97
+ children: /*#__PURE__*/_jsxs(Text, {
98
+ style: [styles.counter, {
99
+ color: DEFAULT_COUNTER
100
+ }, counterStyle],
101
+ children: [length, "/", maxLength]
102
+ })
103
+ })]
104
+ }), note != null && note !== '' && /*#__PURE__*/_jsx(Text, {
105
+ style: [styles.note, {
106
+ color: DEFAULT_NOTE
107
+ }, noteStyle],
108
+ children: note
109
+ }), hasError && /*#__PURE__*/_jsxs(View, {
110
+ style: styles.errorWrap,
111
+ children: [/*#__PURE__*/_jsx(ErrorIcon, {
112
+ size: 20,
113
+ color: ERROR_COLOR
114
+ }), /*#__PURE__*/_jsx(Text, {
115
+ style: [styles.error, {
116
+ color: DEFAULT_ERROR
117
+ }, errorStyle],
118
+ children: error
119
+ })]
120
+ })]
121
+ });
122
+ }
123
+ export default Input;
124
+ const styles = StyleSheet.create({
125
+ wrapper: {
126
+ width: '100%'
127
+ },
128
+ label: {
129
+ fontSize: 16,
130
+ fontWeight: '600',
131
+ color: '#000000',
132
+ marginBottom: 8
133
+ },
134
+ inputWrapper: {
135
+ width: '100%',
136
+ position: 'relative',
137
+ flexDirection: 'row',
138
+ alignItems: 'center'
139
+ },
140
+ input: {
141
+ flex: 1,
142
+ padding: 0,
143
+ minHeight: 20
144
+ },
145
+ counterWrapper: {
146
+ position: 'absolute',
147
+ right: 12,
148
+ top: 0,
149
+ bottom: 0,
150
+ justifyContent: 'center'
151
+ },
152
+ counter: {
153
+ fontSize: 12
154
+ },
155
+ note: {
156
+ fontSize: 12,
157
+ marginTop: 8
158
+ },
159
+ errorWrap: {
160
+ flexDirection: 'row',
161
+ alignItems: 'center',
162
+ marginTop: 8,
163
+ gap: 6
164
+ },
165
+ error: {
166
+ fontSize: 14,
167
+ lineHeight: 20,
168
+ flex: 1,
169
+ fontWeight: '400'
170
+ }
171
+ });
172
+ //# sourceMappingURL=Input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","useState","View","Text","StyleSheet","TextInput","f","BG_DEFAULT","BORDER_FOCUS","BORDER_SECONDARY","ERROR_COLOR","TEXT_DARK","TEXT_NOTE","TEXT_PLACEHOLDER","ErrorIcon","jsx","_jsx","jsxs","_jsxs","DEFAULT_BG","DEFAULT_BORDER","DEFAULT_FOCUS_BORDER","DEFAULT_TEXT","DEFAULT_PLACEHOLDER","DEFAULT_COUNTER","DEFAULT_NOTE","DEFAULT_ERROR","Input","value","onChangeText","placeholder","label","note","error","maxLength","showCounter","appWidth","backgroundColor","borderColor","focusBackgroundColor","focusBorderColor","errorBorderColor","fontFamily","fontSize","placeholderTextColor","textColor","labelStyle","noteStyle","errorStyle","counterStyle","style","focused","setFocused","length","hasError","showCounterEl","effectiveBorderColor","inputContainerStyle","styles","inputWrapper","paddingHorizontal","w_p","paddingVertical","borderRadius","isTablet","borderWidth","textInputStyle","input","color","paddingRight","wrapper","children","text","slice","onFocus","onBlur","autoCorrect","counterWrapper","pointerEvents","counter","errorWrap","size","create","width","fontWeight","marginBottom","position","flexDirection","alignItems","flex","padding","minHeight","right","top","bottom","justifyContent","marginTop","gap","lineHeight"],"sourceRoot":"../../../src","sources":["component/Input.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+
3
+ import { useMemo } from 'react';
4
+ import { View, Text, StyleSheet } from 'react-native';
5
+ import * as f from '@utils/common';
6
+ import ButtonSubmit from '@component/ButtonSubmit';
7
+ import CheckIcon from '@/assets/CheckIcon';
8
+ import PlusIcon from '@/assets/PlusIcon';
9
+ import { BG_DEFAULT, BG_SECONDARY, BORDER_DEFAULT, BORDER_SELECTED, ERROR_COLOR, PRIMARY_COLOR, TEXT_DARK, TEXT_DEFAULT, TEXT_WHITE } from '@utils/constants';
10
+ import * as Haptics from 'expo-haptics';
11
+
12
+ /**
13
+ * Visual variant for selected tags in `MultiSelectButtons`.
14
+ *
15
+ * - `'primary'` – solid primary background with white text.
16
+ * - `'secondary'` – light background with colored border and dark text.
17
+ */
18
+
19
+ /**
20
+ * Single option for `MultiSelectButtons`.
21
+ */
22
+
23
+ /**
24
+ * Props for the `MultiSelectButtons` component.
25
+ *
26
+ * Renders a question and a wrap layout of tag-like buttons allowing multiple selections.
27
+ */
28
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
29
+ function MultiSelectButtons({
30
+ question,
31
+ options,
32
+ value,
33
+ onSelect,
34
+ appWidth,
35
+ selectedVariant = 'secondary',
36
+ error,
37
+ selectedBackgroundColor,
38
+ selectedBorderColor,
39
+ selectedTextColor,
40
+ questionStyle,
41
+ errorStyle,
42
+ errorColor = ERROR_COLOR,
43
+ iconSize = 16,
44
+ optionNumberOfLines = 1,
45
+ style
46
+ }) {
47
+ const hasError = useMemo(() => error != null && error !== '', [error]);
48
+ const selectedSet = useMemo(() => new Set(value), [value]);
49
+ const isPrimary = selectedVariant === 'primary';
50
+ const selectedBg = useMemo(() => selectedBackgroundColor ?? (isPrimary ? PRIMARY_COLOR : BG_SECONDARY), [selectedBackgroundColor, isPrimary]);
51
+ const selectedBorder = useMemo(() => isPrimary ? selectedBg : selectedBorderColor ?? BORDER_SELECTED, [isPrimary, selectedBg, selectedBorderColor]);
52
+ const selectedText = useMemo(() => selectedTextColor ?? (isPrimary ? TEXT_WHITE : TEXT_DEFAULT), [selectedTextColor, isPrimary]);
53
+ const toggle = optionValue => {
54
+ if (selectedSet.has(optionValue)) {
55
+ onSelect(value.filter(v => v !== optionValue));
56
+ } else {
57
+ onSelect([...value, optionValue]);
58
+ }
59
+ Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
60
+ };
61
+ const marginTop = useMemo(() => [styles.optionsRow, {
62
+ marginTop: f.w_p(appWidth, 10)
63
+ }], [appWidth]);
64
+ return /*#__PURE__*/_jsxs(View, {
65
+ style: [styles.wrapper, style],
66
+ children: [question != null && question !== '' && /*#__PURE__*/_jsx(Text, {
67
+ style: [styles.question, questionStyle],
68
+ children: question
69
+ }), /*#__PURE__*/_jsx(View, {
70
+ style: marginTop,
71
+ children: options.map(opt => {
72
+ const isSelected = selectedSet.has(opt.value);
73
+ const buttonStyles = (() => {
74
+ if (isSelected) {
75
+ return {
76
+ bg: selectedBg,
77
+ text: selectedText,
78
+ border: selectedBorder
79
+ };
80
+ }
81
+ if (hasError) {
82
+ return {
83
+ bg: BG_DEFAULT,
84
+ text: errorColor,
85
+ border: errorColor
86
+ };
87
+ }
88
+ return {
89
+ bg: BG_DEFAULT,
90
+ text: TEXT_DARK,
91
+ border: BORDER_DEFAULT
92
+ };
93
+ })();
94
+ return /*#__PURE__*/_jsx(View, {
95
+ style: styles.optionSlot,
96
+ children: /*#__PURE__*/_jsx(ButtonSubmit, {
97
+ appWidth: appWidth,
98
+ title: opt.label,
99
+ leftIcon: isSelected ? /*#__PURE__*/_jsx(CheckIcon, {
100
+ size: iconSize,
101
+ color: buttonStyles.text
102
+ }) : /*#__PURE__*/_jsx(PlusIcon, {
103
+ size: iconSize,
104
+ color: buttonStyles.text
105
+ }),
106
+ onPress: () => toggle(opt.value),
107
+ variant: "secondary",
108
+ fullWidth: false,
109
+ backgroundColor: buttonStyles.bg,
110
+ textColor: buttonStyles.text,
111
+ borderColor: buttonStyles.border,
112
+ containerStyle: styles.tagContainer,
113
+ numberOfLines: optionNumberOfLines,
114
+ style: styles.tagButton
115
+ })
116
+ }, opt.value);
117
+ })
118
+ }), hasError && /*#__PURE__*/_jsxs(View, {
119
+ style: styles.errorRow,
120
+ children: [/*#__PURE__*/_jsx(Text, {
121
+ style: [styles.errorIcon, {
122
+ color: errorColor
123
+ }],
124
+ children: "!"
125
+ }), /*#__PURE__*/_jsx(Text, {
126
+ style: [styles.errorText, {
127
+ color: errorColor
128
+ }, errorStyle],
129
+ children: error
130
+ })]
131
+ })]
132
+ });
133
+ }
134
+ export default MultiSelectButtons;
135
+ const styles = StyleSheet.create({
136
+ wrapper: {
137
+ width: '100%'
138
+ },
139
+ question: {
140
+ fontSize: 16,
141
+ fontWeight: '600',
142
+ color: '#000000',
143
+ marginBottom: 4
144
+ },
145
+ optionsRow: {
146
+ flexDirection: 'row',
147
+ flexWrap: 'wrap',
148
+ gap: 10
149
+ },
150
+ optionSlot: {
151
+ alignSelf: 'flex-start'
152
+ },
153
+ tagContainer: {
154
+ marginTop: 0
155
+ },
156
+ tagButton: {
157
+ paddingVertical: 8,
158
+ paddingHorizontal: 12
159
+ },
160
+ errorRow: {
161
+ flexDirection: 'row',
162
+ alignItems: 'center',
163
+ marginTop: 8,
164
+ gap: 6
165
+ },
166
+ errorIcon: {
167
+ fontSize: 14,
168
+ fontWeight: '700'
169
+ },
170
+ errorText: {
171
+ fontSize: 12
172
+ }
173
+ });
174
+ //# sourceMappingURL=MultiSelectButtons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","View","Text","StyleSheet","f","ButtonSubmit","CheckIcon","PlusIcon","BG_DEFAULT","BG_SECONDARY","BORDER_DEFAULT","BORDER_SELECTED","ERROR_COLOR","PRIMARY_COLOR","TEXT_DARK","TEXT_DEFAULT","TEXT_WHITE","Haptics","jsx","_jsx","jsxs","_jsxs","MultiSelectButtons","question","options","value","onSelect","appWidth","selectedVariant","error","selectedBackgroundColor","selectedBorderColor","selectedTextColor","questionStyle","errorStyle","errorColor","iconSize","optionNumberOfLines","style","hasError","selectedSet","Set","isPrimary","selectedBg","selectedBorder","selectedText","toggle","optionValue","has","filter","v","impactAsync","ImpactFeedbackStyle","Light","marginTop","styles","optionsRow","w_p","wrapper","children","map","opt","isSelected","buttonStyles","bg","text","border","optionSlot","title","label","leftIcon","size","color","onPress","variant","fullWidth","backgroundColor","textColor","borderColor","containerStyle","tagContainer","numberOfLines","tagButton","errorRow","errorIcon","errorText","create","width","fontSize","fontWeight","marginBottom","flexDirection","flexWrap","gap","alignSelf","paddingVertical","paddingHorizontal","alignItems"],"sourceRoot":"../../../src","sources":["component/MultiSelectButtons.tsx"],"mappings":"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","ignoreList":[]}