@dmsi/wedgekit-react 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/README.md +35 -0
  2. package/dist/chunk-27KIIUAR.js +59 -0
  3. package/dist/chunk-2G2E2JMA.js +123 -0
  4. package/dist/chunk-4C66DLIJ.js +51 -0
  5. package/dist/chunk-4RD5ZF2V.js +55 -0
  6. package/dist/chunk-4RJKB7LC.js +14 -0
  7. package/dist/chunk-4T7F5BZZ.js +26 -0
  8. package/dist/chunk-5GOBP2JS.js +53 -0
  9. package/dist/chunk-6ZY524ID.js +42 -0
  10. package/dist/chunk-AWQSSKCK.js +32 -0
  11. package/dist/chunk-BNHSAFMP.js +93 -0
  12. package/dist/chunk-BWRHL2AG.js +439 -0
  13. package/dist/chunk-DKKYR6DS.js +132 -0
  14. package/dist/chunk-E5ALT5W7.js +182 -0
  15. package/dist/chunk-FY7PTP6E.js +322 -0
  16. package/dist/chunk-GTCSRHPF.js +119 -0
  17. package/dist/chunk-I2UVVKQI.js +12 -0
  18. package/dist/chunk-IGQVA7SC.js +41 -0
  19. package/dist/chunk-K3IKUSZW.js +59 -0
  20. package/dist/chunk-KENSVWOY.js +151 -0
  21. package/dist/chunk-KX3O6GJ6.js +138 -0
  22. package/dist/chunk-L4UM372R.js +253 -0
  23. package/dist/chunk-ORMEWXMH.js +37 -0
  24. package/dist/chunk-Q3FKEKIN.js +23 -0
  25. package/dist/chunk-SEKKGFM6.js +28 -0
  26. package/dist/chunk-SY3HT54E.js +91 -0
  27. package/dist/chunk-TAW5ZZ4Z.js +346 -0
  28. package/dist/chunk-TRUPPHBQ.js +109 -0
  29. package/dist/chunk-TU55CHXU.js +30 -0
  30. package/dist/chunk-TWZZB4WO.js +114 -0
  31. package/dist/chunk-TYI74BSP.js +62 -0
  32. package/dist/chunk-U42SKNR6.js +104 -0
  33. package/dist/chunk-UU3FA6LV.js +72 -0
  34. package/dist/chunk-WVUIIBRR.js +51 -0
  35. package/dist/chunk-XUIPGYP5.js +39 -0
  36. package/dist/chunk-Z4UCFUF7.js +299 -0
  37. package/dist/components/Breadcrumbs.cjs +376 -0
  38. package/dist/components/Breadcrumbs.js +90 -0
  39. package/dist/components/Button.cjs +319 -0
  40. package/dist/components/Button.js +8 -0
  41. package/dist/components/CalendarRange.cjs +520 -0
  42. package/dist/components/CalendarRange.js +13 -0
  43. package/dist/components/Caption.cjs +283 -0
  44. package/dist/components/Caption.js +80 -0
  45. package/dist/components/Checkbox.cjs +378 -0
  46. package/dist/components/Checkbox.js +11 -0
  47. package/dist/components/ContentTab.cjs +382 -0
  48. package/dist/components/ContentTab.js +10 -0
  49. package/dist/components/ContentTabs.cjs +472 -0
  50. package/dist/components/ContentTabs.js +98 -0
  51. package/dist/components/DMSiLogo.cjs +79 -0
  52. package/dist/components/DMSiLogo.js +56 -0
  53. package/dist/components/DataGrid.cjs +3113 -0
  54. package/dist/components/DataGrid.js +758 -0
  55. package/dist/components/DataGridCell.cjs +1907 -0
  56. package/dist/components/DataGridCell.js +24 -0
  57. package/dist/components/DataTable.cjs +791 -0
  58. package/dist/components/DataTable.js +720 -0
  59. package/dist/components/DateInput.cjs +1130 -0
  60. package/dist/components/DateInput.js +170 -0
  61. package/dist/components/DateRangeInput.cjs +1131 -0
  62. package/dist/components/DateRangeInput.js +171 -0
  63. package/dist/components/DebugJson.cjs +50 -0
  64. package/dist/components/DebugJson.js +27 -0
  65. package/dist/components/Display.cjs +234 -0
  66. package/dist/components/Display.js +12 -0
  67. package/dist/components/EditingContext.cjs +73 -0
  68. package/dist/components/EditingContext.js +35 -0
  69. package/dist/components/FilterGroup.cjs +1431 -0
  70. package/dist/components/FilterGroup.js +231 -0
  71. package/dist/components/FullViewportBox.cjs +35 -0
  72. package/dist/components/FullViewportBox.js +12 -0
  73. package/dist/components/Grid.cjs +69 -0
  74. package/dist/components/Grid.js +36 -0
  75. package/dist/components/GridContainer.cjs +125 -0
  76. package/dist/components/GridContainer.js +92 -0
  77. package/dist/components/Heading.cjs +238 -0
  78. package/dist/components/Heading.js +14 -0
  79. package/dist/components/HorizontalDivider.cjs +33 -0
  80. package/dist/components/HorizontalDivider.js +10 -0
  81. package/dist/components/Icon.cjs +98 -0
  82. package/dist/components/Icon.js +7 -0
  83. package/dist/components/Input.cjs +672 -0
  84. package/dist/components/Input.js +21 -0
  85. package/dist/components/InputGroup.cjs +270 -0
  86. package/dist/components/InputGroup.js +60 -0
  87. package/dist/components/Label.cjs +223 -0
  88. package/dist/components/Label.js +8 -0
  89. package/dist/components/Link.cjs +262 -0
  90. package/dist/components/Link.js +8 -0
  91. package/dist/components/List.cjs +37 -0
  92. package/dist/components/List.js +14 -0
  93. package/dist/components/LiveChatComponent.cjs +63 -0
  94. package/dist/components/LiveChatComponent.js +40 -0
  95. package/dist/components/LogoAgilityTopBar.cjs +115 -0
  96. package/dist/components/LogoAgilityTopBar.js +92 -0
  97. package/dist/components/LogoDMSiTopBar.cjs +79 -0
  98. package/dist/components/LogoDMSiTopBar.js +7 -0
  99. package/dist/components/LogoMillworkTopBar.cjs +221 -0
  100. package/dist/components/LogoMillworkTopBar.js +198 -0
  101. package/dist/components/MainBar.cjs +211 -0
  102. package/dist/components/MainBar.js +65 -0
  103. package/dist/components/Menu.cjs +437 -0
  104. package/dist/components/Menu.js +11 -0
  105. package/dist/components/MenuOption.cjs +483 -0
  106. package/dist/components/MenuOption.js +13 -0
  107. package/dist/components/MobileDataGrid.cjs +658 -0
  108. package/dist/components/MobileDataGrid.js +125 -0
  109. package/dist/components/Modal.cjs +783 -0
  110. package/dist/components/Modal.js +245 -0
  111. package/dist/components/ModalButtons.cjs +385 -0
  112. package/dist/components/ModalButtons.js +10 -0
  113. package/dist/components/ModalContent.cjs +57 -0
  114. package/dist/components/ModalContent.js +7 -0
  115. package/dist/components/ModalHeader.cjs +426 -0
  116. package/dist/components/ModalHeader.js +11 -0
  117. package/dist/components/ModalScrim.cjs +64 -0
  118. package/dist/components/ModalScrim.js +7 -0
  119. package/dist/components/NavigationTab.cjs +431 -0
  120. package/dist/components/NavigationTab.js +10 -0
  121. package/dist/components/NavigationTabs.cjs +477 -0
  122. package/dist/components/NavigationTabs.js +56 -0
  123. package/dist/components/Notification.cjs +640 -0
  124. package/dist/components/Notification.js +117 -0
  125. package/dist/components/OptionPill.cjs +478 -0
  126. package/dist/components/OptionPill.js +11 -0
  127. package/dist/components/Paragraph.cjs +231 -0
  128. package/dist/components/Paragraph.js +8 -0
  129. package/dist/components/Password.cjs +700 -0
  130. package/dist/components/Password.js +53 -0
  131. package/dist/components/ProjectBar.cjs +242 -0
  132. package/dist/components/ProjectBar.js +63 -0
  133. package/dist/components/Radio.cjs +349 -0
  134. package/dist/components/Radio.js +131 -0
  135. package/dist/components/Search.cjs +767 -0
  136. package/dist/components/Search.js +12 -0
  137. package/dist/components/Select.cjs +758 -0
  138. package/dist/components/Select.js +12 -0
  139. package/dist/components/SideMenu.cjs +54 -0
  140. package/dist/components/SideMenu.js +21 -0
  141. package/dist/components/SideMenuGroup.cjs +422 -0
  142. package/dist/components/SideMenuGroup.js +83 -0
  143. package/dist/components/SideMenuItem.cjs +388 -0
  144. package/dist/components/SideMenuItem.js +70 -0
  145. package/dist/components/Stack.cjs +138 -0
  146. package/dist/components/Stack.js +7 -0
  147. package/dist/components/StatusPill.cjs +265 -0
  148. package/dist/components/StatusPill.js +52 -0
  149. package/dist/components/Stepper.cjs +885 -0
  150. package/dist/components/Stepper.js +105 -0
  151. package/dist/components/Subheader.cjs +226 -0
  152. package/dist/components/Subheader.js +8 -0
  153. package/dist/components/Surface.cjs +98 -0
  154. package/dist/components/Surface.js +40 -0
  155. package/dist/components/Swatch.cjs +1728 -0
  156. package/dist/components/Swatch.js +1319 -0
  157. package/dist/components/Textarea.cjs +269 -0
  158. package/dist/components/Textarea.js +96 -0
  159. package/dist/components/Theme.cjs +36 -0
  160. package/dist/components/Theme.js +7 -0
  161. package/dist/components/Time.cjs +1118 -0
  162. package/dist/components/Time.js +353 -0
  163. package/dist/components/Toast.cjs +644 -0
  164. package/dist/components/Toast.js +218 -0
  165. package/dist/components/Tooltip.cjs +273 -0
  166. package/dist/components/Tooltip.js +9 -0
  167. package/dist/components/TopBar.cjs +352 -0
  168. package/dist/components/TopBar.js +132 -0
  169. package/dist/components/useInfiniteScroll.cjs +57 -0
  170. package/dist/components/useInfiniteScroll.js +8 -0
  171. package/dist/components/useMatchesMedia.cjs +53 -0
  172. package/dist/components/useMatchesMedia.js +9 -0
  173. package/dist/components/useMenuSystem.cjs +358 -0
  174. package/dist/components/useMenuSystem.js +11 -0
  175. package/dist/components/useMounted.cjs +39 -0
  176. package/dist/components/useMounted.js +8 -0
  177. package/dist/fonts.css +21 -0
  178. package/dist/icons-light[FILL]-PPZXOLWS.woff2 +0 -0
  179. package/dist/icons-normal[FILL]-PPZXOLWS.woff2 +0 -0
  180. package/dist/index.css +4401 -0
  181. package/dist/open-sans-55T6A4JE.woff2 +0 -0
  182. package/dist/types.cjs +18 -0
  183. package/dist/types.js +0 -0
  184. package/package.json +66 -0
  185. package/src/brand.css +125 -0
  186. package/src/classNames.ts +144 -0
  187. package/src/components/Breadcrumbs.tsx +116 -0
  188. package/src/components/Button.tsx +210 -0
  189. package/src/components/CalendarRange.tsx +429 -0
  190. package/src/components/Caption.tsx +101 -0
  191. package/src/components/Checkbox.tsx +196 -0
  192. package/src/components/ContentTab.tsx +66 -0
  193. package/src/components/ContentTabs.tsx +103 -0
  194. package/src/components/DMSiLogo.tsx +32 -0
  195. package/src/components/DataGrid.tsx +948 -0
  196. package/src/components/DataGridCell.tsx +384 -0
  197. package/src/components/DataTable.tsx +835 -0
  198. package/src/components/DateInput.tsx +188 -0
  199. package/src/components/DateRangeInput.tsx +179 -0
  200. package/src/components/DebugJson.tsx +24 -0
  201. package/src/components/Display.tsx +60 -0
  202. package/src/components/EditingContext.tsx +40 -0
  203. package/src/components/FilterGroup.tsx +234 -0
  204. package/src/components/FullViewportBox.tsx +11 -0
  205. package/src/components/Grid.tsx +75 -0
  206. package/src/components/GridContainer.tsx +124 -0
  207. package/src/components/Heading.tsx +66 -0
  208. package/src/components/HorizontalDivider.tsx +3 -0
  209. package/src/components/Icon.tsx +36 -0
  210. package/src/components/Input.tsx +511 -0
  211. package/src/components/InputGroup.tsx +51 -0
  212. package/src/components/Label.tsx +40 -0
  213. package/src/components/Link.tsx +106 -0
  214. package/src/components/List.tsx +10 -0
  215. package/src/components/LiveChatComponent.tsx +56 -0
  216. package/src/components/LogoAgilityTopBar.tsx +53 -0
  217. package/src/components/LogoDMSiTopBar.tsx +32 -0
  218. package/src/components/LogoMillworkTopBar.tsx +118 -0
  219. package/src/components/MainBar.tsx +83 -0
  220. package/src/components/Menu.tsx +286 -0
  221. package/src/components/MenuOption.tsx +275 -0
  222. package/src/components/MobileDataGrid.tsx +135 -0
  223. package/src/components/Modal.tsx +271 -0
  224. package/src/components/ModalButtons.tsx +44 -0
  225. package/src/components/ModalContent.tsx +23 -0
  226. package/src/components/ModalHeader.tsx +41 -0
  227. package/src/components/ModalScrim.tsx +35 -0
  228. package/src/components/NavigationTab.tsx +89 -0
  229. package/src/components/NavigationTabs.tsx +63 -0
  230. package/src/components/Notification.tsx +120 -0
  231. package/src/components/OptionPill.tsx +114 -0
  232. package/src/components/Paragraph.tsx +49 -0
  233. package/src/components/Password.tsx +46 -0
  234. package/src/components/ProjectBar.tsx +76 -0
  235. package/src/components/Radio.tsx +140 -0
  236. package/src/components/Search.tsx +129 -0
  237. package/src/components/Select.tsx +104 -0
  238. package/src/components/SideMenu.tsx +21 -0
  239. package/src/components/SideMenuGroup.tsx +81 -0
  240. package/src/components/SideMenuItem.tsx +90 -0
  241. package/src/components/Stack.tsx +179 -0
  242. package/src/components/StatusPill.tsx +51 -0
  243. package/src/components/Stepper.tsx +91 -0
  244. package/src/components/Subheader.tsx +44 -0
  245. package/src/components/Surface.tsx +34 -0
  246. package/src/components/Swatch.tsx +1066 -0
  247. package/src/components/Textarea.tsx +101 -0
  248. package/src/components/Theme.tsx +13 -0
  249. package/src/components/Time.tsx +438 -0
  250. package/src/components/Toast.tsx +244 -0
  251. package/src/components/Tooltip.tsx +137 -0
  252. package/src/components/TopBar.tsx +124 -0
  253. package/src/components/useInfiniteScroll.tsx +40 -0
  254. package/src/components/useMatchesMedia.tsx +28 -0
  255. package/src/components/useMenuSystem.tsx +367 -0
  256. package/src/components/useMounted.tsx +14 -0
  257. package/src/darkmode.css +140 -0
  258. package/src/fonts.css +23 -0
  259. package/src/index.css +509 -0
  260. package/src/index.tsx +2 -0
  261. package/src/types.ts +149 -0
  262. package/src/utils/formatting.tsx +81 -0
  263. package/src/utils.ts +23 -0
