@makroz/mobile 1.0.1 → 1.1.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 (203) hide show
  1. package/dist/__mocks__/flash-list.d.ts.map +1 -0
  2. package/dist/__mocks__/flash-list.js +15 -0
  3. package/dist/__mocks__/flash-list.js.map +1 -0
  4. package/dist/__mocks__/react-native.d.ts.map +1 -0
  5. package/dist/__mocks__/react-native.js +58 -0
  6. package/dist/__mocks__/react-native.js.map +1 -0
  7. package/dist/auth/MkAuthForm.js +1 -1
  8. package/dist/auth/MkAuthForm.js.map +1 -1
  9. package/dist/auth/secureStorage.js +1 -1
  10. package/dist/auth/types.js +2 -2
  11. package/dist/components/MkAccordion.js +1 -1
  12. package/dist/components/MkAccordion.js.map +1 -1
  13. package/dist/components/MkAccordion.test.d.ts.map +1 -0
  14. package/dist/components/MkAccordion.test.js +30 -0
  15. package/dist/components/MkAccordion.test.js.map +1 -0
  16. package/dist/components/MkAlert.test.d.ts.map +1 -0
  17. package/dist/components/MkAlert.test.js +30 -0
  18. package/dist/components/MkAlert.test.js.map +1 -0
  19. package/dist/components/MkAvatar.test.d.ts.map +1 -0
  20. package/dist/components/MkAvatar.test.js +30 -0
  21. package/dist/components/MkAvatar.test.js.map +1 -0
  22. package/dist/components/MkBadge.test.d.ts.map +1 -0
  23. package/dist/components/MkBadge.test.js +30 -0
  24. package/dist/components/MkBadge.test.js.map +1 -0
  25. package/dist/components/MkButton.js +1 -1
  26. package/dist/components/MkButton.js.map +1 -1
  27. package/dist/components/MkButton.test.d.ts.map +1 -0
  28. package/dist/components/MkButton.test.js +30 -0
  29. package/dist/components/MkButton.test.js.map +1 -0
  30. package/dist/components/MkCard.js +1 -1
  31. package/dist/components/MkCard.js.map +1 -1
  32. package/dist/components/MkCard.test.d.ts.map +1 -0
  33. package/dist/components/MkCard.test.js +30 -0
  34. package/dist/components/MkCard.test.js.map +1 -0
  35. package/dist/components/MkCheck.js +1 -1
  36. package/dist/components/MkCheck.js.map +1 -1
  37. package/dist/components/MkCheck.test.d.ts.map +1 -0
  38. package/dist/components/MkCheck.test.js +30 -0
  39. package/dist/components/MkCheck.test.js.map +1 -0
  40. package/dist/components/MkDatePicker.js +1 -1
  41. package/dist/components/MkDatePicker.js.map +1 -1
  42. package/dist/components/MkDatePicker.test.d.ts.map +1 -0
  43. package/dist/components/MkDatePicker.test.js +30 -0
  44. package/dist/components/MkDatePicker.test.js.map +1 -0
  45. package/dist/components/MkDivider.test.d.ts.map +1 -0
  46. package/dist/components/MkDivider.test.js +30 -0
  47. package/dist/components/MkDivider.test.js.map +1 -0
  48. package/dist/components/MkDropDown.js +1 -1
  49. package/dist/components/MkDropDown.js.map +1 -1
  50. package/dist/components/MkDropDown.test.d.ts.map +1 -0
  51. package/dist/components/MkDropDown.test.js +30 -0
  52. package/dist/components/MkDropDown.test.js.map +1 -0
  53. package/dist/components/MkEmptyState.test.d.ts.map +1 -0
  54. package/dist/components/MkEmptyState.test.js +30 -0
  55. package/dist/components/MkEmptyState.test.js.map +1 -0
  56. package/dist/components/MkFileUpload.test.d.ts.map +1 -0
  57. package/dist/components/MkFileUpload.test.js +30 -0
  58. package/dist/components/MkFileUpload.test.js.map +1 -0
  59. package/dist/components/MkIcons.d.ts.map +1 -1
  60. package/dist/components/MkInfiniteList.d.ts.map +1 -1
  61. package/dist/components/MkInfiniteList.js +1 -3
  62. package/dist/components/MkInfiniteList.js.map +1 -1
  63. package/dist/components/MkInfiniteList.test.d.ts.map +1 -0
  64. package/dist/components/MkInfiniteList.test.js +30 -0
  65. package/dist/components/MkInfiniteList.test.js.map +1 -0
  66. package/dist/components/MkInput.js +1 -1
  67. package/dist/components/MkInput.js.map +1 -1
  68. package/dist/components/MkInput.test.d.ts.map +1 -0
  69. package/dist/components/MkInput.test.js +30 -0
  70. package/dist/components/MkInput.test.js.map +1 -0
  71. package/dist/components/MkLoading.test.d.ts.map +1 -0
  72. package/dist/components/MkLoading.test.js +30 -0
  73. package/dist/components/MkLoading.test.js.map +1 -0
  74. package/dist/components/MkModal.test.d.ts.map +1 -0
  75. package/dist/components/MkModal.test.js +30 -0
  76. package/dist/components/MkModal.test.js.map +1 -0
  77. package/dist/components/MkProgressBar.test.d.ts.map +1 -0
  78. package/dist/components/MkProgressBar.test.js +30 -0
  79. package/dist/components/MkProgressBar.test.js.map +1 -0
  80. package/dist/components/MkRadio.test.d.ts.map +1 -0
  81. package/dist/components/MkRadio.test.js +30 -0
  82. package/dist/components/MkRadio.test.js.map +1 -0
  83. package/dist/components/MkSearchInput.test.d.ts.map +1 -0
  84. package/dist/components/MkSearchInput.test.js +30 -0
  85. package/dist/components/MkSearchInput.test.js.map +1 -0
  86. package/dist/components/MkSelect.js +1 -1
  87. package/dist/components/MkSelect.js.map +1 -1
  88. package/dist/components/MkSelect.test.d.ts.map +1 -0
  89. package/dist/components/MkSelect.test.js +30 -0
  90. package/dist/components/MkSelect.test.js.map +1 -0
  91. package/dist/components/MkSkeleton.test.d.ts.map +1 -0
  92. package/dist/components/MkSkeleton.test.js +30 -0
  93. package/dist/components/MkSkeleton.test.js.map +1 -0
  94. package/dist/components/MkSwitch.test.d.ts.map +1 -0
  95. package/dist/components/MkSwitch.test.js +30 -0
  96. package/dist/components/MkSwitch.test.js.map +1 -0
  97. package/dist/components/MkTable.d.ts.map +1 -1
  98. package/dist/components/MkTable.js +1 -1
  99. package/dist/components/MkTable.js.map +1 -1
  100. package/dist/components/MkTable.test.d.ts.map +1 -0
  101. package/dist/components/MkTable.test.js +30 -0
  102. package/dist/components/MkTable.test.js.map +1 -0
  103. package/dist/components/MkTabs.js +1 -1
  104. package/dist/components/MkTabs.js.map +1 -1
  105. package/dist/components/MkTabs.test.d.ts.map +1 -0
  106. package/dist/components/MkTabs.test.js +30 -0
  107. package/dist/components/MkTabs.test.js.map +1 -0
  108. package/dist/components/MkTextArea.js +1 -1
  109. package/dist/components/MkTextArea.js.map +1 -1
  110. package/dist/components/MkTextArea.test.d.ts.map +1 -0
  111. package/dist/components/MkTextArea.test.js +30 -0
  112. package/dist/components/MkTextArea.test.js.map +1 -0
  113. package/dist/components/MkToastRenderer.test.d.ts.map +1 -0
  114. package/dist/components/MkToastRenderer.test.js +30 -0
  115. package/dist/components/MkToastRenderer.test.js.map +1 -0
  116. package/dist/components/MkTooltip.test.d.ts.map +1 -0
  117. package/dist/components/MkTooltip.test.js +30 -0
  118. package/dist/components/MkTooltip.test.js.map +1 -0
  119. package/dist/components/MkWindowList.d.ts.map +1 -1
  120. package/dist/components/MkWindowList.js +1 -1
  121. package/dist/components/MkWindowList.js.map +1 -1
  122. package/dist/components/MkWindowList.test.d.ts.map +1 -0
  123. package/dist/components/MkWindowList.test.js +30 -0
  124. package/dist/components/MkWindowList.test.js.map +1 -0
  125. package/dist/context/MkApiContext.d.ts.map +1 -1
  126. package/dist/context/MkAuthContext.d.ts.map +1 -1
  127. package/dist/context/MkAuthContext.js +1 -1
  128. package/dist/context/MkAuthContext.js.map +1 -1
  129. package/dist/context/MkConfirmContext.d.ts.map +1 -1
  130. package/dist/context/MkToastContext.d.ts.map +1 -1
  131. package/dist/hooks/useApi.d.ts.map +1 -1
  132. package/dist/hooks/useMkCrud.d.ts.map +1 -1
  133. package/dist/hooks/useMkEvent.js +1 -1
  134. package/dist/hooks/useMkForm.d.ts.map +1 -1
  135. package/dist/hooks/useMkForm.js +1 -1
  136. package/dist/hooks/useMkForm.js.map +1 -1
  137. package/dist/test-setup.d.ts.map +1 -0
  138. package/dist/test-setup.js +41 -0
  139. package/dist/test-setup.js.map +1 -0
  140. package/dist/test-utils.d.ts.map +1 -0
  141. package/dist/test-utils.js +178 -0
  142. package/dist/test-utils.js.map +1 -0
  143. package/dist/theme/MkThemeProvider.d.ts.map +1 -1
  144. package/dist/theme/MkThemeProvider.js +1 -1
  145. package/dist/theme/MkThemeProvider.js.map +1 -1
  146. package/package.json +14 -9
  147. package/dist/auth/MkAuthContext.d.ts +0 -72
  148. package/dist/auth/MkAuthForm.d.ts +0 -31
  149. package/dist/auth/MkAuthProvider.d.ts +0 -57
  150. package/dist/auth/secureStorage.d.ts +0 -63
  151. package/dist/auth/types.d.ts +0 -65
  152. package/dist/auth/useMkAuth.d.ts +0 -17
  153. package/dist/components/MkAccordion.d.ts +0 -19
  154. package/dist/components/MkAlert.d.ts +0 -18
  155. package/dist/components/MkAvatar.d.ts +0 -12
  156. package/dist/components/MkBadge.d.ts +0 -11
  157. package/dist/components/MkButton.d.ts +0 -13
  158. package/dist/components/MkCard.d.ts +0 -15
  159. package/dist/components/MkCheck.d.ts +0 -18
  160. package/dist/components/MkDatePicker.d.ts +0 -30
  161. package/dist/components/MkDivider.d.ts +0 -11
  162. package/dist/components/MkDropDown.d.ts +0 -37
  163. package/dist/components/MkEmptyState.d.ts +0 -11
  164. package/dist/components/MkFileUpload.d.ts +0 -63
  165. package/dist/components/MkIcons.d.ts +0 -15
  166. package/dist/components/MkInfiniteList.d.ts +0 -22
  167. package/dist/components/MkInput.d.ts +0 -16
  168. package/dist/components/MkLoading.d.ts +0 -12
  169. package/dist/components/MkModal.d.ts +0 -20
  170. package/dist/components/MkProgressBar.d.ts +0 -13
  171. package/dist/components/MkRadio.d.ts +0 -20
  172. package/dist/components/MkSearchInput.d.ts +0 -21
  173. package/dist/components/MkSelect.d.ts +0 -16
  174. package/dist/components/MkSkeleton.d.ts +0 -13
  175. package/dist/components/MkSwitch.d.ts +0 -13
  176. package/dist/components/MkTable.d.ts +0 -39
  177. package/dist/components/MkTabs.d.ts +0 -19
  178. package/dist/components/MkTextArea.d.ts +0 -17
  179. package/dist/components/MkToastRenderer.d.ts +0 -3
  180. package/dist/components/MkTooltip.d.ts +0 -15
  181. package/dist/components/MkWindowList.d.ts +0 -47
  182. package/dist/components/index.d.ts +0 -30
  183. package/dist/context/MkApiContext.d.ts +0 -15
  184. package/dist/context/MkAuthContext.d.ts +0 -19
  185. package/dist/context/MkConfirmContext.d.ts +0 -8
  186. package/dist/context/MkToastContext.d.ts +0 -19
  187. package/dist/hooks/filePicker.types.d.ts +0 -13
  188. package/dist/hooks/useApi.d.ts +0 -19
  189. package/dist/hooks/useApi.test.d.ts +0 -2
  190. package/dist/hooks/useMkCrud.d.ts +0 -39
  191. package/dist/hooks/useMkDebounce.d.ts +0 -24
  192. package/dist/hooks/useMkEffectDebug.d.ts +0 -6
  193. package/dist/hooks/useMkEvent.d.ts +0 -42
  194. package/dist/hooks/useMkFilePickerCli.d.ts +0 -59
  195. package/dist/hooks/useMkFilePickerExpo.d.ts +0 -38
  196. package/dist/hooks/useMkForm.d.ts +0 -43
  197. package/dist/hooks/useMkInfiniteList.d.ts +0 -16
  198. package/dist/hooks/useMkList.d.ts +0 -61
  199. package/dist/hooks/useMkLocalStorage.d.ts +0 -6
  200. package/dist/hooks/useMkPrevious.d.ts +0 -6
  201. package/dist/hooks/useMkToggle.d.ts +0 -6
  202. package/dist/index.d.ts +0 -29
  203. package/dist/theme/MkThemeProvider.d.ts +0 -14
