@makroz/mobile 1.0.1

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 (232) hide show
  1. package/LICENSE +33 -0
  2. package/README.md +19 -0
  3. package/dist/auth/MkAuthContext.d.ts +72 -0
  4. package/dist/auth/MkAuthContext.d.ts.map +1 -0
  5. package/dist/auth/MkAuthContext.js +19 -0
  6. package/dist/auth/MkAuthContext.js.map +1 -0
  7. package/dist/auth/MkAuthForm.d.ts +31 -0
  8. package/dist/auth/MkAuthForm.d.ts.map +1 -0
  9. package/dist/auth/MkAuthForm.js +180 -0
  10. package/dist/auth/MkAuthForm.js.map +1 -0
  11. package/dist/auth/MkAuthProvider.d.ts +57 -0
  12. package/dist/auth/MkAuthProvider.d.ts.map +1 -0
  13. package/dist/auth/MkAuthProvider.js +282 -0
  14. package/dist/auth/MkAuthProvider.js.map +1 -0
  15. package/dist/auth/secureStorage.d.ts +63 -0
  16. package/dist/auth/secureStorage.d.ts.map +1 -0
  17. package/dist/auth/secureStorage.js +104 -0
  18. package/dist/auth/secureStorage.js.map +1 -0
  19. package/dist/auth/types.d.ts +65 -0
  20. package/dist/auth/types.d.ts.map +1 -0
  21. package/dist/auth/types.js +10 -0
  22. package/dist/auth/types.js.map +1 -0
  23. package/dist/auth/useMkAuth.d.ts +17 -0
  24. package/dist/auth/useMkAuth.d.ts.map +1 -0
  25. package/dist/auth/useMkAuth.js +24 -0
  26. package/dist/auth/useMkAuth.js.map +1 -0
  27. package/dist/components/MkAccordion.d.ts +19 -0
  28. package/dist/components/MkAccordion.d.ts.map +1 -0
  29. package/dist/components/MkAccordion.js +49 -0
  30. package/dist/components/MkAccordion.js.map +1 -0
  31. package/dist/components/MkAlert.d.ts +18 -0
  32. package/dist/components/MkAlert.d.ts.map +1 -0
  33. package/dist/components/MkAlert.js +35 -0
  34. package/dist/components/MkAlert.js.map +1 -0
  35. package/dist/components/MkAvatar.d.ts +12 -0
  36. package/dist/components/MkAvatar.d.ts.map +1 -0
  37. package/dist/components/MkAvatar.js +33 -0
  38. package/dist/components/MkAvatar.js.map +1 -0
  39. package/dist/components/MkBadge.d.ts +11 -0
  40. package/dist/components/MkBadge.d.ts.map +1 -0
  41. package/dist/components/MkBadge.js +22 -0
  42. package/dist/components/MkBadge.js.map +1 -0
  43. package/dist/components/MkButton.d.ts +13 -0
  44. package/dist/components/MkButton.d.ts.map +1 -0
  45. package/dist/components/MkButton.js +53 -0
  46. package/dist/components/MkButton.js.map +1 -0
  47. package/dist/components/MkCard.d.ts +15 -0
  48. package/dist/components/MkCard.d.ts.map +1 -0
  49. package/dist/components/MkCard.js +25 -0
  50. package/dist/components/MkCard.js.map +1 -0
  51. package/dist/components/MkCheck.d.ts +18 -0
  52. package/dist/components/MkCheck.d.ts.map +1 -0
  53. package/dist/components/MkCheck.js +33 -0
  54. package/dist/components/MkCheck.js.map +1 -0
  55. package/dist/components/MkDatePicker.d.ts +30 -0
  56. package/dist/components/MkDatePicker.d.ts.map +1 -0
  57. package/dist/components/MkDatePicker.js +87 -0
  58. package/dist/components/MkDatePicker.js.map +1 -0
  59. package/dist/components/MkDivider.d.ts +11 -0
  60. package/dist/components/MkDivider.d.ts.map +1 -0
  61. package/dist/components/MkDivider.js +28 -0
  62. package/dist/components/MkDivider.js.map +1 -0
  63. package/dist/components/MkDropDown.d.ts +37 -0
  64. package/dist/components/MkDropDown.d.ts.map +1 -0
  65. package/dist/components/MkDropDown.js +82 -0
  66. package/dist/components/MkDropDown.js.map +1 -0
  67. package/dist/components/MkEmptyState.d.ts +11 -0
  68. package/dist/components/MkEmptyState.d.ts.map +1 -0
  69. package/dist/components/MkEmptyState.js +16 -0
  70. package/dist/components/MkEmptyState.js.map +1 -0
  71. package/dist/components/MkFileUpload.d.ts +63 -0
  72. package/dist/components/MkFileUpload.d.ts.map +1 -0
  73. package/dist/components/MkFileUpload.js +80 -0
  74. package/dist/components/MkFileUpload.js.map +1 -0
  75. package/dist/components/MkIcons.d.ts +15 -0
  76. package/dist/components/MkIcons.d.ts.map +1 -0
  77. package/dist/components/MkIcons.js +35 -0
  78. package/dist/components/MkIcons.js.map +1 -0
  79. package/dist/components/MkInfiniteList.d.ts +22 -0
  80. package/dist/components/MkInfiniteList.d.ts.map +1 -0
  81. package/dist/components/MkInfiniteList.js +62 -0
  82. package/dist/components/MkInfiniteList.js.map +1 -0
  83. package/dist/components/MkInput.d.ts +16 -0
  84. package/dist/components/MkInput.d.ts.map +1 -0
  85. package/dist/components/MkInput.js +66 -0
  86. package/dist/components/MkInput.js.map +1 -0
  87. package/dist/components/MkLoading.d.ts +12 -0
  88. package/dist/components/MkLoading.d.ts.map +1 -0
  89. package/dist/components/MkLoading.js +20 -0
  90. package/dist/components/MkLoading.js.map +1 -0
  91. package/dist/components/MkModal.d.ts +20 -0
  92. package/dist/components/MkModal.d.ts.map +1 -0
  93. package/dist/components/MkModal.js +71 -0
  94. package/dist/components/MkModal.js.map +1 -0
  95. package/dist/components/MkProgressBar.d.ts +13 -0
  96. package/dist/components/MkProgressBar.d.ts.map +1 -0
  97. package/dist/components/MkProgressBar.js +27 -0
  98. package/dist/components/MkProgressBar.js.map +1 -0
  99. package/dist/components/MkRadio.d.ts +20 -0
  100. package/dist/components/MkRadio.d.ts.map +1 -0
  101. package/dist/components/MkRadio.js +35 -0
  102. package/dist/components/MkRadio.js.map +1 -0
  103. package/dist/components/MkSearchInput.d.ts +21 -0
  104. package/dist/components/MkSearchInput.d.ts.map +1 -0
  105. package/dist/components/MkSearchInput.js +44 -0
  106. package/dist/components/MkSearchInput.js.map +1 -0
  107. package/dist/components/MkSelect.d.ts +16 -0
  108. package/dist/components/MkSelect.d.ts.map +1 -0
  109. package/dist/components/MkSelect.js +75 -0
  110. package/dist/components/MkSelect.js.map +1 -0
  111. package/dist/components/MkSkeleton.d.ts +13 -0
  112. package/dist/components/MkSkeleton.d.ts.map +1 -0
  113. package/dist/components/MkSkeleton.js +32 -0
  114. package/dist/components/MkSkeleton.js.map +1 -0
  115. package/dist/components/MkSwitch.d.ts +13 -0
  116. package/dist/components/MkSwitch.d.ts.map +1 -0
  117. package/dist/components/MkSwitch.js +68 -0
  118. package/dist/components/MkSwitch.js.map +1 -0
  119. package/dist/components/MkTable.d.ts +39 -0
  120. package/dist/components/MkTable.d.ts.map +1 -0
  121. package/dist/components/MkTable.js +47 -0
  122. package/dist/components/MkTable.js.map +1 -0
  123. package/dist/components/MkTabs.d.ts +19 -0
  124. package/dist/components/MkTabs.d.ts.map +1 -0
  125. package/dist/components/MkTabs.js +38 -0
  126. package/dist/components/MkTabs.js.map +1 -0
  127. package/dist/components/MkTextArea.d.ts +17 -0
  128. package/dist/components/MkTextArea.d.ts.map +1 -0
  129. package/dist/components/MkTextArea.js +18 -0
  130. package/dist/components/MkTextArea.js.map +1 -0
  131. package/dist/components/MkToastRenderer.d.ts +3 -0
  132. package/dist/components/MkToastRenderer.d.ts.map +1 -0
  133. package/dist/components/MkToastRenderer.js +133 -0
  134. package/dist/components/MkToastRenderer.js.map +1 -0
  135. package/dist/components/MkTooltip.d.ts +15 -0
  136. package/dist/components/MkTooltip.d.ts.map +1 -0
  137. package/dist/components/MkTooltip.js +36 -0
  138. package/dist/components/MkTooltip.js.map +1 -0
  139. package/dist/components/MkWindowList.d.ts +47 -0
  140. package/dist/components/MkWindowList.d.ts.map +1 -0
  141. package/dist/components/MkWindowList.js +50 -0
  142. package/dist/components/MkWindowList.js.map +1 -0
  143. package/dist/components/index.d.ts +30 -0
  144. package/dist/components/index.d.ts.map +1 -0
  145. package/dist/components/index.js +33 -0
  146. package/dist/components/index.js.map +1 -0
  147. package/dist/context/MkApiContext.d.ts +15 -0
  148. package/dist/context/MkApiContext.d.ts.map +1 -0
  149. package/dist/context/MkApiContext.js +27 -0
  150. package/dist/context/MkApiContext.js.map +1 -0
  151. package/dist/context/MkAuthContext.d.ts +19 -0
  152. package/dist/context/MkAuthContext.d.ts.map +1 -0
  153. package/dist/context/MkAuthContext.js +86 -0
  154. package/dist/context/MkAuthContext.js.map +1 -0
  155. package/dist/context/MkConfirmContext.d.ts +8 -0
  156. package/dist/context/MkConfirmContext.d.ts.map +1 -0
  157. package/dist/context/MkConfirmContext.js +36 -0
  158. package/dist/context/MkConfirmContext.js.map +1 -0
  159. package/dist/context/MkToastContext.d.ts +19 -0
  160. package/dist/context/MkToastContext.d.ts.map +1 -0
  161. package/dist/context/MkToastContext.js +86 -0
  162. package/dist/context/MkToastContext.js.map +1 -0
  163. package/dist/hooks/filePicker.types.d.ts +13 -0
  164. package/dist/hooks/filePicker.types.d.ts.map +1 -0
  165. package/dist/hooks/filePicker.types.js +7 -0
  166. package/dist/hooks/filePicker.types.js.map +1 -0
  167. package/dist/hooks/useApi.d.ts +19 -0
  168. package/dist/hooks/useApi.d.ts.map +1 -0
  169. package/dist/hooks/useApi.js +78 -0
  170. package/dist/hooks/useApi.js.map +1 -0
  171. package/dist/hooks/useApi.test.d.ts +2 -0
  172. package/dist/hooks/useApi.test.d.ts.map +1 -0
  173. package/dist/hooks/useApi.test.js +10 -0
  174. package/dist/hooks/useApi.test.js.map +1 -0
  175. package/dist/hooks/useMkCrud.d.ts +39 -0
  176. package/dist/hooks/useMkCrud.d.ts.map +1 -0
  177. package/dist/hooks/useMkCrud.js +118 -0
  178. package/dist/hooks/useMkCrud.js.map +1 -0
  179. package/dist/hooks/useMkDebounce.d.ts +24 -0
  180. package/dist/hooks/useMkDebounce.d.ts.map +1 -0
  181. package/dist/hooks/useMkDebounce.js +36 -0
  182. package/dist/hooks/useMkDebounce.js.map +1 -0
  183. package/dist/hooks/useMkEffectDebug.d.ts +6 -0
  184. package/dist/hooks/useMkEffectDebug.d.ts.map +1 -0
  185. package/dist/hooks/useMkEffectDebug.js +23 -0
  186. package/dist/hooks/useMkEffectDebug.js.map +1 -0
  187. package/dist/hooks/useMkEvent.d.ts +42 -0
  188. package/dist/hooks/useMkEvent.d.ts.map +1 -0
  189. package/dist/hooks/useMkEvent.js +49 -0
  190. package/dist/hooks/useMkEvent.js.map +1 -0
  191. package/dist/hooks/useMkFilePickerCli.d.ts +59 -0
  192. package/dist/hooks/useMkFilePickerCli.d.ts.map +1 -0
  193. package/dist/hooks/useMkFilePickerCli.js +68 -0
  194. package/dist/hooks/useMkFilePickerCli.js.map +1 -0
  195. package/dist/hooks/useMkFilePickerExpo.d.ts +38 -0
  196. package/dist/hooks/useMkFilePickerExpo.d.ts.map +1 -0
  197. package/dist/hooks/useMkFilePickerExpo.js +68 -0
  198. package/dist/hooks/useMkFilePickerExpo.js.map +1 -0
  199. package/dist/hooks/useMkForm.d.ts +43 -0
  200. package/dist/hooks/useMkForm.d.ts.map +1 -0
  201. package/dist/hooks/useMkForm.js +115 -0
  202. package/dist/hooks/useMkForm.js.map +1 -0
  203. package/dist/hooks/useMkInfiniteList.d.ts +16 -0
  204. package/dist/hooks/useMkInfiniteList.d.ts.map +1 -0
  205. package/dist/hooks/useMkInfiniteList.js +58 -0
  206. package/dist/hooks/useMkInfiniteList.js.map +1 -0
  207. package/dist/hooks/useMkList.d.ts +61 -0
  208. package/dist/hooks/useMkList.d.ts.map +1 -0
  209. package/dist/hooks/useMkList.js +55 -0
  210. package/dist/hooks/useMkList.js.map +1 -0
  211. package/dist/hooks/useMkLocalStorage.d.ts +6 -0
  212. package/dist/hooks/useMkLocalStorage.d.ts.map +1 -0
  213. package/dist/hooks/useMkLocalStorage.js +28 -0
  214. package/dist/hooks/useMkLocalStorage.js.map +1 -0
  215. package/dist/hooks/useMkPrevious.d.ts +6 -0
  216. package/dist/hooks/useMkPrevious.d.ts.map +1 -0
  217. package/dist/hooks/useMkPrevious.js +13 -0
  218. package/dist/hooks/useMkPrevious.js.map +1 -0
  219. package/dist/hooks/useMkToggle.d.ts +6 -0
  220. package/dist/hooks/useMkToggle.d.ts.map +1 -0
  221. package/dist/hooks/useMkToggle.js +13 -0
  222. package/dist/hooks/useMkToggle.js.map +1 -0
  223. package/dist/index.d.ts +29 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +32 -0
  226. package/dist/index.js.map +1 -0
  227. package/dist/theme/MkThemeProvider.d.ts +14 -0
  228. package/dist/theme/MkThemeProvider.d.ts.map +1 -0
  229. package/dist/theme/MkThemeProvider.js +22 -0
  230. package/dist/theme/MkThemeProvider.js.map +1 -0
  231. package/eslint-plugin-mk/index.js +20 -0
  232. package/package.json +66 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkSwitch.js","sourceRoot":"","sources":["../../src/components/MkSwitch.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import type { ViewStyle } from 'react-native';
