@makroz/web 1.2.6 → 1.4.0

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 (182) hide show
  1. package/dist/auth/CookieStorageAdapter.test.d.ts +11 -0
  2. package/dist/auth/CookieStorageAdapter.test.d.ts.map +1 -0
  3. package/dist/auth/CookieStorageAdapter.test.js +80 -0
  4. package/dist/auth/CookieStorageAdapter.test.js.map +1 -0
  5. package/dist/auth/LocalStorageAdapter.test.d.ts +12 -0
  6. package/dist/auth/LocalStorageAdapter.test.d.ts.map +1 -0
  7. package/dist/auth/LocalStorageAdapter.test.js +71 -0
  8. package/dist/auth/LocalStorageAdapter.test.js.map +1 -0
  9. package/dist/auth/authExports.test.d.ts +2 -0
  10. package/dist/auth/authExports.test.d.ts.map +1 -0
  11. package/dist/auth/authExports.test.js +15 -0
  12. package/dist/auth/authExports.test.js.map +1 -0
  13. package/dist/components/MkAccordion.stories.test.d.ts +2 -0
  14. package/dist/components/MkAccordion.stories.test.d.ts.map +1 -0
  15. package/dist/components/MkAccordion.stories.test.js +18 -0
  16. package/dist/components/MkAccordion.stories.test.js.map +1 -0
  17. package/dist/components/MkAlert.stories.test.d.ts +2 -0
  18. package/dist/components/MkAlert.stories.test.d.ts.map +1 -0
  19. package/dist/components/MkAlert.stories.test.js +16 -0
  20. package/dist/components/MkAlert.stories.test.js.map +1 -0
  21. package/dist/components/MkAvatar.stories.test.d.ts +2 -0
  22. package/dist/components/MkAvatar.stories.test.d.ts.map +1 -0
  23. package/dist/components/MkAvatar.stories.test.js +16 -0
  24. package/dist/components/MkAvatar.stories.test.js.map +1 -0
  25. package/dist/components/MkBadge.stories.test.d.ts +2 -0
  26. package/dist/components/MkBadge.stories.test.d.ts.map +1 -0
  27. package/dist/components/MkBadge.stories.test.js +16 -0
  28. package/dist/components/MkBadge.stories.test.js.map +1 -0
  29. package/dist/components/MkButton.test.d.ts +2 -0
  30. package/dist/components/MkButton.test.d.ts.map +1 -0
  31. package/dist/components/MkButton.test.js +56 -0
  32. package/dist/components/MkButton.test.js.map +1 -0
  33. package/dist/components/MkCheck.stories.test.d.ts +2 -0
  34. package/dist/components/MkCheck.stories.test.d.ts.map +1 -0
  35. package/dist/components/MkCheck.stories.test.js +16 -0
  36. package/dist/components/MkCheck.stories.test.js.map +1 -0
  37. package/dist/components/MkDatePicker.stories.test.d.ts +2 -0
  38. package/dist/components/MkDatePicker.stories.test.d.ts.map +1 -0
  39. package/dist/components/MkDatePicker.stories.test.js +16 -0
  40. package/dist/components/MkDatePicker.stories.test.js.map +1 -0
  41. package/dist/components/MkDivider.stories.test.d.ts +2 -0
  42. package/dist/components/MkDivider.stories.test.d.ts.map +1 -0
  43. package/dist/components/MkDivider.stories.test.js +15 -0
  44. package/dist/components/MkDivider.stories.test.js.map +1 -0
  45. package/dist/components/MkDropDown.stories.test.d.ts +2 -0
  46. package/dist/components/MkDropDown.stories.test.d.ts.map +1 -0
  47. package/dist/components/MkDropDown.stories.test.js +18 -0
  48. package/dist/components/MkDropDown.stories.test.js.map +1 -0
  49. package/dist/components/MkEmptyState.stories.test.d.ts +2 -0
  50. package/dist/components/MkEmptyState.stories.test.d.ts.map +1 -0
  51. package/dist/components/MkEmptyState.stories.test.js +15 -0
  52. package/dist/components/MkEmptyState.stories.test.js.map +1 -0
  53. package/dist/components/MkFileUpload-leak.test.d.ts +16 -0
  54. package/dist/components/MkFileUpload-leak.test.d.ts.map +1 -0
  55. package/dist/components/MkFileUpload-leak.test.js +157 -0
  56. package/dist/components/MkFileUpload-leak.test.js.map +1 -0
  57. package/dist/components/MkFileUpload.stories.test.d.ts +2 -0
  58. package/dist/components/MkFileUpload.stories.test.d.ts.map +1 -0
  59. package/dist/components/MkFileUpload.stories.test.js +15 -0
  60. package/dist/components/MkFileUpload.stories.test.js.map +1 -0
  61. package/dist/components/MkInfiniteList.stories.test.d.ts +2 -0
  62. package/dist/components/MkInfiniteList.stories.test.d.ts.map +1 -0
  63. package/dist/components/MkInfiniteList.stories.test.js +24 -0
  64. package/dist/components/MkInfiniteList.stories.test.js.map +1 -0
  65. package/dist/components/MkInput.stories.test.d.ts +2 -0
  66. package/dist/components/MkInput.stories.test.d.ts.map +1 -0
  67. package/dist/components/MkInput.stories.test.js +16 -0
  68. package/dist/components/MkInput.stories.test.js.map +1 -0
  69. package/dist/components/MkLoading.stories.test.d.ts +2 -0
  70. package/dist/components/MkLoading.stories.test.d.ts.map +1 -0
  71. package/dist/components/MkLoading.stories.test.js +15 -0
  72. package/dist/components/MkLoading.stories.test.js.map +1 -0
  73. package/dist/components/MkProgressBar.stories.test.d.ts +2 -0
  74. package/dist/components/MkProgressBar.stories.test.d.ts.map +1 -0
  75. package/dist/components/MkProgressBar.stories.test.js +15 -0
  76. package/dist/components/MkProgressBar.stories.test.js.map +1 -0
  77. package/dist/components/MkRadio.stories.test.d.ts +2 -0
  78. package/dist/components/MkRadio.stories.test.d.ts.map +1 -0
  79. package/dist/components/MkRadio.stories.test.js +18 -0
  80. package/dist/components/MkRadio.stories.test.js.map +1 -0
  81. package/dist/components/MkSearchInput.stories.test.d.ts +2 -0
  82. package/dist/components/MkSearchInput.stories.test.d.ts.map +1 -0
  83. package/dist/components/MkSearchInput.stories.test.js +15 -0
  84. package/dist/components/MkSearchInput.stories.test.js.map +1 -0
  85. package/dist/components/MkSelect.stories.test.d.ts +2 -0
  86. package/dist/components/MkSelect.stories.test.d.ts.map +1 -0
  87. package/dist/components/MkSelect.stories.test.js +21 -0
  88. package/dist/components/MkSelect.stories.test.js.map +1 -0
  89. package/dist/components/MkSkeleton.stories.test.d.ts +2 -0
  90. package/dist/components/MkSkeleton.stories.test.d.ts.map +1 -0
  91. package/dist/components/MkSkeleton.stories.test.js +15 -0
  92. package/dist/components/MkSkeleton.stories.test.js.map +1 -0
  93. package/dist/components/MkSwitch.stories.test.d.ts +2 -0
  94. package/dist/components/MkSwitch.stories.test.d.ts.map +1 -0
  95. package/dist/components/MkSwitch.stories.test.js +15 -0
  96. package/dist/components/MkSwitch.stories.test.js.map +1 -0
  97. package/dist/components/MkTable-keyExtractor.test.d.ts +15 -0
  98. package/dist/components/MkTable-keyExtractor.test.d.ts.map +1 -0
  99. package/dist/components/MkTable-keyExtractor.test.js +65 -0
  100. package/dist/components/MkTable-keyExtractor.test.js.map +1 -0
  101. package/dist/components/MkTable.stories.test.d.ts +2 -0
  102. package/dist/components/MkTable.stories.test.d.ts.map +1 -0
  103. package/dist/components/MkTable.stories.test.js +25 -0
  104. package/dist/components/MkTable.stories.test.js.map +1 -0
  105. package/dist/components/MkTextArea.stories.test.d.ts +2 -0
  106. package/dist/components/MkTextArea.stories.test.d.ts.map +1 -0
  107. package/dist/components/MkTextArea.stories.test.js +15 -0
  108. package/dist/components/MkTextArea.stories.test.js.map +1 -0
  109. package/dist/components/MkToastContainer.stories.test.d.ts +2 -0
  110. package/dist/components/MkToastContainer.stories.test.d.ts.map +1 -0
  111. package/dist/components/MkToastContainer.stories.test.js +29 -0
  112. package/dist/components/MkToastContainer.stories.test.js.map +1 -0
  113. package/dist/components/MkTooltip.stories.test.d.ts +2 -0
  114. package/dist/components/MkTooltip.stories.test.d.ts.map +1 -0
  115. package/dist/components/MkTooltip.stories.test.js +15 -0
  116. package/dist/components/MkTooltip.stories.test.js.map +1 -0
  117. package/dist/components/MkWindowList.stories.test.d.ts +2 -0
  118. package/dist/components/MkWindowList.stories.test.d.ts.map +1 -0
  119. package/dist/components/MkWindowList.stories.test.js +19 -0
  120. package/dist/components/MkWindowList.stories.test.js.map +1 -0
  121. package/dist/hooks/useApi.test.d.ts +2 -0
  122. package/dist/hooks/useApi.test.d.ts.map +1 -0
  123. package/dist/hooks/useApi.test.js +238 -0
  124. package/dist/hooks/useApi.test.js.map +1 -0
  125. package/dist/hooks/useMkCrud.test.d.ts +2 -0
  126. package/dist/hooks/useMkCrud.test.d.ts.map +1 -0
  127. package/dist/hooks/useMkCrud.test.js +87 -0
  128. package/dist/hooks/useMkCrud.test.js.map +1 -0
  129. package/dist/hooks/useMkForm.test.d.ts +2 -0
  130. package/dist/hooks/useMkForm.test.d.ts.map +1 -0
  131. package/dist/hooks/useMkForm.test.js +116 -0
  132. package/dist/hooks/useMkForm.test.js.map +1 -0
  133. package/dist/hooks/useMkInfiniteList.d.ts.map +1 -1
  134. package/dist/hooks/useMkInfiniteList.js +6 -2
  135. package/dist/hooks/useMkInfiniteList.js.map +1 -1
  136. package/dist/hooks/useMkInfiniteList.test.d.ts +2 -0
  137. package/dist/hooks/useMkInfiniteList.test.d.ts.map +1 -0
  138. package/dist/hooks/useMkInfiniteList.test.js +84 -0
  139. package/dist/hooks/useMkInfiniteList.test.js.map +1 -0
  140. package/dist/hooks/useMkList.d.ts +15 -4
  141. package/dist/hooks/useMkList.d.ts.map +1 -1
  142. package/dist/hooks/useMkList.js +16 -12
  143. package/dist/hooks/useMkList.js.map +1 -1
  144. package/dist/hooks/useMkList.test.d.ts +2 -0
  145. package/dist/hooks/useMkList.test.d.ts.map +1 -0
  146. package/dist/hooks/useMkList.test.js +265 -0
  147. package/dist/hooks/useMkList.test.js.map +1 -0
  148. package/dist/theme/MkThemeProvider.test.d.ts +2 -0
  149. package/dist/theme/MkThemeProvider.test.d.ts.map +1 -0
  150. package/dist/theme/MkThemeProvider.test.js +32 -0
  151. package/dist/theme/MkThemeProvider.test.js.map +1 -0
  152. package/package.json +19 -19
  153. package/LICENSE +0 -33
  154. package/dist/components/MkAccordion.module.css +0 -79
  155. package/dist/components/MkAlert.module.css +0 -103
  156. package/dist/components/MkAvatar.module.css +0 -62
  157. package/dist/components/MkBadge.module.css +0 -74
  158. package/dist/components/MkButton.module.css +0 -85
  159. package/dist/components/MkCard.module.css +0 -63
  160. package/dist/components/MkCheck.module.css +0 -87
  161. package/dist/components/MkDatePicker.module.css +0 -77
  162. package/dist/components/MkDivider.module.css +0 -39
  163. package/dist/components/MkDropDown.module.css +0 -108
  164. package/dist/components/MkEmptyState.module.css +0 -35
  165. package/dist/components/MkFileUpload.module.css +0 -74
  166. package/dist/components/MkInfiniteList.module.css +0 -69
  167. package/dist/components/MkInput.module.css +0 -94
  168. package/dist/components/MkLoading.module.css +0 -39
  169. package/dist/components/MkModal.module.css +0 -107
  170. package/dist/components/MkProgressBar.module.css +0 -48
  171. package/dist/components/MkRadio.module.css +0 -74
  172. package/dist/components/MkSearchInput.module.css +0 -80
  173. package/dist/components/MkSelect.module.css +0 -177
  174. package/dist/components/MkSkeleton.module.css +0 -28
  175. package/dist/components/MkSwitch.module.css +0 -108
  176. package/dist/components/MkTable.module.css +0 -163
  177. package/dist/components/MkTabs.module.css +0 -117
  178. package/dist/components/MkThemeEditor.module.css +0 -177
  179. package/dist/components/MkToastContainer.module.css +0 -95
  180. package/dist/components/MkTooltip.module.css +0 -43
  181. package/dist/components/MkWindowList.module.css +0 -59
  182. package/dist/styles/index.css +0 -124
