@cwncollab-org/mui-component-kit 0.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 (162) hide show
  1. package/README.md +548 -0
  2. package/dist/common-dialogs/ConfirmDialog.d.ts +16 -0
  3. package/dist/common-dialogs/ConfirmDialog.d.ts.map +1 -0
  4. package/dist/common-dialogs/ConfirmDialog.js +22 -0
  5. package/dist/common-dialogs/ConfirmDialog.js.map +1 -0
  6. package/dist/common-dialogs/index.d.ts +4 -0
  7. package/dist/common-dialogs/index.d.ts.map +1 -0
  8. package/dist/common-dialogs/index.js +3 -0
  9. package/dist/common-dialogs/index.js.map +1 -0
  10. package/dist/common-dialogs/useConfirmDeleteDialog.d.ts +3 -0
  11. package/dist/common-dialogs/useConfirmDeleteDialog.d.ts.map +1 -0
  12. package/dist/common-dialogs/useConfirmDeleteDialog.js +19 -0
  13. package/dist/common-dialogs/useConfirmDeleteDialog.js.map +1 -0
  14. package/dist/common-dialogs/useConfirmDialog.d.ts +3 -0
  15. package/dist/common-dialogs/useConfirmDialog.d.ts.map +1 -0
  16. package/dist/common-dialogs/useConfirmDialog.js +10 -0
  17. package/dist/common-dialogs/useConfirmDialog.js.map +1 -0
  18. package/dist/dialogs/DialogCloseButton.d.ts +6 -0
  19. package/dist/dialogs/DialogCloseButton.d.ts.map +1 -0
  20. package/dist/dialogs/DialogCloseButton.js +8 -0
  21. package/dist/dialogs/DialogCloseButton.js.map +1 -0
  22. package/dist/dialogs/DialogsProvider.d.ts +3 -0
  23. package/dist/dialogs/DialogsProvider.d.ts.map +1 -0
  24. package/dist/dialogs/DialogsProvider.js +62 -0
  25. package/dist/dialogs/DialogsProvider.js.map +1 -0
  26. package/dist/dialogs/dialogsContext.d.ts +19 -0
  27. package/dist/dialogs/dialogsContext.d.ts.map +1 -0
  28. package/dist/dialogs/dialogsContext.js +3 -0
  29. package/dist/dialogs/dialogsContext.js.map +1 -0
  30. package/dist/dialogs/dialogsHooks.d.ts +6 -0
  31. package/dist/dialogs/dialogsHooks.d.ts.map +1 -0
  32. package/dist/dialogs/dialogsHooks.js +7 -0
  33. package/dist/dialogs/dialogsHooks.js.map +1 -0
  34. package/dist/dialogs/index.d.ts +5 -0
  35. package/dist/dialogs/index.d.ts.map +1 -0
  36. package/dist/dialogs/index.js +4 -0
  37. package/dist/dialogs/index.js.map +1 -0
  38. package/dist/dialogs/types.d.ts +12 -0
  39. package/dist/dialogs/types.d.ts.map +1 -0
  40. package/dist/dialogs/types.js +2 -0
  41. package/dist/dialogs/types.js.map +1 -0
  42. package/dist/form/Checkbox.d.ts +5 -0
  43. package/dist/form/Checkbox.d.ts.map +1 -0
  44. package/dist/form/Checkbox.js +9 -0
  45. package/dist/form/Checkbox.js.map +1 -0
  46. package/dist/form/DatePicker.d.ts +10 -0
  47. package/dist/form/DatePicker.d.ts.map +1 -0
  48. package/dist/form/DatePicker.js +34 -0
  49. package/dist/form/DatePicker.js.map +1 -0
  50. package/dist/form/MultiSelect.d.ts +22 -0
  51. package/dist/form/MultiSelect.d.ts.map +1 -0
  52. package/dist/form/MultiSelect.js +45 -0
  53. package/dist/form/MultiSelect.js.map +1 -0
  54. package/dist/form/Select.d.ts +21 -0
  55. package/dist/form/Select.d.ts.map +1 -0
  56. package/dist/form/Select.js +24 -0
  57. package/dist/form/Select.js.map +1 -0
  58. package/dist/form/SubscribeButton.d.ts +6 -0
  59. package/dist/form/SubscribeButton.d.ts.map +1 -0
  60. package/dist/form/SubscribeButton.js +9 -0
  61. package/dist/form/SubscribeButton.js.map +1 -0
  62. package/dist/form/SubscribeCheckbox.d.ts +5 -0
  63. package/dist/form/SubscribeCheckbox.d.ts.map +1 -0
  64. package/dist/form/SubscribeCheckbox.js +9 -0
  65. package/dist/form/SubscribeCheckbox.js.map +1 -0
  66. package/dist/form/SubscribeDatePicker.d.ts +10 -0
  67. package/dist/form/SubscribeDatePicker.d.ts.map +1 -0
  68. package/dist/form/SubscribeDatePicker.js +9 -0
  69. package/dist/form/SubscribeDatePicker.js.map +1 -0
  70. package/dist/form/SubscribeMultiSelect.d.ts +3 -0
  71. package/dist/form/SubscribeMultiSelect.d.ts.map +1 -0
  72. package/dist/form/SubscribeMultiSelect.js +9 -0
  73. package/dist/form/SubscribeMultiSelect.js.map +1 -0
  74. package/dist/form/SubscribeSelect.d.ts +3 -0
  75. package/dist/form/SubscribeSelect.d.ts.map +1 -0
  76. package/dist/form/SubscribeSelect.js +9 -0
  77. package/dist/form/SubscribeSelect.js.map +1 -0
  78. package/dist/form/SubscribeTextField.d.ts +3 -0
  79. package/dist/form/SubscribeTextField.d.ts.map +1 -0
  80. package/dist/form/SubscribeTextField.js +9 -0
  81. package/dist/form/SubscribeTextField.js.map +1 -0
  82. package/dist/form/SubscribeTimePicker.d.ts +10 -0
  83. package/dist/form/SubscribeTimePicker.d.ts.map +1 -0
  84. package/dist/form/SubscribeTimePicker.js +9 -0
  85. package/dist/form/SubscribeTimePicker.js.map +1 -0
  86. package/dist/form/TextField.d.ts +6 -0
  87. package/dist/form/TextField.d.ts.map +1 -0
  88. package/dist/form/TextField.js +18 -0
  89. package/dist/form/TextField.js.map +1 -0
  90. package/dist/form/TimePicker.d.ts +10 -0
  91. package/dist/form/TimePicker.d.ts.map +1 -0
  92. package/dist/form/TimePicker.js +34 -0
  93. package/dist/form/TimePicker.js.map +1 -0
  94. package/dist/form/formContext.d.ts +2 -0
  95. package/dist/form/formContext.d.ts.map +1 -0
  96. package/dist/form/formContext.js +3 -0
  97. package/dist/form/formContext.js.map +1 -0
  98. package/dist/form/formHooks.d.ts +68 -0
  99. package/dist/form/formHooks.d.ts.map +1 -0
  100. package/dist/form/formHooks.js +35 -0
  101. package/dist/form/formHooks.js.map +1 -0
  102. package/dist/form/index.d.ts +2 -0
  103. package/dist/form/index.d.ts.map +1 -0
  104. package/dist/form/index.js +2 -0
  105. package/dist/form/index.js.map +1 -0
  106. package/dist/index.d.ts +6 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +6 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/layout/AppBar.d.ts +20 -0
  111. package/dist/layout/AppBar.d.ts.map +1 -0
  112. package/dist/layout/AppBar.js +17 -0
  113. package/dist/layout/AppBar.js.map +1 -0
  114. package/dist/layout/AppBarMenu.d.ts +12 -0
  115. package/dist/layout/AppBarMenu.d.ts.map +1 -0
  116. package/dist/layout/AppBarMenu.js +26 -0
  117. package/dist/layout/AppBarMenu.js.map +1 -0
  118. package/dist/layout/AppLayout.d.ts +23 -0
  119. package/dist/layout/AppLayout.d.ts.map +1 -0
  120. package/dist/layout/AppLayout.js +71 -0
  121. package/dist/layout/AppLayout.js.map +1 -0
  122. package/dist/layout/index.d.ts +4 -0
  123. package/dist/layout/index.d.ts.map +1 -0
  124. package/dist/layout/index.js +3 -0
  125. package/dist/layout/index.js.map +1 -0
  126. package/dist/layout/types.d.ts +11 -0
  127. package/dist/layout/types.d.ts.map +1 -0
  128. package/dist/layout/types.js +2 -0
  129. package/dist/layout/types.js.map +1 -0
  130. package/dist/table/index.d.ts +2 -0
  131. package/dist/table/index.d.ts.map +1 -0
  132. package/dist/table/index.js +2 -0
  133. package/dist/table/index.js.map +1 -0
  134. package/dist/table/materialRouterTableHooks.d.ts +28 -0
  135. package/dist/table/materialRouterTableHooks.d.ts.map +1 -0
  136. package/dist/table/materialRouterTableHooks.js +135 -0
  137. package/dist/table/materialRouterTableHooks.js.map +1 -0
  138. package/dist/tabs/RouterTab.d.ts +8 -0
  139. package/dist/tabs/RouterTab.d.ts.map +1 -0
  140. package/dist/tabs/RouterTab.js +7 -0
  141. package/dist/tabs/RouterTab.js.map +1 -0
  142. package/dist/tabs/TabLabel.d.ts +7 -0
  143. package/dist/tabs/TabLabel.d.ts.map +1 -0
  144. package/dist/tabs/TabLabel.js +7 -0
  145. package/dist/tabs/TabLabel.js.map +1 -0
  146. package/dist/tabs/index.d.ts +4 -0
  147. package/dist/tabs/index.d.ts.map +1 -0
  148. package/dist/tabs/index.js +4 -0
  149. package/dist/tabs/index.js.map +1 -0
  150. package/dist/tabs/removeTrailingSlash.d.ts +7 -0
  151. package/dist/tabs/removeTrailingSlash.d.ts.map +1 -0
  152. package/dist/tabs/removeTrailingSlash.js +9 -0
  153. package/dist/tabs/removeTrailingSlash.js.map +1 -0
  154. package/dist/tabs/removeTrailingSlash.test.d.ts +2 -0
  155. package/dist/tabs/removeTrailingSlash.test.d.ts.map +1 -0
  156. package/dist/tabs/removeTrailingSlash.test.js +19 -0
  157. package/dist/tabs/removeTrailingSlash.test.js.map +1 -0
  158. package/dist/tabs/routerTabHooks.d.ts +2 -0
  159. package/dist/tabs/routerTabHooks.d.ts.map +1 -0
  160. package/dist/tabs/routerTabHooks.js +9 -0
  161. package/dist/tabs/routerTabHooks.js.map +1 -0
  162. package/package.json +71 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialRouterTableHooks.d.ts","sourceRoot":"","sources":["../../src/lib/table/materialRouterTableHooks.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,gBAAgB,EACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAGL,WAAW,EAIX,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAA;AAM7B,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;EAU5B,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,WAAW,EAC9D,IAAI,EAAE,gBAAgB,EACtB,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,2DA+J9B"}