@@ -0,0 +1,720 @@
1
+ "use client";
2
+ import {
3
+ CSS
4
+ } from "../chunk-WVUIIBRR.js";
5
+ import {
6
+ __spreadProps,
7
+ __spreadValues
8
+ } from "../chunk-ORMEWXMH.js";
9
+
10
+ // src/components/DataTable.tsx
11
+ import React, {
12
+ createContext,
13
+ useContext,
14
+ useEffect,
15
+ useState
16
+ } from "react";
17
+ import {
18
+ flexRender,
19
+ getCoreRowModel,
20
+ getFilteredRowModel,
21
+ getPaginationRowModel,
22
+ getSortedRowModel,
23
+ useReactTable
24
+ } from "@tanstack/react-table";
25
+ import clsx from "clsx";
26
+ import {
27
+ closestCenter,
28
+ DndContext,
29
+ KeyboardSensor,
30
+ MouseSensor,
31
+ TouchSensor,
32
+ useSensor,
33
+ useSensors
34
+ } from "@dnd-kit/core";
35
+ import { restrictToHorizontalAxis } from "@dnd-kit/modifiers";
36
+ import {
37
+ arrayMove,
38
+ horizontalListSortingStrategy,
39
+ SortableContext
40
+ } from "@dnd-kit/sortable";
41
+ import { useSortable } from "@dnd-kit/sortable";
42
+ import { Switch } from "@headlessui/react";
43
+ import { jsx, jsxs } from "react/jsx-runtime";
44
+ var columns = [
45
+ {
46
+ header: "Order ID",
47
+ accessorKey: "orderId",
48
+ id: "orderId",
49
+ meta: {
50
+ sticky: true
51
+ }
52
+ },
53
+ {
54
+ header: "Actions",
55
+ id: "actions",
56
+ cell: () => {
57
+ const items = [
58
+ {
59
+ label: "Release",
60
+ icon: /* @__PURE__ */ jsx("i", { className: "w-3 h-3" })
61
+ },
62
+ { label: "XML", icon: /* @__PURE__ */ jsx("i", { className: "w-3 h-3" }) },
63
+ { label: "Copy", icon: /* @__PURE__ */ jsx("i", { className: "w-3 h-3" }) },
64
+ { label: "Quote", icon: /* @__PURE__ */ jsx("i", { className: "w-3 h-3" }) },
65
+ { label: "Retail", icon: /* @__PURE__ */ jsx("i", { className: "w-3 h-3" }) }
66
+ ];
67
+ return /* @__PURE__ */ jsx("div", { className: "flex flex-row gap-3", children: items.map((item, index) => /* @__PURE__ */ jsxs(
68
+ "div",
69
+ {
70
+ className: "flex flex-col items-center justify-center gap-1",
71
+ children: [
72
+ item.icon,
73
+ /* @__PURE__ */ jsx("span", { className: "text-[0.6rem] block text-neutral-500 font-semibold", children: item.label })
74
+ ]
75
+ },
76
+ index
77
+ )) });
78
+ }
79
+ },
80
+ {
81
+ header: "PO ID",
82
+ accessorKey: "poId",
83
+ id: "poId"
84
+ },
85
+ {
86
+ header: "Job ID",
87
+ accessorKey: "jobId",
88
+ id: "jobId"
89
+ },
90
+ {
91
+ header: "Reference",
92
+ accessorKey: "reference",
93
+ id: "reference",
94
+ meta: {
95
+ className: "hidden md:table-cell"
96
+ }
97
+ },
98
+ {
99
+ header: "Status",
100
+ accessorKey: "shipToStatus",
101
+ id: "shipToStatus",
102
+ meta: {
103
+ filterVariant: "select"
104
+ }
105
+ },
106
+ {
107
+ header: "Ordered date",
108
+ accessorKey: "orderedDate",
109
+ id: "orderedDate"
110
+ },
111
+ {
112
+ header: "Reference 1",
113
+ accessorKey: "reference1",
114
+ id: "reference1",
115
+ meta: { className: "hidden md:table-cell" }
116
+ },
117
+ {
118
+ header: "Reference 12",
119
+ accessorKey: "reference12",
120
+ id: "reference12",
121
+ meta: { className: "hidden md:table-cell" }
122
+ },
123
+ {
124
+ header: "Reference 13",
125
+ accessorKey: "reference13",
126
+ id: "reference13",
127
+ meta: { className: "hidden md:table-cell" }
128
+ },
129
+ {
130
+ header: "Reference 14",
131
+ accessorKey: "reference14",
132
+ id: "reference14",
133
+ meta: { className: "hidden md:table-cell" }
134
+ },
135
+ {
136
+ header: "Reference 15",
137
+ accessorKey: "reference15",
138
+ id: "reference15",
139
+ meta: { className: "hidden md:table-cell" }
140
+ },
141
+ {
142
+ header: "Reference 16",
143
+ accessorKey: "reference16",
144
+ id: "reference16",
145
+ meta: { className: "hidden md:table-cell" }
146
+ },
147
+ {
148
+ header: "Reference 17",
149
+ accessorKey: "reference17",
150
+ id: "reference17",
151
+ meta: { className: "hidden md:table-cell" }
152
+ },
153
+ {
154
+ header: "Reference 18",
155
+ accessorKey: "reference18",
156
+ id: "reference18",
157
+ meta: { className: "hidden md:table-cell" }
158
+ },
159
+ {
160
+ header: "Reference 19",
161
+ accessorKey: "reference19",
162
+ id: "reference19",
163
+ meta: { className: "hidden md:table-cell" }
164
+ },
165
+ {
166
+ header: "Reference 10",
167
+ accessorKey: "reference10",
168
+ id: "reference10",
169
+ meta: { className: "hidden md:table-cell" }
170
+ },
171
+ {
172
+ header: "Reference 11",
173
+ accessorKey: "reference11",
174
+ id: "reference11",
175
+ meta: { className: "hidden md:table-cell" }
176
+ }
177
+ ];
178
+ var EditingContext = createContext({
179
+ data: [],
180
+ setValue: (row, key, value) => {
181
+ console.log(row, key, value);
182
+ }
183
+ });
184
+ var EditingProvider = ({ data, children }) => {
185
+ const [actual, setData] = useState(data);
186
+ useEffect(() => console.log("data changed"), [actual]);
187
+ const context = {
188
+ data: actual,
189
+ setValue: (row, key, value) => {
190
+ setData((prev) => {
191
+ const newData = [...prev];
192
+ newData[row] = __spreadProps(__spreadValues({}, newData[row]), {
193
+ [key]: value
194
+ });
195
+ return newData;
196
+ });
197
+ }
198
+ };
199
+ return /* @__PURE__ */ jsx(EditingContext, { value: context, children });
200
+ };
201
+ var DataTable = ({ data }) => {
202
+ return /* @__PURE__ */ jsx(EditingProvider, { data, children: /* @__PURE__ */ jsx(DataTableInternals, {}) });
203
+ };
204
+ var DraggableTableHeader = ({
205
+ header
206
+ }) => {
207
+ var _a, _b, _c, _d;
208
+ const { attributes, isDragging, listeners, setNodeRef, transform } = useSortable({
209
+ id: header.column.id
210
+ });
211
+ const style = {
212
+ opacity: isDragging ? 0.8 : 1,
213
+ position: "relative",
214
+ transform: CSS.Translate.toString(transform),
215
+ transition: "width transform 0.2s ease-in-out",
216
+ whiteSpace: "nowrap",
217
+ width: header.column.getSize(),
218
+ zIndex: isDragging ? 1 : 0
219
+ };
220
+ return /* @__PURE__ */ jsx(
221
+ "th",
222
+ {
223
+ colSpan: header.colSpan,
224
+ ref: setNodeRef,
225
+ style,
226
+ className: clsx(
227
+ (_a = header.column.columnDef.meta) == null ? void 0 : _a.className,
228
+ "px-3 py-3.5 text-left text-sm font-semibold text-dmsi-white bg-dmsi-red ",
229
+ {
230
+ "sticky left-0": (_c = (_b = header.column.columnDef.meta) == null ? void 0 : _b.sticky) != null ? _c : false
231
+ }
232
+ ),
233
+ children: header.isPlaceholder ? null : /* @__PURE__ */ jsxs("div", { className: "flex space-x-1 justify-start items-center", children: [
234
+ /* @__PURE__ */ jsx(
235
+ "button",
236
+ __spreadProps(__spreadValues(__spreadValues({
237
+ className: "cursor-grab shrink-0"
238
+ }, attributes), listeners), {
239
+ children: /* @__PURE__ */ jsx("i", { className: "w-3 h-3" })
240
+ })
241
+ ),
242
+ /* @__PURE__ */ jsxs(
243
+ "div",
244
+ {
245
+ className: clsx(
246
+ "grow",
247
+ header.column.getCanSort() ? "cursor-pointer select-none" : "",
248
+ "flex flex-col gap-1 justify-between items-start"
249
+ ),
250
+ title: header.column.getCanSort() ? header.column.getNextSortingOrder() === "asc" ? "Sort ascending" : header.column.getNextSortingOrder() === "desc" ? "Sort descending" : "Clear sort" : void 0,
251
+ children: [
252
+ /* @__PURE__ */ jsx("div", { children: flexRender(header.column.columnDef.header, header.getContext()) }),
253
+ /* @__PURE__ */ jsx("div", { children: header.column.getCanFilter() ? /* @__PURE__ */ jsx(Filter, { column: header.column }) : /* @__PURE__ */ jsx("div", { className: "invisible", children: /* @__PURE__ */ jsx(Filter, { column: header.column }) }) })
254
+ ]
255
+ }
256
+ ),
257
+ /* @__PURE__ */ jsx(
258
+ "div",
259
+ {
260
+ className: "shrink-0 cursor-pointer",
261
+ onClick: header.column.getToggleSortingHandler(),
262
+ children: (_d = {
263
+ asc: /* @__PURE__ */ jsx("i", { className: "w-3 h-3" }),
264
+ desc: /* @__PURE__ */ jsx("i", { className: "w-3 h-3" })
265
+ }[header.column.getIsSorted()]) != null ? _d : /* @__PURE__ */ jsx("i", { className: "w-3 h-3" })
266
+ }
267
+ )
268
+ ] })
269
+ }
270
+ );
271
+ };
272
+ var DragAlongCell = ({
273
+ cell,
274
+ setValue
275
+ }) => {
276
+ var _a, _b, _c, _d;
277
+ const { isDragging, setNodeRef, transform } = useSortable({
278
+ id: cell.column.id
279
+ });
280
+ const style = {
281
+ opacity: isDragging ? 0.8 : 1,
282
+ position: "relative",
283
+ transform: CSS.Translate.toString(transform),
284
+ transition: "width transform 0.2s ease-in-out",
285
+ width: cell.column.getSize(),
286
+ zIndex: isDragging ? 1 : 0
287
+ };
288
+ return /* @__PURE__ */ jsx(
289
+ EditCell,
290
+ {
291
+ ref: setNodeRef,
292
+ style,
293
+ cell,
294
+ className: clsx(
295
+ (_b = (_a = cell.column.columnDef.meta) == null ? void 0 : _a.className) != null ? _b : "",
296
+ "text-sm whitespace-nowrap text-gray-900 bg-neutral-100",
297
+ {
298
+ "sticky left-0": (_d = (_c = cell.column.columnDef.meta) == null ? void 0 : _c.sticky) != null ? _d : false
299
+ }
300
+ ),
301
+ setValue
302
+ }
303
+ );
304
+ };
305
+ var DataTableInternals = () => {
306
+ const { data, setValue } = useContext(EditingContext);
307
+ const [columnOrder, setColumnOrder] = React.useState(
308
+ () => columns.map((c) => c.id)
309
+ );
310
+ const [pagination, setPagination] = useState({
311
+ pageIndex: 0,
312
+ pageSize: 10
313
+ });
314
+ const [columnVisibility, setColumnVisibility] = useState(
315
+ columns.reduce(
316
+ (acc, column) => {
317
+ if ("accessorKey" in column) {
318
+ acc[column.accessorKey] = true;
319
+ }
320
+ return acc;
321
+ },
322
+ {}
323
+ )
324
+ );
325
+ const [sorting, setSorting] = useState([]);
326
+ const [columnFilters, setColumnFilters] = useState([]);
327
+ const table = useReactTable({
328
+ columns,
329
+ data,
330
+ debugAll: true,
331
+ getCoreRowModel: getCoreRowModel(),
332
+ getFilteredRowModel: getFilteredRowModel(),
333
+ getSortedRowModel: getSortedRowModel(),
334
+ getPaginationRowModel: getPaginationRowModel(),
335
+ onSortingChange: setSorting,
336
+ onColumnFiltersChange: setColumnFilters,
337
+ onPaginationChange: setPagination,
338
+ onColumnVisibilityChange: setColumnVisibility,
339
+ onColumnOrderChange: setColumnOrder,
340
+ state: {
341
+ sorting,
342
+ columnFilters,
343
+ pagination,
344
+ columnVisibility,
345
+ columnOrder
346
+ }
347
+ });
348
+ function handleDragEnd(event) {
349
+ const { active, over } = event;
350
+ if (active && over && active.id !== over.id) {
351
+ setColumnOrder((columnOrder2) => {
352
+ const oldIndex = columnOrder2.indexOf(active.id);
353
+ const newIndex = columnOrder2.indexOf(over.id);
354
+ return arrayMove(columnOrder2, oldIndex, newIndex);
355
+ });
356
+ }
357
+ }
358
+ const sensors = useSensors(
359
+ useSensor(MouseSensor, {}),
360
+ useSensor(TouchSensor, {}),
361
+ useSensor(KeyboardSensor, {})
362
+ );
363
+ return /* @__PURE__ */ jsx(
364
+ DndContext,
365
+ {
366
+ collisionDetection: closestCenter,
367
+ modifiers: [restrictToHorizontalAxis],
368
+ onDragEnd: handleDragEnd,
369
+ sensors,
370
+ children: /* @__PURE__ */ jsxs("div", { children: [
371
+ /* @__PURE__ */ jsxs("div", { className: "border border-gray-300 rounded p-3 m-4 max-w-xl min-w-0", children: [
372
+ /* @__PURE__ */ jsx("p", { className: "mb-3 font-semibold", children: "Show/Hide Columns" }),
373
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-2", children: table.getAllColumns().map((column) => /* @__PURE__ */ jsxs(
374
+ "label",
375
+ {
376
+ className: "cursor-pointer flex flex-row items-center space-x-1",
377
+ children: [
378
+ /* @__PURE__ */ jsx(
379
+ Toggle,
380
+ {
381
+ enabled: column.getIsVisible(),
382
+ onToggle: (checked) => column.getToggleVisibilityHandler()({
383
+ target: { checked }
384
+ })
385
+ }
386
+ ),
387
+ /* @__PURE__ */ jsx("span", { className: "block", children: column.columnDef.header })
388
+ ]
389
+ },
390
+ column.id
391
+ )) })
392
+ ] }),
393
+ /* @__PURE__ */ jsx("div", { className: "overflow-x-scroll scrollbar-thin", children: /* @__PURE__ */ jsxs("table", { className: "min-w-full divide-x divide-neutral-500", children: [
394
+ /* @__PURE__ */ jsx("thead", { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx(
395
+ SortableContext,
396
+ {
397
+ items: columnOrder,
398
+ strategy: horizontalListSortingStrategy,
399
+ children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx(DraggableTableHeader, { header }, header.id))
400
+ }
401
+ ) }, headerGroup.id)) }),
402
+ /* @__PURE__ */ jsx("tbody", { children: table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx(
403
+ "tr",
404
+ {
405
+ className: "bg-neutral-100 divide-y divide-neutral-200",
406
+ children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx(
407
+ SortableContext,
408
+ {
409
+ items: columnOrder,
410
+ strategy: horizontalListSortingStrategy,
411
+ children: /* @__PURE__ */ jsx(
412
+ DragAlongCell,
413
+ {
414
+ cell,
415
+ setValue
416
+ },
417
+ cell.id
418
+ )
419
+ },
420
+ cell.id
421
+ ))
422
+ },
423
+ row.id
424
+ )) })
425
+ ] }) }),
426
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 md:flex-row items-center md:gap-2 w-full justify-between p-2", children: [
427
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center", children: [
428
+ /* @__PURE__ */ jsx(
429
+ "button",
430
+ {
431
+ className: clsx(
432
+ "group flex items-center justify-center h-8 w-8 border border-gray-500/50 text-gray-700 rounded p-1 hover:bg-dmsi-blue hover:text-white transition-colors cursor-pointer border-r-0 rounded-r-none",
433
+ {
434
+ "pointer-events-none": !table.getCanPreviousPage()
435
+ }
436
+ ),
437
+ onClick: () => table.setPageIndex(0),
438
+ disabled: !table.getCanPreviousPage(),
439
+ children: /* @__PURE__ */ jsx("i", { className: "w-4 h-4 group-disabled:stroke-gray-400" })
440
+ }
441
+ ),
442
+ /* @__PURE__ */ jsx(
443
+ "button",
444
+ {
445
+ className: clsx(
446
+ "-mr-px group flex items-center justify-center h-8 w-8 border border-gray-500/50 text-gray-700 p-1 hover:bg-dmsi-blue hover:text-white transition-colors cursor-pointer",
447
+ {
448
+ "pointer-events-none": !table.getCanPreviousPage()
449
+ }
450
+ ),
451
+ onClick: () => table.previousPage(),
452
+ disabled: !table.getCanPreviousPage(),
453
+ children: /* @__PURE__ */ jsx("i", { className: "w-4 h-4 group-disabled:stroke-gray-400" })
454
+ }
455
+ ),
456
+ Array.from({ length: Math.min(5, table.getPageCount()) }).map(
457
+ (_, i) => {
458
+ const current = table.getState().pagination.pageIndex;
459
+ const index = current - 2 + i;
460
+ const active = index === current;
461
+ if (index < 0) return;
462
+ if (index > table.getPageCount() - 1) return;
463
+ return /* @__PURE__ */ jsx(
464
+ "button",
465
+ {
466
+ className: clsx(
467
+ "group h-8 w-8 border-y border-gray-500/50 text-gray-700 p-1 hover:bg-dmsi-blue hover:text-white transition-colors cursor-pointer flex items-center justify-center",
468
+ {
469
+ "bg-neutral-200 border-x": active,
470
+ "border-r-0": !active
471
+ }
472
+ ),
473
+ onClick: () => table.setPageIndex(index),
474
+ children: /* @__PURE__ */ jsx("span", { className: clsx({}), children: index + 1 })
475
+ },
476
+ i
477
+ );
478
+ }
479
+ ),
480
+ /* @__PURE__ */ jsx(
481
+ "button",
482
+ {
483
+ className: clsx(
484
+ "-ml-px group flex items-center justify-center h-8 w-8 border border-gray-500/50 text-gray-700 p-1 hover:bg-dmsi-blue hover:text-white transition-colors cursor-pointer border-r-0 group",
485
+ {
486
+ "pointer-events-none": !table.getCanNextPage()
487
+ }
488
+ ),
489
+ onClick: () => table.nextPage(),
490
+ disabled: !table.getCanNextPage(),
491
+ children: /* @__PURE__ */ jsx("i", { className: "w-4 h-4 group-disabled:stroke-gray-400 " })
492
+ }
493
+ ),
494
+ /* @__PURE__ */ jsx(
495
+ "button",
496
+ {
497
+ className: clsx(
498
+ "group flex items-center justify-center h-8 w-8 border border-gray-500/50 text-gray-700 rounded rounded-l-none p-1 hover:bg-dmsi-blue hover:text-white transition-colors cursor-pointer",
499
+ {
500
+ "pointer-events-none": !table.getCanNextPage()
501
+ }
502
+ ),
503
+ onClick: () => table.setPageIndex(table.getPageCount() - 1),
504
+ disabled: !table.getCanNextPage(),
505
+ children: /* @__PURE__ */ jsx("i", { className: "w-4 h-4 group-disabled:stroke-gray-400" })
506
+ }
507
+ )
508
+ ] }),
509
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center gap-6", children: [
510
+ /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1", children: [
511
+ /* @__PURE__ */ jsx("div", { children: "Page" }),
512
+ /* @__PURE__ */ jsxs("strong", { children: [
513
+ table.getState().pagination.pageIndex + 1,
514
+ " of",
515
+ " ",
516
+ table.getPageCount()
517
+ ] })
518
+ ] }),
519
+ /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
520
+ "Page:",
521
+ /* @__PURE__ */ jsx(
522
+ "input",
523
+ {
524
+ type: "number",
525
+ min: "1",
526
+ max: table.getPageCount(),
527
+ defaultValue: table.getState().pagination.pageIndex + 1,
528
+ onChange: (e) => {
529
+ const page = e.target.value ? Number(e.target.value) - 1 : 0;
530
+ table.setPageIndex(page);
531
+ },
532
+ className: "border border-gray-500 px-2 py-1 rounded w-16"
533
+ }
534
+ )
535
+ ] })
536
+ ] }),
537
+ /* @__PURE__ */ jsx(
538
+ "select",
539
+ {
540
+ className: "border border-gray-500 px-2 py-1 rounded",
541
+ value: table.getState().pagination.pageSize,
542
+ onChange: (e) => {
543
+ table.setPageSize(Number(e.target.value));
544
+ },
545
+ children: [10, 20, 30, 40, 50].map((pageSize) => /* @__PURE__ */ jsxs("option", { value: pageSize, children: [
546
+ "Show ",
547
+ pageSize
548
+ ] }, pageSize))
549
+ }
550
+ )
551
+ ] })
552
+ ] })
553
+ }
554
+ );
555
+ };
556
+ function EditCell({
557
+ className,
558
+ cell,
559
+ setValue,
560
+ style,
561
+ ref
562
+ }) {
563
+ var _a, _b;
564
+ const [editing, setEditing] = useState(false);
565
+ const value = cell.getValue();
566
+ const isString = typeof value === "string";
567
+ const [editedValue, setEditedValue] = useState(isString ? value : "");
568
+ const onStartEdit = () => {
569
+ if (isString) {
570
+ setEditing(true);
571
+ }
572
+ };
573
+ const onEditValue = (e) => {
574
+ setEditedValue(e.target.value);
575
+ };
576
+ const onStopEdit = () => {
577
+ setValue(cell.row.index, cell.column.id, editedValue);
578
+ setEditing(false);
579
+ };
580
+ const onKeyUp = (e) => {
581
+ if (e.key === "Enter") {
582
+ onStopEdit();
583
+ }
584
+ };
585
+ return /* @__PURE__ */ jsxs(
586
+ "td",
587
+ {
588
+ className: clsx(
589
+ className,
590
+ (_b = (_a = cell.column.columnDef.meta) == null ? void 0 : _a.className) != null ? _b : "",
591
+ "px-2 py-3 text-sm whitespace-nowrap text-gray-500"
592
+ ),
593
+ style,
594
+ ref,
595
+ children: [
596
+ isString && editing && /* @__PURE__ */ jsxs("div", { className: "flex flex-row gap-1", children: [
597
+ /* @__PURE__ */ jsx(
598
+ "input",
599
+ {
600
+ type: "text",
601
+ value: editedValue,
602
+ onChange: onEditValue,
603
+ onKeyUp,
604
+ onBlur: onStopEdit,
605
+ className: "border px-2 py-0.5 rounded inline min-w-0 shrink border-neutral-400 focus:outline-neutral-300 bg-white"
606
+ }
607
+ ),
608
+ /* @__PURE__ */ jsx(
609
+ "button",
610
+ {
611
+ onClick: onStopEdit,
612
+ className: "border cursor-pointer px-2 py-0.5 rounded flex items-center justify-center w-12 border-dmsi-blue text-dmsi-blue bg-white",
613
+ children: "Save"
614
+ }
615
+ )
616
+ ] }),
617
+ !editing && /* @__PURE__ */ jsxs(
618
+ "div",
619
+ {
620
+ onClick: onStartEdit,
621
+ className: "px-2 py-1 flex flex-row items-center",
622
+ children: [
623
+ flexRender(cell.column.columnDef.cell, cell.getContext()),
624
+ /* @__PURE__ */ jsx("div", { className: "w-16" })
625
+ ]
626
+ }
627
+ )
628
+ ]
629
+ },
630
+ cell.id
631
+ );
632
+ }
633
+ function Filter({ column }) {
634
+ var _a, _b, _c, _d, _e;
635
+ const columnFilterValue = column.getFilterValue();
636
+ const { filterVariant } = (_a = column.columnDef.meta) != null ? _a : {};
637
+ return filterVariant === "range" ? /* @__PURE__ */ jsxs("div", { children: [
638
+ /* @__PURE__ */ jsxs("div", { className: "flex space-x-2", children: [
639
+ /* @__PURE__ */ jsx(
640
+ "input",
641
+ {
642
+ className: "block w-full rounded-md bg-white px-3 py-1.5 text-base text-gray-900 outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline-2 focus:-outline-offset-2 focus:outline-neutral-400 sm:text-sm/6",
643
+ type: "number",
644
+ value: (_b = columnFilterValue == null ? void 0 : columnFilterValue[0]) != null ? _b : "",
645
+ onChange: (e) => column.setFilterValue((old) => [
646
+ e.target.value,
647
+ old == null ? void 0 : old[1]
648
+ ]),
649
+ autoComplete: "off",
650
+ placeholder: `Min`
651
+ }
652
+ ),
653
+ /* @__PURE__ */ jsx(
654
+ "input",
655
+ {
656
+ className: "block w-full rounded-md bg-white px-3 py-0.5 text-base text-gray-900 outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline-2 focus:-outline-offset-2 focus:outline-neutral-400 sm:text-sm/6",
657
+ type: "number",
658
+ value: (_c = columnFilterValue == null ? void 0 : columnFilterValue[1]) != null ? _c : "",
659
+ onChange: (e) => column.setFilterValue((old) => [
660
+ old == null ? void 0 : old[0],
661
+ e.target.value
662
+ ]),
663
+ autoComplete: "off",
664
+ placeholder: `Max`
665
+ }
666
+ )
667
+ ] }),
668
+ /* @__PURE__ */ jsx("div", { className: "h-1" })
669
+ ] }) : filterVariant === "select" ? /* @__PURE__ */ jsxs(
670
+ "select",
671
+ {
672
+ className: "block min-w-36 w-full rounded-md bg-white px-2 py-2 text-base text-gray-900 outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline-2 focus:-outline-offset-2 focus:outline-neutral-400 sm:text-sm/6",
673
+ onChange: (e) => column.setFilterValue(e.target.value),
674
+ value: columnFilterValue == null ? void 0 : columnFilterValue.toString(),
675
+ children: [
676
+ /* @__PURE__ */ jsx("option", { value: "", children: "Status: All" }),
677
+ /* @__PURE__ */ jsx("option", { value: "cancelled", children: "Status: Cancelled" }),
678
+ /* @__PURE__ */ jsx("option", { value: "pending", children: "Status: Pending" }),
679
+ /* @__PURE__ */ jsx("option", { value: "shipped", children: "Status: Shipped" })
680
+ ]
681
+ }
682
+ ) : /* @__PURE__ */ jsx(
683
+ "input",
684
+ {
685
+ className: "block min-w-36 w-full rounded-md bg-white px-3 py-1.5 text-base text-gray-900 outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline-2 focus:-outline-offset-2 focus:outline-neutral-400 sm:text-sm/6",
686
+ onChange: (e) => column.setFilterValue(e.target.value),
687
+ placeholder: (_e = (_d = column.columnDef.header) == null ? void 0 : _d.toString()) != null ? _e : "...",
688
+ type: "text",
689
+ autoComplete: "off",
690
+ value: columnFilterValue != null ? columnFilterValue : ""
691
+ }
692
+ );
693
+ }
694
+ Switch.displayName = "Switch";
695
+ function Toggle({
696
+ enabled,
697
+ onToggle
698
+ }) {
699
+ return /* @__PURE__ */ jsx(
700
+ Switch,
701
+ {
702
+ checked: enabled,
703
+ onChange: onToggle,
704
+ className: "group relative flex h-4 w-7 cursor-pointer rounded-full p-0.5 transition-colors duration-200 ease-in-out focus:outline-none data-[focus]:outline-1 data-[focus]:outline-white bg-neutral-900/10 data-[checked]:bg-dmsi-blue",
705
+ children: /* @__PURE__ */ jsx(
706
+ "span",
707
+ {
708
+ "aria-hidden": "true",
709
+ className: "pointer-events-none inline-block size-3 translate-x-0 rounded-full bg-white ring-0 shadow-lg transition duration-200 ease-in-out group-data-[checked]:translate-x-3 group-data-[checked]:shadow-lg"
710
+ }
711
+ )
712
+ }
713
+ );
714
+ }
715
+ Toggle.displayName = "Toggle";
716
+ export {
717
+ DataTable,
718
+ EditingProvider,
719
+ Toggle as default
720
+ };