@harkenapp/sdk-react-native 0.0.1-alpha.1 → 0.0.1-alpha.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.
Files changed (278) hide show
  1. package/README.md +44 -7
  2. package/app.plugin.cjs +12 -17
  3. package/dist/__mocks__/async-storage.d.ts +16 -0
  4. package/dist/__mocks__/async-storage.d.ts.map +1 -0
  5. package/dist/__mocks__/async-storage.js +39 -0
  6. package/dist/__mocks__/async-storage.js.map +1 -0
  7. package/dist/__mocks__/expo-document-picker.d.ts +26 -0
  8. package/dist/__mocks__/expo-document-picker.d.ts.map +1 -0
  9. package/dist/__mocks__/expo-document-picker.js +25 -0
  10. package/dist/__mocks__/expo-document-picker.js.map +1 -0
  11. package/dist/__mocks__/expo-file-system.d.ts +42 -0
  12. package/dist/__mocks__/expo-file-system.d.ts.map +1 -0
  13. package/dist/__mocks__/expo-file-system.js +37 -0
  14. package/dist/__mocks__/expo-file-system.js.map +1 -0
  15. package/dist/__mocks__/expo-image-picker.d.ts +30 -0
  16. package/dist/__mocks__/expo-image-picker.d.ts.map +1 -0
  17. package/dist/__mocks__/expo-image-picker.js +30 -0
  18. package/dist/__mocks__/expo-image-picker.js.map +1 -0
  19. package/dist/__mocks__/expo-secure-store.d.ts +15 -0
  20. package/dist/__mocks__/expo-secure-store.d.ts.map +1 -0
  21. package/dist/__mocks__/expo-secure-store.js +30 -0
  22. package/dist/__mocks__/expo-secure-store.js.map +1 -0
  23. package/dist/__mocks__/react-native.d.ts +73 -0
  24. package/dist/__mocks__/react-native.d.ts.map +1 -0
  25. package/dist/__mocks__/react-native.js +45 -0
  26. package/dist/__mocks__/react-native.js.map +1 -0
  27. package/dist/api/client.d.ts +8 -8
  28. package/dist/api/client.d.ts.map +1 -1
  29. package/dist/api/client.js +17 -19
  30. package/dist/api/client.js.map +1 -1
  31. package/dist/api/client.test.d.ts +2 -0
  32. package/dist/api/client.test.d.ts.map +1 -0
  33. package/dist/api/client.test.js +417 -0
  34. package/dist/api/client.test.js.map +1 -0
  35. package/dist/api/errors.d.ts +3 -3
  36. package/dist/api/errors.d.ts.map +1 -1
  37. package/dist/api/errors.js +3 -3
  38. package/dist/api/errors.js.map +1 -1
  39. package/dist/api/errors.test.d.ts +2 -0
  40. package/dist/api/errors.test.d.ts.map +1 -0
  41. package/dist/api/errors.test.js +155 -0
  42. package/dist/api/errors.test.js.map +1 -0
  43. package/dist/api/index.d.ts +6 -6
  44. package/dist/api/index.d.ts.map +1 -1
  45. package/dist/api/index.js.map +1 -1
  46. package/dist/api/retry.d.ts +1 -1
  47. package/dist/api/retry.d.ts.map +1 -1
  48. package/dist/api/retry.js.map +1 -1
  49. package/dist/api/retry.test.d.ts +2 -0
  50. package/dist/api/retry.test.d.ts.map +1 -0
  51. package/dist/api/retry.test.js +193 -0
  52. package/dist/api/retry.test.js.map +1 -0
  53. package/dist/attachments/FeedbackSheet.d.ts +36 -13
  54. package/dist/attachments/FeedbackSheet.d.ts.map +1 -1
  55. package/dist/attachments/FeedbackSheet.js +50 -30
  56. package/dist/attachments/FeedbackSheet.js.map +1 -1
  57. package/dist/attachments/index.d.ts +2 -2
  58. package/dist/components/AttachmentGrid.d.ts +12 -4
  59. package/dist/components/AttachmentGrid.d.ts.map +1 -1
  60. package/dist/components/AttachmentGrid.js +44 -34
  61. package/dist/components/AttachmentGrid.js.map +1 -1
  62. package/dist/components/AttachmentPicker.d.ts +3 -3
  63. package/dist/components/AttachmentPicker.d.ts.map +1 -1
  64. package/dist/components/AttachmentPicker.js +34 -36
  65. package/dist/components/AttachmentPicker.js.map +1 -1
  66. package/dist/components/AttachmentPreview.d.ts +10 -4
  67. package/dist/components/AttachmentPreview.d.ts.map +1 -1
  68. package/dist/components/AttachmentPreview.js +48 -34
  69. package/dist/components/AttachmentPreview.js.map +1 -1
  70. package/dist/components/CategorySelector.d.ts +3 -3
  71. package/dist/components/CategorySelector.d.ts.map +1 -1
  72. package/dist/components/CategorySelector.js +21 -27
  73. package/dist/components/CategorySelector.js.map +1 -1
  74. package/dist/components/FeedbackForm.d.ts +3 -3
  75. package/dist/components/FeedbackForm.d.ts.map +1 -1
  76. package/dist/components/FeedbackForm.js +7 -8
  77. package/dist/components/FeedbackForm.js.map +1 -1
  78. package/dist/components/FeedbackSheet.d.ts +34 -11
  79. package/dist/components/FeedbackSheet.d.ts.map +1 -1
  80. package/dist/components/FeedbackSheet.js +46 -28
  81. package/dist/components/FeedbackSheet.js.map +1 -1
  82. package/dist/components/ThemedButton.d.ts +16 -5
  83. package/dist/components/ThemedButton.d.ts.map +1 -1
  84. package/dist/components/ThemedButton.js +38 -29
  85. package/dist/components/ThemedButton.js.map +1 -1
  86. package/dist/components/ThemedText.d.ts +3 -3
  87. package/dist/components/ThemedText.d.ts.map +1 -1
  88. package/dist/components/ThemedText.js +1 -1
  89. package/dist/components/ThemedText.js.map +1 -1
  90. package/dist/components/ThemedTextInput.d.ts +11 -2
  91. package/dist/components/ThemedTextInput.d.ts.map +1 -1
  92. package/dist/components/ThemedTextInput.js +19 -9
  93. package/dist/components/ThemedTextInput.js.map +1 -1
  94. package/dist/components/UploadStatusOverlay.d.ts +11 -3
  95. package/dist/components/UploadStatusOverlay.d.ts.map +1 -1
  96. package/dist/components/UploadStatusOverlay.js +59 -76
  97. package/dist/components/UploadStatusOverlay.js.map +1 -1
  98. package/dist/components/index.d.ts +18 -18
  99. package/dist/components/index.d.ts.map +1 -1
  100. package/dist/components/index.js.map +1 -1
  101. package/dist/context/HarkenContext.d.ts +20 -15
  102. package/dist/context/HarkenContext.d.ts.map +1 -1
  103. package/dist/context/HarkenContext.js +20 -17
  104. package/dist/context/HarkenContext.js.map +1 -1
  105. package/dist/context/index.d.ts +2 -2
  106. package/dist/domain/index.d.ts +2 -2
  107. package/dist/domain/index.d.ts.map +1 -1
  108. package/dist/domain/index.js.map +1 -1
  109. package/dist/hooks/index.d.ts +5 -5
  110. package/dist/hooks/useAnonymousId.js +1 -1
  111. package/dist/hooks/useAnonymousId.test.d.ts +2 -0
  112. package/dist/hooks/useAnonymousId.test.d.ts.map +1 -0
  113. package/dist/hooks/useAnonymousId.test.js +154 -0
  114. package/dist/hooks/useAnonymousId.test.js.map +1 -0
  115. package/dist/hooks/useAttachmentPicker.d.ts +3 -3
  116. package/dist/hooks/useAttachmentPicker.js +7 -7
  117. package/dist/hooks/useAttachmentStatus.d.ts +1 -1
  118. package/dist/hooks/useAttachmentStatus.d.ts.map +1 -1
  119. package/dist/hooks/useAttachmentStatus.js.map +1 -1
  120. package/dist/hooks/useAttachmentUpload.d.ts +2 -2
  121. package/dist/hooks/useAttachmentUpload.d.ts.map +1 -1
  122. package/dist/hooks/useAttachmentUpload.js +5 -5
  123. package/dist/hooks/useAttachmentUpload.js.map +1 -1
  124. package/dist/hooks/useAttachmentUpload.test.d.ts +2 -0
  125. package/dist/hooks/useAttachmentUpload.test.d.ts.map +1 -0
  126. package/dist/hooks/useAttachmentUpload.test.js +542 -0
  127. package/dist/hooks/useAttachmentUpload.test.js.map +1 -0
  128. package/dist/hooks/useFeedback.d.ts +4 -4
  129. package/dist/hooks/useFeedback.d.ts.map +1 -1
  130. package/dist/hooks/useFeedback.js +3 -5
  131. package/dist/hooks/useFeedback.js.map +1 -1
  132. package/dist/hooks/useFeedback.test.d.ts +2 -0
  133. package/dist/hooks/useFeedback.test.d.ts.map +1 -0
  134. package/dist/hooks/useFeedback.test.js +299 -0
  135. package/dist/hooks/useFeedback.test.js.map +1 -0
  136. package/dist/hooks/useHarkenContext.d.ts +1 -1
  137. package/dist/hooks/useHarkenContext.js +1 -1
  138. package/dist/hooks/useHarkenTheme.d.ts +27 -3
  139. package/dist/hooks/useHarkenTheme.d.ts.map +1 -1
  140. package/dist/hooks/useHarkenTheme.js +26 -2
  141. package/dist/hooks/useHarkenTheme.js.map +1 -1
  142. package/dist/index.d.ts +28 -28
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js.map +1 -1
  145. package/dist/services/index.d.ts +3 -3
  146. package/dist/services/index.d.ts.map +1 -1
  147. package/dist/services/index.js.map +1 -1
  148. package/dist/services/uploadQueueService.d.ts +2 -2
  149. package/dist/services/uploadQueueService.d.ts.map +1 -1
  150. package/dist/services/uploadQueueService.js +16 -17
  151. package/dist/services/uploadQueueService.js.map +1 -1
  152. package/dist/services/uploadQueueService.test.d.ts +2 -0
  153. package/dist/services/uploadQueueService.test.d.ts.map +1 -0
  154. package/dist/services/uploadQueueService.test.js +426 -0
  155. package/dist/services/uploadQueueService.test.js.map +1 -0
  156. package/dist/services/uploadQueueStorage.d.ts +1 -1
  157. package/dist/services/uploadQueueStorage.d.ts.map +1 -1
  158. package/dist/services/uploadQueueStorage.js +4 -4
  159. package/dist/services/uploadQueueStorage.js.map +1 -1
  160. package/dist/services/uploadQueueStorage.test.d.ts +2 -0
  161. package/dist/services/uploadQueueStorage.test.d.ts.map +1 -0
  162. package/dist/services/uploadQueueStorage.test.js +200 -0
  163. package/dist/services/uploadQueueStorage.test.js.map +1 -0
  164. package/dist/storage/IdentityStore.d.ts +1 -1
  165. package/dist/storage/IdentityStore.d.ts.map +1 -1
  166. package/dist/storage/IdentityStore.js.map +1 -1
  167. package/dist/storage/IdentityStore.test.d.ts +2 -0
  168. package/dist/storage/IdentityStore.test.d.ts.map +1 -0
  169. package/dist/storage/IdentityStore.test.js +176 -0
  170. package/dist/storage/IdentityStore.test.js.map +1 -0
  171. package/dist/storage/SecureStoreAdapter.d.ts +1 -1
  172. package/dist/storage/SecureStoreAdapter.test.d.ts +2 -0
  173. package/dist/storage/SecureStoreAdapter.test.d.ts.map +1 -0
  174. package/dist/storage/SecureStoreAdapter.test.js +114 -0
  175. package/dist/storage/SecureStoreAdapter.test.js.map +1 -0
  176. package/dist/storage/defaultStorage.d.ts +1 -1
  177. package/dist/storage/defaultStorage.js +4 -4
  178. package/dist/storage/defaultStorage.test.d.ts +2 -0
  179. package/dist/storage/defaultStorage.test.d.ts.map +1 -0
  180. package/dist/storage/defaultStorage.test.js +159 -0
  181. package/dist/storage/defaultStorage.test.js.map +1 -0
  182. package/dist/storage/index.d.ts +5 -5
  183. package/dist/storage/types.js +1 -1
  184. package/dist/theme/defaults.d.ts +14 -3
  185. package/dist/theme/defaults.d.ts.map +1 -1
  186. package/dist/theme/defaults.js +58 -43
  187. package/dist/theme/defaults.js.map +1 -1
  188. package/dist/theme/index.d.ts +3 -2
  189. package/dist/theme/index.d.ts.map +1 -1
  190. package/dist/theme/index.js +4 -1
  191. package/dist/theme/index.js.map +1 -1
  192. package/dist/theme/resolver.d.ts +16 -0
  193. package/dist/theme/resolver.d.ts.map +1 -0
  194. package/dist/theme/resolver.js +375 -0
  195. package/dist/theme/resolver.js.map +1 -0
  196. package/dist/theme/resolver.test.d.ts +2 -0
  197. package/dist/theme/resolver.test.d.ts.map +1 -0
  198. package/dist/theme/resolver.test.js +344 -0
  199. package/dist/theme/resolver.test.js.map +1 -0
  200. package/dist/theme/types.d.ts +378 -5
  201. package/dist/theme/types.d.ts.map +1 -1
  202. package/dist/types/config.d.ts +4 -4
  203. package/dist/types/index.d.ts +2 -2
  204. package/dist/utils/index.d.ts +1 -1
  205. package/dist/utils/uuid.d.ts.map +1 -1
  206. package/dist/utils/uuid.js +4 -5
  207. package/dist/utils/uuid.js.map +1 -1
  208. package/dist/utils/uuid.test.d.ts +2 -0
  209. package/dist/utils/uuid.test.d.ts.map +1 -0
  210. package/dist/utils/uuid.test.js +78 -0
  211. package/dist/utils/uuid.test.js.map +1 -0
  212. package/package.json +21 -13
  213. package/src/@types/expo-file-system-legacy.d.ts +3 -3
  214. package/src/__mocks__/async-storage.ts +46 -0
  215. package/src/__mocks__/expo-document-picker.ts +41 -0
  216. package/src/__mocks__/expo-file-system.ts +62 -0
  217. package/src/__mocks__/expo-image-picker.ts +48 -0
  218. package/src/__mocks__/expo-secure-store.ts +29 -0
  219. package/src/__mocks__/react-native.ts +46 -0
  220. package/src/api/client.test.ts +515 -0
  221. package/src/api/client.ts +45 -64
  222. package/src/api/errors.test.ts +193 -0
  223. package/src/api/errors.ts +7 -11
  224. package/src/api/index.ts +6 -10
  225. package/src/api/retry.test.ts +251 -0
  226. package/src/api/retry.ts +3 -6
  227. package/src/attachments/FeedbackSheet.tsx +100 -80
  228. package/src/attachments/index.ts +2 -2
  229. package/src/components/AttachmentGrid.tsx +54 -45
  230. package/src/components/AttachmentPicker.tsx +43 -54
  231. package/src/components/AttachmentPreview.tsx +51 -47
  232. package/src/components/CategorySelector.tsx +29 -35
  233. package/src/components/FeedbackForm.tsx +23 -35
  234. package/src/components/FeedbackSheet.tsx +89 -68
  235. package/src/components/ThemedButton.tsx +49 -47
  236. package/src/components/ThemedText.tsx +7 -10
  237. package/src/components/ThemedTextInput.tsx +23 -13
  238. package/src/components/UploadStatusOverlay.tsx +66 -89
  239. package/src/components/index.ts +18 -21
  240. package/src/context/HarkenContext.tsx +29 -28
  241. package/src/context/index.ts +2 -2
  242. package/src/domain/index.ts +2 -5
  243. package/src/domain/upload-queue.ts +5 -5
  244. package/src/hooks/index.ts +5 -5
  245. package/src/hooks/useAnonymousId.test.ts +189 -0
  246. package/src/hooks/useAnonymousId.ts +3 -3
  247. package/src/hooks/useAttachmentPicker.ts +12 -12
  248. package/src/hooks/useAttachmentStatus.ts +12 -16
  249. package/src/hooks/useAttachmentUpload.test.ts +632 -0
  250. package/src/hooks/useAttachmentUpload.ts +45 -54
  251. package/src/hooks/useFeedback.test.ts +376 -0
  252. package/src/hooks/useFeedback.ts +12 -14
  253. package/src/hooks/useHarkenContext.ts +4 -4
  254. package/src/hooks/useHarkenTheme.ts +30 -6
  255. package/src/index.ts +28 -52
  256. package/src/services/index.ts +3 -9
  257. package/src/services/uploadQueueService.test.ts +489 -0
  258. package/src/services/uploadQueueService.ts +40 -56
  259. package/src/services/uploadQueueStorage.test.ts +243 -0
  260. package/src/services/uploadQueueStorage.ts +7 -9
  261. package/src/storage/IdentityStore.test.ts +173 -0
  262. package/src/storage/IdentityStore.ts +4 -5
  263. package/src/storage/SecureStoreAdapter.test.ts +147 -0
  264. package/src/storage/SecureStoreAdapter.ts +1 -1
  265. package/src/storage/defaultStorage.test.ts +159 -0
  266. package/src/storage/defaultStorage.ts +6 -6
  267. package/src/storage/index.ts +5 -5
  268. package/src/storage/types.ts +1 -1
  269. package/src/theme/defaults.ts +75 -46
  270. package/src/theme/index.ts +15 -2
  271. package/src/theme/resolver.test.ts +411 -0
  272. package/src/theme/resolver.ts +446 -0
  273. package/src/theme/types.ts +453 -15
  274. package/src/types/config.ts +4 -4
  275. package/src/types/index.ts +2 -2
  276. package/src/utils/index.ts +1 -1
  277. package/src/utils/uuid.test.ts +85 -0
  278. package/src/utils/uuid.ts +4 -7