@@ -1 +1 @@
1
- {"version":3,"file":"useMkInfiniteList.d.ts","sourceRoot":"","sources":["../../src/hooks/useMkInfiniteList.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB;;;;;;;EA8EpF"}
1
+ {"version":3,"file":"useMkInfiniteList.d.ts","sourceRoot":"","sources":["../../src/hooks/useMkInfiniteList.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB;;;;;;;EAkFpF"}
@@ -36,9 +36,13 @@ export function useMkInfiniteList(endpoint, options = {}) {
36
36
  setItems((prev) => [...prev, ...newData]);
37
37
  setPage(prev => prev + 1);
38
38
  }
39
- // Check pagination from extraData
39
+ // Check pagination from extraData (R-PKG-032 v1.8.0):
40
+ // pagination metadata is GROUPED under `__extraData.pagination`
41
+ // (5 LengthAware keys or 3 Cursor keys). We read `last_page`
42
+ // from the grouped sub-object, NOT from top-level __extraData.
40
43
  const extra = response.__extraData;
41
- if (extra && typeof extra.last_page === 'number' && pageToFetch >= extra.last_page) {
44
+ const pagination = extra === null || extra === void 0 ? void 0 : extra.pagination;
45
+ if (pagination && typeof pagination.last_page === 'number' && pageToFetch >= pagination.last_page) {
42
46
  setHasMore(false);
43
47
  }
44
48
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"useMkInfiniteList.js","sourceRoot":"","sources":["../../src/hooks/useMkInfiniteList.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMkInfiniteList.js","sourceRoot":"","sources":["../../src/hooks/useMkInfiniteList.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useMkInfiniteList.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMkInfiniteList.test.d.ts","sourceRoot":"","sources":["../../src/hooks/useMkInfiniteList.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,84 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { renderHook, act } from '@testing-library/react';
3
+ import { useMkInfiniteList } from './useMkInfiniteList';
4
+ // Mock the MkApiContext
5
+ const mockContext = {
6
+ baseUrl: 'http://localhost:8000/api',
7
+ headers: {},
8
+ waiting: 0,
9
+ setWaiting: vi.fn(),
10
+ };
11
+ vi.mock('../context/MkApiContext', () => ({
12
+ useMkApiContext: () => mockContext,
13
+ }));
14
+ const mockFetch = vi.fn();
15
+ global.fetch = mockFetch;
16
+ describe('useMkInfiniteList (T7 auto-fetch)', () => {
17
+ beforeEach(() => {
18
+ vi.clearAllMocks();
19
+ mockFetch.mockReset();
20
+ });
21
+ it('should trigger a page 1 fetch automatically on mount', async () => {
22
+ // R-PKG-032 (v1.8.0): pagination metadata grouped under
23
+ // __extraData.pagination (R-PKG-024 single-level envelope unchanged).
24
+ const mockResponse = {
25
+ success: true,
26
+ data: [{ id: 1, name: 'Item 1' }],
27
+ message: 'OK',
28
+ __extraData: { pagination: { last_page: 3 } },
29
+ };
30
+ mockFetch.mockResolvedValueOnce({
31
+ ok: true,
32
+ json: () => Promise.resolve(mockResponse),
33
+ });
34
+ const { result } = renderHook(() => useMkInfiniteList('/items', { per_page: 15 }));
35
+ // Verify it sets loading state
36
+ expect(result.current.loading).toBe(true);
37
+ await act(async () => {
38
+ // Wait for fetch to complete
39
+ await new Promise((resolve) => setTimeout(resolve, 50));
40
+ });
41
+ expect(mockFetch).toHaveBeenCalledWith(expect.stringContaining('/items?page=1&per_page=15'), expect.any(Object));
42
+ expect(result.current.items).toEqual([{ id: 1, name: 'Item 1' }]);
43
+ expect(result.current.hasMore).toBe(true);
44
+ });
45
+ it('should reset list and auto-fetch page 1 when filter changes', async () => {
46
+ const mockResponse1 = {
47
+ success: true,
48
+ data: [{ id: 1, name: 'Item 1' }],
49
+ message: 'OK',
50
+ };
51
+ const mockResponse2 = {
52
+ success: true,
53
+ data: [{ id: 2, name: 'Filtered Item' }],
54
+ message: 'OK',
55
+ };
56
+ mockFetch
57
+ .mockResolvedValueOnce({
58
+ ok: true,
59
+ json: () => Promise.resolve(mockResponse1),
60
+ })
61
+ .mockResolvedValueOnce({
62
+ ok: true,
63
+ json: () => Promise.resolve(mockResponse2),
64
+ });
65
+ // 1. Mount hook with initial options
66
+ const { result, rerender } = renderHook(({ q }) => useMkInfiniteList('/items', { q }), { initialProps: { q: '' } });
67
+ await act(async () => {
68
+ await new Promise((resolve) => setTimeout(resolve, 50));
69
+ });
70
+ expect(result.current.items).toEqual([{ id: 1, name: 'Item 1' }]);
71
+ // 2. Rerender with a new filter value
72
+ rerender({ q: 'filtered' });
73
+ // Expect it to clear items and set loading to true
74
+ expect(result.current.items).toEqual([]);
75
+ expect(result.current.loading).toBe(true);
76
+ await act(async () => {
77
+ await new Promise((resolve) => setTimeout(resolve, 50));
78
+ });
79
+ // 3. Verify it fetched page 1 with new filter query
80
+ expect(mockFetch).toHaveBeenLastCalledWith(expect.stringContaining('/items?q=filtered&page=1'), expect.any(Object));
81
+ expect(result.current.items).toEqual([{ id: 2, name: 'Filtered Item' }]);
82
+ });
83
+ });
84
+ //# sourceMappingURL=useMkInfiniteList.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMkInfiniteList.test.js","sourceRoot":"","sources":["../../src/hooks/useMkInfiniteList.test.ts"],"names":[],"mappings":"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"}
@@ -30,11 +30,22 @@ export interface MkListParams {
30
30
  /** Shape of the server response for paginated lists. */
31
31
  export interface MkListResponse<T = unknown> {
32
32
  data: T[];
33
+ /**
34
+ * R-PKG-032 (v1.8.0) — PAGINATION ENVELOPE grouping.
35
+ * Pagination metadata is GROUPED under `pagination` (5 LengthAwarePaginator
36
+ * keys or 3 CursorPaginator keys — see `@makroz/core` `MkResponse.__extraData`).
37
+ * Custom metadata (audit_checked, request_id, etc.) lives FLAT here.
38
+ */
33
39
  __extraData?: {
34
- current_page?: number;
35
- last_page?: number;
36
- per_page?: number;
37
- total?: number;
40
+ pagination?: {
41
+ current_page?: number;
42
+ last_page?: number;
43
+ per_page?: number;
44
+ total?: number;
45
+ has_more_pages?: boolean;
46
+ next_cursor?: string | null;
47
+ prev_cursor?: string | null;
48
+ };
38
49
  [key: string]: unknown;
39
50
  };
40
51
  [key: string]: unknown;
@@ -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;;;uBA+B7B,MAAM,SAAS,OAAO;oBAQzB,MAAM;mBAIP,MAAM;oBAIL,MAAM;2BAIC,MAAM;;4BAjCxB,YAAY;IAgEhC,yFAAyF;;;;;;;;;;;;;;EAGhG"}
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;;;;;OAKG;IACH,WAAW,CAAC,EAAE;QACV,UAAU,CAAC,EAAE;YACT,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,cAAc,CAAC,EAAE,OAAO,CAAC;YACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SAC/B,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;;;uBAoC7B,MAAM,SAAS,OAAO;oBAQzB,MAAM;mBAIP,MAAM;oBAIL,MAAM;2BAIC,MAAM;;4BAtCxB,YAAY;IAqEhC,yFAAyF;;;;;;;;;;;;;;EAGhG"}
@@ -4,23 +4,27 @@ export function useMkList(endpoint, options = {}) {
4
4
  const { initialParams = {}, autoFetch = true } = options;
5
5
  const api = useApi();
6
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.
7
+ // R-PKG-024 (v1.7.0 GA) SINGLE-LEVEL ENVELOPE.
8
+ // `__extraData` is ALWAYS top-level (sibling of `data`) per the @makroz/core
9
+ // `MkResponse<T>` contract. The legacy fallback `response.data?.__extraData`
10
+ // (rc11 and earlier) is REMOVED the envelope shape is single-level, no
11
+ // nesting. The R-PKG-023 rc12 opt-in flag `top_level_extra_data` is also
12
+ // removed (GA), so the backend always emits the canonical shape.
13
13
  const [extraData, setExtraData] = useState({});
14
14
  const mountedRef = useRef(false);
15
15
  const refresh = useCallback(async (extraParams = {}) => {
16
- var _a, _b;
17
16
  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`.
17
+ // R-PKG-024: top-level only. The legacy nested fallback
18
+ // `response.data?.__extraData` is REMOVED `__extraData` is
19
+ // ALWAYS top-level per the canonical single-level envelope.
20
+ //
21
+ // R-PKG-032 (v1.8.0): pagination metadata is GROUPED under
22
+ // `__extraData.pagination`. The hook's `pagination` return value
23
+ // exposes the grouped object (not the flat `__extraData`), so
24
+ // consumers can use `result.current.pagination.last_page` directly.
21
25
  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 : {});
26
+ const pagination = topLevel === null || topLevel === void 0 ? void 0 : topLevel.pagination;
27
+ setExtraData(pagination !== null && pagination !== void 0 ? pagination : {});
24
28
  return response;
25
29
  }, [endpoint, params, api]);
26
30
  const setFilter = useCallback((field, value) => {
@@ -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,265 @@
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
+ /**
19
+ * R-PKG-024 (v1.7.0 GA) — SINGLE-LEVEL ENVELOPE pineado en `useMkList`.
20
+ * R-PKG-032 (v1.8.0) — PAGINATION ENVELOPE pineado en `useMkList`.
21
+ *
22
+ * The canonical shape is `__extraData` ALWAYS top-level (sibling of `data`).
23
+ * Post-R-PKG-032, pagination metadata is GROUPED under `__extraData.pagination`
24
+ * (5 LengthAwarePaginator keys, or 3 CursorPaginator keys). The hook's
25
+ * `pagination` return value exposes the grouped object so consumers can
26
+ * use `result.current.pagination.last_page` directly.
27
+ *
28
+ * Legacy fallback `response.data?.__extraData` (rc11 and earlier) is REMOVED —
29
+ * the envelope is single-level post-v1.7.0-GA. The v1.7.x flat pagination
30
+ * shape is REMOVED post-v1.8.0 — `response.__extraData.last_page` is now
31
+ * `response.__extraData.pagination.last_page`.
32
+ */
33
+ describe('useMkList (R-PKG-024 + R-PKG-032 single-level + grouped pagination)', () => {
34
+ beforeEach(() => {
35
+ vi.clearAllMocks();
36
+ mockFetch.mockReset();
37
+ });
38
+ it('reads pagination from __extraData.pagination (R-PKG-032 grouping) — top-level caller shape', async () => {
39
+ // R-PKG-032 (v1.8.0): pagination metadata is grouped under
40
+ // __extraData.pagination (NOT flat).
41
+ const mockResponse = {
42
+ success: true,
43
+ message: 'OK',
44
+ data: [
45
+ { id: 1, name: 'Item 1' },
46
+ { id: 2, name: 'Item 2' },
47
+ ],
48
+ __extraData: {
49
+ pagination: {
50
+ total: 150,
51
+ current_page: 1,
52
+ last_page: 15,
53
+ per_page: 10,
54
+ has_more_pages: true,
55
+ },
56
+ // Custom key flat (R-PKG-032 D5).
57
+ audit_checked: true,
58
+ },
59
+ };
60
+ mockFetch.mockResolvedValueOnce({
61
+ ok: true,
62
+ json: () => Promise.resolve(mockResponse),
63
+ });
64
+ const { result } = renderHook(() => useMkList('/items', { autoFetch: false }));
65
+ await act(async () => {
66
+ await result.current.refresh();
67
+ });
68
+ await waitFor(() => {
69
+ // The hook's `pagination` exposes the grouped object.
70
+ expect(result.current.pagination).toEqual({
71
+ total: 150,
72
+ current_page: 1,
73
+ last_page: 15,
74
+ per_page: 10,
75
+ has_more_pages: true,
76
+ });
77
+ });
78
+ expect(result.current.data).toEqual(mockResponse.data);
79
+ });
80
+ it('returns empty pagination when no __extraData is emitted (non-paginated list)', async () => {
81
+ const mockResponse = {
82
+ success: true,
83
+ message: 'OK',
84
+ data: [{ id: 1, name: 'Item 1' }],
85
+ };
86
+ mockFetch.mockResolvedValueOnce({
87
+ ok: true,
88
+ json: () => Promise.resolve(mockResponse),
89
+ });
90
+ const { result } = renderHook(() => useMkList('/items', { autoFetch: false }));
91
+ await act(async () => {
92
+ await result.current.refresh();
93
+ });
94
+ await waitFor(() => {
95
+ expect(result.current.data).toEqual([{ id: 1, name: 'Item 1' }]);
96
+ });
97
+ expect(result.current.pagination).toEqual({});
98
+ });
99
+ it('reads 5 snake_case pagination keys (current_page, last_page, per_page, total, has_more_pages) grouped under pagination', async () => {
100
+ const mockResponse = {
101
+ success: true,
102
+ message: 'OK',
103
+ data: [{ id: 1 }],
104
+ __extraData: {
105
+ pagination: {
106
+ current_page: 2,
107
+ last_page: 10,
108
+ per_page: 20,
109
+ total: 200,
110
+ has_more_pages: true,
111
+ },
112
+ },
113
+ };
114
+ mockFetch.mockResolvedValueOnce({
115
+ ok: true,
116
+ json: () => Promise.resolve(mockResponse),
117
+ });
118
+ const { result } = renderHook(() => useMkList('/items', { autoFetch: false }));
119
+ await act(async () => {
120
+ await result.current.refresh();
121
+ });
122
+ await waitFor(() => {
123
+ expect(result.current.pagination).toEqual({
124
+ current_page: 2,
125
+ last_page: 10,
126
+ per_page: 20,
127
+ total: 200,
128
+ has_more_pages: true,
129
+ });
130
+ });
131
+ });
132
+ it('reads cursor pagination keys (per_page, next_cursor, prev_cursor) grouped under pagination', async () => {
133
+ // R-PKG-032 (v1.8.0): CursorPaginator emits per_page + next_cursor
134
+ // + prev_cursor (NO current_page / last_page / total / has_more_pages).
135
+ const mockResponse = {
136
+ success: true,
137
+ message: 'OK',
138
+ data: [{ id: 1 }, { id: 2 }],
139
+ __extraData: {
140
+ pagination: {
141
+ per_page: 15,
142
+ next_cursor: 'eyJpZCI6MTB9',
143
+ prev_cursor: null,
144
+ },
145
+ },
146
+ };
147
+ mockFetch.mockResolvedValueOnce({
148
+ ok: true,
149
+ json: () => Promise.resolve(mockResponse),
150
+ });
151
+ const { result } = renderHook(() => useMkList('/items-cursor', { autoFetch: false }));
152
+ await act(async () => {
153
+ await result.current.refresh();
154
+ });
155
+ await waitFor(() => {
156
+ expect(result.current.pagination).toEqual({
157
+ per_page: 15,
158
+ next_cursor: 'eyJpZCI6MTB9',
159
+ prev_cursor: null,
160
+ });
161
+ });
162
+ });
163
+ it('coexists with custom flat keys (audit_checked, request_id) at top-level of __extraData (R-PKG-032 D5)', async () => {
164
+ // R-PKG-032 D5: custom keys live FLAT in __extraData, NOT inside
165
+ // the pagination group. The grouped `pagination` is exposed via
166
+ // the hook's return value; custom keys are NOT exposed (callers
167
+ // would need to read them via the raw response, not the hook).
168
+ const mockResponse = {
169
+ success: true,
170
+ message: 'OK',
171
+ data: [{ id: 1 }],
172
+ __extraData: {
173
+ pagination: {
174
+ current_page: 1,
175
+ last_page: 5,
176
+ per_page: 20,
177
+ total: 100,
178
+ has_more_pages: true,
179
+ },
180
+ audit_checked: true,
181
+ request_id: 'req-abc-123',
182
+ },
183
+ };
184
+ mockFetch.mockResolvedValueOnce({
185
+ ok: true,
186
+ json: () => Promise.resolve(mockResponse),
187
+ });
188
+ const { result } = renderHook(() => useMkList('/items', { autoFetch: false }));
189
+ await act(async () => {
190
+ await result.current.refresh();
191
+ });
192
+ await waitFor(() => {
193
+ // Hook exposes only the grouped pagination, not custom flat keys.
194
+ expect(result.current.pagination).toEqual({
195
+ current_page: 1,
196
+ last_page: 5,
197
+ per_page: 20,
198
+ total: 100,
199
+ has_more_pages: true,
200
+ });
201
+ // Custom keys are NOT in the pagination return.
202
+ expect(result.current.pagination).not.toHaveProperty('audit_checked');
203
+ expect(result.current.pagination).not.toHaveProperty('request_id');
204
+ });
205
+ });
206
+ it('ignores legacy nested __extraData (R-PKG-024 single-level envelope does NOT support nested fallback)', async () => {
207
+ // R-PKG-024: legacy nested shape (`data.data` + `data.__extraData`)
208
+ // is REMOVED. If a backend emits it, useMkList should return empty
209
+ // pagination (since the nested location is no longer read). This
210
+ // test documents the post-GA behavior.
211
+ const mockResponse = {
212
+ success: true,
213
+ message: 'OK',
214
+ data: {
215
+ data: [{ id: 1 }],
216
+ __extraData: { total: 999 }, // legacy nested — IGNORED
217
+ },
218
+ };
219
+ mockFetch.mockResolvedValueOnce({
220
+ ok: true,
221
+ json: () => Promise.resolve(mockResponse),
222
+ });
223
+ const { result } = renderHook(() => useMkList('/items', { autoFetch: false }));
224
+ await act(async () => {
225
+ await result.current.refresh();
226
+ });
227
+ await waitFor(() => {
228
+ // Legacy nested __extraData is IGNORED post-GA.
229
+ expect(result.current.pagination).toEqual({});
230
+ });
231
+ });
232
+ it('regression guard: returns empty pagination if backend emits flat pagination (v1.7.x contract)', async () => {
233
+ // R-PKG-032 (v1.8.0): legacy flat shape is INVALID. If a v1.7.x
234
+ // backend emits `__extraData.last_page` flat, the grouped
235
+ // `__extraData.pagination` is undefined, and the hook returns empty
236
+ // pagination. Documenting the post-v1.8.0 behavior — legacy
237
+ // v1.7.x backends must migrate to the grouped envelope.
238
+ const mockResponse = {
239
+ success: true,
240
+ message: 'OK',
241
+ data: [{ id: 1 }],
242
+ // ⚠️ Legacy v1.7.x flat shape — IGNORED post-v1.8.0.
243
+ __extraData: {
244
+ current_page: 1,
245
+ last_page: 5,
246
+ per_page: 20,
247
+ total: 100,
248
+ },
249
+ };
250
+ mockFetch.mockResolvedValueOnce({
251
+ ok: true,
252
+ json: () => Promise.resolve(mockResponse),
253
+ });
254
+ const { result } = renderHook(() => useMkList('/items', { autoFetch: false }));
255
+ await act(async () => {
256
+ await result.current.refresh();
257
+ });
258
+ await waitFor(() => {
259
+ // No grouped pagination → empty pagination object (the hook reads
260
+ // from `__extraData.pagination` only post-v1.8.0).
261
+ expect(result.current.pagination).toEqual({});
262
+ });
263
+ });
264
+ });
265
+ //# 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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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MkThemeProvider.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkThemeProvider.test.d.ts","sourceRoot":"","sources":["../../src/theme/MkThemeProvider.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { describe, it, expect } from 'vitest';
3
+ import { renderHook, act } from '@testing-library/react';
4
+ import { MkThemeProvider, useMkTheme } from './MkThemeProvider';
5
+ describe('MkThemeProvider referential stability', () => {
6
+ it('should keep the context value reference stable across renders', () => {
7
+ const wrapper = ({ children }) => (_jsx(MkThemeProvider, { children: children }));
8
+ const { result, rerender } = renderHook(() => useMkTheme(), { wrapper });
9
+ const firstValue = result.current;
10
+ rerender();
11
+ const secondValue = result.current;
12
+ expect(firstValue).toBe(secondValue);
13
+ });
14
+ it('should update the context value reference when isDark changes', () => {
15
+ const wrapper = ({ children }) => (_jsx(MkThemeProvider, { children: children }));
16
+ const { result } = renderHook(() => useMkTheme(), { wrapper });
17
+ const firstValue = result.current;
18
+ act(() => {
19
+ result.current.toggleTheme();
20
+ });
21
+ expect(result.current).not.toBe(firstValue);
22
+ expect(result.current.isDark).toBe(true);
23
+ });
24
+ it('should keep toggleTheme reference stable across renders', () => {
25
+ const wrapper = ({ children }) => (_jsx(MkThemeProvider, { children: children }));
26
+ const { result, rerender } = renderHook(() => useMkTheme(), { wrapper });
27
+ const firstToggle = result.current.toggleTheme;
28
+ rerender();
29
+ expect(result.current.toggleTheme).toBe(firstToggle);
30
+ });
31
+ });
32
+ //# sourceMappingURL=MkThemeProvider.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MkThemeProvider.test.js","sourceRoot":"","sources":["../../src/theme/MkThemeProvider.test.tsx"],"names":[],"mappings":";AAAA,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,EAAE,CAAC;QACX,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,EAAE,CAAC;QAEX,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/web",
3
- "version": "1.2.6",
3
+ "version": "1.4.0",
4
4
  "description": "React UI components and hooks for MK-Director web applications",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -31,9 +31,24 @@
31
31
  "url": "https://github.com/condaty/mk-director.git",
32
32
  "directory": "packages/mk-web"
33
33
  },
34
+ "scripts": {
35
+ "build": "tsc && rm -f dist/**/*.test.* && cp -r src/components/*.css dist/components/ && cp -r src/styles dist/",
36
+ "lint": "eslint src/",
37
+ "lint:fix": "eslint src/ --fix",
38
+ "lint:stories": "node scripts/lint-stories.mjs",
39
+ "lint:stories:json": "node scripts/lint-stories.mjs --json",
40
+ "test": "vitest run",
41
+ "test:watch": "vitest",
42
+ "test:coverage": "vitest run --coverage",
43
+ "type-check": "tsc --noEmit",
44
+ "clean": "rm -rf dist",
45
+ "storybook": "storybook dev -p 6006",
46
+ "build-storybook": "storybook build",
47
+ "test:storybook": "test-storybook --url http://localhost:6006"
48
+ },
34
49
  "dependencies": {
35
- "@tanstack/react-query": "^5.62.0",
36
- "@makroz/core": "1.1.6"
50
+ "@makroz/core": "^1.3.0",
51
+ "@tanstack/react-query": "^5.62.0"
37
52
  },
38
53
  "peerDependencies": {
39
54
  "next": "^16.0.0",
@@ -59,20 +74,5 @@
59
74
  "typescript": "^5.7.0",
60
75
  "vite": "^5.4.21",
61
76
  "vitest": "^3.0.0"
62
- },
63
- "scripts": {
64
- "build": "tsc && rm -f dist/**/*.test.* && cp -r src/components/*.css dist/components/ && cp -r src/styles dist/",
65
- "lint": "eslint src/",
66
- "lint:fix": "eslint src/ --fix",
67
- "lint:stories": "node scripts/lint-stories.mjs",
68
- "lint:stories:json": "node scripts/lint-stories.mjs --json",
69
- "test": "vitest run",
70
- "test:watch": "vitest",
71
- "test:coverage": "vitest run --coverage",
72
- "type-check": "tsc --noEmit",
73
- "clean": "rm -rf dist",
74
- "storybook": "storybook dev -p 6006",
75
- "build-storybook": "storybook build",
76
- "test:storybook": "test-storybook --url http://localhost:6006"
77
77
  }
78
- }
78
+ }