@makroz/mobile 1.2.3 → 1.2.4-rc14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,7 +5,7 @@ Librería de componentes UI para React Native. Mantiene paridad de diseño y tok
5
5
  ## Características Core
6
6
  - **MkThemeProvider**: Contexto para manejar Light/Dark mode y customización de tokens.
7
7
  - **Tokens Parity**: Mismos nombres y escalas de colores que `@makroz/web`.
8
- - **useApi Native**: Hook optimizado para peticiones a MK-Director desde dispositivos móviles.
8
+ - **useApi Native**: Hook optimizado para peticiones a MK-Director desde dispositivos móviles. AbortController + `response.ok` + timeout enforced via shared `@makroz/core` `executeApiRequest`, so mobile stays in lock-step with web semantics.
9
9
 
10
10
  ## Uso
11
11
  ```typescript
@@ -22,7 +22,7 @@ export function MkTable({ data, columns, loading = false, onSort, sortField, sor
22
22
  return null;
23
23
  return (_jsxs(View, { style: [styles.pagination, { borderTopColor: theme.border }], children: [_jsx(TouchableOpacity, { disabled: pagination.current_page === 1, onPress: () => onPageChange === null || onPageChange === void 0 ? void 0 : onPageChange((pagination.current_page || 1) - 1), style: [styles.pageBtn, { borderColor: theme.border }, pagination.current_page === 1 && { opacity: 0.4 }], children: _jsx(Text, { style: { color: theme.foreground, fontSize: 13 }, children: "\u2190 Anterior" }) }), _jsxs(Text, { style: { color: theme.mutedForeground, fontSize: 13 }, children: [pagination.current_page, " / ", pagination.last_page] }), _jsx(TouchableOpacity, { disabled: pagination.current_page === pagination.last_page, onPress: () => onPageChange === null || onPageChange === void 0 ? void 0 : onPageChange((pagination.current_page || 1) + 1), style: [styles.pageBtn, { borderColor: theme.border }, pagination.current_page === pagination.last_page && { opacity: 0.4 }], children: _jsx(Text, { style: { color: theme.foreground, fontSize: 13 }, children: "Siguiente \u2192" }) })] }));
24
24
  }, [loading, pagination, onPageChange, theme]);
25
- return (_jsxs(View, { style: [styles.container, { borderColor: theme.border, borderRadius: tokens.shared.radius }, style], children: [renderHeader(), _jsx(FlatList, { data: data, renderItem: renderRow, keyExtractor: keyExtractor || ((_, i) => String(i)), ListEmptyComponent: renderEmpty, ListFooterComponent: renderFooter, onRefresh: onRefresh, refreshing: refreshing, showsVerticalScrollIndicator: false })] }));
25
+ return (_jsxs(View, { style: [styles.container, { borderColor: theme.border, borderRadius: tokens.shared.radius }, style], children: [renderHeader(), _jsx(FlatList, { data: data, renderItem: renderRow, keyExtractor: keyExtractor || defaultKeyExtractor, ListEmptyComponent: renderEmpty, ListFooterComponent: renderFooter, onRefresh: onRefresh, refreshing: refreshing, showsVerticalScrollIndicator: false })] }));
26
26
  }
27
27
  const MkRowActions = ({ options, onSelect, theme }) => {
28
28
  const [open, setOpen] = React.useState(false);
@@ -44,4 +44,26 @@ const styles = StyleSheet.create({
44
44
  actionsPopup: { position: 'absolute', right: 0, top: 24, minWidth: 140, borderWidth: 1, borderRadius: 8, padding: 4, elevation: 8, shadowColor: '#000', shadowOpacity: 0.1, shadowRadius: 8, shadowOffset: { width: 0, height: 4 }, zIndex: 50 },
45
45
  actionItem: { flexDirection: 'row', alignItems: 'center', paddingVertical: 8, paddingHorizontal: 12, borderRadius: 4 },
46
46
  });
47
+ /**
48
+ * Default row-key resolver. Tries `id`, then `uuid`, then `key`,
49
+ * then falls back to a positional placeholder. The positional
50
+ * fallback is unique per index within a render but will cause
51
+ * React to reconcile rows incorrectly across sort/filter — add a
52
+ * stable id to your data source to avoid this.
53
+ */
54
+ function defaultKeyExtractor(item, index) {
55
+ const candidate = item;
56
+ const toKey = (v) => typeof v === 'string' || typeof v === 'number' ? String(v) : '';
57
+ if (toKey(candidate === null || candidate === void 0 ? void 0 : candidate.id))
58
+ return toKey(candidate.id);
59
+ if (toKey(candidate === null || candidate === void 0 ? void 0 : candidate.uuid))
60
+ return toKey(candidate.uuid);
61
+ if (toKey(candidate === null || candidate === void 0 ? void 0 : candidate.key))
62
+ return toKey(candidate.key);
63
+ // eslint-disable-next-line no-console
64
+ console.warn(`[MkTable] Row at index ${index} has no id/uuid/key. ` +
65
+ 'Falling back to a positional key — add a stable id to fix ' +
66
+ 'reconciliation bugs after sort/filter.');
67
+ return `mk-row-${index}`;
68
+ }
47
69
  //# sourceMappingURL=MkTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MkTable.js","sourceRoot":"","sources":["../../src/components/MkTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MkTable.js","sourceRoot":"","sources":["../../src/components/MkTable.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,6 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import React from 'react';
3
3
  import type { MkAuthContextType } from '@makroz/core';
4
- /**
5
- * @deprecated Use the new Auth module located in `src/auth/` instead.
6
- * This legacy context is kept for backward compatibility only and will be removed in future releases.
7
- * Migrate to `MkAuthProvider` from `src/auth/MkAuthProvider.tsx`.
8
- */
9
4
  export interface MkAuthProviderProps {
10
5
  children: ReactNode;
11
6
  endpoints?: {
@@ -19,16 +14,6 @@ export interface MkAuthProviderProps {
19
14
  removeItem: (key: string) => Promise<void> | void;
20
15
  };
21
16
  }
22
- /**
23
- * @deprecated Use `MkAuthProvider` from `@makroz/mobile` (backed by `src/auth/MkAuthProvider.tsx`) instead.
24
- * The new provider uses SecureStore for token persistence and scope-aware authentication.
25
- * This legacy provider is kept for backward compatibility only and will be removed in future releases.
26
- */
27
17
  export declare const MkAuthProvider: React.FC<MkAuthProviderProps>;
28
- /**
29
- * @deprecated Use `useMkAuth` from `@makroz/mobile` (backed by `src/auth/useMkAuth.ts`) instead.
30
- * The new hook uses SecureStore and throws `'useMkAuth must be used within an <MkAuthProvider>'`.
31
- * This legacy hook is kept for backward compatibility only and will be removed in future releases.
32
- */
33
18
  export declare const useMkAuth: () => MkAuthContextType;
34
19
  //# sourceMappingURL=MkAuthContext.d.ts.map
@@ -1,4 +1,16 @@
1
- import type { MkResponse, ApiStatus } from '@makroz/core';
1
+ import type { ApiStatus, MkResponse } from '@makroz/core';
2
+ import { type MkQueryParams } from '@makroz/core';
3
+ /**
4
+ * Mobile `useApi` hook — Expo/RN counterpart to `@makroz/web`'s.
5
+ *
6
+ * Same shape, same state machine, same AbortController wiring. The
7
+ * only platform-specific bits live in `globalThis.fetch` (RN's polyfill
8
+ * or the native one) — everything else is shared via
9
+ * `@makroz/core`'s `executeApiRequest`.
10
+ *
11
+ * Public return shape is byte-compatible with v1.2.3 so consumer
12
+ * call sites do not need to change.
13
+ */
2
14
  interface UseApiOptions {
3
15
  baseUrl?: string;
4
16
  headers?: Record<string, string>;
@@ -6,14 +18,16 @@ interface UseApiOptions {
6
18
  export declare function useApi<T = unknown>(options?: UseApiOptions): {
7
19
  status: ApiStatus;
8
20
  data: T | null;
9
- error: unknown;
21
+ error: string | null;
10
22
  waiting: number;
11
23
  loading: boolean;
12
- get: <R = T>(endpoint: string, params?: Record<string, string | number | boolean | Record<string, any>> | null) => Promise<MkResponse<R>>;
13
- post: <R = T>(endpoint: string, body: Record<string, unknown> | FormData | null) => Promise<MkResponse<R>>;
14
- put: <R = T>(endpoint: string, body: Record<string, unknown> | FormData | null) => Promise<MkResponse<R>>;
24
+ get: <R = T>(endpoint: string, params?: MkQueryParams) => Promise<MkResponse<R>>;
25
+ post: <R = T>(endpoint: string, body: unknown) => Promise<MkResponse<R>>;
26
+ put: <R = T>(endpoint: string, body: unknown) => Promise<MkResponse<R>>;
15
27
  delete: (endpoint: string) => Promise<MkResponse<void>>;
16
28
  remove: (endpoint: string) => Promise<MkResponse<void>>;
29
+ abort: () => void;
30
+ refetch: () => void;
17
31
  };
18
32
  export {};
19
33
  //# sourceMappingURL=useApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useApi.d.ts","sourceRoot":"","sources":["../../src/hooks/useApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG1D,UAAU,aAAa;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AA4BD,wBAAgB,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,GAAE,aAAkB;;;;;;UA8DlC,CAAC,gBACZ,MAAM,WACR,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI;WAGxD,CAAC,gBACb,MAAM,QACV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,GAAG,IAAI;UAG1B,CAAC,gBACZ,MAAM,QACV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,GAAG,IAAI;uBAGX,MAAM;uBACN,MAAM;EAcjD"}
1
+ {"version":3,"file":"useApi.d.ts","sourceRoot":"","sources":["../../src/hooks/useApi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAmC,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAGnF;;;;;;;;;;GAUG;AAEH,UAAU,aAAa;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,wBAAgB,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,GAAE,aAAkB;;;;;;UA8GtD,CAAC,gBAAgB,MAAM,WAAW,aAAa;WAK/C,CAAC,gBAAgB,MAAM,QAAQ,OAAO;UAKtC,CAAC,gBAAgB,MAAM,QAAQ,OAAO;uBAK5B,MAAM;uBAAN,MAAM;;;EAkBxB"}
@@ -1,81 +1,91 @@
1
- import { useState, useCallback, useRef } from 'react';
1
+ import { useCallback, useMemo, useRef, useState } from 'react';
2
+ import { executeApiRequest, ApiCoreError } from '@makroz/core';
2
3
  import { useMkApiContext } from '../context/MkApiContext';
3
- const buildQueryParams = (params) => {
4
- const query = new URLSearchParams();
5
- if (!params)
6
- return "";
7
- if (params.q)
8
- query.append('q', String(params.q));
9
- if (params.sort)
10
- query.append('sort', String(params.sort));
11
- if (params.page)
12
- query.append('page', String(params.page));
13
- if (params.per_page)
14
- query.append('per_page', String(params.per_page));
15
- if (params.filter && typeof params.filter === 'object') {
16
- Object.entries(params.filter).forEach(([field, value]) => {
17
- if (typeof value === 'object' && value !== null) {
18
- Object.entries(value).forEach(([op, opVal]) => {
19
- query.append(`filter[${field}][${op}]`, String(opVal));
20
- });
21
- }
22
- else {
23
- query.append(`filter[${field}]`, String(value));
24
- }
25
- });
26
- }
27
- const queryString = query.toString();
28
- return queryString ? `?${queryString}` : "";
29
- };
30
4
  export function useApi(options = {}) {
31
5
  const context = useMkApiContext();
6
+ const baseUrl = options.baseUrl || context.baseUrl;
7
+ const mergedHeaders = useMemo(() => { var _a, _b; return (Object.assign(Object.assign({}, ((_a = context.headers) !== null && _a !== void 0 ? _a : {})), ((_b = options.headers) !== null && _b !== void 0 ? _b : {}))); }, [context.headers, options.headers]);
8
+ // RN exposes the platform fetch via `globalThis.fetch` (or via
9
+ // `react-native-fetch-api` if installed). The wrapper does not
10
+ // bind it — RN's fetch is already bound to its module instance.
11
+ const fetchImpl = useMemo(() => globalThis.fetch, []);
32
12
  const [status, setStatus] = useState('idle');
33
13
  const [data, setData] = useState(null);
34
14
  const [error, setError] = useState(null);
35
- const baseUrl = options.baseUrl || context.baseUrl;
36
- const baseUrlRef = useRef(baseUrl);
37
- baseUrlRef.current = baseUrl;
38
- const optionsRef = useRef(options);
39
- optionsRef.current = options;
40
- const call = useCallback(async (endpoint, method = 'GET', body = null, params = null) => {
41
- setStatus('loading');
42
- setError(null);
43
- context.setWaiting(1, `call:${endpoint}`);
44
- const urlParams = method === 'GET' && params ? buildQueryParams(params) : "";
45
- const fullEndpoint = `${endpoint}${urlParams}`;
15
+ const controllerRef = useRef(null);
16
+ const lastRequestRef = useRef(null);
17
+ const abort = useCallback(() => {
18
+ var _a;
19
+ (_a = controllerRef.current) === null || _a === void 0 ? void 0 : _a.abort();
20
+ controllerRef.current = null;
21
+ }, []);
22
+ const call = useCallback(async (req) => {
23
+ var _a, _b;
24
+ (_a = controllerRef.current) === null || _a === void 0 ? void 0 : _a.abort();
25
+ const controller = new AbortController();
26
+ controllerRef.current = controller;
27
+ lastRequestRef.current = req;
28
+ context.setWaiting(1, `call:${req.endpoint}`);
46
29
  try {
47
- const reqHeaders = Object.assign(Object.assign({}, context.headers), optionsRef.current.headers);
48
- if (!(body instanceof FormData)) {
49
- reqHeaders['Content-Type'] = 'application/json';
50
- }
51
- const response = await fetch(`${baseUrlRef.current}${fullEndpoint}`, {
52
- method,
53
- headers: reqHeaders,
54
- body: body instanceof FormData ? body : (body ? JSON.stringify(body) : null),
30
+ setStatus('loading');
31
+ setError(null);
32
+ const result = await executeApiRequest({
33
+ baseUrl,
34
+ endpoint: req.endpoint,
35
+ method: req.method,
36
+ body: req.body,
37
+ params: req.params,
38
+ headers: mergedHeaders,
39
+ signal: controller.signal,
40
+ timeoutMs: req.timeoutMs,
41
+ fetchImpl,
55
42
  });
56
- const result = await response.json();
57
- if (!result.success) {
58
- throw new Error(result.message || 'API Error');
43
+ if (controller.signal.aborted && controllerRef.current !== controller) {
44
+ return result;
59
45
  }
60
46
  setData(result.data);
61
47
  setStatus('success');
62
48
  return result;
63
49
  }
64
50
  catch (err) {
65
- const errorMessage = err instanceof Error ? err.message : String(err);
66
- setError(errorMessage);
51
+ if (err instanceof Error && err.name === 'AbortError') {
52
+ throw err;
53
+ }
54
+ if (controllerRef.current !== controller) {
55
+ throw err;
56
+ }
57
+ const message = err instanceof Error
58
+ ? err.message
59
+ : typeof err === 'string'
60
+ ? err
61
+ : 'Unknown fetch error';
62
+ setError(message);
67
63
  setStatus('error');
68
- throw err;
64
+ throw err instanceof Error
65
+ ? err
66
+ : new ApiCoreError(message, {
67
+ status: 0,
68
+ statusText: 'unknown',
69
+ endpoint: req.endpoint,
70
+ method: ((_b = req.method) !== null && _b !== void 0 ? _b : 'GET'),
71
+ });
69
72
  }
70
73
  finally {
71
- context.setWaiting(-1, `-call:${endpoint}`);
74
+ context.setWaiting(-1, `-call:${req.endpoint}`);
75
+ if (controllerRef.current === controller) {
76
+ controllerRef.current = null;
77
+ }
72
78
  }
73
- }, [context]);
74
- const get = useCallback((endpoint, params = null) => call(endpoint, 'GET', null, params), [call]);
75
- const post = useCallback((endpoint, body) => call(endpoint, 'POST', body), [call]);
76
- const put = useCallback((endpoint, body) => call(endpoint, 'PUT', body), [call]);
77
- const deleteFn = useCallback((endpoint) => call(endpoint, 'DELETE'), [call]);
78
- const removeFn = useCallback((endpoint) => call(endpoint, 'DELETE'), [call]);
79
+ }, [baseUrl, mergedHeaders, fetchImpl, context]);
80
+ const refetch = useCallback(() => {
81
+ const last = lastRequestRef.current;
82
+ if (last)
83
+ void call(last);
84
+ }, [call]);
85
+ const get = useCallback((endpoint, params) => call({ endpoint, method: 'GET', params }), [call]);
86
+ const post = useCallback((endpoint, body) => call({ endpoint, method: 'POST', body }), [call]);
87
+ const put = useCallback((endpoint, body) => call({ endpoint, method: 'PUT', body }), [call]);
88
+ const deleteFn = useCallback((endpoint) => call({ endpoint, method: 'DELETE' }), [call]);
79
89
  return {
80
90
  status,
81
91
  data,
@@ -86,7 +96,9 @@ export function useApi(options = {}) {
86
96
  post,
87
97
  put,
88
98
  delete: deleteFn,
89
- remove: removeFn,
99
+ remove: deleteFn,
100
+ abort,
101
+ refetch,
90
102
  };
91
103
  }
92
104
  //# sourceMappingURL=useApi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useApi.js","sourceRoot":"","sources":["../../src/hooks/useApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAO1D,MAAM,gBAAgB,GAAG,CAAC,MAA8E,EAAU,EAAE;IAChH,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IAEpC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,IAAI,MAAM,CAAC,CAAC;QAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,IAAI;QAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,IAAI;QAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,QAAQ;QAAE,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEvE,IAAI,MAAM,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;YACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC9C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;oBAC1C,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACrC,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,UAAU,MAAM,CAAc,UAAyB,EAAE;IAC3D,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAY,MAAM,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAW,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAU,IAAI,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAE7B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAE7B,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAC1B,QAAgB,EAChB,SAAiB,KAAK,EACtB,OAAkD,IAAI,EACtD,SAAiF,IAAI,EAC/D,EAAE;QACxB,SAAS,CAAC,SAAS,CAAC,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,QAAQ,EAAE,CAAC,CAAC;QAE1C,MAAM,SAAS,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,YAAY,GAAG,GAAG,QAAQ,GAAG,SAAS,EAAE,CAAC;QAE/C,IAAI,CAAC;YACD,MAAM,UAAU,mCACT,OAAO,CAAC,OAAO,GACf,UAAU,CAAC,OAAO,CAAC,OAAO,CAChC,CAAC;YAEF,IAAI,CAAC,CAAC,IAAI,YAAY,QAAQ,CAAC,EAAE,CAAC;gBAC9B,UAAU,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;YACpD,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,CAAC,OAAO,GAAG,YAAY,EAAE,EAAE;gBACjE,MAAM;gBACN,OAAO,EAAE,UAAU;gBACnB,IAAI,EAAE,IAAI,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;aAC/E,CAAC,CAAC;YAEH,MAAM,MAAM,GAAkB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEpD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,WAAW,CAAC,CAAC;YACnD,CAAC;YAED,OAAO,CAAC,MAAM,CAAC,IAAoB,CAAC,CAAC;YACrC,SAAS,CAAC,SAAS,CAAC,CAAC;YACrB,OAAO,MAAM,CAAC;QAElB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtE,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvB,SAAS,CAAC,OAAO,CAAC,CAAC;YACnB,MAAM,GAAG,CAAC;QACd,CAAC;gBAAS,CAAC;YACP,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC,CAAC;QAChD,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,GAAG,GAAG,WAAW,CAAC,CACpB,QAAgB,EAChB,SAAiF,IAAI,EACvF,EAAE,CAAC,IAAI,CAAI,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,WAAW,CAAC,CACrB,QAAgB,EAChB,IAA+C,EACjD,EAAE,CAAC,IAAI,CAAI,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9C,MAAM,GAAG,GAAG,WAAW,CAAC,CACpB,QAAgB,EAChB,IAA+C,EACjD,EAAE,CAAC,IAAI,CAAI,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,CAAO,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3F,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,CAAO,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3F,OAAO;QACH,MAAM;QACN,IAAI;QACJ,KAAK;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,MAAM,KAAK,SAAS;QAC7B,GAAG;QACH,IAAI;QACJ,GAAG;QACH,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;KACnB,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"useApi.js","sourceRoot":"","sources":["../../src/hooks/useApi.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export interface InfiniteListOptions {
7
7
  export declare function useMkInfiniteList(endpoint: string, options?: InfiniteListOptions): {
8
8
  items: any[];
9
9
  loading: boolean;
10
- error: unknown;
10
+ error: string | null;
11
11
  isRefreshing: boolean;
12
12
  hasMore: boolean;
13
13
  loadMore: () => void;
@@ -25,19 +25,7 @@ export interface MkListParams {
25
25
  per_page?: number;
26
26
  q?: string;
27
27
  sort?: string;
28
- filter?: Record<string, unknown>;
29
- }
30
- /** Shape of the server response for paginated lists. */
31
- export interface MkListResponse<T = unknown> {
32
- data: T[];
33
- __extraData?: {
34
- current_page?: number;
35
- last_page?: number;
36
- per_page?: number;
37
- total?: number;
38
- [key: string]: unknown;
39
- };
40
- [key: string]: unknown;
28
+ filter?: Record<string, any>;
41
29
  }
42
30
  export interface MkListOptions {
43
31
  /** Initial params. */
@@ -56,24 +44,18 @@ export declare function useMkList(endpoint: string, options?: MkListOptions): {
56
44
  setSort: (sort: string) => void;
57
45
  setPerPage: (per_page: number) => void;
58
46
  resetFilters: () => void;
59
- refresh: (extraParams?: MkListParams) => Promise<import("@makroz/core").MkResponse<MkListResponse<unknown>>>;
47
+ refresh: (extraParams?: MkListParams) => Promise<import("@makroz/core").MkResponse<unknown>>;
60
48
  /** Pagination meta from __extraData */
61
- pagination: {
62
- [key: string]: unknown;
63
- current_page?: number;
64
- last_page?: number;
65
- per_page?: number;
66
- total?: number;
67
- };
49
+ pagination: any;
68
50
  status: import("@makroz/core").ApiStatus;
69
- data: MkListResponse<unknown> | null;
70
- error: unknown;
51
+ data: any;
52
+ error: any;
71
53
  waiting: number;
72
54
  loading: boolean;
73
- get: <R = MkListResponse<unknown>>(endpoint: string, params?: Record<string, string | number | boolean | Record<string, any>> | null) => Promise<import("@makroz/core").MkResponse<R>>;
74
- post: <R = MkListResponse<unknown>>(endpoint: string, body: Record<string, unknown> | FormData | null) => Promise<import("@makroz/core").MkResponse<R>>;
75
- put: <R = MkListResponse<unknown>>(endpoint: string, body: Record<string, unknown> | FormData | null) => Promise<import("@makroz/core").MkResponse<R>>;
76
- delete: (endpoint: string) => Promise<import("@makroz/core").MkResponse<void>>;
77
- remove: (endpoint: string) => Promise<import("@makroz/core").MkResponse<void>>;
55
+ get: (endpoint: string, params?: any) => Promise<import("@makroz/core").MkResponse<unknown>>;
56
+ post: (endpoint: string, body: any) => Promise<import("@makroz/core").MkResponse<unknown>>;
57
+ put: (endpoint: string, body: any) => Promise<import("@makroz/core").MkResponse<unknown>>;
58
+ delete: (endpoint: string) => Promise<import("@makroz/core").MkResponse<unknown>>;
59
+ remove: (endpoint: string) => Promise<import("@makroz/core").MkResponse<unknown>>;
78
60
  };
79
61
  //# sourceMappingURL=useMkList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMkList.d.ts","sourceRoot":"","sources":["../../src/hooks/useMkList.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,YAAY;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACvC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,WAAW,CAAC,EAAE;QACV,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KAC1B,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC1B,sBAAsB;IACtB,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;;;uBAiB7B,MAAM,SAAS,GAAG;oBAQrB,MAAM;mBAIP,MAAM;oBAIL,MAAM;2BAIC,MAAM;;4BA1B9B,YAAY;IA0D1B,uCAAuC;;;uBAvFxB,MAAM;oBACT,MAAM;mBACP,MAAM;gBACT,MAAM;;;;;;;;;;;;EAuFrB"}
1
+ {"version":3,"file":"useMkList.d.ts","sourceRoot":"","sources":["../../src/hooks/useMkList.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,YAAY;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACvC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,WAAW,CAAC,EAAE;QACV,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KAC1B,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC1B,sBAAsB;IACtB,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;;;uBA+B7B,MAAM,SAAS,GAAG;oBAQrB,MAAM;mBAIP,MAAM;oBAIL,MAAM;2BAIC,MAAM;;4BAjCxB,YAAY;IAiEhC,yFAAyF;;;;;;;;;;;;;;EAGhG"}
@@ -1,14 +1,28 @@
1
1
  import { useState, useCallback, useEffect, useRef } from 'react';
2
2
  import { useApi } from './useApi';
3
3
  export function useMkList(endpoint, options = {}) {
4
- var _a;
5
4
  const { initialParams = {}, autoFetch = true } = options;
6
5
  const api = useApi();
7
6
  const [params, setParams] = useState(Object.assign({ page: 1, per_page: 15 }, initialParams));
7
+ // R-PKG-023 (rc12): capture __extraData from the response envelope
8
+ // (top-level, sibling of `data`, per the @makroz/core MkResponse<T>
9
+ // contract). The previous implementation read from `api.data?.__extraData`
10
+ // which worked for the legacy nested shape but breaks once the Laravel
11
+ // backend emits the canonical top-level shape. We auto-detect: top-level
12
+ // first, then fallback to legacy nested.
13
+ const [extraData, setExtraData] = useState({});
8
14
  const mountedRef = useRef(false);
9
- const refresh = useCallback((extraParams = {}) => {
10
- return api.get(endpoint, Object.assign(Object.assign({}, params), extraParams));
11
- }, [endpoint, params]);
15
+ const refresh = useCallback(async (extraParams = {}) => {
16
+ var _a, _b;
17
+ const response = await api.get(endpoint, Object.assign(Object.assign({}, params), extraParams));
18
+ // Auto-detect response shape (R-PKG-023):
19
+ // - Top-level (rc12+ with flag): `response.__extraData` exists.
20
+ // - Legacy nested (rc11 and earlier): `response.data?.__extraData`.
21
+ const topLevel = response.__extraData;
22
+ const nested = (_a = response.data) === null || _a === void 0 ? void 0 : _a.__extraData;
23
+ setExtraData((_b = topLevel !== null && topLevel !== void 0 ? topLevel : nested) !== null && _b !== void 0 ? _b : {});
24
+ return response;
25
+ }, [endpoint, params, api]);
12
26
  const setFilter = useCallback((field, value) => {
13
27
  setParams(prev => (Object.assign(Object.assign({}, prev), { page: 1, filter: Object.assign(Object.assign({}, prev.filter), { [field]: value }) })));
14
28
  }, []);
@@ -34,12 +48,12 @@ export function useMkList(endpoint, options = {}) {
34
48
  // Skip the initial mount — let the consumer decide
35
49
  if (!mountedRef.current) {
36
50
  mountedRef.current = true;
37
- refresh();
51
+ void refresh();
38
52
  return;
39
53
  }
40
- refresh();
54
+ void refresh();
41
55
  // eslint-disable-next-line react-hooks/exhaustive-deps
42
- }, [params]);
56
+ }, [params, refresh]);
43
57
  return Object.assign(Object.assign({}, api), { params,
44
58
  setParams,
45
59
  setFilter,
@@ -49,7 +63,7 @@ export function useMkList(endpoint, options = {}) {
49
63
  setPerPage,
50
64
  resetFilters,
51
65
  refresh,
52
- /** Pagination meta from __extraData */
53
- pagination: ((_a = api.data) === null || _a === void 0 ? void 0 : _a.__extraData) || {} });
66
+ /** Pagination meta from __extraData (R-PKG-023: top-level, fallback to legacy nested) */
67
+ pagination: extraData });
54
68
  }
55
69
  //# sourceMappingURL=useMkList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMkList.js","sourceRoot":"","sources":["../../src/hooks/useMkList.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMkList.js","sourceRoot":"","sources":["../../src/hooks/useMkList.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useMkList.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMkList.test.d.ts","sourceRoot":"","sources":["../../src/hooks/useMkList.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,138 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { renderHook, act, waitFor } from '@testing-library/react';
3
+ import { useMkList } from './useMkList';
4
+ // Mock the MkApiContext
5
+ const mockSetWaiting = vi.fn();
6
+ const mockContext = {
7
+ baseUrl: 'http://localhost:8000/api',
8
+ headers: {},
9
+ waiting: 0,
10
+ setWaiting: mockSetWaiting,
11
+ };
12
+ vi.mock('../context/MkApiContext', () => ({
13
+ useMkApiContext: () => mockContext,
14
+ }));
15
+ // Mock fetch globally
16
+ const mockFetch = vi.fn();
17
+ global.fetch = mockFetch;
18
+ describe('useMkList (R-PKG-023 response shape auto-detect, mobile)', () => {
19
+ beforeEach(() => {
20
+ vi.clearAllMocks();
21
+ mockFetch.mockReset();
22
+ });
23
+ it('reads __extraData from the canonical TOP-LEVEL location (R-PKG-023 rc12+)', async () => {
24
+ // Canonical top-level shape — the @makroz/core MkResponse<T> contract.
25
+ const mockResponse = {
26
+ success: true,
27
+ message: 'OK',
28
+ data: [
29
+ { id: 1, name: 'Item 1' },
30
+ { id: 2, name: 'Item 2' },
31
+ ],
32
+ __extraData: {
33
+ total: 150,
34
+ current_page: 1,
35
+ last_page: 15,
36
+ per_page: 10,
37
+ },
38
+ };
39
+ mockFetch.mockResolvedValueOnce({
40
+ ok: true,
41
+ json: () => Promise.resolve(mockResponse),
42
+ });
43
+ const { result } = renderHook(() => useMkList('/items', { autoFetch: false }));
44
+ await act(async () => {
45
+ await result.current.refresh();
46
+ });
47
+ await waitFor(() => {
48
+ expect(result.current.pagination).toEqual({
49
+ total: 150,
50
+ current_page: 1,
51
+ last_page: 15,
52
+ per_page: 10,
53
+ });
54
+ });
55
+ expect(result.current.data).toEqual(mockResponse.data);
56
+ });
57
+ it('falls back to the LEGACY nested __extraData location (rc11 and earlier)', async () => {
58
+ // Legacy nested shape — Laravel pre-rc12 wrapped `data` in a
59
+ // `{ data: [...], __extraData: {...} }` envelope.
60
+ const mockResponse = {
61
+ success: true,
62
+ message: 'OK',
63
+ data: {
64
+ data: [
65
+ { id: 1, name: 'Item 1' },
66
+ { id: 2, name: 'Item 2' },
67
+ ],
68
+ __extraData: {
69
+ total: 75,
70
+ current_page: 1,
71
+ last_page: 8,
72
+ per_page: 10,
73
+ },
74
+ },
75
+ };
76
+ mockFetch.mockResolvedValueOnce({
77
+ ok: true,
78
+ json: () => Promise.resolve(mockResponse),
79
+ });
80
+ const { result } = renderHook(() => useMkList('/items', { autoFetch: false }));
81
+ await act(async () => {
82
+ await result.current.refresh();
83
+ });
84
+ await waitFor(() => {
85
+ expect(result.current.pagination).toEqual({
86
+ total: 75,
87
+ current_page: 1,
88
+ last_page: 8,
89
+ per_page: 10,
90
+ });
91
+ });
92
+ });
93
+ it('returns empty pagination when neither top-level nor nested __extraData exists', async () => {
94
+ // Minimal response with no __extraData at all.
95
+ const mockResponse = {
96
+ success: true,
97
+ message: 'OK',
98
+ data: [{ id: 1, name: 'Item 1' }],
99
+ };
100
+ mockFetch.mockResolvedValueOnce({
101
+ ok: true,
102
+ json: () => Promise.resolve(mockResponse),
103
+ });
104
+ const { result } = renderHook(() => useMkList('/items', { autoFetch: false }));
105
+ await act(async () => {
106
+ await result.current.refresh();
107
+ });
108
+ await waitFor(() => {
109
+ expect(result.current.data).toEqual([{ id: 1, name: 'Item 1' }]);
110
+ });
111
+ expect(result.current.pagination).toEqual({});
112
+ });
113
+ it('prefers top-level __extraData over nested when both are present (defensive)', async () => {
114
+ // Edge case: backend accidentally emits BOTH top-level AND nested.
115
+ // Top-level wins because that's the canonical contract.
116
+ const mockResponse = {
117
+ success: true,
118
+ message: 'OK',
119
+ data: {
120
+ data: [{ id: 1 }],
121
+ __extraData: { total: 99, source: 'nested' },
122
+ },
123
+ __extraData: { total: 100, source: 'top-level' },
124
+ };
125
+ mockFetch.mockResolvedValueOnce({
126
+ ok: true,
127
+ json: () => Promise.resolve(mockResponse),
128
+ });
129
+ const { result } = renderHook(() => useMkList('/items', { autoFetch: false }));
130
+ await act(async () => {
131
+ await result.current.refresh();
132
+ });
133
+ await waitFor(() => {
134
+ expect(result.current.pagination).toEqual({ total: 100, source: 'top-level' });
135
+ });
136
+ });
137
+ });
138
+ //# sourceMappingURL=useMkList.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMkList.test.js","sourceRoot":"","sources":["../../src/hooks/useMkList.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MkThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/MkThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoE,MAAM,OAAO,CAAC;AACzF,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;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CACpC,CAmBA,CAAC;AAEF,eAAO,MAAM,UAAU,wBAMtB,CAAC"}
1
+ {"version":3,"file":"MkThemeProvider.d.ts","sourceRoot":"","sources":["../../src/theme/MkThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoE,MAAM,OAAO,CAAC;AACzF,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,CAa1F,CAAC;AAEF,eAAO,MAAM,UAAU,wBAMtB,CAAC"}
@@ -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,WAAW,EAAE,MAAM,OAAO,CAAC;AAEzF,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAQtC,MAAM,YAAY,GAAG,aAAa,CAA+B,SAAS,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,eAAe,GAKvB,CAAC,EACJ,QAAQ,EACR,WAAW,GAAG,KAAK,EACnB,gBAAgB,EAChB,eAAe,GAChB,EAAE,EAAE;IACH,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACtD,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;QACtE,uCAAY,SAAS,GAAK,iBAAiB,EAAG;IAChD,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC;IAEhD,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAE5F,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,WAAW,EAAE,MAAM,OAAO,CAAC;AAEzF,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,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAE5F,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"}
@@ -4,7 +4,6 @@ rnMocks();
4
4
  import { describe, it, expect } from 'vitest';
5
5
  import { renderHook, act } from '@testing-library/react';
6
6
  import { MkThemeProvider, useMkTheme } from './MkThemeProvider';
7
- import { tokens } from '@makroz/core';
8
7
  describe('MkThemeProvider referential stability', () => {
9
8
  it('should keep the context value reference stable across renders', () => {
10
9
  const wrapper = ({ children }) => (_jsx(MkThemeProvider, { children: children }));
@@ -32,30 +31,4 @@ describe('MkThemeProvider referential stability', () => {
32
31
  expect(result.current.toggleTheme).toBe(firstToggle);
33
32
  });
34
33
  });
35
- describe('MkThemeProvider custom themes override', () => {
36
- it('should merge customLightTheme overrides with the default light tokens', () => {
37
- const customLightTheme = { primary: '#1e40af' };
38
- const wrapper = ({ children }) => (_jsx(MkThemeProvider, { customLightTheme: customLightTheme, children: children }));
39
- const { result } = renderHook(() => useMkTheme(), { wrapper });
40
- expect(result.current.theme.primary).toBe('#1e40af');
41
- // Check fallback to default tokens
42
- expect(result.current.theme.background).toBe(tokens.light.background);
43
- });
44
- it('should merge customDarkTheme overrides and toggle dynamically', () => {
45
- const customLightTheme = { primary: '#1e40af' };
46
- const customDarkTheme = { primary: '#3b82f6' };
47
- const wrapper = ({ children }) => (_jsx(MkThemeProvider, { customLightTheme: customLightTheme, customDarkTheme: customDarkTheme, children: children }));
48
- const { result } = renderHook(() => useMkTheme(), { wrapper });
49
- // Initially light
50
- expect(result.current.theme.primary).toBe('#1e40af');
51
- // Toggle to dark
52
- act(() => {
53
- result.current.toggleTheme();
54
- });
55
- expect(result.current.isDark).toBe(true);
56
- expect(result.current.theme.primary).toBe('#3b82f6');
57
- // Check fallback to default dark tokens
58
- expect(result.current.theme.background).toBe(tokens.dark.background);
59
- });
60
- });
61
34
  //# sourceMappingURL=MkThemeProvider.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MkThemeProvider.test.js","sourceRoot":"","sources":["../../src/theme/MkThemeProvider.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MkThemeProvider.test.js","sourceRoot":"","sources":["../../src/theme/MkThemeProvider.test.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,CAAC;AAEV,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEhE,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC7D,KAAC,eAAe,cAAE,QAAQ,GAAmB,CAChD,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACzE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;QAElC,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;QAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;QAEnC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC7D,KAAC,eAAe,cAAE,QAAQ,GAAmB,CAChD,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;QAElC,GAAG,CAAC,GAAG,EAAE;YACL,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAC/D,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC7D,KAAC,eAAe,cAAE,QAAQ,GAAmB,CAChD,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QAE/C,QAAQ,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;QAE7B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makroz/mobile",
3
- "version": "1.2.3",
3
+ "version": "1.2.4-rc14",
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",
@@ -33,7 +33,7 @@
33
33
  "@react-native-async-storage/async-storage": "^3.0.2",
34
34
  "@shopify/flash-list": "^2.0.0",
35
35
  "react-native-svg": "^15.15.4",
36
- "@makroz/core": "1.1.5"
36
+ "@makroz/core": "1.1.6-rc14"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@shopify/flash-list": ">=2.0.0",
@@ -45,7 +45,13 @@
45
45
  "expo-sqlite": "~56.0.5",
46
46
  "expo-updates": "~56.0.19",
47
47
  "react": "^19.0.0",
48
- "react-native": "0.85.x"
48
+ "react-native": "0.85.x",
49
+ "react-native-buffer": "^6.0.1"
50
+ },
51
+ "peerDependenciesMeta": {
52
+ "react-native-buffer": {
53
+ "optional": true
54
+ }
49
55
  },
50
56
  "devDependencies": {
51
57
  "@testing-library/react": "^16.3.2",
@@ -55,6 +61,7 @@
55
61
  "@vitest/coverage-v8": "^3.0.0",
56
62
  "esbuild": "^0.25.0",
57
63
  "eslint": "^9.20.0",
64
+ "jsdom": "^24.0.0",
58
65
  "react": "^19.0.0",
59
66
  "react-test-renderer": "^19.2.7",
60
67
  "typescript": "^5.7.0",