@@ -53,11 +53,24 @@ const CategorySelector_1 = require("./CategorySelector");
53
53
  *
54
54
  * For attachment support, import from '@harkenapp/sdk-react-native/attachments'.
55
55
  *
56
+ * Uses the following theme tokens:
57
+ * - `colors.formBackground` for background
58
+ * - `spacing.formPadding` for padding
59
+ * - `spacing.sectionGap` for section gaps
60
+ * - `radii.form` for border radius
61
+ *
56
62
  * @example
57
63
  * ```tsx
58
64
  * // Minimal usage
59
65
  * <FeedbackSheet onSuccess={() => navigation.goBack()} />
60
66
  *
67
+ * // For bottom sheet modal embedding
68
+ * <FeedbackSheet
69
+ * layout="auto"
70
+ * title=""
71
+ * onSuccess={() => closeModal()}
72
+ * />
73
+ *
61
74
  * // With customization
62
75
  * <FeedbackSheet
63
76
  * title="Report a Bug"
@@ -74,18 +87,18 @@ const CategorySelector_1 = require("./CategorySelector");
74
87
  * />
75
88
  * ```
76
89
  */
77
- function FeedbackSheet({ onSuccess, onError, onCancel, title = 'Send Feedback', placeholder = 'What would you like to share?', submitLabel = 'Submit', cancelLabel = 'Cancel', categories = CategorySelector_1.DEFAULT_CATEGORIES, requireCategory = false, minMessageLength = 1, maxMessageLength = 5000, successMessage = 'Thank you for your feedback!', showSuccessAlert = true, clearOnSuccess = true, containerStyle, formStyle, }) {
90
+ function FeedbackSheet({ onSuccess, onError, onCancel, title = "Send Feedback", placeholder = "What would you like to share?", submitLabel = "Submit", cancelLabel = "Cancel", categories = CategorySelector_1.DEFAULT_CATEGORIES, requireCategory = false, minMessageLength = 1, maxMessageLength = 5000, successMessage = "Thank you for your feedback!", showSuccessAlert = true, clearOnSuccess = true, layout = "flex", containerStyle, contentStyle, formStyle, }) {
78
91
  const theme = (0, hooks_1.useHarkenTheme)();
92
+ const { form } = theme.components;
79
93
  const { submitFeedback, isSubmitting, error, clearError, isInitializing } = (0, hooks_1.useFeedback)();
80
- const [message, setMessage] = (0, react_1.useState)('');
94
+ const [message, setMessage] = (0, react_1.useState)("");
81
95
  const [category, setCategory] = (0, react_1.useState)(null);
82
96
  const trimmedMessage = message.trim();
83
- const isMessageValid = trimmedMessage.length >= minMessageLength &&
84
- trimmedMessage.length <= maxMessageLength;
97
+ const isMessageValid = trimmedMessage.length >= minMessageLength && trimmedMessage.length <= maxMessageLength;
85
98
  const isCategoryValid = !requireCategory || category !== null;
86
99
  const canSubmit = isMessageValid && isCategoryValid && !isSubmitting && !isInitializing;
87
100
  const resetForm = (0, react_1.useCallback)(() => {
88
- setMessage('');
101
+ setMessage("");
89
102
  setCategory(null);
90
103
  clearError();
91
104
  }, [clearError]);
@@ -96,12 +109,12 @@ function FeedbackSheet({ onSuccess, onError, onCancel, title = 'Send Feedback',
96
109
  try {
97
110
  const result = await submitFeedback({
98
111
  message: trimmedMessage,
99
- category: category ?? 'other',
112
+ category: category ?? "other",
100
113
  });
101
114
  if (showSuccessAlert && successMessage) {
102
- react_native_1.Alert.alert('Success', successMessage, [
115
+ react_native_1.Alert.alert("Success", successMessage, [
103
116
  {
104
- text: 'OK',
117
+ text: "OK",
105
118
  onPress: () => {
106
119
  if (clearOnSuccess) {
107
120
  resetForm();
@@ -119,8 +132,8 @@ function FeedbackSheet({ onSuccess, onError, onCancel, title = 'Send Feedback',
119
132
  }
120
133
  }
121
134
  catch (e) {
122
- const errorMessage = e instanceof Error ? e.message : 'Failed to submit feedback. Please try again.';
123
- react_native_1.Alert.alert('Submission Failed', errorMessage);
135
+ const errorMessage = e instanceof Error ? e.message : "Failed to submit feedback. Please try again.";
136
+ react_native_1.Alert.alert("Submission Failed", errorMessage);
124
137
  onError?.(e instanceof Error ? e : new Error(errorMessage));
125
138
  }
126
139
  }, [
@@ -141,41 +154,48 @@ function FeedbackSheet({ onSuccess, onError, onCancel, title = 'Send Feedback',
141
154
  onCancel?.();
142
155
  }, [resetForm, onCancel]);
143
156
  const baseContainerStyle = {
144
- flex: 1,
145
- backgroundColor: theme.colors.background,
157
+ ...(layout === "flex" ? { flex: 1 } : {}),
158
+ backgroundColor: form.background,
159
+ borderRadius: form.radius,
146
160
  };
147
- const contentStyle = {
148
- flexGrow: 1,
149
- padding: theme.spacing.lg,
161
+ const scrollContentStyle = {
162
+ ...(layout === "flex" ? { flexGrow: 1 } : {}),
163
+ padding: form.padding,
150
164
  };
151
165
  const sectionStyle = {
152
- marginBottom: theme.spacing.lg,
166
+ marginBottom: form.sectionGap,
153
167
  };
154
168
  const buttonRowStyle = {
155
- flexDirection: 'row',
169
+ flexDirection: "row",
156
170
  gap: theme.spacing.sm,
157
171
  marginTop: theme.spacing.md,
158
172
  };
159
173
  const characterCount = trimmedMessage.length;
160
174
  const showCharacterWarning = characterCount > maxMessageLength * 0.9;
175
+ // Support deprecated formStyle prop
176
+ const effectiveContentStyle = contentStyle ?? formStyle;
161
177
  if (isInitializing) {
162
- return (<react_native_1.View style={[baseContainerStyle, containerStyle, { justifyContent: 'center', alignItems: 'center' }]}>
178
+ return (<react_native_1.View style={[
179
+ baseContainerStyle,
180
+ containerStyle,
181
+ { justifyContent: "center", alignItems: "center" },
182
+ ]}>
163
183
  <ThemedText_1.ThemedText variant="body" secondary>
164
184
  Initializing...
165
185
  </ThemedText_1.ThemedText>
166
186
  </react_native_1.View>);
167
187
  }
168
- return (<react_native_1.KeyboardAvoidingView behavior={react_native_1.Platform.OS === 'ios' ? 'padding' : 'height'} style={[baseContainerStyle, containerStyle]}>
169
- <react_native_1.ScrollView contentContainerStyle={[contentStyle, formStyle]} keyboardShouldPersistTaps="handled">
170
- {/* Title */}
171
- <react_native_1.View style={sectionStyle}>
172
- <ThemedText_1.ThemedText variant="title">{title}</ThemedText_1.ThemedText>
173
- </react_native_1.View>
188
+ return (<react_native_1.KeyboardAvoidingView behavior={react_native_1.Platform.OS === "ios" ? "padding" : "height"} style={[baseContainerStyle, containerStyle]}>
189
+ <react_native_1.ScrollView contentContainerStyle={[scrollContentStyle, effectiveContentStyle]} keyboardShouldPersistTaps="handled">
190
+ {/* Title - only render if provided */}
191
+ {title ? (<react_native_1.View style={sectionStyle}>
192
+ <ThemedText_1.ThemedText variant="title">{title}</ThemedText_1.ThemedText>
193
+ </react_native_1.View>) : null}
174
194
 
175
195
  {/* Category selector */}
176
196
  <react_native_1.View style={sectionStyle}>
177
197
  <ThemedText_1.ThemedText variant="label" secondary style={{ marginBottom: theme.spacing.sm }}>
178
- Category{requireCategory ? '' : ' (optional)'}
198
+ Category{requireCategory ? "" : " (optional)"}
179
199
  </ThemedText_1.ThemedText>
180
200
  <CategorySelector_1.CategorySelector value={category} onChange={setCategory} categories={categories} disabled={isSubmitting}/>
181
201
  </react_native_1.View>
@@ -186,9 +206,7 @@ function FeedbackSheet({ onSuccess, onError, onCancel, title = 'Send Feedback',
186
206
  Message
187
207
  </ThemedText_1.ThemedText>
188
208
  <ThemedTextInput_1.ThemedTextInput value={message} onChangeText={setMessage} placeholder={placeholder} multiline numberOfLines={4} textAlignVertical="top" editable={!isSubmitting} style={{ minHeight: 120 }} maxLength={maxMessageLength + 100}/>
189
- {showCharacterWarning && (<ThemedText_1.ThemedText variant="caption" color={characterCount > maxMessageLength
190
- ? theme.colors.error
191
- : theme.colors.textSecondary} style={{ marginTop: theme.spacing.xs, textAlign: 'right' }}>
209
+ {showCharacterWarning && (<ThemedText_1.ThemedText variant="caption" color={characterCount > maxMessageLength ? theme.colors.error : theme.colors.textSecondary} style={{ marginTop: theme.spacing.xs, textAlign: "right" }}>
192
210
  {characterCount}/{maxMessageLength}
193
211
  </ThemedText_1.ThemedText>)}
194
212
  </react_native_1.View>
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackSheet.js","sourceRoot":"","sources":["../../src/components/FeedbackSheet.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FeedbackSheet.js","sourceRoot":"","sources":["../../src/components/FeedbackSheet.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import React from 'react';
2
- import type { PressableProps, ViewStyle, StyleProp } from 'react-native';
3
- export type ButtonVariant = 'primary' | 'secondary' | 'ghost';
4
- export interface ThemedButtonProps extends Omit<PressableProps, 'children' | 'style'> {
1
+ import React from "react";
2
+ import type { PressableProps, ViewStyle, TextStyle, StyleProp } from "react-native";
3
+ export type ButtonVariant = "primary" | "secondary" | "ghost";
4
+ export interface ThemedButtonProps extends Omit<PressableProps, "children" | "style"> {
5
5
  /** Button text */
6
6
  title: string;
7
7
  /** Button variant */
@@ -15,9 +15,20 @@ export interface ThemedButtonProps extends Omit<PressableProps, 'children' | 'st
15
15
  * Note: Function styles are not supported; use static StyleProp<ViewStyle>.
16
16
  */
17
17
  style?: StyleProp<ViewStyle>;
18
+ /** Additional styles for the button text */
19
+ textStyle?: StyleProp<TextStyle>;
18
20
  }
19
21
  /**
20
22
  * Themed button component with Harken styling.
23
+ *
24
+ * Uses the following theme tokens:
25
+ * - `colors.buttonPrimary*` for primary variant
26
+ * - `colors.buttonSecondary*` for secondary variant
27
+ * - `colors.buttonGhostText` for ghost variant
28
+ * - `spacing.buttonPadding*` for padding
29
+ * - `radii.button` for border radius
30
+ * - `sizing.buttonMinHeight` for minimum height
31
+ * - `opacity.disabled` for disabled state
21
32
  */
22
- export declare function ThemedButton({ title, variant, loading, fullWidth, disabled, style, ...props }: ThemedButtonProps): React.JSX.Element;
33
+ export declare function ThemedButton({ title, variant, loading, fullWidth, disabled, style, textStyle, ...props }: ThemedButtonProps): React.JSX.Element;
23
34
  //# sourceMappingURL=ThemedButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemedButton.d.ts","sourceRoot":"","sources":["../../src/components/ThemedButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,OAAO,CAAC;IACnF,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wBAAwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,OAAmB,EACnB,OAAe,EACf,SAAiB,EACjB,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAuFvC"}
1
+ {"version":3,"file":"ThemedButton.d.ts","sourceRoot":"","sources":["../../src/components/ThemedButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpF,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,OAAO,CAAC;IACnF,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wBAAwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAClC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,OAAmB,EACnB,OAAe,EACf,SAAiB,EACjB,QAAQ,EACR,KAAK,EACL,SAAS,EACT,GAAG,KAAK,EACT,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiFvC"}
@@ -10,22 +10,30 @@ const hooks_1 = require("../hooks");
10
10
  const ThemedText_1 = require("./ThemedText");
11
11
  /**
12
12
  * Themed button component with Harken styling.
13
+ *
14
+ * Uses the following theme tokens:
15
+ * - `colors.buttonPrimary*` for primary variant
16
+ * - `colors.buttonSecondary*` for secondary variant
17
+ * - `colors.buttonGhostText` for ghost variant
18
+ * - `spacing.buttonPadding*` for padding
19
+ * - `radii.button` for border radius
20
+ * - `sizing.buttonMinHeight` for minimum height
21
+ * - `opacity.disabled` for disabled state
13
22
  */
14
- function ThemedButton({ title, variant = 'primary', loading = false, fullWidth = false, disabled, style, ...props }) {
23
+ function ThemedButton({ title, variant = "primary", loading = false, fullWidth = false, disabled, style, textStyle, ...props }) {
15
24
  const theme = (0, hooks_1.useHarkenTheme)();
25
+ const { button } = theme.components;
16
26
  const getBackgroundColor = (pressed) => {
17
27
  if (disabled) {
18
- return variant === 'primary'
19
- ? theme.colors.border
20
- : 'transparent';
28
+ return variant === "primary" ? theme.colors.border : "transparent";
21
29
  }
22
30
  switch (variant) {
23
- case 'primary':
24
- return pressed ? theme.colors.primaryPressed : theme.colors.primary;
25
- case 'secondary':
26
- return pressed ? theme.colors.border : theme.colors.backgroundSecondary;
27
- case 'ghost':
28
- return pressed ? theme.colors.backgroundSecondary : 'transparent';
31
+ case "primary":
32
+ return pressed ? button.primary.backgroundPressed : button.primary.background;
33
+ case "secondary":
34
+ return pressed ? theme.colors.border : button.secondary.background;
35
+ case "ghost":
36
+ return pressed ? theme.colors.surface : "transparent";
29
37
  }
30
38
  };
31
39
  const getTextColor = () => {
@@ -33,19 +41,20 @@ function ThemedButton({ title, variant = 'primary', loading = false, fullWidth =
33
41
  return theme.colors.textPlaceholder;
34
42
  }
35
43
  switch (variant) {
36
- case 'primary':
37
- return theme.colors.textOnPrimary;
38
- case 'secondary':
39
- case 'ghost':
40
- return theme.colors.text;
44
+ case "primary":
45
+ return button.primary.text;
46
+ case "secondary":
47
+ return button.secondary.text;
48
+ case "ghost":
49
+ return button.ghost.text;
41
50
  }
42
51
  };
43
52
  const getBorderColor = () => {
44
53
  switch (variant) {
45
- case 'secondary':
46
- return theme.colors.border;
54
+ case "secondary":
55
+ return button.secondary.border;
47
56
  default:
48
- return 'transparent';
57
+ return "transparent";
49
58
  }
50
59
  };
51
60
  // Flatten the style prop to handle arrays and registered styles
@@ -53,23 +62,23 @@ function ThemedButton({ title, variant = 'primary', loading = false, fullWidth =
53
62
  return (<react_native_1.Pressable disabled={disabled || loading} style={({ pressed }) => {
54
63
  const baseStyle = {
55
64
  backgroundColor: getBackgroundColor(pressed),
56
- borderWidth: variant === 'secondary' ? 1 : 0,
65
+ borderWidth: variant === "secondary" ? 1 : 0,
57
66
  borderColor: getBorderColor(),
58
- borderRadius: theme.radii.md,
59
- paddingVertical: theme.spacing.sm + 4,
60
- paddingHorizontal: theme.spacing.md,
61
- alignItems: 'center',
62
- justifyContent: 'center',
63
- flexDirection: 'row',
64
- minHeight: 48,
65
- opacity: disabled ? 0.6 : 1,
67
+ borderRadius: button.radius,
68
+ paddingVertical: button.paddingVertical + 4,
69
+ paddingHorizontal: button.paddingHorizontal,
70
+ alignItems: "center",
71
+ justifyContent: "center",
72
+ flexDirection: "row",
73
+ minHeight: button.minHeight,
74
+ opacity: disabled ? theme.opacity.disabled : 1,
66
75
  };
67
76
  if (fullWidth) {
68
- baseStyle.width = '100%';
77
+ baseStyle.width = "100%";
69
78
  }
70
79
  return [baseStyle, flattenedStyle];
71
80
  }} {...props}>
72
- {loading ? (<react_native_1.ActivityIndicator color={getTextColor()} size="small"/>) : (<ThemedText_1.ThemedText variant="label" color={getTextColor()}>
81
+ {loading ? (<react_native_1.ActivityIndicator color={getTextColor()} size="small"/>) : (<ThemedText_1.ThemedText variant="label" color={getTextColor()} style={textStyle}>
73
82
  {title}
74
83
  </ThemedText_1.ThemedText>)}
75
84
  </react_native_1.Pressable>);
@@ -1 +1 @@
1
- {"version":3,"file":"ThemedButton.js","sourceRoot":"","sources":["../../src/components/ThemedButton.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ThemedButton.js","sourceRoot":"","sources":["../../src/components/ThemedButton.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import React from 'react';
2
- import type { TextProps } from 'react-native';
3
- export type TextVariant = 'title' | 'body' | 'label' | 'caption';
1
+ import React from "react";
2
+ import type { TextProps } from "react-native";
3
+ export type TextVariant = "title" | "body" | "label" | "caption";
4
4
  export interface ThemedTextProps extends TextProps {
5
5
  /** Text variant determining size and weight */
6
6
  variant?: TextVariant;
@@ -1 +1 @@
1
- {"version":3,"file":"ThemedText.d.ts","sourceRoot":"","sources":["../../src/components/ThemedText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,cAAc,CAAC;AAGzD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,+CAA+C;IAC/C,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAgB,EAChB,KAAK,EACL,SAAiB,EACjB,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsCrC"}
1
+ {"version":3,"file":"ThemedText.d.ts","sourceRoot":"","sources":["../../src/components/ThemedText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAa,MAAM,cAAc,CAAC;AAGzD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,+CAA+C;IAC/C,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAgB,EAChB,KAAK,EACL,SAAiB,EACjB,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmCrC"}
@@ -10,7 +10,7 @@ const hooks_1 = require("../hooks");
10
10
  /**
11
11
  * Themed text component that uses Harken theme typography.
12
12
  */
13
- function ThemedText({ variant = 'body', color, secondary = false, style, children, ...props }) {
13
+ function ThemedText({ variant = "body", color, secondary = false, style, children, ...props }) {
14
14
  const theme = (0, hooks_1.useHarkenTheme)();
15
15
  const variantStyles = {
16
16
  title: {
@@ -1 +1 @@
1
- {"version":3,"file":"ThemedText.js","sourceRoot":"","sources":["../../src/components/ThemedText.tsx"],"names":[],"mappings":";;;;;AAmBA,gCA6CC;AAhED,kDAA0B;AAC1B,+CAAoC;AAEpC,oCAA0C;AAa1C;;GAEG;AACH,SAAgB,UAAU,CAAC,EACzB,OAAO,GAAG,MAAM,EAChB,KAAK,EACL,SAAS,GAAG,KAAK,EACjB,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACQ;IAChB,MAAM,KAAK,GAAG,IAAA,sBAAc,GAAE,CAAC;IAE/B,MAAM,aAAa,GAAmC;QACpD,KAAK,EAAE;YACL,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,SAAS;YACpC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe;YACzE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW;YACxC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU;SAC9E;QACD,IAAI,EAAE;YACJ,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;YACnC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,cAAc;YACvE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU;YACvC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU;SACxC;QACD,KAAK,EAAE;YACL,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,SAAS;YACpC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW;YACxC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU;SACxC;QACD,OAAO,EAAE;YACP,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW;YACtC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa;YAC1C,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU;SACxC;KACF,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAExF,OAAO,CACL,CAAC,mBAAI,CACH,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC,CAC7D,IAAI,KAAK,CAAC,CAEV;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,mBAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ThemedText.js","sourceRoot":"","sources":["../../src/components/ThemedText.tsx"],"names":[],"mappings":";;;;;AAmBA,gCA0CC;AA7DD,kDAA0B;AAC1B,+CAAoC;AAEpC,oCAA0C;AAa1C;;GAEG;AACH,SAAgB,UAAU,CAAC,EACzB,OAAO,GAAG,MAAM,EAChB,KAAK,EACL,SAAS,GAAG,KAAK,EACjB,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACQ;IAChB,MAAM,KAAK,GAAG,IAAA,sBAAc,GAAE,CAAC;IAE/B,MAAM,aAAa,GAAmC;QACpD,KAAK,EAAE;YACL,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,SAAS;YACpC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe;YACzE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW;YACxC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU;SAC9E;QACD,IAAI,EAAE;YACJ,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;YACnC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,cAAc;YACvE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU;YACvC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU;SACxC;QACD,KAAK,EAAE;YACL,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,SAAS;YACpC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW;YACxC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU;SACxC;QACD,OAAO,EAAE;YACP,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW;YACtC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa;YAC1C,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU;SACxC;KACF,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAExF,OAAO,CACL,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAC5E;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,mBAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
- import type { TextInputProps, ViewStyle, StyleProp } from 'react-native';
1
+ import React from "react";
2
+ import type { TextInputProps, ViewStyle, StyleProp } from "react-native";
3
3
  export interface ThemedTextInputProps extends TextInputProps {
4
4
  /** Error state */
5
5
  error?: boolean;
@@ -8,6 +8,15 @@ export interface ThemedTextInputProps extends TextInputProps {
8
8
  }
9
9
  /**
10
10
  * Themed text input component with Harken styling.
11
+ *
12
+ * Uses the following theme tokens:
13
+ * - `colors.inputBackground` for background
14
+ * - `colors.inputBorder`, `inputBorderFocused`, `inputBorderError` for border states
15
+ * - `colors.inputText` for text color
16
+ * - `colors.inputPlaceholder` for placeholder
17
+ * - `spacing.inputPadding` for padding
18
+ * - `radii.input` for border radius
19
+ * - `sizing.inputMinHeight` for minimum height
11
20
  */
12
21
  export declare function ThemedTextInput({ error, containerStyle, style, onFocus, onBlur, ...props }: ThemedTextInputProps): React.JSX.Element;
13
22
  //# sourceMappingURL=ThemedTextInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemedTextInput.d.ts","sourceRoot":"","sources":["../../src/components/ThemedTextInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAa,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpF,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,kBAAkB;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAa,EACb,cAAc,EACd,KAAK,EACL,OAAO,EACP,MAAM,EACN,GAAG,KAAK,EACT,EAAE,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA0C1C"}
1
+ {"version":3,"file":"ThemedTextInput.d.ts","sourceRoot":"","sources":["../../src/components/ThemedTextInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAa,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpF,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,kBAAkB;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAa,EACb,cAAc,EACd,KAAK,EACL,OAAO,EACP,MAAM,EACN,GAAG,KAAK,EACT,EAAE,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA2C1C"}
@@ -39,32 +39,42 @@ const react_native_1 = require("react-native");
39
39
  const hooks_1 = require("../hooks");
40
40
  /**
41
41
  * Themed text input component with Harken styling.
42
+ *
43
+ * Uses the following theme tokens:
44
+ * - `colors.inputBackground` for background
45
+ * - `colors.inputBorder`, `inputBorderFocused`, `inputBorderError` for border states
46
+ * - `colors.inputText` for text color
47
+ * - `colors.inputPlaceholder` for placeholder
48
+ * - `spacing.inputPadding` for padding
49
+ * - `radii.input` for border radius
50
+ * - `sizing.inputMinHeight` for minimum height
42
51
  */
43
52
  function ThemedTextInput({ error = false, containerStyle, style, onFocus, onBlur, ...props }) {
44
53
  const theme = (0, hooks_1.useHarkenTheme)();
54
+ const { input } = theme.components;
45
55
  const [isFocused, setIsFocused] = (0, react_1.useState)(false);
46
56
  const getBorderColor = () => {
47
57
  if (error)
48
- return theme.colors.error;
58
+ return input.borderError;
49
59
  if (isFocused)
50
- return theme.colors.borderFocused;
51
- return theme.colors.border;
60
+ return input.borderFocused;
61
+ return input.border;
52
62
  };
53
63
  const inputStyle = {
54
64
  fontSize: theme.typography.bodySize,
55
65
  fontFamily: theme.typography.fontFamily,
56
- color: theme.colors.text,
57
- padding: theme.spacing.md,
58
- minHeight: 44,
66
+ color: input.text,
67
+ padding: input.padding,
68
+ minHeight: input.minHeight,
59
69
  };
60
70
  const containerStyles = {
61
- backgroundColor: theme.colors.backgroundSecondary,
71
+ backgroundColor: input.background,
62
72
  borderWidth: 1,
63
73
  borderColor: getBorderColor(),
64
- borderRadius: theme.radii.md,
74
+ borderRadius: input.radius,
65
75
  };
66
76
  return (<react_native_1.View style={[containerStyles, containerStyle]}>
67
- <react_native_1.TextInput style={[inputStyle, style]} placeholderTextColor={theme.colors.textPlaceholder} onFocus={(e) => {
77
+ <react_native_1.TextInput style={[inputStyle, style]} placeholderTextColor={input.placeholder} onFocus={(e) => {
68
78
  setIsFocused(true);
69
79
  onFocus?.(e);
70
80
  }} onBlur={(e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ThemedTextInput.js","sourceRoot":"","sources":["../../src/components/ThemedTextInput.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,0CAiDC;AAhED,+CAAwC;AACxC,+CAA+C;AAE/C,oCAA0C;AAS1C;;GAEG;AACH,SAAgB,eAAe,CAAC,EAC9B,KAAK,GAAG,KAAK,EACb,cAAc,EACd,KAAK,EACL,OAAO,EACP,MAAM,EACN,GAAG,KAAK,EACa;IACrB,MAAM,KAAK,GAAG,IAAA,sBAAc,GAAE,CAAC;IAC/B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAElD,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,IAAI,SAAS;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;QACjD,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,UAAU,GAAc;QAC5B,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;QACnC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU;QACvC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;QACxB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;QACzB,SAAS,EAAE,EAAE;KACd,CAAC;IAEF,MAAM,eAAe,GAAc;QACjC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,mBAAmB;QACjD,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,cAAc,EAAE;QAC7B,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;KAC7B,CAAC;IAEF,OAAO,CACL,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAC7C;MAAA,CAAC,wBAAS,CACR,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAC3B,oBAAoB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CACnD,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,CAAC,CAAC,CACF,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,CACF,IAAI,KAAK,CAAC,EAEd;IAAA,EAAE,mBAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ThemedTextInput.js","sourceRoot":"","sources":["../../src/components/ThemedTextInput.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,0CAkDC;AA1ED,+CAAwC;AACxC,+CAA+C;AAE/C,oCAA0C;AAS1C;;;;;;;;;;;GAWG;AACH,SAAgB,eAAe,CAAC,EAC9B,KAAK,GAAG,KAAK,EACb,cAAc,EACd,KAAK,EACL,OAAO,EACP,MAAM,EACN,GAAG,KAAK,EACa;IACrB,MAAM,KAAK,GAAG,IAAA,sBAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;IACnC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAElD,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,WAAW,CAAC;QACpC,IAAI,SAAS;YAAE,OAAO,KAAK,CAAC,aAAa,CAAC;QAC1C,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAc;QAC5B,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;QACnC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU;QACvC,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;IAEF,MAAM,eAAe,GAAc;QACjC,eAAe,EAAE,KAAK,CAAC,UAAU;QACjC,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,cAAc,EAAE;QAC7B,YAAY,EAAE,KAAK,CAAC,MAAM;KAC3B,CAAC;IAEF,OAAO,CACL,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAC7C;MAAA,CAAC,wBAAS,CACR,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAC3B,oBAAoB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CACxC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,CAAC,CAAC,CACF,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,CACF,IAAI,KAAK,CAAC,EAEd;IAAA,EAAE,mBAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
- import React from 'react';
2
- import type { ViewStyle, StyleProp } from 'react-native';
3
- import { UploadPhase } from '../domain';
1
+ import React from "react";
2
+ import type { ViewStyle, StyleProp } from "react-native";
3
+ import { UploadPhase } from "../domain";
4
4
  /**
5
5
  * Customizable labels for upload status states.
6
6
  */
@@ -49,6 +49,14 @@ export interface UploadStatusOverlayProps {
49
49
  * - Checkmark when complete
50
50
  * - Error with retry button when failed
51
51
  *
52
+ * Uses the following theme tokens:
53
+ * - `colors.uploadOverlay` for overlay background
54
+ * - `colors.uploadOverlayError` for error overlay background
55
+ * - `colors.uploadProgressTrack` for progress bar track
56
+ * - `colors.uploadProgressFill` for progress bar fill
57
+ * - `colors.uploadBadgeSuccess` for success badge
58
+ * - `colors.uploadText` for overlay text
59
+ *
52
60
  * @example
53
61
  * ```tsx
54
62
  * // Basic usage
@@ -1 +1 @@
1
- {"version":3,"file":"UploadStatusOverlay.d.ts","sourceRoot":"","sources":["../../src/components/UploadStatusOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,2BAA2B;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iCAAiC;IACjC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,oCAAoC;IACpC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,+BAA+B;IAC/B,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACvD,4BAA4B;IAC5B,WAAW,CAAC,EAAE,CACZ,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,IAAI,EACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,KAClB,KAAK,CAAC,SAAS,CAAC;IACrB,wCAAwC;IACxC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;CAC5D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,KAAK,EACL,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACN,cAAc,EACd,WAAW,EACX,aAAa,GACd,EAAE,wBAAwB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA6OrD"}
1
+ {"version":3,"file":"UploadStatusOverlay.d.ts","sourceRoot":"","sources":["../../src/components/UploadStatusOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,2BAA2B;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iCAAiC;IACjC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,oCAAoC;IACpC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,+BAA+B;IAC/B,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACvD,4BAA4B;IAC5B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IAC9F,wCAAwC;IACxC,aAAa,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;CAC5D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,KAAK,EACL,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACN,cAAc,EACd,WAAW,EACX,aAAa,GACd,EAAE,wBAAwB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA0NrD"}