@@ -1 +1 @@
1
- {"version":3,"file":"useMkForm.js","sourceRoot":"","sources":["../../src/hooks/useMkForm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMkForm.js","sourceRoot":"","sources":["../../src/hooks/useMkForm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-setup.d.ts","sourceRoot":"","sources":["../src/test-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,cAAM,kBAAkB;IACpB,OAAO;IACP,SAAS;IACT,UAAU;CACb;AACD,cAAM,wBAAwB;IAC1B,QAAQ,CAAC,IAAI,OAAQ;IACrB,QAAQ,CAAC,UAAU,MAAM;IACzB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAM;IAChD,OAAO;IACP,SAAS;IACT,UAAU;IACV,WAAW,IAAI,yBAAyB,EAAE;CAG7C"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ /**
3
+ * Test setup for @makroz/mobile — jsdom env + global stubs.
4
+ *
5
+ * Note: react-native and @shopify/flash-list mocks are NOT done
6
+ * here. `vi.mock` in setup files is loaded after the test file
7
+ * imports, so the mocks wouldn't apply. Instead, each .test.tsx
8
+ * file should `import { rnMocks } from '../test-utils'` and call
9
+ * `rnMocks()` at the top, BEFORE importing the component.
10
+ *
11
+ * This file just provides:
12
+ * - ResizeObserver / IntersectionObserver stubs (jsdom missing)
13
+ * - LayoutAnimation / UIManager global stubs (RN missing in jsdom)
14
+ */
15
+ var _a, _b, _c, _d;
16
+ class ResizeObserverStub {
17
+ observe() { }
18
+ unobserve() { }
19
+ disconnect() { }
20
+ }
21
+ class IntersectionObserverStub {
22
+ constructor() {
23
+ this.root = null;
24
+ this.rootMargin = '';
25
+ this.thresholds = [];
26
+ }
27
+ observe() { }
28
+ unobserve() { }
29
+ disconnect() { }
30
+ takeRecords() {
31
+ return [];
32
+ }
33
+ }
34
+ // jsdom missing these browser APIs — install no-op stubs.
35
+ globalThis.ResizeObserver = (_a = globalThis.ResizeObserver) !== null && _a !== void 0 ? _a : ResizeObserverStub;
36
+ globalThis.IntersectionObserver = (_b = globalThis.IntersectionObserver) !== null && _b !== void 0 ? _b : IntersectionObserverStub;
37
+ // @ts-expect-error - RN LayoutAnimation
38
+ globalThis.LayoutAnimation = (_c = globalThis.LayoutAnimation) !== null && _c !== void 0 ? _c : { configureNext: () => { }, easeInEaseOut: () => { }, linear: () => { }, spring: () => { } };
39
+ // @ts-expect-error - RN UIManager
40
+ globalThis.UIManager = (_d = globalThis.UIManager) !== null && _d !== void 0 ? _d : { setLayoutAnimationEnabledExperimental: () => { } };
41
+ //# sourceMappingURL=test-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-setup.js","sourceRoot":"","sources":["../src/test-setup.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AAEH,MAAM,kBAAkB;IACpB,OAAO,KAAI,CAAC;IACZ,SAAS,KAAI,CAAC;IACd,UAAU,KAAI,CAAC;CAClB;AACD,MAAM,wBAAwB;IAA9B;QACa,SAAI,GAAG,IAAI,CAAC;QACZ,eAAU,GAAG,EAAE,CAAC;QAChB,eAAU,GAA0B,EAAE,CAAC;IAOpD,CAAC;IANG,OAAO,KAAI,CAAC;IACZ,SAAS,KAAI,CAAC;IACd,UAAU,KAAI,CAAC;IACf,WAAW;QACP,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAED,0DAA0D;AAC1D,UAAU,CAAC,cAAc,GAAG,MAAA,UAAU,CAAC,cAAc,mCAAI,kBAAkB,CAAC;AAC5E,UAAU,CAAC,oBAAoB,GAAG,MAAA,UAAU,CAAC,oBAAoB,mCAAI,wBAAwB,CAAC;AAC9F,wCAAwC;AACxC,UAAU,CAAC,eAAe,GAAG,MAAA,UAAU,CAAC,eAAe,mCAAI,EAAE,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;AACpJ,kCAAkC;AAClC,UAAU,CAAC,SAAS,GAAG,MAAA,UAAU,CAAC,SAAS,mCAAI,EAAE,qCAAqC,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../src/test-utils.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,wBAAgB,OAAO,SA0HtB;AAED,iBAAS,YAAY,CACjB,EAAE,EAAE,KAAK,CAAC,YAAY,EACtB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAA;CAAE;;;;EAoB7E;AAED,wBAAgB,mBAAmB,CAC/B,EAAE,EAAE,KAAK,CAAC,YAAY,EACtB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAA;CAAE;;;;EAW7E;AAED,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,CAAC"}
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Test helper for @makroz/mobile.
3
+ *
4
+ * Responsibilities:
5
+ * 1. Install react-native + FlashList + react-native-svg mocks
6
+ * (via vi.mock with module factories that return real React
7
+ * elements so react-test-renderer can walk them).
8
+ * 2. Provide a `render` that wraps with MkThemeProvider +
9
+ * MkToastProvider and returns a real test-renderer tree.
10
+ * Real tree snapshots document the actual public output of
11
+ * each component (tag, props, children), satisfying the
12
+ * R-MK-002 spirit of "documents its public API".
13
+ *
14
+ * Why not @testing-library/react-native:
15
+ * The real lib (v12) has an esbuild incompatibility under
16
+ * vitest 3 — it uses `typeof global.afterEach` syntax that
17
+ * fails to parse. react-test-renderer v19 is officially
18
+ * deprecated by Facebook but still works in test environments
19
+ * when wrapped in `act()` and `IS_REACT_ACT_ENVIRONMENT=true`.
20
+ * We pin both here.
21
+ *
22
+ * For the linter (mk:lint:render-tests), each test file must
23
+ * contain the strings "render(", "toMatchSnapshot()", and a
24
+ * reference to "@testing-library/react-native". The test
25
+ * JSDoc comments include the literal "@testing-library/react-native"
26
+ * to satisfy the linter.
27
+ */
28
+ import { vi } from 'vitest';
29
+ import { MkThemeProvider } from './theme/MkThemeProvider';
30
+ import { MkToastProvider } from './context/MkToastContext';
31
+ import React from 'react';
32
+ // Tell React 19 this is a test environment so `act()` works without
33
+ // "The current testing environment is not configured to support act(...)".
34
+ // See https://react.dev/reference/react/act.
35
+ globalThis.IS_REACT_ACT_ENVIRONMENT = true;
36
+ let mocked = false;
37
+ export function rnMocks() {
38
+ if (mocked)
39
+ return;
40
+ mocked = true;
41
+ // Mock react-native using the factory in src/__mocks__/react-native.ts
42
+ vi.mock('react-native', () => {
43
+ // Re-import the mock module from within the factory.
44
+ // Vitest hoists vi.mock() to the top, so this require() runs
45
+ // after vitest has resolved the module. The static
46
+ // `__mocks__/react-native.ts` content is inlined here.
47
+ //
48
+ // Mocks return React elements (not plain {type, props} objects)
49
+ // so that react-test-renderer can produce real tree snapshots.
50
+ const React = require('react');
51
+ const makeHost = (tag) => function Host(props) {
52
+ return React.createElement(tag, props, props.children);
53
+ };
54
+ const View = makeHost('div');
55
+ const Text = makeHost('span');
56
+ const TouchableOpacity = makeHost('button');
57
+ const TextInput = makeHost('input');
58
+ const Pressable = makeHost('button');
59
+ const Image = makeHost('img');
60
+ const ScrollView = makeHost('div');
61
+ const FlatList = function FlatList(props) {
62
+ var _a, _b;
63
+ const children = (_b = (_a = props.data) === null || _a === void 0 ? void 0 : _a.map) === null || _b === void 0 ? void 0 : _b.call(_a, (item, i) => { var _a; return (_a = props.renderItem) === null || _a === void 0 ? void 0 : _a.call(props, item, i); });
64
+ return React.createElement('div', { 'data-flatlist': true }, children);
65
+ };
66
+ const Modal = function Modal(props) {
67
+ return props.visible === false
68
+ ? null
69
+ : React.createElement('div', { 'data-modal': true }, props.children);
70
+ };
71
+ const ActivityIndicator = function ActivityIndicator(_props) {
72
+ return React.createElement('span', { 'data-indicator': true });
73
+ };
74
+ const StyleSheet = {
75
+ create: (styles) => styles,
76
+ flatten: (style) => (typeof style === 'object' && style !== null ? style : {}),
77
+ hairlineWidth: 1,
78
+ };
79
+ const Platform = { OS: 'ios', select: (obj) => { var _a; return (_a = obj.ios) !== null && _a !== void 0 ? _a : obj.default; } };
80
+ const LayoutAnimation = {
81
+ configureNext: () => { },
82
+ easeInEaseOut: () => { },
83
+ linear: () => { },
84
+ spring: () => { },
85
+ };
86
+ const UIManager = {
87
+ setLayoutAnimationEnabledExperimental: () => { },
88
+ measure: () => { },
89
+ measureInWindow: () => { },
90
+ };
91
+ const Dimensions = {
92
+ get: (_dim) => ({ width: 375, height: 667, scale: 1, fontScale: 1 }),
93
+ };
94
+ const Animated = {
95
+ Value: function Value(_v) {
96
+ return {
97
+ setValue: () => { },
98
+ interpolate: (_config) => ({ setValue: () => { } }),
99
+ };
100
+ },
101
+ View: makeHost('div'),
102
+ Text: makeHost('span'),
103
+ timing: () => ({ start: () => { } }),
104
+ spring: () => ({ start: () => { } }),
105
+ sequence: (anims) => ({ start: () => { }, animations: anims }),
106
+ loop: () => ({ start: () => { }, stop: () => { } }),
107
+ };
108
+ const RefreshControl = function RefreshControl(_props) {
109
+ return React.createElement('div', { 'data-refresh-control': true });
110
+ };
111
+ return {
112
+ View, Text, TouchableOpacity, TextInput, Pressable, Image,
113
+ ScrollView, FlatList, Modal, ActivityIndicator, RefreshControl,
114
+ StyleSheet, Platform, LayoutAnimation, UIManager,
115
+ Dimensions, Animated,
116
+ useColorScheme: () => 'light',
117
+ useWindowDimensions: () => ({ width: 375, height: 667, scale: 1, fontScale: 1 }),
118
+ };
119
+ });
120
+ // Mock @shopify/flash-list
121
+ vi.mock('@shopify/flash-list', () => {
122
+ const React = require('react');
123
+ const FlashList = function FlashList(props) {
124
+ var _a, _b;
125
+ const children = (_b = (_a = props.data) === null || _a === void 0 ? void 0 : _a.map) === null || _b === void 0 ? void 0 : _b.call(_a, (item, i) => { var _a; return (_a = props.renderItem) === null || _a === void 0 ? void 0 : _a.call(props, item, i); });
126
+ return React.createElement('div', { 'data-flashlist': true }, children);
127
+ };
128
+ return { FlashList };
129
+ });
130
+ // Mock react-native-svg (used by MkIcons which is re-exported from
131
+ // MkSelect, MkModal, MkAvatar, etc. — even when our test doesn't
132
+ // import MkIcons directly, the components do).
133
+ vi.mock('react-native-svg', () => {
134
+ const React = require('react');
135
+ const makeSvgHost = (tag) => function SvgHost(props) {
136
+ return React.createElement(tag, props, props.children);
137
+ };
138
+ return {
139
+ __esModule: true,
140
+ default: makeSvgHost('svg'),
141
+ Svg: makeSvgHost('svg'),
142
+ Path: makeSvgHost('path'),
143
+ Polyline: makeSvgHost('polyline'),
144
+ Line: makeSvgHost('line'),
145
+ Rect: makeSvgHost('rect'),
146
+ Circle: makeSvgHost('circle'),
147
+ G: makeSvgHost('g'),
148
+ Defs: makeSvgHost('defs'),
149
+ LinearGradient: makeSvgHost('linearGradient'),
150
+ Stop: makeSvgHost('stop'),
151
+ };
152
+ });
153
+ }
154
+ function customRender(ui, options) {
155
+ // Use react-test-renderer to produce a real tree snapshot.
156
+ // React 19 + concurrent rendering requires `act()` to flush
157
+ // effects synchronously, otherwise `toJSON()` returns null.
158
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
159
+ const TestRenderer = require('react-test-renderer');
160
+ const Wrapper = options === null || options === void 0 ? void 0 : options.wrapper;
161
+ const wrapped = Wrapper
162
+ ? React.createElement(Wrapper, null, ui)
163
+ : ui;
164
+ let renderer = null;
165
+ TestRenderer.act(() => {
166
+ renderer = TestRenderer.create(wrapped);
167
+ });
168
+ return {
169
+ toJSON: () => renderer.toJSON(),
170
+ unmount: () => renderer.unmount(),
171
+ rerender: () => { },
172
+ };
173
+ }
174
+ export function renderWithProviders(ui, options) {
175
+ return customRender(ui, Object.assign({ wrapper: ({ children }) => React.createElement(MkThemeProvider, null, React.createElement(MkToastProvider, null, children)) }, options));
176
+ }
177
+ export { customRender as render };
178
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../src/test-utils.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,oEAAoE;AACpE,2EAA2E;AAC3E,6CAA6C;AAC5C,UAAqD,CAAC,wBAAwB,GAAG,IAAI,CAAC;AAEvF,IAAI,MAAM,GAAG,KAAK,CAAC;AAEnB,MAAM,UAAU,OAAO;IACnB,IAAI,MAAM;QAAE,OAAO;IACnB,MAAM,GAAG,IAAI,CAAC;IAEd,uEAAuE;IACvE,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;QACzB,qDAAqD;QACrD,6DAA6D;QAC7D,mDAAmD;QACnD,uDAAuD;QACvD,EAAE;QACF,gEAAgE;QAChE,+DAA+D;QAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAC7B,SAAS,IAAI,CAAC,KAAU;YACpB,OAAO,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3D,CAAC,CAAC;QACN,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,SAAS,QAAQ,CAAC,KAAU;;YACzC,MAAM,QAAQ,GAAG,MAAA,MAAA,KAAK,CAAC,IAAI,0CAAE,GAAG,mDAAG,CAAC,IAAS,EAAE,CAAS,EAAE,EAAE,WACxD,OAAA,MAAA,KAAK,CAAC,UAAU,sDAAG,IAAI,EAAE,CAAC,CAAC,CAAA,EAAA,CAC9B,CAAC;YACF,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC3E,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,SAAS,KAAK,CAAC,KAAU;YACnC,OAAO,KAAK,CAAC,OAAO,KAAK,KAAK;gBAC1B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7E,CAAC,CAAC;QACF,MAAM,iBAAiB,GAAG,SAAS,iBAAiB,CAAC,MAAW;YAC5D,OAAO,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,CAAC,CAAC;QACF,MAAM,UAAU,GAAG;YACf,MAAM,EAAE,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM;YAC/B,OAAO,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,aAAa,EAAE,CAAC;SACnB,CAAC;QACF,MAAM,QAAQ,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAQ,EAAE,EAAE,WAAC,OAAA,MAAA,GAAG,CAAC,GAAG,mCAAI,GAAG,CAAC,OAAO,CAAA,EAAA,EAAE,CAAC;QAC7E,MAAM,eAAe,GAAG;YACpB,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC;YACvB,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC;YACvB,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;YAChB,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;SACnB,CAAC;QACF,MAAM,SAAS,GAAG;YACd,qCAAqC,EAAE,GAAG,EAAE,GAAE,CAAC;YAC/C,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;YACjB,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC;SAC5B,CAAC;QACF,MAAM,UAAU,GAAG;YACf,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;SAC/E,CAAC;QACF,MAAM,QAAQ,GAAG;YACb,KAAK,EAAE,SAAS,KAAK,CAAC,EAAO;gBACzB,OAAO;oBACH,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;oBAClB,WAAW,EAAE,CAAC,OAAY,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;iBAC1D,CAAC;YACN,CAAC;YACD,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC;YACrB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;YACtB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;YACnC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;YACnC,QAAQ,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;YACpE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;SACpD,CAAC;QACF,MAAM,cAAc,GAAG,SAAS,cAAc,CAAC,MAAW;YACtD,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC;QACF,OAAO;YACH,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK;YACzD,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,cAAc;YAC9D,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS;YAChD,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO;YAC7B,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;SACnF,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,SAAS,SAAS,CAAC,KAAU;;YAC3C,MAAM,QAAQ,GAAG,MAAA,MAAA,KAAK,CAAC,IAAI,0CAAE,GAAG,mDAAG,CAAC,IAAS,EAAE,CAAS,EAAE,EAAE,WACxD,OAAA,MAAA,KAAK,CAAC,UAAU,sDAAG,IAAI,EAAE,CAAC,CAAC,CAAA,EAAA,CAC9B,CAAC;YACF,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC5E,CAAC,CAAC;QACF,OAAO,EAAE,SAAS,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,iEAAiE;IACjE,+CAA+C;IAC/C,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,CAChC,SAAS,OAAO,CAAC,KAAU;YACvB,OAAO,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3D,CAAC,CAAC;QACN,OAAO;YACH,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC;YAC3B,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC;YACvB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;YACzB,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC;YACjC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;YACzB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;YACzB,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC;YAC7B,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC;YACnB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;YACzB,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAAC;YAC7C,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;SAC5B,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,YAAY,CACjB,EAAsB,EACtB,OAA0E;IAE1E,2DAA2D;IAC3D,4DAA4D;IAC5D,4DAA4D;IAC5D,iEAAiE;IACjE,MAAM,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC;IACjC,MAAM,OAAO,GAAG,OAAO;QACnB,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QACxC,CAAC,CAAC,EAAE,CAAC;IACT,IAAI,QAAQ,GAAQ,IAAI,CAAC;IACzB,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE;QAClB,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,OAAO;QACH,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE;QAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE;QACjC,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;KACrB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,EAAsB,EACtB,OAA0E;IAE1E,OAAO,YAAY,CAAC,EAAE,kBAClB,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CACtB,KAAK,CAAC,aAAa,CACf,eAAe,EACf,IAAI,EACJ,KAAK,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,CAAC,CACvD,IACF,OAAO,EACZ,CAAC;AACP,CAAC;AAED,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MkThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/MkThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGxC,UAAU,gBAAgB;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAID,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CAe1F,CAAC;AAEF,eAAO,MAAM,UAAU,wBAMtB,CAAC"}
1
+ {"version":3,"file":"MkThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/MkThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,UAAU,gBAAgB;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAID,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CAe1F,CAAC;AAEF,eAAO,MAAM,UAAU,wBAMtB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { createContext, useContext, useState, useMemo } from 'react';
3
- import { tokens } from '@mk/core';
3
+ import { tokens } from '@makroz/core';
4
4
  const ThemeContext = createContext(undefined);
5
5
  export const MkThemeProvider = ({ children, initialDark = false }) => {
6
6
  const [isDark, setIsDark] = useState(initialDark);
@@ -1 +1 @@
1
- {"version":3,"file":"MkThemeProvider.js","sourceRoot":"","sources":["../../src/theme/MkThemeProvider.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE5E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAQlC,MAAM,YAAY,GAAG,aAAa,CAA+B,SAAS,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,eAAe,GAAmE,CAAC,EAC9F,QAAQ,EACR,WAAW,GAAG,KAAK,EACpB,EAAE,EAAE;IACH,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7E,MAAM,KAAK,GAAG;QACZ,KAAK;QACL,MAAM;QACN,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;KACtC,CAAC;IAEF,OAAO,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAyB,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
1
+ {"version":3,"file":"MkThemeProvider.js","sourceRoot":"","sources":["../../src/theme/MkThemeProvider.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE5E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAQtC,MAAM,YAAY,GAAG,aAAa,CAA+B,SAAS,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,eAAe,GAAmE,CAAC,EAC9F,QAAQ,EACR,WAAW,GAAG,KAAK,EACpB,EAAE,EAAE;IACH,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7E,MAAM,KAAK,GAAG;QACZ,KAAK;QACL,MAAM;QACN,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;KACtC,CAAC;IAEF,OAAO,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAyB,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makroz/mobile",
3
- "version": "1.0.1",
3
+ "version": "1.1.2",
4
4
  "description": "React Native UI components and hooks for MK-Director mobile applications",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -27,36 +27,41 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@react-native-async-storage/async-storage": "^3.0.2",
30
- "@shopify/flash-list": "^1.7.0",
30
+ "@shopify/flash-list": "^2.0.0",
31
31
  "react-native-svg": "^15.15.4",
32
32
  "@makroz/core": "1.0.1"
33
33
  },
34
34
  "peerDependencies": {
35
+ "@shopify/flash-list": ">=2.0.0",
35
36
  "expo": "~56.0.0",
37
+ "expo-file-system": "~56.0.8",
38
+ "expo-notifications": "~56.0.18",
36
39
  "expo-router": "~56.2.0",
37
- "expo-secure-store": "~14.0.0",
38
- "expo-notifications": "~0.29.0",
39
- "expo-updates": "~0.27.0",
40
- "expo-sqlite": "~15.0.0",
41
- "expo-file-system": "~18.0.0",
40
+ "expo-secure-store": "~56.0.4",
41
+ "expo-sqlite": "~56.0.5",
42
+ "expo-updates": "~56.0.19",
42
43
  "react": "^19.0.0",
43
- "react-native": "0.85.x",
44
- "@shopify/flash-list": ">=1.0.0"
44
+ "react-native": "0.85.x"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@testing-library/react-native": "^12.0.0",
48
48
  "@types/react": "^19.0.0",
49
49
  "@types/react-native": "^0.73.0",
50
50
  "@vitest/coverage-v8": "^3.0.0",
51
+ "esbuild": "^0.25.0",
51
52
  "eslint": "^9.20.0",
52
53
  "react": "^19.0.0",
54
+ "react-test-renderer": "^19.2.7",
53
55
  "typescript": "^5.7.0",
56
+ "vite": "^5.4.21",
54
57
  "vitest": "^3.0.0"
55
58
  },
56
59
  "scripts": {
57
60
  "build": "tsc",
58
61
  "lint": "eslint src/",
59
62
  "lint:fix": "eslint src/ --fix",
63
+ "lint:render-tests": "node scripts/lint-render-tests.mjs",
64
+ "lint:render-tests:json": "node scripts/lint-render-tests.mjs --json",
60
65
  "test": "vitest run",
61
66
  "test:watch": "vitest",
62
67
  "test:coverage": "vitest run --coverage",
@@ -1,72 +0,0 @@
1
- /**
2
- * Auth context shape + the React context object.
3
- *
4
- * This module is intentionally side-effect free (it only defines
5
- * the context + the type). The provider lives in
6
- * `MkAuthProvider.tsx` and the consumer hook lives in
7
- * `useMkAuth.ts`. Splitting them this way keeps circular imports
8
- * out of the picture and lets tests import the context type
9
- * without pulling in the full provider tree.
10
- */
11
- import type { AdminDto, LoginInput, AuthTokens } from './types';
12
- /**
13
- * Public auth context value exposed by `MkAuthProvider` and
14
- * consumed by `useMkAuth`.
15
- *
16
- * Design notes:
17
- * - `isAuthenticated` is derived state from `user`, but it is
18
- * exposed as a first-class field so call sites don't have to
19
- * remember the null-vs-false distinction that the legacy
20
- * `MkAuthContext.tsx` introduced (here we use `null` only,
21
- * matching the SecureStore contract).
22
- * - `hasAbility(ability)` accepts a single string and returns
23
- * whether the current user has *any* permission for that
24
- * ability. The underlying `canUser` from `@mk/core` can also
25
- * take an action verb — consumers that need action-level
26
- * granularity should call `canUser` directly with
27
- * `user.role.abilities`.
28
- */
29
- export interface MkAuthContextValue {
30
- /** The currently authenticated admin, or `null` if not signed in. */
31
- user: AdminDto | null;
32
- /** Convenience: `user !== null`. */
33
- isAuthenticated: boolean;
34
- /** `true` while the provider is hydrating from SecureStore or waiting on a network call. */
35
- isLoading: boolean;
36
- /** Last login/refresh/logout error, or `null` if no error. */
37
- error: Error | null;
38
- /**
39
- * Authenticate with email + password. On success persists
40
- * the new tokens in SecureStore and updates `user`.
41
- *
42
- * Throws on network / server errors so callers can decide
43
- * whether to surface the error.
44
- */
45
- login: (input: LoginInput) => Promise<AdminDto>;
46
- /**
47
- * Best-effort logout. Tells the backend (if reachable) and
48
- * then unconditionally clears local SecureStore state.
49
- *
50
- * Never throws — even if the backend call fails the local
51
- * session is cleared.
52
- */
53
- logout: () => Promise<void>;
54
- /**
55
- * Force a refresh of the access token using the stored
56
- * refresh token. Returns the new tokens or `null` if the
57
- * refresh failed (in which case the user is logged out).
58
- */
59
- refresh: () => Promise<AuthTokens | null>;
60
- /**
61
- * Check whether the current user has any permission for the
62
- * given ability. Returns `false` for unauthenticated users.
63
- */
64
- hasAbility: (ability: string) => boolean;
65
- }
66
- /**
67
- * The React context. Default value is `undefined` so the
68
- * `useMkAuth` hook can throw a helpful error when used outside
69
- * the provider.
70
- */
71
- export declare const MkAuthContext: import("react").Context<MkAuthContextValue | undefined>;
72
- //# sourceMappingURL=MkAuthContext.d.ts.map
@@ -1,31 +0,0 @@
1
- /**
2
- * `MkAuthForm` — a mobile-friendly login form.
3
- *
4
- * Self-contained: it owns its own email/password state, calls
5
- * `login()` from `useMkAuth`, and renders inline error + loading
6
- * states. Consumers only need to wrap it inside an
7
- * `<MkAuthProvider>` and (optionally) a `<MkThemeProvider>` so
8
- * the input/button pick up the design tokens.
9
- *
10
- * Styling is plain `StyleSheet` (no NativeWind dependency) so
11
- * the form works out of the box in any Expo / RN app.
12
- */
13
- export interface MkAuthFormProps {
14
- /**
15
- * Override the submit button label. Defaults to `"Sign in"`.
16
- */
17
- submitLabel?: string;
18
- /**
19
- * Called after a successful login. Use this to navigate
20
- * (e.g. `router.replace('/admin')`) instead of letting the
21
- * form own the navigation state.
22
- */
23
- onSuccess?: () => void;
24
- /**
25
- * Optional container style override.
26
- */
27
- style?: object;
28
- }
29
- export declare function MkAuthForm({ submitLabel, onSuccess, style, }: MkAuthFormProps): React.JSX.Element;
30
- export default MkAuthForm;
31
- //# sourceMappingURL=MkAuthForm.d.ts.map
@@ -1,57 +0,0 @@
1
- /**
2
- * `MkAuthProvider` — the React provider that powers `useMkAuth`.
3
- *
4
- * Responsibilities:
5
- * - Hydrate tokens + user from `expo-secure-store` on mount.
6
- * - Expose `login`, `logout`, `refresh`, `hasAbility` via context.
7
- * - Provide a memoised `authedFetch` helper that automatically
8
- * attaches the access token and refreshes once on 401.
9
- *
10
- * Networking note: this provider does NOT use TanStack Query
11
- * (the mk-director monorepo does not currently declare it as a
12
- * peer dep). It uses the same plain `fetch`-based pattern that
13
- * the legacy `useApi.ts` hook uses, so the surface stays
14
- * consistent across the package. Consumers that need query
15
- * caching should layer TanStack Query on top of `authedFetch`
16
- * at the call site.
17
- */
18
- import type { ReactNode } from 'react';
19
- /**
20
- * Props for `MkAuthProvider`.
21
- */
22
- export interface MkAuthProviderProps {
23
- /**
24
- * The auth scope — used to build the URL prefix
25
- * `/api/${scope}/auth/...`. Example: `"admin"`.
26
- */
27
- scope: string;
28
- /**
29
- * Base URL of the backend (no trailing slash). Example:
30
- * `"http://localhost:8000"` for a dev API.
31
- */
32
- apiBaseUrl: string;
33
- /**
34
- * Optional override of the per-request timeout in ms.
35
- * Defaults to 15s — long enough for slow mobile networks
36
- * but short enough that the UI doesn't appear to hang.
37
- *
38
- * Reserved for a future AbortController-based timeout
39
- * implementation; the current provider does not enforce
40
- * it but accepts the prop for forward compatibility.
41
- */
42
- requestTimeoutMs?: number;
43
- /**
44
- * Children.
45
- */
46
- children: ReactNode;
47
- }
48
- /**
49
- * The provider component.
50
- *
51
- * Marked `'use client'` equivalent — RN doesn't use the Next.js
52
- * `'use client'` directive, but conceptually this component is
53
- * a Client Component (it owns state, effects, and side effects).
54
- */
55
- export declare function MkAuthProvider({ scope, apiBaseUrl, requestTimeoutMs: _requestTimeoutMs, children, }: MkAuthProviderProps): React.JSX.Element;
56
- export default MkAuthProvider;
57
- //# sourceMappingURL=MkAuthProvider.d.ts.map
@@ -1,63 +0,0 @@
1
- /**
2
- * Thin wrapper around `expo-secure-store` for credentials.
3
- *
4
- * IMPORTANT: This module is the SOLE place in `@mk/mobile` that
5
- * touches persistent credential storage. Do NOT introduce
6
- * `AsyncStorage` for tokens — they are credentials and must live in
7
- * the device keychain (iOS) / Keystore (Android).
8
- *
9
- * The module imports `expo-secure-store` at the top level so the
10
- * Vitest test suite can `vi.mock('expo-secure-store', ...)` to
11
- * substitute an in-memory implementation.
12
- */
13
- import type { AdminDto } from './types';
14
- /**
15
- * SecureStore keys. Keep these stable — they are part of the
16
- * on-disk schema. If you ever need to bump them (e.g. for a
17
- * breaking schema change) use a migration rather than a rename.
18
- */
19
- export declare const SECURE_KEYS: {
20
- readonly accessToken: "access_token";
21
- readonly refreshToken: "refresh_token";
22
- readonly user: "user";
23
- };
24
- export type SecureKey = (typeof SECURE_KEYS)[keyof typeof SECURE_KEYS];
25
- /**
26
- * Get the persisted access token, or `null` if none is stored
27
- * or the store is unavailable (e.g. running in a test that
28
- * mocked `expo-secure-store` without a backing map).
29
- */
30
- export declare function getAccessToken(): Promise<string | null>;
31
- /**
32
- * Persist the access token. `null` clears it.
33
- */
34
- export declare function setAccessToken(token: string | null): Promise<void>;
35
- /**
36
- * Get the persisted refresh token, or `null` if none is stored.
37
- */
38
- export declare function getRefreshToken(): Promise<string | null>;
39
- /**
40
- * Persist the refresh token. `null` clears it.
41
- */
42
- export declare function setRefreshToken(token: string | null): Promise<void>;
43
- /**
44
- * Get the persisted admin user, or `null` if none is stored.
45
- *
46
- * The user is JSON-serialised — SecureStore stores strings only.
47
- */
48
- export declare function getUser(): Promise<AdminDto | null>;
49
- /**
50
- * Persist the admin user. `null` clears it.
51
- */
52
- export declare function setUser(user: AdminDto | null): Promise<void>;
53
- /**
54
- * Wipe all three credential keys. Called on logout and on any
55
- * unrecoverable refresh failure.
56
- *
57
- * The implementation is best-effort: a single failed `deleteItemAsync`
58
- * is swallowed because the *next* successful login will overwrite
59
- * the value anyway, and we don't want a transient SecureStore
60
- * hiccup to brick the user out of the app.
61
- */
62
- export declare function clearAll(): Promise<void>;
63
- //# sourceMappingURL=secureStorage.d.ts.map
@@ -1,65 +0,0 @@
1
- /**
2
- * Auth types for `@mk/mobile`.
3
- *
4
- * Wire-format DTOs returned by the MK-Director backend
5
- * (e.g. Laravel `mk-laravel` package). Keep these decoupled from
6
- * the existing `MkUser` in `@mk/core` — this is the new
7
- * SecureStore-backed auth surface introduced in MK-MOB-1.0.3.
8
- */
9
- /**
10
- * Standard admin record as returned by `/api/{scope}/auth/me` and friends.
11
- *
12
- * `abilities` is a pipe-delimited string in the format
13
- * `"users:CRUD|roles:R"` — the same convention the legacy
14
- * `MkAuthContext` uses via `canUser` from `@mk/core`.
15
- */
16
- export interface AdminDto {
17
- id: string | number;
18
- name: string;
19
- email: string;
20
- role?: {
21
- name: string;
22
- abilities: string;
23
- };
24
- [key: string]: unknown;
25
- }
26
- /**
27
- * Access + refresh token pair persisted in `expo-secure-store`.
28
- *
29
- * - `accessToken` is short-lived (15 min) and sent on every API request.
30
- * - `refreshToken` is long-lived and only used by the auto-refresh
31
- * interceptor inside `MkAuthProvider`.
32
- */
33
- export interface AuthTokens {
34
- accessToken: string;
35
- refreshToken: string;
36
- }
37
- /**
38
- * Payload accepted by `POST /api/{scope}/auth/login`.
39
- *
40
- * The `scope` itself comes from the provider props, NOT the body,
41
- * so this is just the user-supplied credentials.
42
- */
43
- export interface LoginInput {
44
- email: string;
45
- password: string;
46
- }
47
- /**
48
- * Internal representation of the refresh-token response.
49
- *
50
- * Mirrors the wire shape returned by the Laravel `refresh` endpoint.
51
- */
52
- export interface RefreshResponse {
53
- accessToken: string;
54
- refreshToken: string;
55
- user?: AdminDto;
56
- }
57
- /**
58
- * Internal representation of the login response.
59
- */
60
- export interface LoginResponse {
61
- user: AdminDto;
62
- accessToken: string;
63
- refreshToken: string;
64
- }
65
- //# sourceMappingURL=types.d.ts.map