@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
@@ -1,15 +1,19 @@
1
1
  /**
2
2
  * Color tokens for Harken SDK theming.
3
3
  * All colors support full override by host apps.
4
+ *
5
+ * Base tokens are required. Component tokens are optional and fall back to base tokens.
4
6
  */
5
7
  export interface HarkenColors {
6
8
  /** Primary brand color for buttons and accents */
7
9
  primary: string;
8
10
  /** Darker variant of primary for pressed states */
9
11
  primaryPressed: string;
10
- /** Background color for the feedback form */
12
+ /** App-level background color */
11
13
  background: string;
12
- /** Secondary background (cards, inputs) */
14
+ /** Container/modal surface color (distinct from background) */
15
+ surface: string;
16
+ /** @deprecated Use `surface` instead. Kept for backwards compatibility. */
13
17
  backgroundSecondary: string;
14
18
  /** Primary text color */
15
19
  text: string;
@@ -41,6 +45,84 @@ export interface HarkenColors {
41
45
  accent2: string;
42
46
  /** Accent color 3 (e.g., files option) */
43
47
  accent3: string;
48
+ /** Chip background color (falls back to surface) */
49
+ chipBackground?: string;
50
+ /** Selected chip background color (falls back to primary) */
51
+ chipBackgroundSelected?: string;
52
+ /** Chip border color (falls back to border) */
53
+ chipBorder?: string;
54
+ /** Selected chip border color (falls back to primary) */
55
+ chipBorderSelected?: string;
56
+ /** Chip text color (falls back to text) */
57
+ chipText?: string;
58
+ /** Selected chip text color (falls back to textOnPrimary) */
59
+ chipTextSelected?: string;
60
+ /** Input background color (falls back to surface) */
61
+ inputBackground?: string;
62
+ /** Input border color (falls back to border) */
63
+ inputBorder?: string;
64
+ /** Input focused border color (falls back to borderFocused) */
65
+ inputBorderFocused?: string;
66
+ /** Input error border color (falls back to error) */
67
+ inputBorderError?: string;
68
+ /** Input text color (falls back to text) */
69
+ inputText?: string;
70
+ /** Input placeholder color (falls back to textPlaceholder) */
71
+ inputPlaceholder?: string;
72
+ /** Primary button background (falls back to primary) */
73
+ buttonPrimaryBackground?: string;
74
+ /** Primary button pressed background (falls back to primaryPressed) */
75
+ buttonPrimaryBackgroundPressed?: string;
76
+ /** Primary button text color (falls back to textOnPrimary) */
77
+ buttonPrimaryText?: string;
78
+ /** Secondary button background (falls back to surface) */
79
+ buttonSecondaryBackground?: string;
80
+ /** Secondary button border color (falls back to border) */
81
+ buttonSecondaryBorder?: string;
82
+ /** Secondary button text color (falls back to text) */
83
+ buttonSecondaryText?: string;
84
+ /** Ghost button text color (falls back to text) */
85
+ buttonGhostText?: string;
86
+ /** Add button background (falls back to surface) */
87
+ addButtonBackground?: string;
88
+ /** Add button pressed background (falls back to border) */
89
+ addButtonBackgroundPressed?: string;
90
+ /** Add button border color (falls back to border) */
91
+ addButtonBorder?: string;
92
+ /** Add button icon color (falls back to textSecondary) */
93
+ addButtonIcon?: string;
94
+ /** Add button text color (falls back to textSecondary) */
95
+ addButtonText?: string;
96
+ /** Tile background color (falls back to surface) */
97
+ tileBackground?: string;
98
+ /** Tile border color (falls back to border) */
99
+ tileBorder?: string;
100
+ /** Upload overlay background (falls back to overlay) */
101
+ uploadOverlay?: string;
102
+ /** Upload error overlay background (falls back to overlayDark) */
103
+ uploadOverlayError?: string;
104
+ /** Upload progress track color */
105
+ uploadProgressTrack?: string;
106
+ /** Upload progress fill color (falls back to primary) */
107
+ uploadProgressFill?: string;
108
+ /** Upload success badge color (falls back to success) */
109
+ uploadBadgeSuccess?: string;
110
+ /** Upload overlay text color (falls back to textOnPrimary) */
111
+ uploadText?: string;
112
+ /** Picker overlay background (falls back to overlay) */
113
+ pickerOverlay?: string;
114
+ /** Picker sheet background (falls back to background) */
115
+ pickerBackground?: string;
116
+ /** Picker handle color (falls back to textSecondary) */
117
+ pickerHandle?: string;
118
+ /** Picker option background (falls back to surface) */
119
+ pickerOptionBackground?: string;
120
+ /** Picker option pressed background (falls back to border) */
121
+ pickerOptionBackgroundPressed?: string;
122
+ /** Picker cancel text color (falls back to error) */
123
+ pickerCancelText?: string;
124
+ /** Form background color (falls back to transparent for modal embedding) */
125
+ formBackground?: string;
44
126
  }
45
127
  /**
46
128
  * Typography tokens for Harken SDK theming.
@@ -73,10 +155,12 @@ export interface HarkenTypography {
73
155
  captionWeight: TextWeight;
74
156
  }
75
157
  /** Font weight values supported across platforms */
76
- export type TextWeight = 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';
158
+ export type TextWeight = "normal" | "bold" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900";
77
159
  /**
78
160
  * Spacing tokens for consistent layout.
79
161
  * All values are in logical pixels.
162
+ *
163
+ * Base tokens are required. Component tokens are optional and fall back to base tokens.
80
164
  */
81
165
  export interface HarkenSpacing {
82
166
  /** Extra small spacing (4px default) */
@@ -91,10 +175,30 @@ export interface HarkenSpacing {
91
175
  xl: number;
92
176
  /** 2x extra large spacing (48px default) */
93
177
  xxl: number;
178
+ /** Chip vertical padding (falls back to sm) */
179
+ chipPaddingVertical?: number;
180
+ /** Chip horizontal padding (falls back to md) */
181
+ chipPaddingHorizontal?: number;
182
+ /** Gap between chips (falls back to sm) */
183
+ chipGap?: number;
184
+ /** Input padding (falls back to md) */
185
+ inputPadding?: number;
186
+ /** Button vertical padding (falls back to sm) */
187
+ buttonPaddingVertical?: number;
188
+ /** Button horizontal padding (falls back to md) */
189
+ buttonPaddingHorizontal?: number;
190
+ /** Form container padding (falls back to lg) */
191
+ formPadding?: number;
192
+ /** Gap between form sections (falls back to lg) */
193
+ sectionGap?: number;
194
+ /** Gap between attachment tiles (falls back to sm) */
195
+ tileGap?: number;
94
196
  }
95
197
  /**
96
198
  * Border radius tokens for rounded corners.
97
199
  * All values are in logical pixels.
200
+ *
201
+ * Base tokens are required. Component tokens are optional and fall back to base tokens.
98
202
  */
99
203
  export interface HarkenRadii {
100
204
  /** No radius */
@@ -109,15 +213,56 @@ export interface HarkenRadii {
109
213
  xl: number;
110
214
  /** Full/pill radius */
111
215
  full: number;
216
+ /** Chip border radius (falls back to full) */
217
+ chip?: number;
218
+ /** Input border radius (falls back to md) */
219
+ input?: number;
220
+ /** Button border radius (falls back to md) */
221
+ button?: number;
222
+ /** Attachment tile border radius (falls back to md) */
223
+ tile?: number;
224
+ /** Form container border radius (falls back to lg) */
225
+ form?: number;
226
+ /** Picker sheet border radius (falls back to xl) */
227
+ picker?: number;
112
228
  }
113
229
  /**
114
- * Complete theme object combining all token types.
230
+ * Sizing tokens for component dimensions.
231
+ * All values are in logical pixels and optional with sensible defaults.
232
+ */
233
+ export interface HarkenSizing {
234
+ /** Button minimum height (default: 48) */
235
+ buttonMinHeight?: number;
236
+ /** Input minimum height (default: 44) */
237
+ inputMinHeight?: number;
238
+ /** Attachment tile size (default: 80) */
239
+ tileSize?: number;
240
+ /** Add button icon size (default: 28) */
241
+ addButtonIconSize?: number;
242
+ /** Picker icon container size (default: 44) */
243
+ pickerIconSize?: number;
244
+ }
245
+ /**
246
+ * Opacity tokens for interactive states.
247
+ * All values are between 0 and 1 and optional with sensible defaults.
248
+ */
249
+ export interface HarkenOpacity {
250
+ /** Disabled state opacity (default: 0.6) */
251
+ disabled?: number;
252
+ /** Pressed state opacity (default: 0.8) */
253
+ pressed?: number;
254
+ }
255
+ /**
256
+ * Input theme object with optional component tokens.
257
+ * Used for theme configuration by consumers.
115
258
  */
116
259
  export interface HarkenTheme {
117
260
  colors: HarkenColors;
118
261
  typography: HarkenTypography;
119
262
  spacing: HarkenSpacing;
120
263
  radii: HarkenRadii;
264
+ sizing?: HarkenSizing;
265
+ opacity?: HarkenOpacity;
121
266
  }
122
267
  /**
123
268
  * Partial theme for overriding specific values.
@@ -128,9 +273,237 @@ export type PartialHarkenTheme = {
128
273
  typography?: Partial<HarkenTypography>;
129
274
  spacing?: Partial<HarkenSpacing>;
130
275
  radii?: Partial<HarkenRadii>;
276
+ sizing?: Partial<HarkenSizing>;
277
+ opacity?: Partial<HarkenOpacity>;
131
278
  };
132
279
  /**
133
280
  * Theme mode for automatic light/dark theming.
134
281
  */
135
- export type ThemeMode = 'light' | 'dark' | 'system';
282
+ export type ThemeMode = "light" | "dark" | "system";
283
+ /**
284
+ * Fully resolved color tokens with all component tokens populated.
285
+ * All optional component tokens have been resolved to their fallback values.
286
+ */
287
+ export interface ResolvedHarkenColors {
288
+ primary: string;
289
+ primaryPressed: string;
290
+ background: string;
291
+ surface: string;
292
+ backgroundSecondary: string;
293
+ text: string;
294
+ textSecondary: string;
295
+ textPlaceholder: string;
296
+ textOnPrimary: string;
297
+ border: string;
298
+ borderFocused: string;
299
+ error: string;
300
+ success: string;
301
+ warning: string;
302
+ info: string;
303
+ overlay: string;
304
+ overlayDark: string;
305
+ accent1: string;
306
+ accent2: string;
307
+ accent3: string;
308
+ chipBackground: string;
309
+ chipBackgroundSelected: string;
310
+ chipBorder: string;
311
+ chipBorderSelected: string;
312
+ chipText: string;
313
+ chipTextSelected: string;
314
+ inputBackground: string;
315
+ inputBorder: string;
316
+ inputBorderFocused: string;
317
+ inputBorderError: string;
318
+ inputText: string;
319
+ inputPlaceholder: string;
320
+ buttonPrimaryBackground: string;
321
+ buttonPrimaryBackgroundPressed: string;
322
+ buttonPrimaryText: string;
323
+ buttonSecondaryBackground: string;
324
+ buttonSecondaryBorder: string;
325
+ buttonSecondaryText: string;
326
+ buttonGhostText: string;
327
+ addButtonBackground: string;
328
+ addButtonBackgroundPressed: string;
329
+ addButtonBorder: string;
330
+ addButtonIcon: string;
331
+ addButtonText: string;
332
+ tileBackground: string;
333
+ tileBorder: string;
334
+ uploadOverlay: string;
335
+ uploadOverlayError: string;
336
+ uploadProgressTrack: string;
337
+ uploadProgressFill: string;
338
+ uploadBadgeSuccess: string;
339
+ uploadText: string;
340
+ pickerOverlay: string;
341
+ pickerBackground: string;
342
+ pickerHandle: string;
343
+ pickerOptionBackground: string;
344
+ pickerOptionBackgroundPressed: string;
345
+ pickerCancelText: string;
346
+ formBackground: string;
347
+ }
348
+ /**
349
+ * Fully resolved spacing tokens with all component tokens populated.
350
+ */
351
+ export interface ResolvedHarkenSpacing {
352
+ xs: number;
353
+ sm: number;
354
+ md: number;
355
+ lg: number;
356
+ xl: number;
357
+ xxl: number;
358
+ chipPaddingVertical: number;
359
+ chipPaddingHorizontal: number;
360
+ chipGap: number;
361
+ inputPadding: number;
362
+ buttonPaddingVertical: number;
363
+ buttonPaddingHorizontal: number;
364
+ formPadding: number;
365
+ sectionGap: number;
366
+ tileGap: number;
367
+ }
368
+ /**
369
+ * Fully resolved radii tokens with all component tokens populated.
370
+ */
371
+ export interface ResolvedHarkenRadii {
372
+ none: number;
373
+ sm: number;
374
+ md: number;
375
+ lg: number;
376
+ xl: number;
377
+ full: number;
378
+ chip: number;
379
+ input: number;
380
+ button: number;
381
+ tile: number;
382
+ form: number;
383
+ picker: number;
384
+ }
385
+ /**
386
+ * Fully resolved sizing tokens.
387
+ */
388
+ export interface ResolvedHarkenSizing {
389
+ buttonMinHeight: number;
390
+ inputMinHeight: number;
391
+ tileSize: number;
392
+ addButtonIconSize: number;
393
+ pickerIconSize: number;
394
+ }
395
+ /**
396
+ * Fully resolved opacity tokens.
397
+ */
398
+ export interface ResolvedHarkenOpacity {
399
+ disabled: number;
400
+ pressed: number;
401
+ }
402
+ /**
403
+ * Structured component token aliases for better discoverability.
404
+ * Maps to flat tokens but grouped by component for ergonomic access.
405
+ */
406
+ export interface HarkenComponentTokens {
407
+ chip: {
408
+ background: string;
409
+ backgroundSelected: string;
410
+ border: string;
411
+ borderSelected: string;
412
+ text: string;
413
+ textSelected: string;
414
+ paddingVertical: number;
415
+ paddingHorizontal: number;
416
+ gap: number;
417
+ radius: number;
418
+ };
419
+ input: {
420
+ background: string;
421
+ border: string;
422
+ borderFocused: string;
423
+ borderError: string;
424
+ text: string;
425
+ placeholder: string;
426
+ padding: number;
427
+ radius: number;
428
+ minHeight: number;
429
+ };
430
+ button: {
431
+ primary: {
432
+ background: string;
433
+ backgroundPressed: string;
434
+ text: string;
435
+ };
436
+ secondary: {
437
+ background: string;
438
+ border: string;
439
+ text: string;
440
+ };
441
+ ghost: {
442
+ text: string;
443
+ };
444
+ paddingVertical: number;
445
+ paddingHorizontal: number;
446
+ radius: number;
447
+ minHeight: number;
448
+ };
449
+ addButton: {
450
+ background: string;
451
+ backgroundPressed: string;
452
+ border: string;
453
+ icon: string;
454
+ text: string;
455
+ iconSize: number;
456
+ };
457
+ tile: {
458
+ background: string;
459
+ border: string;
460
+ radius: number;
461
+ size: number;
462
+ gap: number;
463
+ };
464
+ upload: {
465
+ overlay: string;
466
+ overlayError: string;
467
+ progressTrack: string;
468
+ progressFill: string;
469
+ badgeSuccess: string;
470
+ text: string;
471
+ };
472
+ picker: {
473
+ overlay: string;
474
+ background: string;
475
+ handle: string;
476
+ optionBackground: string;
477
+ optionBackgroundPressed: string;
478
+ cancelText: string;
479
+ radius: number;
480
+ iconSize: number;
481
+ };
482
+ form: {
483
+ background: string;
484
+ padding: number;
485
+ sectionGap: number;
486
+ radius: number;
487
+ };
488
+ }
489
+ /**
490
+ * Fully resolved theme object with all fallbacks applied.
491
+ * This is what components receive - all values are guaranteed to exist.
492
+ */
493
+ export interface ResolvedHarkenTheme {
494
+ /** Flat color tokens (for compatibility) */
495
+ colors: ResolvedHarkenColors;
496
+ /** Typography tokens */
497
+ typography: HarkenTypography;
498
+ /** Flat spacing tokens (for compatibility) */
499
+ spacing: ResolvedHarkenSpacing;
500
+ /** Flat radii tokens (for compatibility) */
501
+ radii: ResolvedHarkenRadii;
502
+ /** Sizing tokens */
503
+ sizing: ResolvedHarkenSizing;
504
+ /** Opacity tokens */
505
+ opacity: ResolvedHarkenOpacity;
506
+ /** Structured component tokens (for discoverability) */
507
+ components: HarkenComponentTokens;
508
+ }
136
509
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/theme/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/theme/types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { PartialHarkenTheme, ThemeMode } from '../theme';
2
- import type { SecureStorage } from '../storage';
1
+ import type { PartialHarkenTheme, ThemeMode } from "../theme";
2
+ import type { SecureStorage } from "../storage";
3
3
  /**
4
4
  * Configuration options for the Harken SDK.
5
5
  */
@@ -77,11 +77,11 @@ export interface HarkenProviderProps {
77
77
  /**
78
78
  * Feedback category types supported by the API.
79
79
  */
80
- export type FeedbackCategory = 'bug' | 'idea' | 'ux' | 'other';
80
+ export type FeedbackCategory = "bug" | "idea" | "ux" | "other";
81
81
  /**
82
82
  * Platform type for device metadata.
83
83
  */
84
- export type Platform = 'ios' | 'android';
84
+ export type Platform = "ios" | "android";
85
85
  /**
86
86
  * Device metadata collected with feedback submissions.
87
87
  */
@@ -1,3 +1,3 @@
1
- export type { HarkenConfig, HarkenProviderProps, FeedbackCategory, Platform, DeviceMetadata, } from './config.js';
2
- export type { components, operations, paths } from './openapi.js';
1
+ export type { HarkenConfig, HarkenProviderProps, FeedbackCategory, Platform, DeviceMetadata, } from "./config.js";
2
+ export type { components, operations, paths } from "./openapi.js";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export { generateUUID } from './uuid';
1
+ export { generateUUID } from "./uuid";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../src/utils/uuid.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAWrC"}
1
+ {"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../src/utils/uuid.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAQrC"}
@@ -11,8 +11,7 @@ exports.generateUUID = generateUUID;
11
11
  */
12
12
  function generateUUID() {
13
13
  // Use crypto.getRandomValues if available (React Native has this)
14
- if (typeof crypto !== 'undefined' &&
15
- typeof crypto.getRandomValues === 'function') {
14
+ if (typeof crypto !== "undefined" && typeof crypto.getRandomValues === "function") {
16
15
  return generateUUIDCrypto();
17
16
  }
18
17
  // Fallback to Math.random-based generation
@@ -47,14 +46,14 @@ function generateUUIDFallback() {
47
46
  */
48
47
  function formatUUID(bytes) {
49
48
  const hex = Array.from(bytes)
50
- .map((b) => b.toString(16).padStart(2, '0'))
51
- .join('');
49
+ .map((b) => b.toString(16).padStart(2, "0"))
50
+ .join("");
52
51
  return [
53
52
  hex.slice(0, 8),
54
53
  hex.slice(8, 12),
55
54
  hex.slice(12, 16),
56
55
  hex.slice(16, 20),
57
56
  hex.slice(20, 32),
58
- ].join('-');
57
+ ].join("-");
59
58
  }
60
59
  //# sourceMappingURL=uuid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../src/utils/uuid.ts"],"names":[],"mappings":";;AAkBA,oCAWC;AAnBD;;;;;;;GAOG;AACH,SAAgB,YAAY;IAC1B,kEAAkE;IAClE,IACE,OAAO,MAAM,KAAK,WAAW;QAC7B,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,EAC5C,CAAC;QACD,OAAO,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAED,2CAA2C;IAC3C,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB;IACzB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,MAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAE/B,wCAAwC;IACxC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY;IAClD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,kBAAkB;IAExD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB;IAC3B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY;IAClD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,kBAAkB;IAExD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,KAAiB;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;KAClB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../src/utils/uuid.ts"],"names":[],"mappings":";;AAkBA,oCAQC;AAhBD;;;;;;;GAOG;AACH,SAAgB,YAAY;IAC1B,kEAAkE;IAClE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QAClF,OAAO,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAED,2CAA2C;IAC3C,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB;IACzB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,MAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAE/B,wCAAwC;IACxC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY;IAClD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,kBAAkB;IAExD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB;IAC3B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY;IAClD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,kBAAkB;IAExD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,KAAiB;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;KAClB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=uuid.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.test.d.ts","sourceRoot":"","sources":["../../src/utils/uuid.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const uuid_1 = require("./uuid");
5
+ (0, vitest_1.describe)("generateUUID", () => {
6
+ // UUID v4 format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
7
+ // where y is one of [8, 9, a, b]
8
+ const uuidV4Regex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
9
+ (0, vitest_1.it)("generates valid UUID v4 format", () => {
10
+ const uuid = (0, uuid_1.generateUUID)();
11
+ (0, vitest_1.expect)(uuid).toMatch(uuidV4Regex);
12
+ });
13
+ (0, vitest_1.it)("generates 36-character string with hyphens", () => {
14
+ const uuid = (0, uuid_1.generateUUID)();
15
+ (0, vitest_1.expect)(uuid).toHaveLength(36);
16
+ (0, vitest_1.expect)(uuid.split("-")).toHaveLength(5);
17
+ });
18
+ (0, vitest_1.it)("has version 4 identifier in correct position", () => {
19
+ const uuid = (0, uuid_1.generateUUID)();
20
+ // The 13th character (index 14, after first two groups) should be '4'
21
+ (0, vitest_1.expect)(uuid[14]).toBe("4");
22
+ });
23
+ (0, vitest_1.it)("has valid variant bits", () => {
24
+ const uuid = (0, uuid_1.generateUUID)();
25
+ // The 17th character (index 19, after third group) should be 8, 9, a, or b
26
+ (0, vitest_1.expect)(["8", "9", "a", "b"]).toContain(uuid[19].toLowerCase());
27
+ });
28
+ (0, vitest_1.it)("uses lowercase hex characters", () => {
29
+ // Generate multiple to ensure consistent format
30
+ for (let i = 0; i < 10; i++) {
31
+ const uuid = (0, uuid_1.generateUUID)();
32
+ const hexPart = uuid.replace(/-/g, "");
33
+ (0, vitest_1.expect)(hexPart).toMatch(/^[0-9a-f]+$/);
34
+ }
35
+ });
36
+ (0, vitest_1.describe)("with crypto.getRandomValues available", () => {
37
+ (0, vitest_1.it)("uses crypto for randomness", () => {
38
+ // crypto.getRandomValues is available in Node.js
39
+ const uuid = (0, uuid_1.generateUUID)();
40
+ (0, vitest_1.expect)(uuid).toMatch(uuidV4Regex);
41
+ });
42
+ });
43
+ (0, vitest_1.describe)("fallback with Math.random", () => {
44
+ // Note: We can't easily test the Math.random fallback in Node.js
45
+ // because crypto is a read-only property. The fallback path
46
+ // is tested implicitly by the fact that our implementation handles
47
+ // the case where crypto might not exist (React Native older runtimes).
48
+ //
49
+ // Instead, we verify the algorithm produces valid UUIDs with any
50
+ // randomness source by testing the format constraints.
51
+ (0, vitest_1.it)("algorithm produces valid version and variant bits", () => {
52
+ // The UUID generation algorithm sets version=4 and variant=RFC4122
53
+ // regardless of which random source is used. We verify this by
54
+ // generating many UUIDs and checking format compliance.
55
+ for (let i = 0; i < 100; i++) {
56
+ const uuid = (0, uuid_1.generateUUID)();
57
+ // Version 4 at position 14
58
+ (0, vitest_1.expect)(uuid[14]).toBe("4");
59
+ // Variant at position 19 is 8, 9, a, or b
60
+ (0, vitest_1.expect)(["8", "9", "a", "b"]).toContain(uuid[19].toLowerCase());
61
+ }
62
+ });
63
+ });
64
+ (0, vitest_1.describe)("format consistency", () => {
65
+ (0, vitest_1.it)("consistently produces 8-4-4-4-12 format", () => {
66
+ for (let i = 0; i < 10; i++) {
67
+ const uuid = (0, uuid_1.generateUUID)();
68
+ const parts = uuid.split("-");
69
+ (0, vitest_1.expect)(parts[0]).toHaveLength(8);
70
+ (0, vitest_1.expect)(parts[1]).toHaveLength(4);
71
+ (0, vitest_1.expect)(parts[2]).toHaveLength(4);
72
+ (0, vitest_1.expect)(parts[3]).toHaveLength(4);
73
+ (0, vitest_1.expect)(parts[4]).toHaveLength(12);
74
+ }
75
+ });
76
+ });
77
+ });
78
+ //# sourceMappingURL=uuid.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.test.js","sourceRoot":"","sources":["../../src/utils/uuid.test.ts"],"names":[],"mappings":"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"}