3
+ import type { MkDropdownOptionType } from './MkDropDown';
4
+ /**
5
+ * @module MkTable (Mobile)
6
+ * @description Data table as a FlatList with column headers, sort indicators, row actions, and pagination.
7
+ * Equivalent to mk-web's MkTable — adapted for React Native's layout system.
8
+ */
9
+ interface Column<T> {
10
+ key: keyof T | string;
11
+ label: string;
12
+ render?: (item: T) => React.ReactNode;
13
+ sortable?: boolean;
14
+ flex?: number;
15
+ }
16
+ interface MkTableProps<T> {
17
+ data: T[];
18
+ columns: Column<T>[];
19
+ loading?: boolean;
20
+ onSort?: (field: string) => void;
21
+ sortField?: string;
22
+ sortOrder?: 'asc' | 'desc';
23
+ pagination?: {
24
+ current_page?: number;
25
+ last_page?: number;
26
+ total?: number;
27
+ };
28
+ onPageChange?: (page: number) => void;
29
+ actions?: (item: T) => MkDropdownOptionType[];
30
+ onAction?: (action: string | number, item: T) => void;
31
+ emptyMessage?: string;
32
+ keyExtractor?: (item: T, index: number) => string;
33
+ onRefresh?: () => void;
34
+ refreshing?: boolean;
35
+ style?: ViewStyle;
36
+ }
37
+ export declare function MkTable<T>({ data, columns, loading, onSort, sortField, sortOrder, pagination, onPageChange, actions, onAction, emptyMessage, keyExtractor, onRefresh, refreshing, style, }: MkTableProps<T>): React.JSX.Element;
38
+ export {};
39
+ //# sourceMappingURL=MkTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkTable.d.ts","sourceRoot":"","sources":["../../src/components/MkTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAC,MAAM,cAAc,CAAC;AAI7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;GAIG;AAEH,UAAU,MAAM,CAAC,CAAC;IACd,GAAG,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,YAAY,CAAC,CAAC;IACpB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE;QACT,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,oBAAoB,EAAE,CAAC;IAC9C,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,EACvB,IAAI,EACJ,OAAO,EACP,OAAe,EACf,MAAM,EACN,SAAS,EACT,SAAS,EACT,UAAU,EACV,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,YAAyC,EACzC,YAAY,EACZ,SAAS,EACT,UAAkB,EAClB,KAAK,GACR,EAAE,YAAY,CAAC,CAAC,CAAC,qBAkGjB"}
@@ -0,0 +1,47 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import React, { useCallback } from 'react';
3
+ import { View, Text, FlatList, TouchableOpacity, StyleSheet, ActivityIndicator } from 'react-native';
4
+ import { useMkTheme } from '../theme/MkThemeProvider';
5
+ import { tokens } from '@mk/core';
6
+ export function MkTable({ data, columns, loading = false, onSort, sortField, sortOrder, pagination, onPageChange, actions, onAction, emptyMessage = 'No se encontraron datos.', keyExtractor, onRefresh, refreshing = false, style, }) {
7
+ const { theme } = useMkTheme();
8
+ const renderHeader = useCallback(() => (_jsxs(View, { style: [styles.headerRow, { borderBottomColor: theme.border }], children: [columns.map((col) => (_jsx(TouchableOpacity, { disabled: !col.sortable, onPress: () => col.sortable && (onSort === null || onSort === void 0 ? void 0 : onSort(String(col.key))), style: [styles.headerCell, { flex: col.flex || 1 }], activeOpacity: col.sortable ? 0.6 : 1, children: _jsxs(Text, { style: [styles.headerText, { color: theme.mutedForeground }], children: [col.label, col.sortable && sortField === col.key ? (sortOrder === 'asc' ? ' ↑' : ' ↓') : ''] }) }, String(col.key)))), actions && (_jsx(View, { style: [styles.headerCell, { flex: 0.5 }], children: _jsx(Text, { style: [styles.headerText, { color: theme.mutedForeground }], children: "\u22EF" }) }))] })), [columns, sortField, sortOrder, theme, actions, onSort]);
9
+ const renderRow = useCallback(({ item, index }) => (_jsxs(View, { style: [styles.row, { borderBottomColor: theme.border }, index % 2 === 0 && { backgroundColor: theme.muted + '33' }], children: [columns.map((col) => {
10
+ var _a;
11
+ return (_jsx(View, { style: [styles.cell, { flex: col.flex || 1 }], children: col.render ? (col.render(item)) : (_jsx(Text, { style: [styles.cellText, { color: theme.foreground }], numberOfLines: 2, children: String((_a = item[col.key]) !== null && _a !== void 0 ? _a : '') })) }, String(col.key)));
12
+ }), actions && onAction && (_jsx(View, { style: [styles.cell, { flex: 0.5, alignItems: 'center' }], children: _jsx(MkRowActions, { options: actions(item), onSelect: (val) => onAction(val, item), theme: theme }) }))] })), [columns, actions, onAction, theme]);
13
+ const renderEmpty = useCallback(() => {
14
+ if (loading)
15
+ return null;
16
+ return (_jsx(View, { style: styles.empty, children: _jsx(Text, { style: [styles.emptyText, { color: theme.mutedForeground }], children: emptyMessage }) }));
17
+ }, [loading, emptyMessage, theme]);
18
+ const renderFooter = useCallback(() => {
19
+ if (loading)
20
+ return _jsx(ActivityIndicator, { style: styles.loader, color: theme.primary });
21
+ if (!pagination || !pagination.last_page || pagination.last_page <= 1)
22
+ return null;
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
+ }, [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 })] }));
26
+ }
27
+ const MkRowActions = ({ options, onSelect, theme }) => {
28
+ const [open, setOpen] = React.useState(false);
29
+ return (_jsxs(View, { children: [_jsx(TouchableOpacity, { onPress: () => setOpen(!open), activeOpacity: 0.6, children: _jsx(Text, { style: { fontSize: 18, color: theme.mutedForeground }, children: "\u22EE" }) }), open && (_jsx(View, { style: [styles.actionsPopup, { backgroundColor: theme.background, borderColor: theme.border }], children: options.map((opt) => (_jsxs(TouchableOpacity, { onPress: () => { onSelect(opt.value); setOpen(false); }, style: styles.actionItem, children: [opt.icon ? _jsx(View, { style: { marginRight: 8 }, children: opt.icon }) : null, _jsx(Text, { style: { color: theme.foreground, fontSize: 13 }, children: opt.label })] }, String(opt.value)))) }))] }));
30
+ };
31
+ const styles = StyleSheet.create({
32
+ container: { borderWidth: 1, overflow: 'hidden' },
33
+ headerRow: { flexDirection: 'row', borderBottomWidth: 1, paddingVertical: 10, paddingHorizontal: 12 },
34
+ headerCell: { justifyContent: 'center' },
35
+ headerText: { fontSize: 12, fontWeight: '600', textTransform: 'uppercase', letterSpacing: 0.5 },
36
+ row: { flexDirection: 'row', borderBottomWidth: 0.5, paddingVertical: 12, paddingHorizontal: 12, alignItems: 'center' },
37
+ cell: { justifyContent: 'center', paddingRight: 8 },
38
+ cellText: { fontSize: 14 },
39
+ empty: { padding: 32, alignItems: 'center' },
40
+ emptyText: { fontSize: 14 },
41
+ loader: { padding: 16 },
42
+ pagination: { flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', padding: 12, borderTopWidth: 1 },
43
+ pageBtn: { borderWidth: 1, borderRadius: 6, paddingHorizontal: 12, paddingVertical: 6 },
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
+ actionItem: { flexDirection: 'row', alignItems: 'center', paddingVertical: 8, paddingHorizontal: 12, borderRadius: 4 },
46
+ });
47
+ //# sourceMappingURL=MkTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkTable.js","sourceRoot":"","sources":["../../src/components/MkTable.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import type { ViewStyle } from 'react-native';
3
+ export interface MkTabItem {
4
+ key: string;
5
+ label: string;
6
+ icon?: React.ReactNode;
7
+ badge?: number | string;
8
+ disabled?: boolean;
9
+ }
10
+ export interface MkTabsProps {
11
+ tabs: MkTabItem[];
12
+ activeKey?: string;
13
+ onChange?: (key: string) => void;
14
+ variant?: 'underline' | 'pills' | 'segmented';
15
+ size?: 'sm' | 'md';
16
+ style?: ViewStyle;
17
+ }
18
+ export declare const MkTabs: React.FC<MkTabsProps>;
19
+ //# sourceMappingURL=MkTabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkTabs.d.ts","sourceRoot":"","sources":["../../src/components/MkTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAK9C,MAAM,WAAW,SAAS;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,WAAW,CAAC;IAC9C,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAgExC,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useCallback } from 'react';
3
+ import { View, Text, TouchableOpacity, ScrollView, StyleSheet } from 'react-native';
4
+ import { useMkTheme } from '../theme/MkThemeProvider';
5
+ import { tokens } from '@mk/core';
6
+ export const MkTabs = ({ tabs, activeKey, onChange, variant = 'underline', size = 'md', style, }) => {
7
+ var _a, _b;
8
+ const { theme } = useMkTheme();
9
+ const [internalKey, setInternalKey] = useState((_b = (_a = tabs[0]) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : '');
10
+ const currentKey = activeKey !== null && activeKey !== void 0 ? activeKey : internalKey;
11
+ const fontSize = size === 'sm' ? 13 : 14;
12
+ const handleSelect = useCallback((key) => {
13
+ setInternalKey(key);
14
+ onChange === null || onChange === void 0 ? void 0 : onChange(key);
15
+ }, [onChange]);
16
+ const containerStyle = variant === 'segmented'
17
+ ? { backgroundColor: theme.muted, borderRadius: tokens.shared.radius, padding: 3, gap: 2 }
18
+ : variant === 'pills'
19
+ ? { gap: 6 }
20
+ : { borderBottomWidth: 1, borderBottomColor: theme.border };
21
+ return (_jsx(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, style: style, children: _jsx(View, { style: [styles.container, containerStyle], children: tabs.map((tab) => {
22
+ const isActive = currentKey === tab.key;
23
+ const tabStyle = variant === 'segmented'
24
+ ? Object.assign({ borderRadius: tokens.shared.radius - 2 }, (isActive ? { backgroundColor: theme.background, elevation: 1, shadowColor: '#000', shadowOpacity: 0.08, shadowRadius: 2, shadowOffset: { width: 0, height: 1 } } : {})) : variant === 'pills'
25
+ ? Object.assign({ borderRadius: 999 }, (isActive ? { backgroundColor: theme.primary } : {})) : { borderBottomWidth: 2, borderBottomColor: isActive ? theme.primary : 'transparent' };
26
+ const textColor = variant === 'pills' && isActive ? theme.primaryForeground
27
+ : isActive ? (variant === 'underline' ? theme.primary : theme.foreground)
28
+ : theme.mutedForeground;
29
+ return (_jsxs(TouchableOpacity, { onPress: () => handleSelect(tab.key), disabled: tab.disabled, activeOpacity: 0.7, style: [styles.tab, tabStyle, tab.disabled && { opacity: 0.4 }], children: [tab.icon ? _jsx(View, { style: { marginRight: 4 }, children: tab.icon }) : null, _jsx(Text, { style: [{ color: textColor, fontSize, fontWeight: isActive ? '600' : '400' }], children: tab.label }), tab.badge != null ? (_jsx(View, { style: [styles.badge, { backgroundColor: theme.primary }], children: _jsx(Text, { style: [styles.badgeText, { color: theme.primaryForeground }], children: tab.badge }) })) : null] }, tab.key));
30
+ }) }) }));
31
+ };
32
+ const styles = StyleSheet.create({
33
+ container: { flexDirection: 'row', alignItems: 'center' },
34
+ tab: { flexDirection: 'row', alignItems: 'center', paddingVertical: 10, paddingHorizontal: 14, gap: 4 },
35
+ badge: { paddingHorizontal: 6, paddingVertical: 1, borderRadius: 999, minWidth: 18, alignItems: 'center' },
36
+ badgeText: { fontSize: 10, fontWeight: '600' },
37
+ });
38
+ //# sourceMappingURL=MkTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkTabs.js","sourceRoot":"","sources":["../../src/components/MkTabs.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import type { ViewStyle } from 'react-native';
3
+ export interface MkTextAreaProps {
4
+ label?: string;
5
+ error?: string;
6
+ helperText?: string;
7
+ placeholder?: string;
8
+ value?: string;
9
+ onChangeText?: (text: string) => void;
10
+ rows?: number;
11
+ maxLength?: number;
12
+ disabled?: boolean;
13
+ showCount?: boolean;
14
+ style?: ViewStyle;
15
+ }
16
+ export declare const MkTextArea: React.FC<MkTextAreaProps>;
17
+ //# sourceMappingURL=MkTextArea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkTextArea.d.ts","sourceRoot":"","sources":["../../src/components/MkTextArea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAK9C,MAAM,WAAW,eAAe;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA4ChD,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { View, TextInput, Text, StyleSheet } from 'react-native';
3
+ import { useMkTheme } from '../theme/MkThemeProvider';
4
+ import { tokens } from '@mk/core';
5
+ export const MkTextArea = ({ label, error, helperText, placeholder, value = '', onChangeText, rows = 4, maxLength, disabled = false, showCount = false, style, }) => {
6
+ const { theme } = useMkTheme();
7
+ return (_jsxs(View, { style: [styles.container, style], children: [label ? _jsx(Text, { style: [styles.label, { color: theme.foreground }], children: label }) : null, _jsx(View, { style: [styles.wrapper, { borderColor: error ? theme.error : theme.border, backgroundColor: theme.background }], children: _jsx(TextInput, { style: [styles.input, { color: theme.foreground, minHeight: rows * 24 }], placeholder: placeholder, placeholderTextColor: theme.mutedForeground, value: value, onChangeText: onChangeText, multiline: true, numberOfLines: rows, maxLength: maxLength, editable: !disabled, textAlignVertical: "top" }) }), _jsxs(View, { style: styles.footer, children: [error ? (_jsx(Text, { style: [styles.errorText, { color: theme.error }], children: error })) : helperText ? (_jsx(Text, { style: [styles.helperText, { color: theme.mutedForeground }], children: helperText })) : _jsx(View, {}), showCount && maxLength ? (_jsxs(Text, { style: [styles.helperText, { color: theme.mutedForeground }], children: [value.length, "/", maxLength] })) : null] })] }));
8
+ };
9
+ const styles = StyleSheet.create({
10
+ container: { gap: 6, marginBottom: 12 },
11
+ label: { fontSize: 14, fontWeight: '500', opacity: 0.9 },
12
+ wrapper: { borderWidth: 1, borderRadius: tokens.shared.radius },
13
+ input: { paddingHorizontal: 12, paddingVertical: 10, fontSize: 16 },
14
+ footer: { flexDirection: 'row', justifyContent: 'space-between' },
15
+ errorText: { fontSize: 12, fontWeight: '500' },
16
+ helperText: { fontSize: 12, opacity: 0.8 },
17
+ });
18
+ //# sourceMappingURL=MkTextArea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkTextArea.js","sourceRoot":"","sources":["../../src/components/MkTextArea.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAgBlC,MAAM,CAAC,MAAM,UAAU,GAA8B,CAAC,EAClD,KAAK,EACL,KAAK,EACL,UAAU,EACV,WAAW,EACX,KAAK,GAAG,EAAE,EACV,YAAY,EACZ,IAAI,GAAG,CAAC,EACR,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,KAAK,EACjB,KAAK,GACR,EAAE,EAAE;IACD,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,CAAC;IAE/B,OAAO,CACH,MAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,aACjC,KAAK,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,YAAG,KAAK,GAAQ,CAAC,CAAC,CAAC,IAAI,EACxF,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,YACjH,KAAC,SAAS,IACN,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,EACxE,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,KAAK,CAAC,eAAe,EAC3C,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,EAC1B,SAAS,QACT,aAAa,EAAE,IAAI,EACnB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,CAAC,QAAQ,EACnB,iBAAiB,EAAC,KAAK,GACzB,GACC,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,aACrB,KAAK,CAAC,CAAC,CAAC,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,YAAG,KAAK,GAAQ,CAC1E,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CACb,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,YAAG,UAAU,GAAQ,CAC1F,CAAC,CAAC,CAAC,KAAC,IAAI,KAAG,EACX,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CACtB,MAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,aAAG,KAAK,CAAC,MAAM,OAAG,SAAS,IAAQ,CACxG,CAAC,CAAC,CAAC,IAAI,IACL,IACJ,CACV,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC7B,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;IACvC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;IACxD,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;IAC/D,KAAK,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IACnE,MAAM,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE;IACjE,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;IAC9C,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;CAC7C,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const MkToastRenderer: React.FC;
3
+ //# sourceMappingURL=MkToastRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkToastRenderer.d.ts","sourceRoot":"","sources":["../../src/components/MkToastRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAyC9D,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAkBnC,CAAC"}
@@ -0,0 +1,133 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useEffect, useRef, useCallback } from 'react';
3
+ import { View, Text, TouchableOpacity, Animated, StyleSheet, Dimensions } from 'react-native';
4
+ import { useMkToast } from '../context/MkToastContext';
5
+ import { useMkTheme } from '../theme/MkThemeProvider';
6
+ /**
7
+ * @module MkToastRenderer (Mobile)
8
+ * @description Animated toast renderer for React Native.
9
+ * Equivalent to mk-web's MkToastContainer — renders toasts from MkToastContext
10
+ * with slide-in animations and progress tracking.
11
+ *
12
+ * Place this component inside <MkToastProvider> at the app root.
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * <MkToastProvider>
17
+ * <App />
18
+ * <MkToastRenderer />
19
+ * </MkToastProvider>
20
+ * ```
21
+ */
22
+ const { width: SCREEN_WIDTH } = Dimensions.get('window');
23
+ const TYPE_COLORS = {
24
+ default: '#6366f1',
25
+ success: '#22c55e',
26
+ error: '#ef4444',
27
+ warning: '#f59e0b',
28
+ info: '#3b82f6',
29
+ };
30
+ const TYPE_ICONS = {
31
+ default: '🔔',
32
+ success: '✅',
33
+ error: '❌',
34
+ warning: '⚠️',
35
+ info: 'ℹ️',
36
+ };
37
+ export const MkToastRenderer = () => {
38
+ const { toasts, dismissToast } = useMkToast();
39
+ const { theme } = useMkTheme();
40
+ if (toasts.length === 0)
41
+ return null;
42
+ return (_jsx(View, { style: styles.container, pointerEvents: "box-none", children: toasts.map((toast) => (_jsx(ToastItem, { toast: toast, onDismiss: dismissToast, theme: theme }, toast.id))) }));
43
+ };
44
+ const ToastItem = React.memo(({ toast, onDismiss, theme }) => {
45
+ const translateY = useRef(new Animated.Value(-80)).current;
46
+ const opacity = useRef(new Animated.Value(0)).current;
47
+ const progress = useRef(new Animated.Value(1)).current;
48
+ const typeColor = TYPE_COLORS[toast.options.type || 'default'] || TYPE_COLORS.default;
49
+ const typeIcon = TYPE_ICONS[toast.options.type || 'default'] || TYPE_ICONS.default;
50
+ const timeout = toast.options.timeout || 4000;
51
+ const handleDismiss = useCallback(() => {
52
+ Animated.parallel([
53
+ Animated.timing(translateY, { toValue: -80, duration: 250, useNativeDriver: true }),
54
+ Animated.timing(opacity, { toValue: 0, duration: 250, useNativeDriver: true }),
55
+ ]).start(() => onDismiss(toast.id));
56
+ }, [toast.id, onDismiss, translateY, opacity]);
57
+ useEffect(() => {
58
+ // Slide in
59
+ Animated.parallel([
60
+ Animated.spring(translateY, { toValue: 0, useNativeDriver: true, tension: 60, friction: 10 }),
61
+ Animated.timing(opacity, { toValue: 1, duration: 200, useNativeDriver: true }),
62
+ ]).start();
63
+ // Progress bar (native driver using translateX)
64
+ if (timeout > 0) {
65
+ Animated.timing(progress, {
66
+ toValue: 0,
67
+ duration: timeout,
68
+ useNativeDriver: true,
69
+ }).start(({ finished }) => {
70
+ if (finished)
71
+ handleDismiss();
72
+ });
73
+ }
74
+ }, []);
75
+ const translateX = progress.interpolate({
76
+ inputRange: [0, 1],
77
+ outputRange: [-(SCREEN_WIDTH - 32), 0],
78
+ });
79
+ return (_jsxs(Animated.View, { style: [
80
+ styles.toast,
81
+ {
82
+ backgroundColor: theme.background,
83
+ borderLeftColor: typeColor,
84
+ transform: [{ translateY }],
85
+ opacity,
86
+ },
87
+ ], children: [_jsxs(View, { style: styles.content, children: [_jsx(Text, { style: styles.icon, children: typeIcon }), _jsx(Text, { style: [styles.text, { color: theme.foreground }], numberOfLines: 3, children: typeof toast.content === 'string' ? toast.content : 'Notification' }), _jsx(TouchableOpacity, { onPress: handleDismiss, hitSlop: { top: 10, bottom: 10, left: 10, right: 10 }, children: _jsx(Text, { style: [styles.close, { color: theme.mutedForeground }], children: "\u2715" }) })] }), timeout > 0 && (_jsx(Animated.View, { style: [
88
+ styles.progressBar,
89
+ {
90
+ width: '100%',
91
+ transform: [{ translateX }],
92
+ backgroundColor: typeColor,
93
+ },
94
+ ] }))] }));
95
+ });
96
+ const styles = StyleSheet.create({
97
+ container: {
98
+ position: 'absolute',
99
+ top: 50,
100
+ left: 16,
101
+ right: 16,
102
+ zIndex: 9999,
103
+ gap: 8,
104
+ },
105
+ toast: {
106
+ borderRadius: 8,
107
+ borderLeftWidth: 4,
108
+ overflow: 'hidden',
109
+ elevation: 8,
110
+ shadowColor: '#000',
111
+ shadowOpacity: 0.12,
112
+ shadowRadius: 12,
113
+ shadowOffset: { width: 0, height: 4 },
114
+ },
115
+ content: {
116
+ flexDirection: 'row',
117
+ alignItems: 'center',
118
+ gap: 10,
119
+ paddingVertical: 12,
120
+ paddingHorizontal: 14,
121
+ },
122
+ icon: { fontSize: 18, flexShrink: 0 },
123
+ text: { flex: 1, fontSize: 14, fontWeight: '500' },
124
+ close: { fontSize: 16, fontWeight: '600', paddingLeft: 8 },
125
+ progressBar: {
126
+ height: 3,
127
+ position: 'absolute',
128
+ bottom: 0,
129
+ left: 0,
130
+ opacity: 0.5,
131
+ },
132
+ });
133
+ //# sourceMappingURL=MkToastRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkToastRenderer.js","sourceRoot":"","sources":["../../src/components/MkToastRenderer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import type { ViewStyle } from 'react-native';
3
+ /**
4
+ * @module MkTooltip (Mobile)
5
+ * @description Long-press tooltip/popover for mobile. Shows info on press since hover doesn't exist in RN.
6
+ * Same conceptual API as web MkTooltip — adapted for touch interaction.
7
+ */
8
+ export interface MkTooltipProps {
9
+ content: string;
10
+ position?: 'top' | 'bottom';
11
+ children: React.ReactElement;
12
+ style?: ViewStyle;
13
+ }
14
+ export declare const MkTooltip: React.FC<MkTooltipProps>;
15
+ //# sourceMappingURL=MkTooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkTooltip.d.ts","sourceRoot":"","sources":["../../src/components/MkTooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C;;;;GAIG;AAEH,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAC7B,KAAK,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA8B9C,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useCallback } from 'react';
3
+ import { View, Text, TouchableOpacity, StyleSheet } from 'react-native';
4
+ import { useMkTheme } from '../theme/MkThemeProvider';
5
+ export const MkTooltip = ({ content, position = 'top', children, style, }) => {
6
+ const { theme } = useMkTheme();
7
+ const [visible, setVisible] = useState(false);
8
+ const handlePress = useCallback(() => {
9
+ setVisible(true);
10
+ setTimeout(() => setVisible(false), 2500);
11
+ }, []);
12
+ return (_jsxs(View, { style: style, children: [_jsx(TouchableOpacity, { onLongPress: handlePress, activeOpacity: 0.8, delayLongPress: 300, children: children }), visible && (_jsx(View, { style: [
13
+ styles.tooltip,
14
+ { backgroundColor: theme.foreground },
15
+ position === 'top' ? styles.top : styles.bottom,
16
+ ], children: _jsx(Text, { style: [styles.text, { color: theme.background }], children: content }) }))] }));
17
+ };
18
+ const styles = StyleSheet.create({
19
+ tooltip: {
20
+ position: 'absolute',
21
+ zIndex: 100,
22
+ paddingVertical: 8,
23
+ paddingHorizontal: 12,
24
+ borderRadius: 6,
25
+ elevation: 8,
26
+ shadowColor: '#000',
27
+ shadowOpacity: 0.12,
28
+ shadowRadius: 8,
29
+ shadowOffset: { width: 0, height: 4 },
30
+ alignSelf: 'center',
31
+ },
32
+ top: { bottom: '110%', left: 0, right: 0 },
33
+ bottom: { top: '110%', left: 0, right: 0 },
34
+ text: { fontSize: 13, lineHeight: 18, textAlign: 'center' },
35
+ });
36
+ //# sourceMappingURL=MkTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkTooltip.js","sourceRoot":"","sources":["../../src/components/MkTooltip.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAoB,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAetD,MAAM,CAAC,MAAM,SAAS,GAA6B,CAAC,EAChD,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,KAAK,GACR,EAAE,EAAE;IACD,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,CAAC;IAC/B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACH,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,aACd,KAAC,gBAAgB,IAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,YAC9E,QAAQ,GACM,EAClB,OAAO,IAAI,CACR,KAAC,IAAI,IAAC,KAAK,EAAE;oBACT,MAAM,CAAC,OAAO;oBACd,EAAE,eAAe,EAAE,KAAK,CAAC,UAAU,EAAE;oBACrC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;iBAClD,YACG,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,YAAG,OAAO,GAAQ,GACtE,CACV,IACE,CACV,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC7B,OAAO,EAAE;QACL,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,GAAG;QACX,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,EAAE;QACrB,YAAY,EAAE,CAAC;QACf,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,MAAM;QACnB,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QACrC,SAAS,EAAE,QAAQ;KACtB;IACD,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;IAC1C,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;IAC1C,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;CAC9D,CAAC,CAAC"}
@@ -0,0 +1,47 @@
1
+ import React from 'react';
2
+ import type { ViewStyle } from 'react-native';
3
+ /**
4
+ * @module MkWindowList (Mobile)
5
+ * @description High-performance virtualized list backed by FlashList.
6
+ * Equivalent API to mk-web's MkWindowList — same props for items, renderItem, loading, hasMore, etc.
7
+ *
8
+ * RN's FlatList natively virtualizes, so this is a thin wrapper that:
9
+ * 1. Standardizes the API to match web's MkWindowList
10
+ * 2. Adds infinite scroll (onEndReached → onLoadMore)
11
+ * 3. Handles empty states and loading indicators
12
+ * 4. Provides pull-to-refresh
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * <MkWindowList
17
+ * items={products}
18
+ * renderItem={(item, index) => <ProductCard product={item} />}
19
+ * itemHeight={80}
20
+ * loading={loading}
21
+ * hasMore={hasMore}
22
+ * onLoadMore={loadMore}
23
+ * onRefresh={refresh}
24
+ * />
25
+ * ```
26
+ */
27
+ export interface MkWindowListProps<T> {
28
+ items: T[];
29
+ renderItem: (item: T, index: number) => React.ReactElement;
30
+ /** Estimated item height for FlashList optimization. */
31
+ itemHeight: number;
32
+ /** Container height — in mobile this is typically flex-auto. Can pass explicit value. */
33
+ containerHeight?: number;
34
+ /** Extra items to render outside viewport. Default 5. */
35
+ overscan?: number;
36
+ loading?: boolean;
37
+ hasMore?: boolean;
38
+ onLoadMore?: () => void;
39
+ emptyMessage?: string;
40
+ /** Pull-to-refresh handler. */
41
+ onRefresh?: () => void;
42
+ refreshing?: boolean;
43
+ keyExtractor?: (item: T, index: number) => string;
44
+ style?: ViewStyle;
45
+ }
46
+ export declare function MkWindowList<T>({ items, renderItem, itemHeight, containerHeight, overscan, loading, hasMore, onLoadMore, emptyMessage, onRefresh, refreshing, keyExtractor, style, }: MkWindowListProps<T>): React.JSX.Element;
47
+ //# sourceMappingURL=MkWindowList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkWindowList.d.ts","sourceRoot":"","sources":["../../src/components/MkWindowList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAK9C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAChC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,YAAY,CAAC;IAC3D,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,KAAK,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAC5B,KAAK,EACL,UAAU,EACV,UAAU,EACV,eAAe,EACf,QAAY,EACZ,OAAe,EACf,OAAe,EACf,UAAU,EACV,YAAyC,EACzC,SAAS,EACT,UAAkB,EAClB,YAAY,EACZ,KAAK,GACR,EAAE,iBAAiB,CAAC,CAAC,CAAC,qBAiEtB"}
@@ -0,0 +1,50 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useRef, useEffect } from 'react';
3
+ import { View, Text, ActivityIndicator, StyleSheet } from 'react-native';
4
+ import { FlashList } from '@shopify/flash-list';
5
+ import { useMkTheme } from '../theme/MkThemeProvider';
6
+ export function MkWindowList({ items, renderItem, itemHeight, containerHeight, overscan = 5, loading = false, hasMore = false, onLoadMore, emptyMessage = 'No se encontraron datos.', onRefresh, refreshing = false, keyExtractor, style, }) {
7
+ const { theme } = useMkTheme();
8
+ // Use a ref for renderItem to avoid invalidating the FlashList recycling.
9
+ const renderItemRef = useRef(renderItem);
10
+ useEffect(() => {
11
+ renderItemRef.current = renderItem;
12
+ }, [renderItem]);
13
+ const handleRenderItem = useCallback(({ item, index }) => renderItemRef.current(item, index), []);
14
+ const handleKeyExtractor = useCallback((item, index) => {
15
+ if (keyExtractor)
16
+ return keyExtractor(item, index);
17
+ if (item && typeof item === 'object') {
18
+ if (item.id !== undefined && item.id !== null)
19
+ return String(item.id);
20
+ if (item.uuid !== undefined && item.uuid !== null)
21
+ return String(item.uuid);
22
+ if (item.key !== undefined && item.key !== null)
23
+ return String(item.key);
24
+ }
25
+ return String(index);
26
+ }, [keyExtractor]);
27
+ const handleEndReached = useCallback(() => {
28
+ if (hasMore && !loading && onLoadMore) {
29
+ onLoadMore();
30
+ }
31
+ }, [hasMore, loading, onLoadMore]);
32
+ const renderFooter = useCallback(() => {
33
+ if (!loading)
34
+ return null;
35
+ return (_jsxs(View, { style: styles.footer, children: [_jsx(ActivityIndicator, { color: theme.primary }), _jsx(Text, { style: [styles.footerText, { color: theme.mutedForeground }], children: "Cargando m\u00E1s..." })] }));
36
+ }, [loading, theme]);
37
+ const renderEmpty = useCallback(() => {
38
+ if (loading)
39
+ return null;
40
+ return (_jsx(View, { style: styles.empty, children: _jsx(Text, { style: [styles.emptyText, { color: theme.mutedForeground }], children: emptyMessage }) }));
41
+ }, [loading, emptyMessage, theme]);
42
+ return (_jsx(FlashList, { data: items, renderItem: handleRenderItem, keyExtractor: handleKeyExtractor, estimatedItemSize: itemHeight, onEndReached: handleEndReached, onEndReachedThreshold: 0.5, onRefresh: onRefresh, refreshing: refreshing, ListFooterComponent: renderFooter, ListEmptyComponent: renderEmpty, showsVerticalScrollIndicator: false, style: [containerHeight ? { height: containerHeight } : { flex: 1 }, style] }));
43
+ }
44
+ const styles = StyleSheet.create({
45
+ footer: { flexDirection: 'row', alignItems: 'center', justifyContent: 'center', gap: 8, padding: 16 },
46
+ footerText: { fontSize: 13 },
47
+ empty: { padding: 32, alignItems: 'center' },
48
+ emptyText: { fontSize: 14 },
49
+ });
50
+ //# sourceMappingURL=MkWindowList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkWindowList.js","sourceRoot":"","sources":["../../src/components/MkWindowList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ export * from './MkButton';
2
+ export * from './MkInput';
3
+ export * from './MkTextArea';
4
+ export * from './MkCheck';
5
+ export * from './MkSwitch';
6
+ export * from './MkRadio';
7
+ export * from './MkSelect';
8
+ export * from './MkFileUpload';
9
+ export * from './MkSearchInput';
10
+ export * from './MkDatePicker';
11
+ export * from './MkAccordion';
12
+ export * from './MkAlert';
13
+ export * from './MkAvatar';
14
+ export * from './MkBadge';
15
+ export * from './MkCard';
16
+ export * from './MkDivider';
17
+ export * from './MkEmptyState';
18
+ export * from './MkLoading';
19
+ export * from './MkProgressBar';
20
+ export * from './MkSkeleton';
21
+ export * from './MkTabs';
22
+ export * from './MkTooltip';
23
+ export * from './MkModal';
24
+ export * from './MkDropDown';
25
+ export * from './MkToastRenderer';
26
+ export * from './MkTable';
27
+ export * from './MkInfiniteList';
28
+ export * from './MkWindowList';
29
+ export * from './MkIcons';
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}