@@ -0,0 +1,135 @@
1
+ import { useEffect, useMemo, useState } from 'react';
2
+ import { useNavigate, useSearch, } from '@tanstack/react-router';
3
+ import { z } from 'zod';
4
+ import { useMaterialReactTable, } from 'material-react-table';
5
+ const defaultPageSize = 10;
6
+ const defaultDensity = 'compact';
7
+ const searchColumnsSeparator = '-';
8
+ export const tableSearchSchema = z.object({
9
+ page: z.number().optional(),
10
+ pageSize: z.number().optional(),
11
+ order: z.string().optional(),
12
+ desc: z.boolean().optional(),
13
+ density: z.enum(['compact', 'spacious', 'comfortable']).optional(),
14
+ columns: z
15
+ .string()
16
+ .transform(val => val.split(searchColumnsSeparator))
17
+ .optional(),
18
+ });
19
+ export function useMaterialRouterTable(path, opts) {
20
+ const { onPaginationChange, onSortingChange, onDensityChange, onColumnVisibilityChange, state, ...rest } = opts;
21
+ const initialState = opts.initialState;
22
+ const search = tableSearchSchema.parse(useSearch({ strict: false }));
23
+ const navigate = useNavigate({ from: path });
24
+ const initialPaginationState = {
25
+ pageIndex: initialState?.pagination?.pageIndex ?? 0,
26
+ pageSize: initialState?.pagination?.pageSize ?? defaultPageSize,
27
+ };
28
+ const initialSortingState = initialState?.sorting ?? [];
29
+ const initialDensityState = initialState?.density ?? defaultDensity;
30
+ const initialColumnVisibilityState = initialState?.columnVisibility ?? {};
31
+ const initialVisibleColumns = useMemo(() => opts.columns
32
+ .map(column => column.accessorKey)
33
+ .filter(column => column !== undefined)
34
+ .filter(column => initialColumnVisibilityState[column] === undefined ||
35
+ initialColumnVisibilityState[column] === true)
36
+ .join(searchColumnsSeparator), [opts.columns, initialColumnVisibilityState]);
37
+ const searchPaginationState = {
38
+ pageIndex: search.page ? search.page - 1 : 0,
39
+ pageSize: search.pageSize ?? defaultPageSize,
40
+ };
41
+ const searchDensityState = search.density ?? initialDensityState;
42
+ const searchSortingState = search.order
43
+ ? [{ id: search.order, desc: search.desc ?? false }]
44
+ : initialSortingState;
45
+ const searchColumnVisibilityState = useMemo(() => {
46
+ return search.columns
47
+ ? opts.columns.reduce((acc, column) => {
48
+ const accessorKey = column.accessorKey;
49
+ if (!accessorKey)
50
+ return acc;
51
+ acc[accessorKey] = search.columns?.includes(accessorKey) ?? false;
52
+ return acc;
53
+ }, initialColumnVisibilityState)
54
+ : initialColumnVisibilityState;
55
+ }, [opts.columns, initialColumnVisibilityState, search.columns]);
56
+ const [pagination, setPagination] = useState(searchPaginationState);
57
+ const [sorting, setSorting] = useState(searchSortingState);
58
+ const [density, setDensity] = useState(searchDensityState);
59
+ const [columnVisibility, setColumnVisibility] = useState(searchColumnVisibilityState);
60
+ useEffect(() => {
61
+ const singleSorting = sorting[0];
62
+ const order = singleSorting ? singleSorting.id : undefined;
63
+ const desc = singleSorting?.desc;
64
+ const searchColumns = search.columns?.join(searchColumnsSeparator);
65
+ const nextVisibleColumns = opts.columns
66
+ .map(column => column.accessorKey)
67
+ .filter(column => column !== undefined)
68
+ .filter(column => columnVisibility[column] === undefined ||
69
+ columnVisibility[column] === true)
70
+ .join(searchColumnsSeparator);
71
+ const nextSearch = {
72
+ page: pagination.pageIndex === initialPaginationState.pageIndex
73
+ ? undefined
74
+ : pagination.pageIndex + 1,
75
+ pageSize: pagination.pageSize === initialPaginationState.pageSize
76
+ ? undefined
77
+ : pagination.pageSize,
78
+ order,
79
+ desc: desc ? true : undefined,
80
+ density: density === initialDensityState ? undefined : density,
81
+ columns: nextVisibleColumns === initialVisibleColumns
82
+ ? undefined
83
+ : nextVisibleColumns,
84
+ };
85
+ if (search.page !== nextSearch.page ||
86
+ search.pageSize !== nextSearch.pageSize ||
87
+ search.order !== nextSearch.order ||
88
+ search.desc !== nextSearch.desc ||
89
+ search.density !== nextSearch.density ||
90
+ searchColumns !== nextSearch.columns) {
91
+ navigate({
92
+ replace: true,
93
+ // @ts-ignore
94
+ search: nextSearch,
95
+ });
96
+ }
97
+ }, [
98
+ navigate,
99
+ initialVisibleColumns,
100
+ pagination,
101
+ sorting,
102
+ density,
103
+ columnVisibility,
104
+ ]);
105
+ return useMaterialReactTable({
106
+ onPaginationChange: state => {
107
+ setPagination(state);
108
+ onPaginationChange?.(state);
109
+ },
110
+ onSortingChange: state => {
111
+ setSorting(state);
112
+ onSortingChange?.(state);
113
+ },
114
+ onDensityChange: state => {
115
+ setDensity(state);
116
+ onDensityChange?.(state);
117
+ },
118
+ onColumnVisibilityChange: state => {
119
+ setColumnVisibility(state);
120
+ onColumnVisibilityChange?.(state);
121
+ },
122
+ ...rest,
123
+ initialState: {
124
+ ...initialState,
125
+ },
126
+ state: {
127
+ ...state,
128
+ pagination,
129
+ sorting,
130
+ density,
131
+ columnVisibility,
132
+ },
133
+ });
134
+ }
135
+ //# sourceMappingURL=materialRouterTableHooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialRouterTableHooks.js","sourceRoot":"","sources":["../../src/lib/table/materialRouterTableHooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { TabProps } from '@mui/material';
2
+ import { ValidateToPath } from '@tanstack/react-router';
3
+ type Props = Omit<TabProps, 'value'> & {
4
+ value: ValidateToPath;
5
+ };
6
+ export declare function RouterTab({ label, value, ...props }: Props): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=RouterTab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouterTab.d.ts","sourceRoot":"","sources":["../../src/lib/tabs/RouterTab.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAQ,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE7D,KAAK,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG;IACrC,KAAK,EAAE,cAAc,CAAA;CACtB,CAAA;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,2CAI1D"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Tab } from '@mui/material';
3
+ import { Link } from '@tanstack/react-router';
4
+ export function RouterTab({ label, value, ...props }) {
5
+ return (_jsx(Tab, { label: label, component: Link, to: value, value: value, ...props }));
6
+ }
7
+ //# sourceMappingURL=RouterTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouterTab.js","sourceRoot":"","sources":["../../src/lib/tabs/RouterTab.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAY,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAkB,MAAM,wBAAwB,CAAA;AAM7D,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAS;IACzD,OAAO,CACL,KAAC,GAAG,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAM,KAAK,GAAI,CAC3E,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ type Props = {
2
+ label: string;
3
+ error?: boolean;
4
+ };
5
+ export declare function TabLabel({ label, error }: Props): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=TabLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabLabel.d.ts","sourceRoot":"","sources":["../../src/lib/tabs/TabLabel.tsx"],"names":[],"mappings":"AAGA,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAa,EAAE,EAAE,KAAK,2CAOvD"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Circle } from '@mui/icons-material';
3
+ import { Box } from '@mui/material';
4
+ export function TabLabel({ label, error = false }) {
5
+ return (_jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 1 }, children: [label, error && _jsx(Circle, { sx: { fontSize: 8, color: 'error.main' } })] }));
6
+ }
7
+ //# sourceMappingURL=TabLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabLabel.js","sourceRoot":"","sources":["../../src/lib/tabs/TabLabel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AAOnC,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAS;IACtD,OAAO,CACL,MAAC,GAAG,IAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,aACvD,KAAK,EACL,KAAK,IAAI,KAAC,MAAM,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,GAAI,IAC1D,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { RouterTab } from './RouterTab';
2
+ export { TabLabel } from './TabLabel';
3
+ export { useRouterTabsValue } from './routerTabHooks';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/tabs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,4 @@
1
+ export { RouterTab } from './RouterTab';
2
+ export { TabLabel } from './TabLabel';
3
+ export { useRouterTabsValue } from './routerTabHooks';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/tabs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Removes trailing slashes from a string
3
+ * @param str The string to remove trailing slashes from
4
+ * @returns The string with trailing slashes removed
5
+ */
6
+ export declare function removeTrailingSlash(str: string): string;
7
+ //# sourceMappingURL=removeTrailingSlash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeTrailingSlash.d.ts","sourceRoot":"","sources":["../../src/lib/tabs/removeTrailingSlash.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEvD"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Removes trailing slashes from a string
3
+ * @param str The string to remove trailing slashes from
4
+ * @returns The string with trailing slashes removed
5
+ */
6
+ export function removeTrailingSlash(str) {
7
+ return str.replace(/\/+$/, '');
8
+ }
9
+ //# sourceMappingURL=removeTrailingSlash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeTrailingSlash.js","sourceRoot":"","sources":["../../src/lib/tabs/removeTrailingSlash.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AAChC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=removeTrailingSlash.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeTrailingSlash.test.d.ts","sourceRoot":"","sources":["../../src/lib/tabs/removeTrailingSlash.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { removeTrailingSlash } from './removeTrailingSlash';
2
+ describe('removeTrailingSlash', () => {
3
+ it('should remove single trailing slash', () => {
4
+ expect(removeTrailingSlash('test/')).toBe('test');
5
+ });
6
+ it('should remove multiple trailing slashes', () => {
7
+ expect(removeTrailingSlash('test///')).toBe('test');
8
+ });
9
+ it('should not modify string without trailing slash', () => {
10
+ expect(removeTrailingSlash('test')).toBe('test');
11
+ });
12
+ it('should handle empty string', () => {
13
+ expect(removeTrailingSlash('')).toBe('');
14
+ });
15
+ it('should handle string with only slashes', () => {
16
+ expect(removeTrailingSlash('///')).toBe('');
17
+ });
18
+ });
19
+ //# sourceMappingURL=removeTrailingSlash.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeTrailingSlash.test.js","sourceRoot":"","sources":["../../src/lib/tabs/removeTrailingSlash.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function useRouterTabsValue(): string;
2
+ //# sourceMappingURL=routerTabHooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routerTabHooks.d.ts","sourceRoot":"","sources":["../../src/lib/tabs/routerTabHooks.ts"],"names":[],"mappings":"AAIA,wBAAgB,kBAAkB,WAQjC"}
@@ -0,0 +1,9 @@
1
+ import { useRouterState } from '@tanstack/react-router';
2
+ import { useMemo } from 'react';
3
+ import { removeTrailingSlash } from './removeTrailingSlash';
4
+ export function useRouterTabsValue() {
5
+ const matches = useRouterState({ select: state => state.matches });
6
+ const normalizedValue = useMemo(() => removeTrailingSlash(matches[matches.length - 1].fullPath), [matches]);
7
+ return normalizedValue;
8
+ }
9
+ //# sourceMappingURL=routerTabHooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routerTabHooks.js","sourceRoot":"","sources":["../../src/lib/tabs/routerTabHooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IAElE,MAAM,eAAe,GAAG,OAAO,CAC7B,GAAG,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAC/D,CAAC,OAAO,CAAC,CACV,CAAA;IACD,OAAO,eAAe,CAAA;AACxB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "@cwncollab-org/mui-component-kit",
3
+ "private": false,
4
+ "version": "0.0.1",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "homepage": "https://github.com/cwncollab-org/mui-component-kit",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/cwncollab-org/mui-component-kit.git"
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "scripts": {
18
+ "dev": "vite",
19
+ "build:lib": "tsc -p tsconfig.build.json",
20
+ "lint": "eslint .",
21
+ "preview": "vite preview",
22
+ "prepare": "npm run build:lib",
23
+ "test": "jest",
24
+ "test:watch": "jest --watch",
25
+ "test:coverage": "jest --coverage"
26
+ },
27
+ "peerDependencies": {
28
+ "@emotion/react": "^11.14.0",
29
+ "@emotion/styled": "^11.14.0",
30
+ "@mui/icons-material": "^7.0.2",
31
+ "@mui/material": "^7.0.2",
32
+ "@tanstack/react-form": "^1.0.0",
33
+ "react": "^19.0.0",
34
+ "react-dom": "^19.0.0"
35
+ },
36
+ "dependencies": {
37
+ "@emotion/react": "^11.14.0",
38
+ "@emotion/styled": "^11.14.0",
39
+ "@mui/icons-material": "^7.0.2",
40
+ "@mui/material": "^7.0.2",
41
+ "@mui/x-date-pickers": "^8.0.0",
42
+ "@tanstack/react-form": "^1.0.0",
43
+ "@tanstack/react-router": "^1.116.0",
44
+ "@tanstack/react-table": "^8.21.3",
45
+ "dayjs": "^1.11.13",
46
+ "material-react-table": "^3.2.1"
47
+ },
48
+ "devDependencies": {
49
+ "@eslint/js": "^9.22.0",
50
+ "@tanstack/react-router-devtools": "^1.116.0",
51
+ "@tanstack/router-vite-plugin": "^1.116.1",
52
+ "@testing-library/jest-dom": "^6.6.3",
53
+ "@testing-library/react": "^16.3.0",
54
+ "@types/jest": "^29.5.14",
55
+ "@types/react": "^19.0.10",
56
+ "@types/react-dom": "^19.0.4",
57
+ "@vitejs/plugin-react-swc": "^3.8.0",
58
+ "eslint": "^9.22.0",
59
+ "eslint-plugin-react-hooks": "^5.2.0",
60
+ "eslint-plugin-react-refresh": "^0.4.19",
61
+ "globals": "^16.0.0",
62
+ "jest": "^29.7.0",
63
+ "jest-environment-jsdom": "^29.7.0",
64
+ "jest-transform-stub": "^2.0.0",
65
+ "ts-jest": "^29.3.2",
66
+ "typescript": "~5.7.2",
67
+ "typescript-eslint": "^8.26.1",
68
+ "vite": "^6.3.1",
69
+ "zod": "^3.24.3"
70
+ }
71
+ }