@multiplatform.one/table 6.0.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 (1015) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1105 -0
  3. package/dist/cjs/components/ChildTable/index.cjs +85 -0
  4. package/dist/cjs/components/ChildTable/index.native.js +88 -0
  5. package/dist/cjs/components/ChildTable/index.native.js.map +1 -0
  6. package/dist/cjs/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.cjs +50 -0
  7. package/dist/cjs/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.native.js +55 -0
  8. package/dist/cjs/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.native.js.map +1 -0
  9. package/dist/cjs/components/ColumnHeaderFilter/index.cjs +245 -0
  10. package/dist/cjs/components/ColumnHeaderFilter/index.native.js +260 -0
  11. package/dist/cjs/components/ColumnHeaderFilter/index.native.js.map +1 -0
  12. package/dist/cjs/components/DataTable/DataTable.spec.cjs +516 -0
  13. package/dist/cjs/components/DataTable/DataTable.spec.native.js +539 -0
  14. package/dist/cjs/components/DataTable/DataTable.spec.native.js.map +1 -0
  15. package/dist/cjs/components/DataTable/DataTable.stories.cjs +2779 -0
  16. package/dist/cjs/components/DataTable/DataTable.stories.native.js +2912 -0
  17. package/dist/cjs/components/DataTable/DataTable.stories.native.js.map +1 -0
  18. package/dist/cjs/components/DataTable/DataTableContext.cjs +32 -0
  19. package/dist/cjs/components/DataTable/DataTableContext.native.js +35 -0
  20. package/dist/cjs/components/DataTable/DataTableContext.native.js.map +1 -0
  21. package/dist/cjs/components/DataTable/DataTableMobileCards.cjs +134 -0
  22. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js +147 -0
  23. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js.map +1 -0
  24. package/dist/cjs/components/DataTable/DataTableRoot.cjs +1046 -0
  25. package/dist/cjs/components/DataTable/DataTableRoot.native.js +1116 -0
  26. package/dist/cjs/components/DataTable/DataTableRoot.native.js.map +1 -0
  27. package/dist/cjs/components/DataTable/DataTableStateContext.cjs +33 -0
  28. package/dist/cjs/components/DataTable/DataTableStateContext.native.js +36 -0
  29. package/dist/cjs/components/DataTable/DataTableStateContext.native.js.map +1 -0
  30. package/dist/cjs/components/DataTable/DataTableVirtualized.cjs +92 -0
  31. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js +97 -0
  32. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js.map +1 -0
  33. package/dist/cjs/components/DataTable/FieldsInCells.stories.cjs +244 -0
  34. package/dist/cjs/components/DataTable/FieldsInCells.stories.native.js +265 -0
  35. package/dist/cjs/components/DataTable/FieldsInCells.stories.native.js.map +1 -0
  36. package/dist/cjs/components/DataTable/compoundComponent.spec.cjs +334 -0
  37. package/dist/cjs/components/DataTable/compoundComponent.spec.native.js +348 -0
  38. package/dist/cjs/components/DataTable/compoundComponent.spec.native.js.map +1 -0
  39. package/dist/cjs/components/DataTable/index.cjs +52 -0
  40. package/dist/cjs/components/DataTable/index.native.js +774 -0
  41. package/dist/cjs/components/DataTable/index.native.js.map +1 -0
  42. package/dist/cjs/components/DataTableBulkActions/DataTableBulkActions.spec.cjs +305 -0
  43. package/dist/cjs/components/DataTableBulkActions/DataTableBulkActions.spec.native.js +340 -0
  44. package/dist/cjs/components/DataTableBulkActions/DataTableBulkActions.spec.native.js.map +1 -0
  45. package/dist/cjs/components/DataTableBulkActions/DataTableBulkActions.stories.cjs +347 -0
  46. package/dist/cjs/components/DataTableBulkActions/DataTableBulkActions.stories.native.js +372 -0
  47. package/dist/cjs/components/DataTableBulkActions/DataTableBulkActions.stories.native.js.map +1 -0
  48. package/dist/cjs/components/DataTableBulkActions/index.cjs +319 -0
  49. package/dist/cjs/components/DataTableBulkActions/index.native.js +345 -0
  50. package/dist/cjs/components/DataTableBulkActions/index.native.js.map +1 -0
  51. package/dist/cjs/components/DataTableCell/CellModalEditor.cjs +125 -0
  52. package/dist/cjs/components/DataTableCell/CellModalEditor.native.js +129 -0
  53. package/dist/cjs/components/DataTableCell/CellModalEditor.native.js.map +1 -0
  54. package/dist/cjs/components/DataTableCell/DataTableCell.stories.cjs +50 -0
  55. package/dist/cjs/components/DataTableCell/DataTableCell.stories.native.js +55 -0
  56. package/dist/cjs/components/DataTableCell/DataTableCell.stories.native.js.map +1 -0
  57. package/dist/cjs/components/DataTableCell/dataTableCell.spec.cjs +203 -0
  58. package/dist/cjs/components/DataTableCell/dataTableCell.spec.native.js +220 -0
  59. package/dist/cjs/components/DataTableCell/dataTableCell.spec.native.js.map +1 -0
  60. package/dist/cjs/components/DataTableCell/index.cjs +557 -0
  61. package/dist/cjs/components/DataTableCell/index.native.js +584 -0
  62. package/dist/cjs/components/DataTableCell/index.native.js.map +1 -0
  63. package/dist/cjs/components/DataTableColumnPinning/DataTableColumnPinning.spec.cjs +287 -0
  64. package/dist/cjs/components/DataTableColumnPinning/DataTableColumnPinning.spec.native.js +315 -0
  65. package/dist/cjs/components/DataTableColumnPinning/DataTableColumnPinning.spec.native.js.map +1 -0
  66. package/dist/cjs/components/DataTableColumnPinning/DataTableColumnPinning.stories.cjs +486 -0
  67. package/dist/cjs/components/DataTableColumnPinning/DataTableColumnPinning.stories.native.js +541 -0
  68. package/dist/cjs/components/DataTableColumnPinning/DataTableColumnPinning.stories.native.js.map +1 -0
  69. package/dist/cjs/components/DataTableColumnPinning/index.cjs +229 -0
  70. package/dist/cjs/components/DataTableColumnPinning/index.native.js +257 -0
  71. package/dist/cjs/components/DataTableColumnPinning/index.native.js.map +1 -0
  72. package/dist/cjs/components/DataTableDateFilter/DataTableDateFilter.spec.cjs +409 -0
  73. package/dist/cjs/components/DataTableDateFilter/DataTableDateFilter.spec.native.js +459 -0
  74. package/dist/cjs/components/DataTableDateFilter/DataTableDateFilter.spec.native.js.map +1 -0
  75. package/dist/cjs/components/DataTableDateFilter/DataTableDateFilter.stories.cjs +368 -0
  76. package/dist/cjs/components/DataTableDateFilter/DataTableDateFilter.stories.native.js +375 -0
  77. package/dist/cjs/components/DataTableDateFilter/DataTableDateFilter.stories.native.js.map +1 -0
  78. package/dist/cjs/components/DataTableDateFilter/index.cjs +499 -0
  79. package/dist/cjs/components/DataTableDateFilter/index.native.js +523 -0
  80. package/dist/cjs/components/DataTableDateFilter/index.native.js.map +1 -0
  81. package/dist/cjs/components/DataTableExport/DataTableExport.spec.cjs +334 -0
  82. package/dist/cjs/components/DataTableExport/DataTableExport.spec.native.js +349 -0
  83. package/dist/cjs/components/DataTableExport/DataTableExport.spec.native.js.map +1 -0
  84. package/dist/cjs/components/DataTableExport/DataTableExport.stories.cjs +452 -0
  85. package/dist/cjs/components/DataTableExport/DataTableExport.stories.native.js +479 -0
  86. package/dist/cjs/components/DataTableExport/DataTableExport.stories.native.js.map +1 -0
  87. package/dist/cjs/components/DataTableExport/index.cjs +461 -0
  88. package/dist/cjs/components/DataTableExport/index.native.js +510 -0
  89. package/dist/cjs/components/DataTableExport/index.native.js.map +1 -0
  90. package/dist/cjs/components/DataTableFilters/DataTableFilters.spec.cjs +687 -0
  91. package/dist/cjs/components/DataTableFilters/DataTableFilters.spec.native.js +698 -0
  92. package/dist/cjs/components/DataTableFilters/DataTableFilters.spec.native.js.map +1 -0
  93. package/dist/cjs/components/DataTableFilters/DataTableFilters.stories.cjs +551 -0
  94. package/dist/cjs/components/DataTableFilters/DataTableFilters.stories.native.js +564 -0
  95. package/dist/cjs/components/DataTableFilters/DataTableFilters.stories.native.js.map +1 -0
  96. package/dist/cjs/components/DataTableFilters/index.cjs +600 -0
  97. package/dist/cjs/components/DataTableFilters/index.native.js +643 -0
  98. package/dist/cjs/components/DataTableFilters/index.native.js.map +1 -0
  99. package/dist/cjs/components/DataTableGrouping/DataTableGrouping.spec.cjs +249 -0
  100. package/dist/cjs/components/DataTableGrouping/DataTableGrouping.spec.native.js +284 -0
  101. package/dist/cjs/components/DataTableGrouping/DataTableGrouping.spec.native.js.map +1 -0
  102. package/dist/cjs/components/DataTableGrouping/DataTableGrouping.stories.cjs +523 -0
  103. package/dist/cjs/components/DataTableGrouping/DataTableGrouping.stories.native.js +545 -0
  104. package/dist/cjs/components/DataTableGrouping/DataTableGrouping.stories.native.js.map +1 -0
  105. package/dist/cjs/components/DataTableGrouping/index.cjs +725 -0
  106. package/dist/cjs/components/DataTableGrouping/index.native.js +790 -0
  107. package/dist/cjs/components/DataTableGrouping/index.native.js.map +1 -0
  108. package/dist/cjs/components/DataTablePagination/DataTablePagination.spec.cjs +386 -0
  109. package/dist/cjs/components/DataTablePagination/DataTablePagination.spec.native.js +389 -0
  110. package/dist/cjs/components/DataTablePagination/DataTablePagination.spec.native.js.map +1 -0
  111. package/dist/cjs/components/DataTablePagination/DataTablePagination.stories.cjs +604 -0
  112. package/dist/cjs/components/DataTablePagination/DataTablePagination.stories.native.js +627 -0
  113. package/dist/cjs/components/DataTablePagination/DataTablePagination.stories.native.js.map +1 -0
  114. package/dist/cjs/components/DataTablePagination/index.cjs +434 -0
  115. package/dist/cjs/components/DataTablePagination/index.native.js +488 -0
  116. package/dist/cjs/components/DataTablePagination/index.native.js.map +1 -0
  117. package/dist/cjs/components/DataTableSearch/DataTableSearch.spec.cjs +469 -0
  118. package/dist/cjs/components/DataTableSearch/DataTableSearch.spec.native.js +472 -0
  119. package/dist/cjs/components/DataTableSearch/DataTableSearch.spec.native.js.map +1 -0
  120. package/dist/cjs/components/DataTableSearch/DataTableSearch.stories.cjs +82 -0
  121. package/dist/cjs/components/DataTableSearch/DataTableSearch.stories.native.js +89 -0
  122. package/dist/cjs/components/DataTableSearch/DataTableSearch.stories.native.js.map +1 -0
  123. package/dist/cjs/components/DataTableSearch/index.cjs +452 -0
  124. package/dist/cjs/components/DataTableSearch/index.native.js +494 -0
  125. package/dist/cjs/components/DataTableSearch/index.native.js.map +1 -0
  126. package/dist/cjs/components/DataTableToolbar/DataTableToolbar.spec.cjs +572 -0
  127. package/dist/cjs/components/DataTableToolbar/DataTableToolbar.spec.native.js +575 -0
  128. package/dist/cjs/components/DataTableToolbar/DataTableToolbar.spec.native.js.map +1 -0
  129. package/dist/cjs/components/DataTableToolbar/DataTableToolbar.stories.cjs +51 -0
  130. package/dist/cjs/components/DataTableToolbar/DataTableToolbar.stories.native.js +56 -0
  131. package/dist/cjs/components/DataTableToolbar/DataTableToolbar.stories.native.js.map +1 -0
  132. package/dist/cjs/components/DataTableToolbar/index.cjs +249 -0
  133. package/dist/cjs/components/DataTableToolbar/index.native.js +265 -0
  134. package/dist/cjs/components/DataTableToolbar/index.native.js.map +1 -0
  135. package/dist/cjs/components/DataTableViewOptions/DataTableViewOptions.spec.cjs +126 -0
  136. package/dist/cjs/components/DataTableViewOptions/DataTableViewOptions.spec.native.js +129 -0
  137. package/dist/cjs/components/DataTableViewOptions/DataTableViewOptions.spec.native.js.map +1 -0
  138. package/dist/cjs/components/DataTableViewOptions/DataTableViewOptions.stories.cjs +436 -0
  139. package/dist/cjs/components/DataTableViewOptions/DataTableViewOptions.stories.native.js +458 -0
  140. package/dist/cjs/components/DataTableViewOptions/DataTableViewOptions.stories.native.js.map +1 -0
  141. package/dist/cjs/components/DataTableViewOptions/index.cjs +521 -0
  142. package/dist/cjs/components/DataTableViewOptions/index.native.js +589 -0
  143. package/dist/cjs/components/DataTableViewOptions/index.native.js.map +1 -0
  144. package/dist/cjs/components/FilterManager.cjs +144 -0
  145. package/dist/cjs/components/FilterManager.native.js +159 -0
  146. package/dist/cjs/components/FilterManager.native.js.map +1 -0
  147. package/dist/cjs/components/FilterManager.spec.cjs +52 -0
  148. package/dist/cjs/components/FilterManager.spec.native.js +55 -0
  149. package/dist/cjs/components/FilterManager.spec.native.js.map +1 -0
  150. package/dist/cjs/components/KnobDialog.cjs +101 -0
  151. package/dist/cjs/components/KnobDialog.native.js +106 -0
  152. package/dist/cjs/components/KnobDialog.native.js.map +1 -0
  153. package/dist/cjs/components/SavedFilterDropdown.cjs +65 -0
  154. package/dist/cjs/components/SavedFilterDropdown.native.js +75 -0
  155. package/dist/cjs/components/SavedFilterDropdown.native.js.map +1 -0
  156. package/dist/cjs/components/SavedFilterDropdown.spec.cjs +83 -0
  157. package/dist/cjs/components/SavedFilterDropdown.spec.native.js +86 -0
  158. package/dist/cjs/components/SavedFilterDropdown.spec.native.js.map +1 -0
  159. package/dist/cjs/components/SimpleTable/index.cjs +193 -0
  160. package/dist/cjs/components/SimpleTable/index.native.js +208 -0
  161. package/dist/cjs/components/SimpleTable/index.native.js.map +1 -0
  162. package/dist/cjs/components/SimpleTable/simpleTable.spec.cjs +162 -0
  163. package/dist/cjs/components/SimpleTable/simpleTable.spec.native.js +165 -0
  164. package/dist/cjs/components/SimpleTable/simpleTable.spec.native.js.map +1 -0
  165. package/dist/cjs/components/Table/Table.stories.cjs +196 -0
  166. package/dist/cjs/components/Table/Table.stories.native.js +207 -0
  167. package/dist/cjs/components/Table/Table.stories.native.js.map +1 -0
  168. package/dist/cjs/components/Table/accessibility.spec.cjs +186 -0
  169. package/dist/cjs/components/Table/accessibility.spec.native.js +216 -0
  170. package/dist/cjs/components/Table/accessibility.spec.native.js.map +1 -0
  171. package/dist/cjs/components/TableInput/TableInput.stories.cjs +50 -0
  172. package/dist/cjs/components/TableInput/TableInput.stories.native.js +55 -0
  173. package/dist/cjs/components/TableInput/TableInput.stories.native.js.map +1 -0
  174. package/dist/cjs/components/TableInput/index.cjs +203 -0
  175. package/dist/cjs/components/TableInput/index.native.js +237 -0
  176. package/dist/cjs/components/TableInput/index.native.js.map +1 -0
  177. package/dist/cjs/components/componentConsistency.spec.cjs +37 -0
  178. package/dist/cjs/components/componentConsistency.spec.native.js +48 -0
  179. package/dist/cjs/components/componentConsistency.spec.native.js.map +1 -0
  180. package/dist/cjs/hooks/hookDecomposition.spec.cjs +326 -0
  181. package/dist/cjs/hooks/hookDecomposition.spec.native.js +351 -0
  182. package/dist/cjs/hooks/hookDecomposition.spec.native.js.map +1 -0
  183. package/dist/cjs/hooks/useDataTable.cjs +421 -0
  184. package/dist/cjs/hooks/useDataTable.native.js +456 -0
  185. package/dist/cjs/hooks/useDataTable.native.js.map +1 -0
  186. package/dist/cjs/hooks/useDataTable.spec.cjs +10 -0
  187. package/dist/cjs/hooks/useDataTable.spec.native.js +13 -0
  188. package/dist/cjs/hooks/useDataTable.spec.native.js.map +1 -0
  189. package/dist/cjs/hooks/useDataTableKeyboard.cjs +125 -0
  190. package/dist/cjs/hooks/useDataTableKeyboard.native.js +133 -0
  191. package/dist/cjs/hooks/useDataTableKeyboard.native.js.map +1 -0
  192. package/dist/cjs/hooks/useDragScroll.cjs +87 -0
  193. package/dist/cjs/hooks/useDragScroll.native.js +91 -0
  194. package/dist/cjs/hooks/useDragScroll.native.js.map +1 -0
  195. package/dist/cjs/hooks/useSavedFilters.cjs +114 -0
  196. package/dist/cjs/hooks/useSavedFilters.native.js +129 -0
  197. package/dist/cjs/hooks/useSavedFilters.native.js.map +1 -0
  198. package/dist/cjs/hooks/useSavedFilters.spec.cjs +212 -0
  199. package/dist/cjs/hooks/useSavedFilters.spec.native.js +240 -0
  200. package/dist/cjs/hooks/useSavedFilters.spec.native.js.map +1 -0
  201. package/dist/cjs/hooks/useTableColumnPinning.cjs +63 -0
  202. package/dist/cjs/hooks/useTableColumnPinning.native.js +77 -0
  203. package/dist/cjs/hooks/useTableColumnPinning.native.js.map +1 -0
  204. package/dist/cjs/hooks/useTableFiltering.cjs +81 -0
  205. package/dist/cjs/hooks/useTableFiltering.native.js +97 -0
  206. package/dist/cjs/hooks/useTableFiltering.native.js.map +1 -0
  207. package/dist/cjs/hooks/useTableGrouping.cjs +128 -0
  208. package/dist/cjs/hooks/useTableGrouping.native.js +144 -0
  209. package/dist/cjs/hooks/useTableGrouping.native.js.map +1 -0
  210. package/dist/cjs/hooks/useTableKeyboard.cjs +117 -0
  211. package/dist/cjs/hooks/useTableKeyboard.native.js +125 -0
  212. package/dist/cjs/hooks/useTableKeyboard.native.js.map +1 -0
  213. package/dist/cjs/hooks/useTablePagination.cjs +50 -0
  214. package/dist/cjs/hooks/useTablePagination.native.js +54 -0
  215. package/dist/cjs/hooks/useTablePagination.native.js.map +1 -0
  216. package/dist/cjs/hooks/useTableSearch.cjs +48 -0
  217. package/dist/cjs/hooks/useTableSearch.native.js +54 -0
  218. package/dist/cjs/hooks/useTableSearch.native.js.map +1 -0
  219. package/dist/cjs/hooks/useTableSelection.cjs +61 -0
  220. package/dist/cjs/hooks/useTableSelection.native.js +90 -0
  221. package/dist/cjs/hooks/useTableSelection.native.js.map +1 -0
  222. package/dist/cjs/hooks/useTableSorting.cjs +37 -0
  223. package/dist/cjs/hooks/useTableSorting.native.js +41 -0
  224. package/dist/cjs/hooks/useTableSorting.native.js.map +1 -0
  225. package/dist/cjs/hooks/useTableUrlSync.cjs +52 -0
  226. package/dist/cjs/hooks/useTableUrlSync.native.js +58 -0
  227. package/dist/cjs/hooks/useTableUrlSync.native.js.map +1 -0
  228. package/dist/cjs/hooks/useTableViews.cjs +82 -0
  229. package/dist/cjs/hooks/useTableViews.native.js +96 -0
  230. package/dist/cjs/hooks/useTableViews.native.js.map +1 -0
  231. package/dist/cjs/index.cjs +110 -0
  232. package/dist/cjs/index.native.js +113 -0
  233. package/dist/cjs/index.native.js.map +1 -0
  234. package/dist/cjs/shims/primitives.cjs +31 -0
  235. package/dist/cjs/shims/primitives.native.js +34 -0
  236. package/dist/cjs/shims/primitives.native.js.map +1 -0
  237. package/dist/cjs/shims/tableCellContext.cjs +30 -0
  238. package/dist/cjs/shims/tableCellContext.native.js +33 -0
  239. package/dist/cjs/shims/tableCellContext.native.js.map +1 -0
  240. package/dist/cjs/types.cjs +18 -0
  241. package/dist/cjs/types.native.js +21 -0
  242. package/dist/cjs/types.native.js.map +1 -0
  243. package/dist/cjs/utils/filterUtils.cjs +285 -0
  244. package/dist/cjs/utils/filterUtils.native.js +308 -0
  245. package/dist/cjs/utils/filterUtils.native.js.map +1 -0
  246. package/dist/cjs/utils/filterUtils.spec.cjs +350 -0
  247. package/dist/cjs/utils/filterUtils.spec.native.js +353 -0
  248. package/dist/cjs/utils/filterUtils.spec.native.js.map +1 -0
  249. package/dist/cjs/utils/urlStateUtils.cjs +142 -0
  250. package/dist/cjs/utils/urlStateUtils.native.js +168 -0
  251. package/dist/cjs/utils/urlStateUtils.native.js.map +1 -0
  252. package/dist/cjs/utils/urlStateUtils.spec.cjs +234 -0
  253. package/dist/cjs/utils/urlStateUtils.spec.native.js +239 -0
  254. package/dist/cjs/utils/urlStateUtils.spec.native.js.map +1 -0
  255. package/dist/esm/components/ChildTable/index.mjs +60 -0
  256. package/dist/esm/components/ChildTable/index.mjs.map +1 -0
  257. package/dist/esm/components/ChildTable/index.native.js +60 -0
  258. package/dist/esm/components/ChildTable/index.native.js.map +1 -0
  259. package/dist/esm/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.mjs +24 -0
  260. package/dist/esm/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.mjs.map +1 -0
  261. package/dist/esm/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.native.js +26 -0
  262. package/dist/esm/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.native.js.map +1 -0
  263. package/dist/esm/components/ColumnHeaderFilter/index.mjs +219 -0
  264. package/dist/esm/components/ColumnHeaderFilter/index.mjs.map +1 -0
  265. package/dist/esm/components/ColumnHeaderFilter/index.native.js +231 -0
  266. package/dist/esm/components/ColumnHeaderFilter/index.native.js.map +1 -0
  267. package/dist/esm/components/DataTable/DataTable.spec.mjs +517 -0
  268. package/dist/esm/components/DataTable/DataTable.spec.mjs.map +1 -0
  269. package/dist/esm/components/DataTable/DataTable.spec.native.js +537 -0
  270. package/dist/esm/components/DataTable/DataTable.spec.native.js.map +1 -0
  271. package/dist/esm/components/DataTable/DataTable.stories.mjs +2672 -0
  272. package/dist/esm/components/DataTable/DataTable.stories.mjs.map +1 -0
  273. package/dist/esm/components/DataTable/DataTable.stories.native.js +2802 -0
  274. package/dist/esm/components/DataTable/DataTable.stories.native.js.map +1 -0
  275. package/dist/esm/components/DataTable/DataTableContext.mjs +7 -0
  276. package/dist/esm/components/DataTable/DataTableContext.mjs.map +1 -0
  277. package/dist/esm/components/DataTable/DataTableContext.native.js +7 -0
  278. package/dist/esm/components/DataTable/DataTableContext.native.js.map +1 -0
  279. package/dist/esm/components/DataTable/DataTableMobileCards.mjs +109 -0
  280. package/dist/esm/components/DataTable/DataTableMobileCards.mjs.map +1 -0
  281. package/dist/esm/components/DataTable/DataTableMobileCards.native.js +119 -0
  282. package/dist/esm/components/DataTable/DataTableMobileCards.native.js.map +1 -0
  283. package/dist/esm/components/DataTable/DataTableRoot.mjs +1010 -0
  284. package/dist/esm/components/DataTable/DataTableRoot.mjs.map +1 -0
  285. package/dist/esm/components/DataTable/DataTableRoot.native.js +1077 -0
  286. package/dist/esm/components/DataTable/DataTableRoot.native.js.map +1 -0
  287. package/dist/esm/components/DataTable/DataTableStateContext.mjs +7 -0
  288. package/dist/esm/components/DataTable/DataTableStateContext.mjs.map +1 -0
  289. package/dist/esm/components/DataTable/DataTableStateContext.native.js +7 -0
  290. package/dist/esm/components/DataTable/DataTableStateContext.native.js.map +1 -0
  291. package/dist/esm/components/DataTable/DataTableVirtualized.mjs +67 -0
  292. package/dist/esm/components/DataTable/DataTableVirtualized.mjs.map +1 -0
  293. package/dist/esm/components/DataTable/DataTableVirtualized.native.js +69 -0
  294. package/dist/esm/components/DataTable/DataTableVirtualized.native.js.map +1 -0
  295. package/dist/esm/components/DataTable/FieldsInCells.stories.mjs +217 -0
  296. package/dist/esm/components/DataTable/FieldsInCells.stories.mjs.map +1 -0
  297. package/dist/esm/components/DataTable/FieldsInCells.stories.native.js +224 -0
  298. package/dist/esm/components/DataTable/FieldsInCells.stories.native.js.map +1 -0
  299. package/dist/esm/components/DataTable/compoundComponent.spec.mjs +335 -0
  300. package/dist/esm/components/DataTable/compoundComponent.spec.mjs.map +1 -0
  301. package/dist/esm/components/DataTable/compoundComponent.spec.native.js +346 -0
  302. package/dist/esm/components/DataTable/compoundComponent.spec.native.js.map +1 -0
  303. package/dist/esm/components/DataTable/index.mjs +24 -0
  304. package/dist/esm/components/DataTable/index.mjs.map +1 -0
  305. package/dist/esm/components/DataTable/index.native.js +732 -0
  306. package/dist/esm/components/DataTable/index.native.js.map +1 -0
  307. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.spec.mjs +306 -0
  308. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.spec.mjs.map +1 -0
  309. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.spec.native.js +338 -0
  310. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.spec.native.js.map +1 -0
  311. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.stories.mjs +304 -0
  312. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.stories.mjs.map +1 -0
  313. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.stories.native.js +326 -0
  314. package/dist/esm/components/DataTableBulkActions/DataTableBulkActions.stories.native.js.map +1 -0
  315. package/dist/esm/components/DataTableBulkActions/index.mjs +291 -0
  316. package/dist/esm/components/DataTableBulkActions/index.mjs.map +1 -0
  317. package/dist/esm/components/DataTableBulkActions/index.native.js +314 -0
  318. package/dist/esm/components/DataTableBulkActions/index.native.js.map +1 -0
  319. package/dist/esm/components/DataTableCell/CellModalEditor.mjs +100 -0
  320. package/dist/esm/components/DataTableCell/CellModalEditor.mjs.map +1 -0
  321. package/dist/esm/components/DataTableCell/CellModalEditor.native.js +101 -0
  322. package/dist/esm/components/DataTableCell/CellModalEditor.native.js.map +1 -0
  323. package/dist/esm/components/DataTableCell/DataTableCell.stories.mjs +24 -0
  324. package/dist/esm/components/DataTableCell/DataTableCell.stories.mjs.map +1 -0
  325. package/dist/esm/components/DataTableCell/DataTableCell.stories.native.js +26 -0
  326. package/dist/esm/components/DataTableCell/DataTableCell.stories.native.js.map +1 -0
  327. package/dist/esm/components/DataTableCell/dataTableCell.spec.mjs +180 -0
  328. package/dist/esm/components/DataTableCell/dataTableCell.spec.mjs.map +1 -0
  329. package/dist/esm/components/DataTableCell/dataTableCell.spec.native.js +194 -0
  330. package/dist/esm/components/DataTableCell/dataTableCell.spec.native.js.map +1 -0
  331. package/dist/esm/components/DataTableCell/index.mjs +531 -0
  332. package/dist/esm/components/DataTableCell/index.mjs.map +1 -0
  333. package/dist/esm/components/DataTableCell/index.native.js +544 -0
  334. package/dist/esm/components/DataTableCell/index.native.js.map +1 -0
  335. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.spec.mjs +264 -0
  336. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.spec.mjs.map +1 -0
  337. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.spec.native.js +289 -0
  338. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.spec.native.js.map +1 -0
  339. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.stories.mjs +457 -0
  340. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.stories.mjs.map +1 -0
  341. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.stories.native.js +509 -0
  342. package/dist/esm/components/DataTableColumnPinning/DataTableColumnPinning.stories.native.js.map +1 -0
  343. package/dist/esm/components/DataTableColumnPinning/index.mjs +203 -0
  344. package/dist/esm/components/DataTableColumnPinning/index.mjs.map +1 -0
  345. package/dist/esm/components/DataTableColumnPinning/index.native.js +228 -0
  346. package/dist/esm/components/DataTableColumnPinning/index.native.js.map +1 -0
  347. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.spec.mjs +386 -0
  348. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.spec.mjs.map +1 -0
  349. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.spec.native.js +433 -0
  350. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.spec.native.js.map +1 -0
  351. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.stories.mjs +325 -0
  352. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.stories.mjs.map +1 -0
  353. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.stories.native.js +329 -0
  354. package/dist/esm/components/DataTableDateFilter/DataTableDateFilter.stories.native.js.map +1 -0
  355. package/dist/esm/components/DataTableDateFilter/index.mjs +461 -0
  356. package/dist/esm/components/DataTableDateFilter/index.mjs.map +1 -0
  357. package/dist/esm/components/DataTableDateFilter/index.native.js +482 -0
  358. package/dist/esm/components/DataTableDateFilter/index.native.js.map +1 -0
  359. package/dist/esm/components/DataTableExport/DataTableExport.spec.mjs +335 -0
  360. package/dist/esm/components/DataTableExport/DataTableExport.spec.mjs.map +1 -0
  361. package/dist/esm/components/DataTableExport/DataTableExport.spec.native.js +347 -0
  362. package/dist/esm/components/DataTableExport/DataTableExport.spec.native.js.map +1 -0
  363. package/dist/esm/components/DataTableExport/DataTableExport.stories.mjs +419 -0
  364. package/dist/esm/components/DataTableExport/DataTableExport.stories.mjs.map +1 -0
  365. package/dist/esm/components/DataTableExport/DataTableExport.stories.native.js +443 -0
  366. package/dist/esm/components/DataTableExport/DataTableExport.stories.native.js.map +1 -0
  367. package/dist/esm/components/DataTableExport/index.mjs +436 -0
  368. package/dist/esm/components/DataTableExport/index.mjs.map +1 -0
  369. package/dist/esm/components/DataTableExport/index.native.js +482 -0
  370. package/dist/esm/components/DataTableExport/index.native.js.map +1 -0
  371. package/dist/esm/components/DataTableFilters/DataTableFilters.spec.mjs +688 -0
  372. package/dist/esm/components/DataTableFilters/DataTableFilters.spec.mjs.map +1 -0
  373. package/dist/esm/components/DataTableFilters/DataTableFilters.spec.native.js +696 -0
  374. package/dist/esm/components/DataTableFilters/DataTableFilters.spec.native.js.map +1 -0
  375. package/dist/esm/components/DataTableFilters/DataTableFilters.stories.mjs +499 -0
  376. package/dist/esm/components/DataTableFilters/DataTableFilters.stories.mjs.map +1 -0
  377. package/dist/esm/components/DataTableFilters/DataTableFilters.stories.native.js +509 -0
  378. package/dist/esm/components/DataTableFilters/DataTableFilters.stories.native.js.map +1 -0
  379. package/dist/esm/components/DataTableFilters/index.mjs +575 -0
  380. package/dist/esm/components/DataTableFilters/index.mjs.map +1 -0
  381. package/dist/esm/components/DataTableFilters/index.native.js +615 -0
  382. package/dist/esm/components/DataTableFilters/index.native.js.map +1 -0
  383. package/dist/esm/components/DataTableGrouping/DataTableGrouping.spec.mjs +249 -0
  384. package/dist/esm/components/DataTableGrouping/DataTableGrouping.spec.mjs.map +1 -0
  385. package/dist/esm/components/DataTableGrouping/DataTableGrouping.spec.native.js +281 -0
  386. package/dist/esm/components/DataTableGrouping/DataTableGrouping.spec.native.js.map +1 -0
  387. package/dist/esm/components/DataTableGrouping/DataTableGrouping.stories.mjs +479 -0
  388. package/dist/esm/components/DataTableGrouping/DataTableGrouping.stories.mjs.map +1 -0
  389. package/dist/esm/components/DataTableGrouping/DataTableGrouping.stories.native.js +498 -0
  390. package/dist/esm/components/DataTableGrouping/DataTableGrouping.stories.native.js.map +1 -0
  391. package/dist/esm/components/DataTableGrouping/index.mjs +697 -0
  392. package/dist/esm/components/DataTableGrouping/index.mjs.map +1 -0
  393. package/dist/esm/components/DataTableGrouping/index.native.js +759 -0
  394. package/dist/esm/components/DataTableGrouping/index.native.js.map +1 -0
  395. package/dist/esm/components/DataTablePagination/DataTablePagination.spec.mjs +387 -0
  396. package/dist/esm/components/DataTablePagination/DataTablePagination.spec.mjs.map +1 -0
  397. package/dist/esm/components/DataTablePagination/DataTablePagination.spec.native.js +387 -0
  398. package/dist/esm/components/DataTablePagination/DataTablePagination.spec.native.js.map +1 -0
  399. package/dist/esm/components/DataTablePagination/DataTablePagination.stories.mjs +546 -0
  400. package/dist/esm/components/DataTablePagination/DataTablePagination.stories.mjs.map +1 -0
  401. package/dist/esm/components/DataTablePagination/DataTablePagination.stories.native.js +566 -0
  402. package/dist/esm/components/DataTablePagination/DataTablePagination.stories.native.js.map +1 -0
  403. package/dist/esm/components/DataTablePagination/index.mjs +407 -0
  404. package/dist/esm/components/DataTablePagination/index.mjs.map +1 -0
  405. package/dist/esm/components/DataTablePagination/index.native.js +447 -0
  406. package/dist/esm/components/DataTablePagination/index.native.js.map +1 -0
  407. package/dist/esm/components/DataTableSearch/DataTableSearch.spec.mjs +470 -0
  408. package/dist/esm/components/DataTableSearch/DataTableSearch.spec.mjs.map +1 -0
  409. package/dist/esm/components/DataTableSearch/DataTableSearch.spec.native.js +470 -0
  410. package/dist/esm/components/DataTableSearch/DataTableSearch.spec.native.js.map +1 -0
  411. package/dist/esm/components/DataTableSearch/DataTableSearch.stories.mjs +56 -0
  412. package/dist/esm/components/DataTableSearch/DataTableSearch.stories.mjs.map +1 -0
  413. package/dist/esm/components/DataTableSearch/DataTableSearch.stories.native.js +60 -0
  414. package/dist/esm/components/DataTableSearch/DataTableSearch.stories.native.js.map +1 -0
  415. package/dist/esm/components/DataTableSearch/index.mjs +424 -0
  416. package/dist/esm/components/DataTableSearch/index.mjs.map +1 -0
  417. package/dist/esm/components/DataTableSearch/index.native.js +463 -0
  418. package/dist/esm/components/DataTableSearch/index.native.js.map +1 -0
  419. package/dist/esm/components/DataTableToolbar/DataTableToolbar.spec.mjs +573 -0
  420. package/dist/esm/components/DataTableToolbar/DataTableToolbar.spec.mjs.map +1 -0
  421. package/dist/esm/components/DataTableToolbar/DataTableToolbar.spec.native.js +573 -0
  422. package/dist/esm/components/DataTableToolbar/DataTableToolbar.spec.native.js.map +1 -0
  423. package/dist/esm/components/DataTableToolbar/DataTableToolbar.stories.mjs +25 -0
  424. package/dist/esm/components/DataTableToolbar/DataTableToolbar.stories.mjs.map +1 -0
  425. package/dist/esm/components/DataTableToolbar/DataTableToolbar.stories.native.js +27 -0
  426. package/dist/esm/components/DataTableToolbar/DataTableToolbar.stories.native.js.map +1 -0
  427. package/dist/esm/components/DataTableToolbar/index.mjs +222 -0
  428. package/dist/esm/components/DataTableToolbar/index.mjs.map +1 -0
  429. package/dist/esm/components/DataTableToolbar/index.native.js +235 -0
  430. package/dist/esm/components/DataTableToolbar/index.native.js.map +1 -0
  431. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.spec.mjs +126 -0
  432. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.spec.mjs.map +1 -0
  433. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.spec.native.js +126 -0
  434. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.spec.native.js.map +1 -0
  435. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.stories.mjs +393 -0
  436. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.stories.mjs.map +1 -0
  437. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.stories.native.js +412 -0
  438. package/dist/esm/components/DataTableViewOptions/DataTableViewOptions.stories.native.js.map +1 -0
  439. package/dist/esm/components/DataTableViewOptions/index.mjs +496 -0
  440. package/dist/esm/components/DataTableViewOptions/index.mjs.map +1 -0
  441. package/dist/esm/components/DataTableViewOptions/index.native.js +550 -0
  442. package/dist/esm/components/DataTableViewOptions/index.native.js.map +1 -0
  443. package/dist/esm/components/FilterManager.mjs +119 -0
  444. package/dist/esm/components/FilterManager.mjs.map +1 -0
  445. package/dist/esm/components/FilterManager.native.js +131 -0
  446. package/dist/esm/components/FilterManager.native.js.map +1 -0
  447. package/dist/esm/components/FilterManager.spec.mjs +53 -0
  448. package/dist/esm/components/FilterManager.spec.mjs.map +1 -0
  449. package/dist/esm/components/FilterManager.spec.native.js +53 -0
  450. package/dist/esm/components/FilterManager.spec.native.js.map +1 -0
  451. package/dist/esm/components/KnobDialog.mjs +71 -0
  452. package/dist/esm/components/KnobDialog.mjs.map +1 -0
  453. package/dist/esm/components/KnobDialog.native.js +73 -0
  454. package/dist/esm/components/KnobDialog.native.js.map +1 -0
  455. package/dist/esm/components/SavedFilterDropdown.mjs +40 -0
  456. package/dist/esm/components/SavedFilterDropdown.mjs.map +1 -0
  457. package/dist/esm/components/SavedFilterDropdown.native.js +47 -0
  458. package/dist/esm/components/SavedFilterDropdown.native.js.map +1 -0
  459. package/dist/esm/components/SavedFilterDropdown.spec.mjs +84 -0
  460. package/dist/esm/components/SavedFilterDropdown.spec.mjs.map +1 -0
  461. package/dist/esm/components/SavedFilterDropdown.spec.native.js +84 -0
  462. package/dist/esm/components/SavedFilterDropdown.spec.native.js.map +1 -0
  463. package/dist/esm/components/SimpleTable/index.mjs +167 -0
  464. package/dist/esm/components/SimpleTable/index.mjs.map +1 -0
  465. package/dist/esm/components/SimpleTable/index.native.js +179 -0
  466. package/dist/esm/components/SimpleTable/index.native.js.map +1 -0
  467. package/dist/esm/components/SimpleTable/simpleTable.spec.mjs +163 -0
  468. package/dist/esm/components/SimpleTable/simpleTable.spec.mjs.map +1 -0
  469. package/dist/esm/components/SimpleTable/simpleTable.spec.native.js +163 -0
  470. package/dist/esm/components/SimpleTable/simpleTable.spec.native.js.map +1 -0
  471. package/dist/esm/components/Table/Table.stories.mjs +167 -0
  472. package/dist/esm/components/Table/Table.stories.mjs.map +1 -0
  473. package/dist/esm/components/Table/Table.stories.native.js +175 -0
  474. package/dist/esm/components/Table/Table.stories.native.js.map +1 -0
  475. package/dist/esm/components/Table/accessibility.spec.mjs +187 -0
  476. package/dist/esm/components/Table/accessibility.spec.mjs.map +1 -0
  477. package/dist/esm/components/Table/accessibility.spec.native.js +214 -0
  478. package/dist/esm/components/Table/accessibility.spec.native.js.map +1 -0
  479. package/dist/esm/components/TableInput/TableInput.stories.mjs +24 -0
  480. package/dist/esm/components/TableInput/TableInput.stories.mjs.map +1 -0
  481. package/dist/esm/components/TableInput/TableInput.stories.native.js +26 -0
  482. package/dist/esm/components/TableInput/TableInput.stories.native.js.map +1 -0
  483. package/dist/esm/components/TableInput/index.mjs +178 -0
  484. package/dist/esm/components/TableInput/index.mjs.map +1 -0
  485. package/dist/esm/components/TableInput/index.native.js +209 -0
  486. package/dist/esm/components/TableInput/index.native.js.map +1 -0
  487. package/dist/esm/components/componentConsistency.spec.mjs +38 -0
  488. package/dist/esm/components/componentConsistency.spec.mjs.map +1 -0
  489. package/dist/esm/components/componentConsistency.spec.native.js +46 -0
  490. package/dist/esm/components/componentConsistency.spec.native.js.map +1 -0
  491. package/dist/esm/hooks/hookDecomposition.spec.mjs +327 -0
  492. package/dist/esm/hooks/hookDecomposition.spec.mjs.map +1 -0
  493. package/dist/esm/hooks/hookDecomposition.spec.native.js +349 -0
  494. package/dist/esm/hooks/hookDecomposition.spec.native.js.map +1 -0
  495. package/dist/esm/hooks/useDataTable.mjs +384 -0
  496. package/dist/esm/hooks/useDataTable.mjs.map +1 -0
  497. package/dist/esm/hooks/useDataTable.native.js +416 -0
  498. package/dist/esm/hooks/useDataTable.native.js.map +1 -0
  499. package/dist/esm/hooks/useDataTable.spec.mjs +11 -0
  500. package/dist/esm/hooks/useDataTable.spec.mjs.map +1 -0
  501. package/dist/esm/hooks/useDataTable.spec.native.js +11 -0
  502. package/dist/esm/hooks/useDataTable.spec.native.js.map +1 -0
  503. package/dist/esm/hooks/useDataTableKeyboard.mjs +100 -0
  504. package/dist/esm/hooks/useDataTableKeyboard.mjs.map +1 -0
  505. package/dist/esm/hooks/useDataTableKeyboard.native.js +105 -0
  506. package/dist/esm/hooks/useDataTableKeyboard.native.js.map +1 -0
  507. package/dist/esm/hooks/useDragScroll.mjs +62 -0
  508. package/dist/esm/hooks/useDragScroll.mjs.map +1 -0
  509. package/dist/esm/hooks/useDragScroll.native.js +63 -0
  510. package/dist/esm/hooks/useDragScroll.native.js.map +1 -0
  511. package/dist/esm/hooks/useSavedFilters.mjs +89 -0
  512. package/dist/esm/hooks/useSavedFilters.mjs.map +1 -0
  513. package/dist/esm/hooks/useSavedFilters.native.js +101 -0
  514. package/dist/esm/hooks/useSavedFilters.native.js.map +1 -0
  515. package/dist/esm/hooks/useSavedFilters.spec.mjs +213 -0
  516. package/dist/esm/hooks/useSavedFilters.spec.mjs.map +1 -0
  517. package/dist/esm/hooks/useSavedFilters.spec.native.js +238 -0
  518. package/dist/esm/hooks/useSavedFilters.spec.native.js.map +1 -0
  519. package/dist/esm/hooks/useTableColumnPinning.mjs +38 -0
  520. package/dist/esm/hooks/useTableColumnPinning.mjs.map +1 -0
  521. package/dist/esm/hooks/useTableColumnPinning.native.js +49 -0
  522. package/dist/esm/hooks/useTableColumnPinning.native.js.map +1 -0
  523. package/dist/esm/hooks/useTableFiltering.mjs +56 -0
  524. package/dist/esm/hooks/useTableFiltering.mjs.map +1 -0
  525. package/dist/esm/hooks/useTableFiltering.native.js +69 -0
  526. package/dist/esm/hooks/useTableFiltering.native.js.map +1 -0
  527. package/dist/esm/hooks/useTableGrouping.mjs +103 -0
  528. package/dist/esm/hooks/useTableGrouping.mjs.map +1 -0
  529. package/dist/esm/hooks/useTableGrouping.native.js +116 -0
  530. package/dist/esm/hooks/useTableGrouping.native.js.map +1 -0
  531. package/dist/esm/hooks/useTableKeyboard.mjs +92 -0
  532. package/dist/esm/hooks/useTableKeyboard.mjs.map +1 -0
  533. package/dist/esm/hooks/useTableKeyboard.native.js +97 -0
  534. package/dist/esm/hooks/useTableKeyboard.native.js.map +1 -0
  535. package/dist/esm/hooks/useTablePagination.mjs +25 -0
  536. package/dist/esm/hooks/useTablePagination.mjs.map +1 -0
  537. package/dist/esm/hooks/useTablePagination.native.js +26 -0
  538. package/dist/esm/hooks/useTablePagination.native.js.map +1 -0
  539. package/dist/esm/hooks/useTableSearch.mjs +23 -0
  540. package/dist/esm/hooks/useTableSearch.mjs.map +1 -0
  541. package/dist/esm/hooks/useTableSearch.native.js +26 -0
  542. package/dist/esm/hooks/useTableSearch.native.js.map +1 -0
  543. package/dist/esm/hooks/useTableSelection.mjs +36 -0
  544. package/dist/esm/hooks/useTableSelection.mjs.map +1 -0
  545. package/dist/esm/hooks/useTableSelection.native.js +62 -0
  546. package/dist/esm/hooks/useTableSelection.native.js.map +1 -0
  547. package/dist/esm/hooks/useTableSorting.mjs +12 -0
  548. package/dist/esm/hooks/useTableSorting.mjs.map +1 -0
  549. package/dist/esm/hooks/useTableSorting.native.js +13 -0
  550. package/dist/esm/hooks/useTableSorting.native.js.map +1 -0
  551. package/dist/esm/hooks/useTableUrlSync.mjs +27 -0
  552. package/dist/esm/hooks/useTableUrlSync.mjs.map +1 -0
  553. package/dist/esm/hooks/useTableUrlSync.native.js +30 -0
  554. package/dist/esm/hooks/useTableUrlSync.native.js.map +1 -0
  555. package/dist/esm/hooks/useTableViews.mjs +57 -0
  556. package/dist/esm/hooks/useTableViews.mjs.map +1 -0
  557. package/dist/esm/hooks/useTableViews.native.js +68 -0
  558. package/dist/esm/hooks/useTableViews.native.js.map +1 -0
  559. package/dist/esm/index.mjs +39 -0
  560. package/dist/esm/index.mjs.map +1 -0
  561. package/dist/esm/index.native.js +39 -0
  562. package/dist/esm/index.native.js.map +1 -0
  563. package/dist/esm/shims/primitives.mjs +3 -0
  564. package/dist/esm/shims/primitives.mjs.map +1 -0
  565. package/dist/esm/shims/primitives.native.js +3 -0
  566. package/dist/esm/shims/primitives.native.js.map +1 -0
  567. package/dist/esm/shims/tableCellContext.mjs +3 -0
  568. package/dist/esm/shims/tableCellContext.mjs.map +1 -0
  569. package/dist/esm/shims/tableCellContext.native.js +3 -0
  570. package/dist/esm/shims/tableCellContext.native.js.map +1 -0
  571. package/dist/esm/types.mjs +2 -0
  572. package/dist/esm/types.mjs.map +1 -0
  573. package/dist/esm/types.native.js +2 -0
  574. package/dist/esm/types.native.js.map +1 -0
  575. package/dist/esm/utils/filterUtils.mjs +250 -0
  576. package/dist/esm/utils/filterUtils.mjs.map +1 -0
  577. package/dist/esm/utils/filterUtils.native.js +270 -0
  578. package/dist/esm/utils/filterUtils.native.js.map +1 -0
  579. package/dist/esm/utils/filterUtils.spec.mjs +351 -0
  580. package/dist/esm/utils/filterUtils.spec.mjs.map +1 -0
  581. package/dist/esm/utils/filterUtils.spec.native.js +351 -0
  582. package/dist/esm/utils/filterUtils.spec.native.js.map +1 -0
  583. package/dist/esm/utils/urlStateUtils.mjs +115 -0
  584. package/dist/esm/utils/urlStateUtils.mjs.map +1 -0
  585. package/dist/esm/utils/urlStateUtils.native.js +138 -0
  586. package/dist/esm/utils/urlStateUtils.native.js.map +1 -0
  587. package/dist/esm/utils/urlStateUtils.spec.mjs +235 -0
  588. package/dist/esm/utils/urlStateUtils.spec.mjs.map +1 -0
  589. package/dist/esm/utils/urlStateUtils.spec.native.js +237 -0
  590. package/dist/esm/utils/urlStateUtils.spec.native.js.map +1 -0
  591. package/dist/jsx/components/ChildTable/index.mjs +60 -0
  592. package/dist/jsx/components/ChildTable/index.mjs.map +1 -0
  593. package/dist/jsx/components/ChildTable/index.native.js +88 -0
  594. package/dist/jsx/components/ChildTable/index.native.js.map +1 -0
  595. package/dist/jsx/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.mjs +24 -0
  596. package/dist/jsx/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.mjs.map +1 -0
  597. package/dist/jsx/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.native.js +55 -0
  598. package/dist/jsx/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.native.js.map +1 -0
  599. package/dist/jsx/components/ColumnHeaderFilter/index.mjs +219 -0
  600. package/dist/jsx/components/ColumnHeaderFilter/index.mjs.map +1 -0
  601. package/dist/jsx/components/ColumnHeaderFilter/index.native.js +260 -0
  602. package/dist/jsx/components/ColumnHeaderFilter/index.native.js.map +1 -0
  603. package/dist/jsx/components/DataTable/DataTable.spec.mjs +517 -0
  604. package/dist/jsx/components/DataTable/DataTable.spec.mjs.map +1 -0
  605. package/dist/jsx/components/DataTable/DataTable.spec.native.js +539 -0
  606. package/dist/jsx/components/DataTable/DataTable.spec.native.js.map +1 -0
  607. package/dist/jsx/components/DataTable/DataTable.stories.mjs +2672 -0
  608. package/dist/jsx/components/DataTable/DataTable.stories.mjs.map +1 -0
  609. package/dist/jsx/components/DataTable/DataTable.stories.native.js +2912 -0
  610. package/dist/jsx/components/DataTable/DataTable.stories.native.js.map +1 -0
  611. package/dist/jsx/components/DataTable/DataTableContext.mjs +7 -0
  612. package/dist/jsx/components/DataTable/DataTableContext.mjs.map +1 -0
  613. package/dist/jsx/components/DataTable/DataTableContext.native.js +35 -0
  614. package/dist/jsx/components/DataTable/DataTableContext.native.js.map +1 -0
  615. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs +109 -0
  616. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs.map +1 -0
  617. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js +147 -0
  618. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js.map +1 -0
  619. package/dist/jsx/components/DataTable/DataTableRoot.mjs +1010 -0
  620. package/dist/jsx/components/DataTable/DataTableRoot.mjs.map +1 -0
  621. package/dist/jsx/components/DataTable/DataTableRoot.native.js +1116 -0
  622. package/dist/jsx/components/DataTable/DataTableRoot.native.js.map +1 -0
  623. package/dist/jsx/components/DataTable/DataTableStateContext.mjs +7 -0
  624. package/dist/jsx/components/DataTable/DataTableStateContext.mjs.map +1 -0
  625. package/dist/jsx/components/DataTable/DataTableStateContext.native.js +36 -0
  626. package/dist/jsx/components/DataTable/DataTableStateContext.native.js.map +1 -0
  627. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs +67 -0
  628. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs.map +1 -0
  629. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js +97 -0
  630. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js.map +1 -0
  631. package/dist/jsx/components/DataTable/FieldsInCells.stories.mjs +217 -0
  632. package/dist/jsx/components/DataTable/FieldsInCells.stories.mjs.map +1 -0
  633. package/dist/jsx/components/DataTable/FieldsInCells.stories.native.js +265 -0
  634. package/dist/jsx/components/DataTable/FieldsInCells.stories.native.js.map +1 -0
  635. package/dist/jsx/components/DataTable/compoundComponent.spec.mjs +335 -0
  636. package/dist/jsx/components/DataTable/compoundComponent.spec.mjs.map +1 -0
  637. package/dist/jsx/components/DataTable/compoundComponent.spec.native.js +348 -0
  638. package/dist/jsx/components/DataTable/compoundComponent.spec.native.js.map +1 -0
  639. package/dist/jsx/components/DataTable/index.mjs +24 -0
  640. package/dist/jsx/components/DataTable/index.mjs.map +1 -0
  641. package/dist/jsx/components/DataTable/index.native.js +774 -0
  642. package/dist/jsx/components/DataTable/index.native.js.map +1 -0
  643. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.spec.mjs +306 -0
  644. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.spec.mjs.map +1 -0
  645. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.spec.native.js +340 -0
  646. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.spec.native.js.map +1 -0
  647. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.stories.mjs +304 -0
  648. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.stories.mjs.map +1 -0
  649. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.stories.native.js +372 -0
  650. package/dist/jsx/components/DataTableBulkActions/DataTableBulkActions.stories.native.js.map +1 -0
  651. package/dist/jsx/components/DataTableBulkActions/index.mjs +291 -0
  652. package/dist/jsx/components/DataTableBulkActions/index.mjs.map +1 -0
  653. package/dist/jsx/components/DataTableBulkActions/index.native.js +345 -0
  654. package/dist/jsx/components/DataTableBulkActions/index.native.js.map +1 -0
  655. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs +100 -0
  656. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs.map +1 -0
  657. package/dist/jsx/components/DataTableCell/CellModalEditor.native.js +129 -0
  658. package/dist/jsx/components/DataTableCell/CellModalEditor.native.js.map +1 -0
  659. package/dist/jsx/components/DataTableCell/DataTableCell.stories.mjs +24 -0
  660. package/dist/jsx/components/DataTableCell/DataTableCell.stories.mjs.map +1 -0
  661. package/dist/jsx/components/DataTableCell/DataTableCell.stories.native.js +55 -0
  662. package/dist/jsx/components/DataTableCell/DataTableCell.stories.native.js.map +1 -0
  663. package/dist/jsx/components/DataTableCell/dataTableCell.spec.mjs +180 -0
  664. package/dist/jsx/components/DataTableCell/dataTableCell.spec.mjs.map +1 -0
  665. package/dist/jsx/components/DataTableCell/dataTableCell.spec.native.js +220 -0
  666. package/dist/jsx/components/DataTableCell/dataTableCell.spec.native.js.map +1 -0
  667. package/dist/jsx/components/DataTableCell/index.mjs +531 -0
  668. package/dist/jsx/components/DataTableCell/index.mjs.map +1 -0
  669. package/dist/jsx/components/DataTableCell/index.native.js +584 -0
  670. package/dist/jsx/components/DataTableCell/index.native.js.map +1 -0
  671. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.spec.mjs +264 -0
  672. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.spec.mjs.map +1 -0
  673. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.spec.native.js +315 -0
  674. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.spec.native.js.map +1 -0
  675. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.stories.mjs +457 -0
  676. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.stories.mjs.map +1 -0
  677. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.stories.native.js +541 -0
  678. package/dist/jsx/components/DataTableColumnPinning/DataTableColumnPinning.stories.native.js.map +1 -0
  679. package/dist/jsx/components/DataTableColumnPinning/index.mjs +203 -0
  680. package/dist/jsx/components/DataTableColumnPinning/index.mjs.map +1 -0
  681. package/dist/jsx/components/DataTableColumnPinning/index.native.js +257 -0
  682. package/dist/jsx/components/DataTableColumnPinning/index.native.js.map +1 -0
  683. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.spec.mjs +386 -0
  684. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.spec.mjs.map +1 -0
  685. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.spec.native.js +459 -0
  686. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.spec.native.js.map +1 -0
  687. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.stories.mjs +325 -0
  688. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.stories.mjs.map +1 -0
  689. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.stories.native.js +375 -0
  690. package/dist/jsx/components/DataTableDateFilter/DataTableDateFilter.stories.native.js.map +1 -0
  691. package/dist/jsx/components/DataTableDateFilter/index.mjs +461 -0
  692. package/dist/jsx/components/DataTableDateFilter/index.mjs.map +1 -0
  693. package/dist/jsx/components/DataTableDateFilter/index.native.js +523 -0
  694. package/dist/jsx/components/DataTableDateFilter/index.native.js.map +1 -0
  695. package/dist/jsx/components/DataTableExport/DataTableExport.spec.mjs +335 -0
  696. package/dist/jsx/components/DataTableExport/DataTableExport.spec.mjs.map +1 -0
  697. package/dist/jsx/components/DataTableExport/DataTableExport.spec.native.js +349 -0
  698. package/dist/jsx/components/DataTableExport/DataTableExport.spec.native.js.map +1 -0
  699. package/dist/jsx/components/DataTableExport/DataTableExport.stories.mjs +419 -0
  700. package/dist/jsx/components/DataTableExport/DataTableExport.stories.mjs.map +1 -0
  701. package/dist/jsx/components/DataTableExport/DataTableExport.stories.native.js +479 -0
  702. package/dist/jsx/components/DataTableExport/DataTableExport.stories.native.js.map +1 -0
  703. package/dist/jsx/components/DataTableExport/index.mjs +436 -0
  704. package/dist/jsx/components/DataTableExport/index.mjs.map +1 -0
  705. package/dist/jsx/components/DataTableExport/index.native.js +510 -0
  706. package/dist/jsx/components/DataTableExport/index.native.js.map +1 -0
  707. package/dist/jsx/components/DataTableFilters/DataTableFilters.spec.mjs +688 -0
  708. package/dist/jsx/components/DataTableFilters/DataTableFilters.spec.mjs.map +1 -0
  709. package/dist/jsx/components/DataTableFilters/DataTableFilters.spec.native.js +698 -0
  710. package/dist/jsx/components/DataTableFilters/DataTableFilters.spec.native.js.map +1 -0
  711. package/dist/jsx/components/DataTableFilters/DataTableFilters.stories.mjs +499 -0
  712. package/dist/jsx/components/DataTableFilters/DataTableFilters.stories.mjs.map +1 -0
  713. package/dist/jsx/components/DataTableFilters/DataTableFilters.stories.native.js +564 -0
  714. package/dist/jsx/components/DataTableFilters/DataTableFilters.stories.native.js.map +1 -0
  715. package/dist/jsx/components/DataTableFilters/index.mjs +575 -0
  716. package/dist/jsx/components/DataTableFilters/index.mjs.map +1 -0
  717. package/dist/jsx/components/DataTableFilters/index.native.js +643 -0
  718. package/dist/jsx/components/DataTableFilters/index.native.js.map +1 -0
  719. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.spec.mjs +249 -0
  720. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.spec.mjs.map +1 -0
  721. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.spec.native.js +284 -0
  722. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.spec.native.js.map +1 -0
  723. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.stories.mjs +479 -0
  724. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.stories.mjs.map +1 -0
  725. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.stories.native.js +545 -0
  726. package/dist/jsx/components/DataTableGrouping/DataTableGrouping.stories.native.js.map +1 -0
  727. package/dist/jsx/components/DataTableGrouping/index.mjs +697 -0
  728. package/dist/jsx/components/DataTableGrouping/index.mjs.map +1 -0
  729. package/dist/jsx/components/DataTableGrouping/index.native.js +790 -0
  730. package/dist/jsx/components/DataTableGrouping/index.native.js.map +1 -0
  731. package/dist/jsx/components/DataTablePagination/DataTablePagination.spec.mjs +387 -0
  732. package/dist/jsx/components/DataTablePagination/DataTablePagination.spec.mjs.map +1 -0
  733. package/dist/jsx/components/DataTablePagination/DataTablePagination.spec.native.js +389 -0
  734. package/dist/jsx/components/DataTablePagination/DataTablePagination.spec.native.js.map +1 -0
  735. package/dist/jsx/components/DataTablePagination/DataTablePagination.stories.mjs +546 -0
  736. package/dist/jsx/components/DataTablePagination/DataTablePagination.stories.mjs.map +1 -0
  737. package/dist/jsx/components/DataTablePagination/DataTablePagination.stories.native.js +627 -0
  738. package/dist/jsx/components/DataTablePagination/DataTablePagination.stories.native.js.map +1 -0
  739. package/dist/jsx/components/DataTablePagination/index.mjs +407 -0
  740. package/dist/jsx/components/DataTablePagination/index.mjs.map +1 -0
  741. package/dist/jsx/components/DataTablePagination/index.native.js +488 -0
  742. package/dist/jsx/components/DataTablePagination/index.native.js.map +1 -0
  743. package/dist/jsx/components/DataTableSearch/DataTableSearch.spec.mjs +470 -0
  744. package/dist/jsx/components/DataTableSearch/DataTableSearch.spec.mjs.map +1 -0
  745. package/dist/jsx/components/DataTableSearch/DataTableSearch.spec.native.js +472 -0
  746. package/dist/jsx/components/DataTableSearch/DataTableSearch.spec.native.js.map +1 -0
  747. package/dist/jsx/components/DataTableSearch/DataTableSearch.stories.mjs +56 -0
  748. package/dist/jsx/components/DataTableSearch/DataTableSearch.stories.mjs.map +1 -0
  749. package/dist/jsx/components/DataTableSearch/DataTableSearch.stories.native.js +89 -0
  750. package/dist/jsx/components/DataTableSearch/DataTableSearch.stories.native.js.map +1 -0
  751. package/dist/jsx/components/DataTableSearch/index.mjs +424 -0
  752. package/dist/jsx/components/DataTableSearch/index.mjs.map +1 -0
  753. package/dist/jsx/components/DataTableSearch/index.native.js +494 -0
  754. package/dist/jsx/components/DataTableSearch/index.native.js.map +1 -0
  755. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.spec.mjs +573 -0
  756. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.spec.mjs.map +1 -0
  757. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.spec.native.js +575 -0
  758. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.spec.native.js.map +1 -0
  759. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.stories.mjs +25 -0
  760. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.stories.mjs.map +1 -0
  761. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.stories.native.js +56 -0
  762. package/dist/jsx/components/DataTableToolbar/DataTableToolbar.stories.native.js.map +1 -0
  763. package/dist/jsx/components/DataTableToolbar/index.mjs +222 -0
  764. package/dist/jsx/components/DataTableToolbar/index.mjs.map +1 -0
  765. package/dist/jsx/components/DataTableToolbar/index.native.js +265 -0
  766. package/dist/jsx/components/DataTableToolbar/index.native.js.map +1 -0
  767. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.spec.mjs +126 -0
  768. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.spec.mjs.map +1 -0
  769. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.spec.native.js +129 -0
  770. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.spec.native.js.map +1 -0
  771. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.stories.mjs +393 -0
  772. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.stories.mjs.map +1 -0
  773. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.stories.native.js +458 -0
  774. package/dist/jsx/components/DataTableViewOptions/DataTableViewOptions.stories.native.js.map +1 -0
  775. package/dist/jsx/components/DataTableViewOptions/index.mjs +496 -0
  776. package/dist/jsx/components/DataTableViewOptions/index.mjs.map +1 -0
  777. package/dist/jsx/components/DataTableViewOptions/index.native.js +589 -0
  778. package/dist/jsx/components/DataTableViewOptions/index.native.js.map +1 -0
  779. package/dist/jsx/components/FilterManager.mjs +119 -0
  780. package/dist/jsx/components/FilterManager.mjs.map +1 -0
  781. package/dist/jsx/components/FilterManager.native.js +159 -0
  782. package/dist/jsx/components/FilterManager.native.js.map +1 -0
  783. package/dist/jsx/components/FilterManager.spec.mjs +53 -0
  784. package/dist/jsx/components/FilterManager.spec.mjs.map +1 -0
  785. package/dist/jsx/components/FilterManager.spec.native.js +55 -0
  786. package/dist/jsx/components/FilterManager.spec.native.js.map +1 -0
  787. package/dist/jsx/components/KnobDialog.mjs +71 -0
  788. package/dist/jsx/components/KnobDialog.mjs.map +1 -0
  789. package/dist/jsx/components/KnobDialog.native.js +106 -0
  790. package/dist/jsx/components/KnobDialog.native.js.map +1 -0
  791. package/dist/jsx/components/SavedFilterDropdown.mjs +40 -0
  792. package/dist/jsx/components/SavedFilterDropdown.mjs.map +1 -0
  793. package/dist/jsx/components/SavedFilterDropdown.native.js +75 -0
  794. package/dist/jsx/components/SavedFilterDropdown.native.js.map +1 -0
  795. package/dist/jsx/components/SavedFilterDropdown.spec.mjs +84 -0
  796. package/dist/jsx/components/SavedFilterDropdown.spec.mjs.map +1 -0
  797. package/dist/jsx/components/SavedFilterDropdown.spec.native.js +86 -0
  798. package/dist/jsx/components/SavedFilterDropdown.spec.native.js.map +1 -0
  799. package/dist/jsx/components/SimpleTable/index.mjs +167 -0
  800. package/dist/jsx/components/SimpleTable/index.mjs.map +1 -0
  801. package/dist/jsx/components/SimpleTable/index.native.js +208 -0
  802. package/dist/jsx/components/SimpleTable/index.native.js.map +1 -0
  803. package/dist/jsx/components/SimpleTable/simpleTable.spec.mjs +163 -0
  804. package/dist/jsx/components/SimpleTable/simpleTable.spec.mjs.map +1 -0
  805. package/dist/jsx/components/SimpleTable/simpleTable.spec.native.js +165 -0
  806. package/dist/jsx/components/SimpleTable/simpleTable.spec.native.js.map +1 -0
  807. package/dist/jsx/components/Table/Table.stories.mjs +167 -0
  808. package/dist/jsx/components/Table/Table.stories.mjs.map +1 -0
  809. package/dist/jsx/components/Table/Table.stories.native.js +207 -0
  810. package/dist/jsx/components/Table/Table.stories.native.js.map +1 -0
  811. package/dist/jsx/components/Table/accessibility.spec.mjs +187 -0
  812. package/dist/jsx/components/Table/accessibility.spec.mjs.map +1 -0
  813. package/dist/jsx/components/Table/accessibility.spec.native.js +216 -0
  814. package/dist/jsx/components/Table/accessibility.spec.native.js.map +1 -0
  815. package/dist/jsx/components/TableInput/TableInput.stories.mjs +24 -0
  816. package/dist/jsx/components/TableInput/TableInput.stories.mjs.map +1 -0
  817. package/dist/jsx/components/TableInput/TableInput.stories.native.js +55 -0
  818. package/dist/jsx/components/TableInput/TableInput.stories.native.js.map +1 -0
  819. package/dist/jsx/components/TableInput/index.mjs +178 -0
  820. package/dist/jsx/components/TableInput/index.mjs.map +1 -0
  821. package/dist/jsx/components/TableInput/index.native.js +237 -0
  822. package/dist/jsx/components/TableInput/index.native.js.map +1 -0
  823. package/dist/jsx/components/componentConsistency.spec.mjs +38 -0
  824. package/dist/jsx/components/componentConsistency.spec.mjs.map +1 -0
  825. package/dist/jsx/components/componentConsistency.spec.native.js +48 -0
  826. package/dist/jsx/components/componentConsistency.spec.native.js.map +1 -0
  827. package/dist/jsx/hooks/hookDecomposition.spec.mjs +327 -0
  828. package/dist/jsx/hooks/hookDecomposition.spec.mjs.map +1 -0
  829. package/dist/jsx/hooks/hookDecomposition.spec.native.js +351 -0
  830. package/dist/jsx/hooks/hookDecomposition.spec.native.js.map +1 -0
  831. package/dist/jsx/hooks/useDataTable.mjs +384 -0
  832. package/dist/jsx/hooks/useDataTable.mjs.map +1 -0
  833. package/dist/jsx/hooks/useDataTable.native.js +456 -0
  834. package/dist/jsx/hooks/useDataTable.native.js.map +1 -0
  835. package/dist/jsx/hooks/useDataTable.spec.mjs +11 -0
  836. package/dist/jsx/hooks/useDataTable.spec.mjs.map +1 -0
  837. package/dist/jsx/hooks/useDataTable.spec.native.js +13 -0
  838. package/dist/jsx/hooks/useDataTable.spec.native.js.map +1 -0
  839. package/dist/jsx/hooks/useDataTableKeyboard.mjs +100 -0
  840. package/dist/jsx/hooks/useDataTableKeyboard.mjs.map +1 -0
  841. package/dist/jsx/hooks/useDataTableKeyboard.native.js +133 -0
  842. package/dist/jsx/hooks/useDataTableKeyboard.native.js.map +1 -0
  843. package/dist/jsx/hooks/useDragScroll.mjs +62 -0
  844. package/dist/jsx/hooks/useDragScroll.mjs.map +1 -0
  845. package/dist/jsx/hooks/useDragScroll.native.js +91 -0
  846. package/dist/jsx/hooks/useDragScroll.native.js.map +1 -0
  847. package/dist/jsx/hooks/useSavedFilters.mjs +89 -0
  848. package/dist/jsx/hooks/useSavedFilters.mjs.map +1 -0
  849. package/dist/jsx/hooks/useSavedFilters.native.js +129 -0
  850. package/dist/jsx/hooks/useSavedFilters.native.js.map +1 -0
  851. package/dist/jsx/hooks/useSavedFilters.spec.mjs +213 -0
  852. package/dist/jsx/hooks/useSavedFilters.spec.mjs.map +1 -0
  853. package/dist/jsx/hooks/useSavedFilters.spec.native.js +240 -0
  854. package/dist/jsx/hooks/useSavedFilters.spec.native.js.map +1 -0
  855. package/dist/jsx/hooks/useTableColumnPinning.mjs +38 -0
  856. package/dist/jsx/hooks/useTableColumnPinning.mjs.map +1 -0
  857. package/dist/jsx/hooks/useTableColumnPinning.native.js +77 -0
  858. package/dist/jsx/hooks/useTableColumnPinning.native.js.map +1 -0
  859. package/dist/jsx/hooks/useTableFiltering.mjs +56 -0
  860. package/dist/jsx/hooks/useTableFiltering.mjs.map +1 -0
  861. package/dist/jsx/hooks/useTableFiltering.native.js +97 -0
  862. package/dist/jsx/hooks/useTableFiltering.native.js.map +1 -0
  863. package/dist/jsx/hooks/useTableGrouping.mjs +103 -0
  864. package/dist/jsx/hooks/useTableGrouping.mjs.map +1 -0
  865. package/dist/jsx/hooks/useTableGrouping.native.js +144 -0
  866. package/dist/jsx/hooks/useTableGrouping.native.js.map +1 -0
  867. package/dist/jsx/hooks/useTableKeyboard.mjs +92 -0
  868. package/dist/jsx/hooks/useTableKeyboard.mjs.map +1 -0
  869. package/dist/jsx/hooks/useTableKeyboard.native.js +125 -0
  870. package/dist/jsx/hooks/useTableKeyboard.native.js.map +1 -0
  871. package/dist/jsx/hooks/useTablePagination.mjs +25 -0
  872. package/dist/jsx/hooks/useTablePagination.mjs.map +1 -0
  873. package/dist/jsx/hooks/useTablePagination.native.js +54 -0
  874. package/dist/jsx/hooks/useTablePagination.native.js.map +1 -0
  875. package/dist/jsx/hooks/useTableSearch.mjs +23 -0
  876. package/dist/jsx/hooks/useTableSearch.mjs.map +1 -0
  877. package/dist/jsx/hooks/useTableSearch.native.js +54 -0
  878. package/dist/jsx/hooks/useTableSearch.native.js.map +1 -0
  879. package/dist/jsx/hooks/useTableSelection.mjs +36 -0
  880. package/dist/jsx/hooks/useTableSelection.mjs.map +1 -0
  881. package/dist/jsx/hooks/useTableSelection.native.js +90 -0
  882. package/dist/jsx/hooks/useTableSelection.native.js.map +1 -0
  883. package/dist/jsx/hooks/useTableSorting.mjs +12 -0
  884. package/dist/jsx/hooks/useTableSorting.mjs.map +1 -0
  885. package/dist/jsx/hooks/useTableSorting.native.js +41 -0
  886. package/dist/jsx/hooks/useTableSorting.native.js.map +1 -0
  887. package/dist/jsx/hooks/useTableUrlSync.mjs +27 -0
  888. package/dist/jsx/hooks/useTableUrlSync.mjs.map +1 -0
  889. package/dist/jsx/hooks/useTableUrlSync.native.js +58 -0
  890. package/dist/jsx/hooks/useTableUrlSync.native.js.map +1 -0
  891. package/dist/jsx/hooks/useTableViews.mjs +57 -0
  892. package/dist/jsx/hooks/useTableViews.mjs.map +1 -0
  893. package/dist/jsx/hooks/useTableViews.native.js +96 -0
  894. package/dist/jsx/hooks/useTableViews.native.js.map +1 -0
  895. package/dist/jsx/index.js +39 -0
  896. package/dist/jsx/index.js.map +1 -0
  897. package/dist/jsx/index.mjs +39 -0
  898. package/dist/jsx/index.mjs.map +1 -0
  899. package/dist/jsx/index.native.js +113 -0
  900. package/dist/jsx/index.native.js.map +1 -0
  901. package/dist/jsx/shims/primitives.mjs +3 -0
  902. package/dist/jsx/shims/primitives.mjs.map +1 -0
  903. package/dist/jsx/shims/primitives.native.js +34 -0
  904. package/dist/jsx/shims/primitives.native.js.map +1 -0
  905. package/dist/jsx/shims/tableCellContext.mjs +3 -0
  906. package/dist/jsx/shims/tableCellContext.mjs.map +1 -0
  907. package/dist/jsx/shims/tableCellContext.native.js +33 -0
  908. package/dist/jsx/shims/tableCellContext.native.js.map +1 -0
  909. package/dist/jsx/types.mjs +2 -0
  910. package/dist/jsx/types.mjs.map +1 -0
  911. package/dist/jsx/types.native.js +21 -0
  912. package/dist/jsx/types.native.js.map +1 -0
  913. package/dist/jsx/utils/filterUtils.mjs +250 -0
  914. package/dist/jsx/utils/filterUtils.mjs.map +1 -0
  915. package/dist/jsx/utils/filterUtils.native.js +308 -0
  916. package/dist/jsx/utils/filterUtils.native.js.map +1 -0
  917. package/dist/jsx/utils/filterUtils.spec.mjs +351 -0
  918. package/dist/jsx/utils/filterUtils.spec.mjs.map +1 -0
  919. package/dist/jsx/utils/filterUtils.spec.native.js +353 -0
  920. package/dist/jsx/utils/filterUtils.spec.native.js.map +1 -0
  921. package/dist/jsx/utils/urlStateUtils.mjs +115 -0
  922. package/dist/jsx/utils/urlStateUtils.mjs.map +1 -0
  923. package/dist/jsx/utils/urlStateUtils.native.js +168 -0
  924. package/dist/jsx/utils/urlStateUtils.native.js.map +1 -0
  925. package/dist/jsx/utils/urlStateUtils.spec.mjs +235 -0
  926. package/dist/jsx/utils/urlStateUtils.spec.mjs.map +1 -0
  927. package/dist/jsx/utils/urlStateUtils.spec.native.js +239 -0
  928. package/dist/jsx/utils/urlStateUtils.spec.native.js.map +1 -0
  929. package/package.json +113 -0
  930. package/src/components/ChildTable/index.tsx +87 -0
  931. package/src/components/ColumnHeaderFilter/ColumnHeaderFilter.stories.tsx +23 -0
  932. package/src/components/ColumnHeaderFilter/index.tsx +274 -0
  933. package/src/components/DataTable/DataTable.spec.tsx +574 -0
  934. package/src/components/DataTable/DataTable.stories.tsx +2523 -0
  935. package/src/components/DataTable/DataTableContext.ts +16 -0
  936. package/src/components/DataTable/DataTableMobileCards.tsx +164 -0
  937. package/src/components/DataTable/DataTableRoot.tsx +1339 -0
  938. package/src/components/DataTable/DataTableStateContext.ts +57 -0
  939. package/src/components/DataTable/DataTableVirtualized.tsx +115 -0
  940. package/src/components/DataTable/FieldsInCells.stories.tsx +220 -0
  941. package/src/components/DataTable/compoundComponent.spec.tsx +375 -0
  942. package/src/components/DataTable/index.native.tsx +913 -0
  943. package/src/components/DataTable/index.tsx +44 -0
  944. package/src/components/DataTableBulkActions/DataTableBulkActions.spec.tsx +408 -0
  945. package/src/components/DataTableBulkActions/DataTableBulkActions.stories.tsx +365 -0
  946. package/src/components/DataTableBulkActions/index.tsx +415 -0
  947. package/src/components/DataTableCell/CellModalEditor.tsx +92 -0
  948. package/src/components/DataTableCell/DataTableCell.stories.tsx +23 -0
  949. package/src/components/DataTableCell/dataTableCell.spec.tsx +191 -0
  950. package/src/components/DataTableCell/index.tsx +720 -0
  951. package/src/components/DataTableColumnPinning/DataTableColumnPinning.spec.tsx +308 -0
  952. package/src/components/DataTableColumnPinning/DataTableColumnPinning.stories.tsx +513 -0
  953. package/src/components/DataTableColumnPinning/index.tsx +291 -0
  954. package/src/components/DataTableDateFilter/DataTableDateFilter.spec.tsx +492 -0
  955. package/src/components/DataTableDateFilter/DataTableDateFilter.stories.tsx +352 -0
  956. package/src/components/DataTableDateFilter/index.tsx +563 -0
  957. package/src/components/DataTableExport/DataTableExport.spec.tsx +398 -0
  958. package/src/components/DataTableExport/DataTableExport.stories.tsx +451 -0
  959. package/src/components/DataTableExport/index.tsx +631 -0
  960. package/src/components/DataTableFilters/DataTableFilters.spec.tsx +678 -0
  961. package/src/components/DataTableFilters/DataTableFilters.stories.tsx +473 -0
  962. package/src/components/DataTableFilters/index.tsx +680 -0
  963. package/src/components/DataTableGrouping/DataTableGrouping.spec.tsx +332 -0
  964. package/src/components/DataTableGrouping/DataTableGrouping.stories.tsx +507 -0
  965. package/src/components/DataTableGrouping/index.tsx +902 -0
  966. package/src/components/DataTablePagination/DataTablePagination.spec.tsx +360 -0
  967. package/src/components/DataTablePagination/DataTablePagination.stories.tsx +592 -0
  968. package/src/components/DataTablePagination/index.tsx +453 -0
  969. package/src/components/DataTableSearch/DataTableSearch.spec.tsx +313 -0
  970. package/src/components/DataTableSearch/DataTableSearch.stories.tsx +45 -0
  971. package/src/components/DataTableSearch/index.tsx +535 -0
  972. package/src/components/DataTableToolbar/DataTableToolbar.spec.tsx +529 -0
  973. package/src/components/DataTableToolbar/DataTableToolbar.stories.tsx +23 -0
  974. package/src/components/DataTableToolbar/index.tsx +266 -0
  975. package/src/components/DataTableViewOptions/DataTableViewOptions.spec.tsx +162 -0
  976. package/src/components/DataTableViewOptions/DataTableViewOptions.stories.tsx +383 -0
  977. package/src/components/DataTableViewOptions/index.tsx +592 -0
  978. package/src/components/FilterManager.spec.tsx +63 -0
  979. package/src/components/FilterManager.tsx +144 -0
  980. package/src/components/KnobDialog.tsx +76 -0
  981. package/src/components/SavedFilterDropdown.spec.tsx +99 -0
  982. package/src/components/SavedFilterDropdown.tsx +56 -0
  983. package/src/components/SimpleTable/index.tsx +230 -0
  984. package/src/components/SimpleTable/simpleTable.spec.tsx +152 -0
  985. package/src/components/Table/Table.stories.tsx +107 -0
  986. package/src/components/Table/accessibility.spec.tsx +231 -0
  987. package/src/components/TableInput/TableInput.stories.tsx +24 -0
  988. package/src/components/TableInput/index.native.tsx +242 -0
  989. package/src/components/TableInput/index.tsx +256 -0
  990. package/src/components/componentConsistency.spec.tsx +83 -0
  991. package/src/hooks/hookDecomposition.spec.ts +331 -0
  992. package/src/hooks/useDataTable.spec.ts +16 -0
  993. package/src/hooks/useDataTable.ts +540 -0
  994. package/src/hooks/useDataTableKeyboard.ts +134 -0
  995. package/src/hooks/useDragScroll.ts +80 -0
  996. package/src/hooks/useSavedFilters.spec.ts +232 -0
  997. package/src/hooks/useSavedFilters.ts +189 -0
  998. package/src/hooks/useTableColumnPinning.ts +49 -0
  999. package/src/hooks/useTableFiltering.ts +86 -0
  1000. package/src/hooks/useTableGrouping.ts +176 -0
  1001. package/src/hooks/useTableKeyboard.ts +127 -0
  1002. package/src/hooks/useTablePagination.ts +53 -0
  1003. package/src/hooks/useTableSearch.ts +51 -0
  1004. package/src/hooks/useTableSelection.ts +62 -0
  1005. package/src/hooks/useTableSorting.ts +24 -0
  1006. package/src/hooks/useTableUrlSync.ts +49 -0
  1007. package/src/hooks/useTableViews.ts +113 -0
  1008. package/src/index.ts +137 -0
  1009. package/src/shims/primitives.ts +15 -0
  1010. package/src/shims/tableCellContext.ts +7 -0
  1011. package/src/types.ts +492 -0
  1012. package/src/utils/filterUtils.spec.ts +363 -0
  1013. package/src/utils/filterUtils.ts +333 -0
  1014. package/src/utils/urlStateUtils.spec.ts +197 -0
  1015. package/src/utils/urlStateUtils.ts +162 -0
@@ -0,0 +1,2523 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
2
+ import { fn } from "storybook/test";
3
+ import { createColumnHelper } from "@tanstack/react-table";
4
+ import React, { useMemo } from "react";
5
+ import { Button } from "@multiplatform.one/forms";
6
+ import { Avatar, Text, View, YStack } from "tamagui";
7
+ import {
8
+ type DataTableColumn,
9
+ type DataTableData,
10
+ DataTableFilters,
11
+ DataTablePagination,
12
+ DataTableToolbar,
13
+ } from "../../index";
14
+ import { DataTable } from "./index";
15
+
16
+ const meta: Meta<typeof DataTable> = {
17
+ title: "Table/DataTable",
18
+ component: DataTable,
19
+ parameters: {
20
+ layout: "fullscreen",
21
+ },
22
+ // Storybook 10 errors when callback args are used implicitly during render.
23
+ // Provide explicit spies for all on* callbacks the component fires.
24
+ args: {
25
+ onStateChange: fn(),
26
+ onCellChange: fn(),
27
+ onDataChange: fn(),
28
+ },
29
+ decorators: [
30
+ (Story) => (
31
+ <View flex={1} padding="$4" width="100%">
32
+ <Story />
33
+ </View>
34
+ ),
35
+ ],
36
+ };
37
+
38
+ export default meta;
39
+ type Story = StoryObj<typeof DataTable>;
40
+
41
+ // Mock Data Types
42
+ interface User extends DataTableData {
43
+ id: string;
44
+ avatar: string;
45
+ firstName: string;
46
+ lastName: string;
47
+ email: string;
48
+ age: number;
49
+ department: string;
50
+ role: string;
51
+ salary: number;
52
+ status: "active" | "inactive" | "pending";
53
+ joinDate: string;
54
+ lastLogin: string;
55
+ }
56
+
57
+ // Generate mock data
58
+ const generateUsers = (count: number): User[] => {
59
+ const departments = ["Engineering", "Marketing", "Sales", "HR", "Finance"];
60
+ const roles = ["Developer", "Manager", "Analyst", "Designer", "Coordinator"];
61
+ const statuses: User["status"][] = ["active", "inactive", "pending"];
62
+
63
+ return Array.from({ length: count }, (_, i) => ({
64
+ id: `user-${i + 1}`,
65
+ avatar: `https://i.pravatar.cc/150?img=${(i % 70) + 1}`,
66
+ firstName: `User${i + 1}`,
67
+ lastName: `Last${i + 1}`,
68
+ email: `user${i + 1}@company.com`,
69
+ age: 20 + (i % 40),
70
+ department: departments[i % departments.length],
71
+ role: roles[i % roles.length],
72
+ salary: 50000 + (i % 100000),
73
+ status: statuses[i % statuses.length],
74
+ joinDate: new Date(2020, i % 12, (i % 28) + 1).toISOString().split("T")[0],
75
+ lastLogin: new Date(Date.now() - (i % 30) * 24 * 60 * 60 * 1000).toISOString().split("T")[0],
76
+ }));
77
+ };
78
+
79
+ // Column Definitions
80
+ const columnHelper = createColumnHelper<User>();
81
+
82
+ const columns: DataTableColumn<User>[] = [
83
+ // Avatar Column
84
+ columnHelper.accessor("avatar", {
85
+ header: "Avatar",
86
+ cell: (info) => (
87
+ <Avatar circular size="$3">
88
+ <Avatar.Image accessibilityLabel="User avatar" src={info.getValue()} />
89
+ <Avatar.Fallback backgroundColor="$gray6" />
90
+ </Avatar>
91
+ ),
92
+ enableSorting: false,
93
+ enableColumnFilter: false,
94
+ size: 60,
95
+ }) as DataTableColumn<User>,
96
+
97
+ // Name Column
98
+ columnHelper.accessor((row) => `${row.firstName} ${row.lastName}`, {
99
+ id: "fullName",
100
+ header: "Full Name",
101
+ cell: (info) => {
102
+ const user = info.row.original;
103
+ return (
104
+ <YStack gap="$1">
105
+ <Text fontWeight="600">{`${user.firstName} ${user.lastName}`}</Text>
106
+ <Text fontSize="$2" color="$gray11">
107
+ {user.email}
108
+ </Text>
109
+ </YStack>
110
+ );
111
+ },
112
+ filterFn: (row, _id, value) => {
113
+ const fullName = `${row.original.firstName} ${row.original.lastName}`.toLowerCase();
114
+ return fullName.includes(value.toLowerCase());
115
+ },
116
+ }) as DataTableColumn<User>,
117
+
118
+ // Age Column
119
+ columnHelper.accessor("age", {
120
+ header: "Age",
121
+ cell: (info) => <Text>{info.getValue()}</Text>,
122
+ filterFn: "inNumberRange",
123
+ }) as DataTableColumn<User>,
124
+
125
+ // Department Column
126
+ columnHelper.accessor("department", {
127
+ header: "Department",
128
+ cell: (info) => (
129
+ <View backgroundColor="$blue5" paddingHorizontal="$2" paddingVertical="$1" borderRadius="$2">
130
+ <Text color="$blue11" fontSize="$2">
131
+ {info.getValue()}
132
+ </Text>
133
+ </View>
134
+ ),
135
+ }) as DataTableColumn<User>,
136
+
137
+ // Role Column
138
+ columnHelper.accessor("role", {
139
+ header: "Role",
140
+ cell: (info) => <Text>{info.getValue()}</Text>,
141
+ }) as DataTableColumn<User>,
142
+
143
+ // Salary Column
144
+ columnHelper.accessor("salary", {
145
+ header: "Salary",
146
+ cell: (info) => <Text>${info.getValue().toLocaleString()}</Text>,
147
+ filterFn: "inNumberRange",
148
+ }) as DataTableColumn<User>,
149
+
150
+ // Status Column
151
+ columnHelper.accessor("status", {
152
+ header: "Status",
153
+ cell: (info) => {
154
+ const status = info.getValue();
155
+ return (
156
+ <View
157
+ backgroundColor={
158
+ status === "active" ? "$green5" : status === "inactive" ? "$red5" : "$yellow5"
159
+ }
160
+ paddingHorizontal="$2"
161
+ paddingVertical="$1"
162
+ borderRadius="$2"
163
+ >
164
+ <Text
165
+ color={
166
+ status === "active" ? "$green11" : status === "inactive" ? "$red11" : "$yellow11"
167
+ }
168
+ fontSize="$2"
169
+ fontWeight="600"
170
+ textTransform="capitalize"
171
+ >
172
+ {status}
173
+ </Text>
174
+ </View>
175
+ );
176
+ },
177
+ }) as DataTableColumn<User>,
178
+
179
+ // Join Date Column
180
+ columnHelper.accessor("joinDate", {
181
+ header: "Join Date",
182
+ cell: (info) => <Text>{new Date(info.getValue()).toLocaleDateString()}</Text>,
183
+ filterFn: "includesString",
184
+ }) as DataTableColumn<User>,
185
+
186
+ // Last Login Column
187
+ columnHelper.accessor("lastLogin", {
188
+ header: "Last Login",
189
+ cell: (info) => <Text>{new Date(info.getValue()).toLocaleDateString()}</Text>,
190
+ filterFn: "includesString",
191
+ }) as DataTableColumn<User>,
192
+
193
+ // Actions Column
194
+ columnHelper.display({
195
+ id: "actions",
196
+ header: "Actions",
197
+ cell: (_info) => (
198
+ <Button size="$2" variant="outlined">
199
+ Edit
200
+ </Button>
201
+ ),
202
+ enableSorting: false,
203
+ enableColumnFilter: false,
204
+ }) as DataTableColumn<User>,
205
+ ];
206
+
207
+ // Available Columns for Filtering
208
+ const availableColumns = [
209
+ {
210
+ id: "fullName",
211
+ label: "Full Name",
212
+ type: "text" as const,
213
+ },
214
+ {
215
+ id: "age",
216
+ label: "Age",
217
+ type: "number" as const,
218
+ },
219
+ {
220
+ id: "department",
221
+ label: "Department",
222
+ type: "select" as const,
223
+ options: [
224
+ { label: "Engineering", value: "Engineering", count: 0 },
225
+ { label: "Marketing", value: "Marketing", count: 0 },
226
+ { label: "Sales", value: "Sales", count: 0 },
227
+ { label: "HR", value: "HR", count: 0 },
228
+ { label: "Finance", value: "Finance", count: 0 },
229
+ ],
230
+ },
231
+ {
232
+ id: "role",
233
+ label: "Role",
234
+ type: "select" as const,
235
+ options: [
236
+ { label: "Developer", value: "Developer", count: 0 },
237
+ { label: "Manager", value: "Manager", count: 0 },
238
+ { label: "Analyst", value: "Analyst", count: 0 },
239
+ { label: "Designer", value: "Designer", count: 0 },
240
+ { label: "Coordinator", value: "Coordinator", count: 0 },
241
+ ],
242
+ },
243
+ {
244
+ id: "salary",
245
+ label: "Salary",
246
+ type: "number" as const,
247
+ },
248
+ {
249
+ id: "status",
250
+ label: "Status",
251
+ type: "select" as const,
252
+ options: [
253
+ { label: "Active", value: "active", count: 0 },
254
+ { label: "Inactive", value: "inactive", count: 0 },
255
+ { label: "Pending", value: "pending", count: 0 },
256
+ ],
257
+ },
258
+ {
259
+ id: "joinDate",
260
+ label: "Join Date",
261
+ type: "date" as const,
262
+ },
263
+ {
264
+ id: "lastLogin",
265
+ label: "Last Login",
266
+ type: "date" as const,
267
+ },
268
+ ];
269
+
270
+ // Story Components
271
+ const AdvancedTableStory = () => {
272
+ const data = useMemo(() => generateUsers(1000), []);
273
+
274
+ const columnsWithCounts = useMemo(() => {
275
+ return availableColumns.map((column) => {
276
+ if (column.options) {
277
+ const counts = column.options.map((option) => {
278
+ const count = data.filter((item) => {
279
+ const value = item[column.id as keyof User];
280
+ return String(value).toLowerCase() === option.value.toLowerCase();
281
+ }).length;
282
+ return { ...option, count };
283
+ });
284
+ return { ...column, options: counts };
285
+ }
286
+ return column;
287
+ });
288
+ }, [data]);
289
+
290
+ return (
291
+ <View flex={1} padding="$4">
292
+ <YStack gap="$6">
293
+ <YStack gap="$2">
294
+ <Text fontSize="$6" fontWeight="bold">
295
+ Advanced User Management Table
296
+ </Text>
297
+ <Text fontSize="$4" color="$gray11">
298
+ Powerful filtering, sorting, and pagination with URL state management
299
+ </Text>
300
+ </YStack>
301
+
302
+ <DataTable
303
+ data={data}
304
+ columns={columns}
305
+ syncWithUrl={true}
306
+ enableFiltering={true}
307
+ enableSorting={true}
308
+ enablePagination={true}
309
+ enableColumnVisibility={true}
310
+ enableColumnResizing={true}
311
+ enableGlobalSearch={true}
312
+ enableViews={true}
313
+ renderToolbar={(props) => (
314
+ <DataTableToolbar
315
+ {...props}
316
+ customActions={
317
+ <Button size="$3" variant="outlined">
318
+ Export CSV
319
+ </Button>
320
+ }
321
+ />
322
+ )}
323
+ renderFilters={(props) => (
324
+ <DataTableFilters {...props} availableColumns={columnsWithCounts} maxFilters={5} />
325
+ )}
326
+ renderPagination={(props) => <DataTablePagination {...props} compact />}
327
+ size="md"
328
+ aria-label="User management table"
329
+ />
330
+ </YStack>
331
+ </View>
332
+ );
333
+ };
334
+
335
+ const SimpleTableStory = () => {
336
+ const data = useMemo(() => generateUsers(50), []);
337
+ const simpleColumns = columns.slice(1, 6);
338
+
339
+ return (
340
+ <View flex={1} padding="$4">
341
+ <DataTable
342
+ data={data}
343
+ columns={simpleColumns}
344
+ enableFiltering={false}
345
+ enableSorting={true}
346
+ enablePagination={true}
347
+ enableGlobalSearch={true}
348
+ size="sm"
349
+ />
350
+ </View>
351
+ );
352
+ };
353
+
354
+ // Basic Person data for simpler examples
355
+ interface Person {
356
+ id: number;
357
+ firstName: string;
358
+ lastName: string;
359
+ age: number;
360
+ email: string;
361
+ status: "active" | "inactive";
362
+ }
363
+
364
+ const sampleData: Person[] = [
365
+ {
366
+ id: 1,
367
+ firstName: "John",
368
+ lastName: "Doe",
369
+ age: 28,
370
+ email: "john.doe@example.com",
371
+ status: "active",
372
+ },
373
+ {
374
+ id: 2,
375
+ firstName: "Jane",
376
+ lastName: "Smith",
377
+ age: 32,
378
+ email: "jane.smith@example.com",
379
+ status: "active",
380
+ },
381
+ {
382
+ id: 3,
383
+ firstName: "Bob",
384
+ lastName: "Johnson",
385
+ age: 45,
386
+ email: "bob.johnson@example.com",
387
+ status: "inactive",
388
+ },
389
+ {
390
+ id: 4,
391
+ firstName: "Alice",
392
+ lastName: "Williams",
393
+ age: 29,
394
+ email: "alice.williams@example.com",
395
+ status: "active",
396
+ },
397
+ {
398
+ id: 5,
399
+ firstName: "Charlie",
400
+ lastName: "Brown",
401
+ age: 35,
402
+ email: "charlie.brown@example.com",
403
+ status: "inactive",
404
+ },
405
+ ];
406
+
407
+ const personColumnHelper = createColumnHelper<Person>();
408
+
409
+ const basicColumns: DataTableColumn<Person>[] = [
410
+ personColumnHelper.accessor("id", {
411
+ header: "ID",
412
+ cell: (info) => info.getValue(),
413
+ }) as DataTableColumn<Person>,
414
+ personColumnHelper.accessor("firstName", {
415
+ header: "First Name",
416
+ cell: (info) => info.getValue(),
417
+ }) as DataTableColumn<Person>,
418
+ personColumnHelper.accessor("lastName", {
419
+ header: "Last Name",
420
+ cell: (info) => info.getValue(),
421
+ }) as DataTableColumn<Person>,
422
+ personColumnHelper.accessor("age", {
423
+ header: "Age",
424
+ cell: (info) => info.getValue(),
425
+ }) as DataTableColumn<Person>,
426
+ personColumnHelper.accessor("email", {
427
+ header: "Email",
428
+ cell: (info) => info.getValue(),
429
+ }) as DataTableColumn<Person>,
430
+ personColumnHelper.accessor("status", {
431
+ header: "Status",
432
+ cell: (info) => {
433
+ const status = info.getValue();
434
+ return (
435
+ <Text
436
+ style={{
437
+ color: status === "active" ? "green" : "red",
438
+ fontWeight: "bold",
439
+ }}
440
+ >
441
+ {status}
442
+ </Text>
443
+ );
444
+ },
445
+ }) as DataTableColumn<Person>,
446
+ ];
447
+
448
+ export const Advanced: Story = {
449
+ name: "Main",
450
+ render: () => <AdvancedTableStory />,
451
+ };
452
+
453
+ export const Simple: Story = {
454
+ render: () => <SimpleTableStory />,
455
+ };
456
+
457
+ export const Basic: Story = {
458
+ args: {
459
+ data: sampleData,
460
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
461
+ },
462
+ };
463
+
464
+ export const WithPagination: Story = {
465
+ args: {
466
+ data: sampleData,
467
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
468
+ enablePagination: true,
469
+ initialState: {
470
+ pagination: { pageIndex: 0, pageSize: 2 },
471
+ },
472
+ },
473
+ };
474
+
475
+ export const WithSorting: Story = {
476
+ args: {
477
+ data: sampleData,
478
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
479
+ enableSorting: true,
480
+ },
481
+ };
482
+
483
+ export const WithFiltering: Story = {
484
+ args: {
485
+ data: sampleData,
486
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
487
+ enableFiltering: true,
488
+ },
489
+ };
490
+
491
+ export const FullFeatured: Story = {
492
+ args: {
493
+ data: sampleData,
494
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
495
+ enableFiltering: true,
496
+ enableSorting: true,
497
+ enablePagination: true,
498
+ initialState: {
499
+ pagination: { pageIndex: 0, pageSize: 3 },
500
+ },
501
+ },
502
+ };
503
+
504
+ export const Compact: Story = {
505
+ args: {
506
+ data: sampleData,
507
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
508
+ size: "sm",
509
+ },
510
+ };
511
+
512
+ export const Large: Story = {
513
+ args: {
514
+ data: sampleData,
515
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
516
+ size: "lg",
517
+ },
518
+ };
519
+
520
+ export const WithColumnResizing: Story = {
521
+ args: {
522
+ data: sampleData,
523
+ columns: basicColumns.map((col) => ({
524
+ ...col,
525
+ minSize: 80,
526
+ maxSize: 300,
527
+ })) as DataTableColumn<Record<string, any>>[],
528
+ enableColumnResizing: true,
529
+ },
530
+ };
531
+
532
+ const largeData = Array.from({ length: 10000 }, (_, i) => ({
533
+ ...sampleData[i % sampleData.length],
534
+ id: i + 1,
535
+ firstName: `User${i + 1}`,
536
+ lastName: `Last${i + 1}`,
537
+ email: `user${i + 1}@example.com`,
538
+ }));
539
+
540
+ export const WithVirtualization: Story = {
541
+ args: {
542
+ data: largeData,
543
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
544
+ enableVirtualization: true,
545
+ virtualizationHeight: 400,
546
+ virtualizationOverscan: 5,
547
+ },
548
+ };
549
+
550
+ export const WithColumnPinning: Story = {
551
+ args: {
552
+ data: sampleData,
553
+ columns: basicColumns.map((col) => ({
554
+ ...col,
555
+ minSize: 80,
556
+ maxSize: 300,
557
+ })) as DataTableColumn<Record<string, any>>[],
558
+ enableColumnPinning: true,
559
+ maxPinnedColumns: 2,
560
+ enableColumnResizing: true,
561
+ },
562
+ };
563
+
564
+ export const WithKeyboardNavigation: Story = {
565
+ args: {
566
+ data: sampleData,
567
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
568
+ enableKeyboardNavigation: true,
569
+ },
570
+ };
571
+
572
+ interface ExpandablePerson extends Person {
573
+ subRows?: ExpandablePerson[];
574
+ }
575
+ const expandableData: ExpandablePerson[] = sampleData.map((p, i) => ({
576
+ ...p,
577
+ subRows: i < 2 ? [{ ...p, id: -i - 1, firstName: `Detail ${i}` }] : undefined,
578
+ }));
579
+
580
+ export const WithRowExpansion: Story = {
581
+ args: {
582
+ data: expandableData,
583
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
584
+ enableRowExpansion: true,
585
+ renderSubComponent: (row) => (
586
+ <View padding="$4" backgroundColor="$color2">
587
+ <Text>
588
+ Expanded: {row.original.firstName} {row.original.lastName}
589
+ </Text>
590
+ </View>
591
+ ),
592
+ },
593
+ };
594
+
595
+ export const Empty: Story = {
596
+ args: {
597
+ data: [],
598
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
599
+ },
600
+ };
601
+
602
+ export const ReadOnly: Story = {
603
+ args: {
604
+ data: sampleData,
605
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
606
+ readOnly: true,
607
+ showRowNumbers: true,
608
+ },
609
+ };
610
+
611
+ export const WithRowNumbers: Story = {
612
+ args: {
613
+ data: sampleData,
614
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
615
+ showRowNumbers: true,
616
+ },
617
+ };
618
+
619
+ // Editable Table Data
620
+ interface EditablePerson {
621
+ id: number;
622
+ name: string;
623
+ quantity: number;
624
+ category: string;
625
+ active: boolean;
626
+ }
627
+
628
+ const editableColumns: DataTableColumn<EditablePerson>[] = [
629
+ {
630
+ accessorKey: "name",
631
+ header: "Name",
632
+ field: "input",
633
+ },
634
+ {
635
+ accessorKey: "quantity",
636
+ header: "Quantity",
637
+ field: "stepper",
638
+ fieldProps: { min: 0, max: 100 },
639
+ },
640
+ {
641
+ accessorKey: "category",
642
+ header: "Category",
643
+ field: "select",
644
+ fieldProps: {
645
+ options: [
646
+ { label: "Electronics", value: "electronics" },
647
+ { label: "Clothing", value: "clothing" },
648
+ { label: "Food", value: "food" },
649
+ ],
650
+ },
651
+ },
652
+ {
653
+ accessorKey: "active",
654
+ header: "Active",
655
+ field: "checkbox",
656
+ },
657
+ ];
658
+
659
+ const editableData: EditablePerson[] = [
660
+ { id: 1, name: "Product A", quantity: 10, category: "electronics", active: true },
661
+ { id: 2, name: "Product B", quantity: 5, category: "clothing", active: false },
662
+ { id: 3, name: "Product C", quantity: 20, category: "food", active: true },
663
+ ];
664
+
665
+ const EditableTableStory = () => {
666
+ const [data, setData] = React.useState(editableData);
667
+
668
+ return (
669
+ <View flex={1} padding="$4">
670
+ <DataTable
671
+ data={data}
672
+ columns={editableColumns as DataTableColumn<Record<string, any>>[]}
673
+ onDataChange={setData as (data: Record<string, any>[]) => void}
674
+ showAddRow={true}
675
+ showDeleteRow={true}
676
+ showRowNumbers={true}
677
+ defaultRow={{
678
+ id: Date.now(),
679
+ name: "",
680
+ quantity: 0,
681
+ category: "electronics",
682
+ active: false,
683
+ }}
684
+ />
685
+ </View>
686
+ );
687
+ };
688
+
689
+ export const EditableTable: Story = {
690
+ render: () => <EditableTableStory />,
691
+ };
692
+
693
+ export const WithFieldTypes: Story = {
694
+ render: () => <EditableTableStory />,
695
+ };
696
+
697
+ // ============================================================================
698
+ // ALL FIELD TYPES STORIES
699
+ // ============================================================================
700
+
701
+ /**
702
+ * Comprehensive field type data for testing ALL 17 DataTable field types
703
+ */
704
+ interface AllFieldsRow {
705
+ id: number;
706
+ textField: string;
707
+ numberField: number;
708
+ selectField: string;
709
+ comboboxField: string;
710
+ checkboxField: boolean;
711
+ switchField: boolean;
712
+ dateField: string;
713
+ datetimeField: string;
714
+ timeField: string;
715
+ durationField: number;
716
+ colorField: string;
717
+ ratingField: number;
718
+ phoneField: string;
719
+ currencyField: number;
720
+ percentField: number;
721
+ linkField: string;
722
+ }
723
+
724
+ const allFieldsData: AllFieldsRow[] = [
725
+ {
726
+ id: 1,
727
+ textField: "Hello World",
728
+ numberField: 42,
729
+ selectField: "option1",
730
+ comboboxField: "choice1",
731
+ checkboxField: true,
732
+ switchField: false,
733
+ dateField: "2024-03-15",
734
+ datetimeField: "2024-03-15 14:30",
735
+ timeField: "14:30",
736
+ durationField: 3600,
737
+ colorField: "#FF5733",
738
+ ratingField: 4,
739
+ phoneField: "+1234567890",
740
+ currencyField: 1250.5,
741
+ percentField: 75.5,
742
+ linkField: "DOC-001",
743
+ },
744
+ {
745
+ id: 2,
746
+ textField: "Test Row",
747
+ numberField: 100,
748
+ selectField: "option2",
749
+ comboboxField: "choice2",
750
+ checkboxField: false,
751
+ switchField: true,
752
+ dateField: "2024-06-20",
753
+ datetimeField: "2024-06-20 09:00",
754
+ timeField: "09:00",
755
+ durationField: 7200,
756
+ colorField: "#33FF57",
757
+ ratingField: 5,
758
+ phoneField: "+0987654321",
759
+ currencyField: 2500.0,
760
+ percentField: 100,
761
+ linkField: "DOC-002",
762
+ },
763
+ {
764
+ id: 3,
765
+ textField: "Another Entry",
766
+ numberField: 0,
767
+ selectField: "option3",
768
+ comboboxField: "choice3",
769
+ checkboxField: true,
770
+ switchField: true,
771
+ dateField: "2024-01-01",
772
+ datetimeField: "2024-01-01 00:00",
773
+ timeField: "00:00",
774
+ durationField: 0,
775
+ colorField: "#3357FF",
776
+ ratingField: 1,
777
+ phoneField: "+1111111111",
778
+ currencyField: 0,
779
+ percentField: 0,
780
+ linkField: "DOC-003",
781
+ },
782
+ ];
783
+
784
+ const selectOptions = [
785
+ { label: "Option 1", value: "option1" },
786
+ { label: "Option 2", value: "option2" },
787
+ { label: "Option 3", value: "option3" },
788
+ ];
789
+
790
+ const comboboxOptions = [
791
+ { label: "Choice 1", value: "choice1" },
792
+ { label: "Choice 2", value: "choice2" },
793
+ { label: "Choice 3", value: "choice3" },
794
+ { label: "Choice 4", value: "choice4" },
795
+ ];
796
+
797
+ const linkOptions = [
798
+ { label: "Document 001", value: "DOC-001" },
799
+ { label: "Document 002", value: "DOC-002" },
800
+ { label: "Document 003", value: "DOC-003" },
801
+ ];
802
+
803
+ const allFieldsColumns: DataTableColumn<AllFieldsRow>[] = [
804
+ {
805
+ accessorKey: "textField",
806
+ header: "Text",
807
+ field: "input",
808
+ fieldProps: { placeholder: "Enter text..." },
809
+ },
810
+ {
811
+ accessorKey: "numberField",
812
+ header: "Number",
813
+ field: "stepper",
814
+ fieldProps: { min: 0, max: 1000, placeholder: "0" },
815
+ },
816
+ {
817
+ accessorKey: "selectField",
818
+ header: "Select",
819
+ field: "select",
820
+ fieldProps: { options: selectOptions, placeholder: "Select..." },
821
+ },
822
+ {
823
+ accessorKey: "comboboxField",
824
+ header: "Combobox",
825
+ field: "combobox",
826
+ fieldProps: { options: comboboxOptions, placeholder: "Search..." },
827
+ },
828
+ {
829
+ accessorKey: "checkboxField",
830
+ header: "Checkbox",
831
+ field: "checkbox",
832
+ },
833
+ {
834
+ accessorKey: "switchField",
835
+ header: "Switch",
836
+ field: "switch",
837
+ },
838
+ {
839
+ accessorKey: "dateField",
840
+ header: "Date",
841
+ field: "datepicker",
842
+ fieldProps: { placeholder: "YYYY-MM-DD" },
843
+ },
844
+ {
845
+ accessorKey: "datetimeField",
846
+ header: "DateTime",
847
+ field: "datetimepicker",
848
+ fieldProps: { placeholder: "YYYY-MM-DD HH:MM" },
849
+ },
850
+ {
851
+ accessorKey: "timeField",
852
+ header: "Time",
853
+ field: "timepicker",
854
+ fieldProps: { placeholder: "HH:MM" },
855
+ },
856
+ {
857
+ accessorKey: "durationField",
858
+ header: "Duration",
859
+ field: "duration",
860
+ fieldProps: { placeholder: "Seconds" },
861
+ },
862
+ {
863
+ accessorKey: "colorField",
864
+ header: "Color",
865
+ field: "colorpicker",
866
+ fieldProps: { placeholder: "#000000" },
867
+ },
868
+ {
869
+ accessorKey: "ratingField",
870
+ header: "Rating",
871
+ field: "rating",
872
+ },
873
+ {
874
+ accessorKey: "phoneField",
875
+ header: "Phone",
876
+ field: "phoneinput",
877
+ fieldProps: { placeholder: "+1234567890" },
878
+ },
879
+ {
880
+ accessorKey: "currencyField",
881
+ header: "Currency",
882
+ field: "stepper",
883
+ fieldProps: { currency: "$", placeholder: "0.00" },
884
+ },
885
+ {
886
+ accessorKey: "percentField",
887
+ header: "Percent",
888
+ field: "stepper",
889
+ fieldProps: { placeholder: "0" },
890
+ },
891
+ {
892
+ accessorKey: "linkField",
893
+ header: "Link",
894
+ field: "combobox",
895
+ fieldProps: { options: linkOptions, placeholder: "Search document..." },
896
+ },
897
+ ];
898
+
899
+ // Story: All Field Types Editable
900
+ const AllFieldTypesEditableStory = () => {
901
+ const [data, setData] = React.useState(allFieldsData);
902
+
903
+ return (
904
+ <YStack gap="$4" flex={1} padding="$4">
905
+ <YStack gap="$2">
906
+ <Text fontSize="$6" fontWeight="bold">
907
+ All Field Types - Editable
908
+ </Text>
909
+ <Text fontSize="$3" color="$gray11">
910
+ Testing all 17 DataTable field types in editable mode
911
+ </Text>
912
+ </YStack>
913
+ <DataTable
914
+ data={data}
915
+ columns={allFieldsColumns as DataTableColumn<Record<string, any>>[]}
916
+ onDataChange={setData as (data: Record<string, any>[]) => void}
917
+ showRowNumbers={true}
918
+ showAddRow={true}
919
+ showDeleteRow={true}
920
+ defaultRow={{
921
+ id: Date.now(),
922
+ textField: "",
923
+ numberField: 0,
924
+ selectField: "",
925
+ comboboxField: "",
926
+ checkboxField: false,
927
+ switchField: false,
928
+ dateField: "",
929
+ datetimeField: "",
930
+ timeField: "",
931
+ durationField: 0,
932
+ colorField: "",
933
+ ratingField: 0,
934
+ phoneField: "",
935
+ currencyField: 0,
936
+ percentField: 0,
937
+ linkField: "",
938
+ }}
939
+ aria-label="All field types editable table"
940
+ />
941
+ </YStack>
942
+ );
943
+ };
944
+
945
+ export const AllFieldTypesEditable: Story = {
946
+ render: () => <AllFieldTypesEditableStory />,
947
+ };
948
+
949
+ // Story: All Field Types Read-Only
950
+ const AllFieldTypesReadOnlyStory = () => {
951
+ return (
952
+ <YStack gap="$4" flex={1} padding="$4">
953
+ <YStack gap="$2">
954
+ <Text fontSize="$6" fontWeight="bold">
955
+ All Field Types - Read Only
956
+ </Text>
957
+ <Text fontSize="$3" color="$gray11">
958
+ Testing all 17 DataTable field types in read-only mode
959
+ </Text>
960
+ </YStack>
961
+ <DataTable
962
+ data={allFieldsData}
963
+ columns={allFieldsColumns as DataTableColumn<Record<string, any>>[]}
964
+ readOnly={true}
965
+ showRowNumbers={true}
966
+ aria-label="All field types read-only table"
967
+ />
968
+ </YStack>
969
+ );
970
+ };
971
+
972
+ export const AllFieldTypesReadOnly: Story = {
973
+ render: () => <AllFieldTypesReadOnlyStory />,
974
+ };
975
+
976
+ // ============================================================================
977
+ // INDIVIDUAL FIELD TYPE STORIES
978
+ // ============================================================================
979
+
980
+ // Text Field Story
981
+ interface TextFieldRow {
982
+ id: number;
983
+ title: string;
984
+ description: string;
985
+ notes: string;
986
+ }
987
+
988
+ const textFieldData: TextFieldRow[] = [
989
+ { id: 1, title: "First Item", description: "Description for first item", notes: "Some notes" },
990
+ { id: 2, title: "Second Item", description: "Another description", notes: "More notes here" },
991
+ { id: 3, title: "Third Item", description: "Final description", notes: "Final notes" },
992
+ ];
993
+
994
+ const textFieldColumns: DataTableColumn<TextFieldRow>[] = [
995
+ { accessorKey: "title", header: "Title", field: "input" },
996
+ { accessorKey: "description", header: "Description", field: "input" },
997
+ { accessorKey: "notes", header: "Notes", field: "input" },
998
+ ];
999
+
1000
+ const TextFieldStory = () => {
1001
+ const [data, setData] = React.useState(textFieldData);
1002
+ return (
1003
+ <YStack gap="$4" flex={1} padding="$4">
1004
+ <Text fontSize="$5" fontWeight="bold">
1005
+ Text Field Type
1006
+ </Text>
1007
+ <DataTable
1008
+ data={data}
1009
+ columns={textFieldColumns as DataTableColumn<Record<string, any>>[]}
1010
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1011
+ showRowNumbers={true}
1012
+ aria-label="Text field type table"
1013
+ />
1014
+ </YStack>
1015
+ );
1016
+ };
1017
+
1018
+ export const TextField: Story = {
1019
+ render: () => <TextFieldStory />,
1020
+ };
1021
+
1022
+ export const TextFieldReadOnly: Story = {
1023
+ args: {
1024
+ data: textFieldData,
1025
+ columns: textFieldColumns as DataTableColumn<Record<string, any>>[],
1026
+ readOnly: true,
1027
+ showRowNumbers: true,
1028
+ },
1029
+ };
1030
+
1031
+ // Number Field Story
1032
+ interface NumberFieldRow {
1033
+ id: number;
1034
+ quantity: number;
1035
+ price: number;
1036
+ weight: number;
1037
+ }
1038
+
1039
+ const numberFieldData: NumberFieldRow[] = [
1040
+ { id: 1, quantity: 10, price: 99.99, weight: 2.5 },
1041
+ { id: 2, quantity: 25, price: 149.99, weight: 5.0 },
1042
+ { id: 3, quantity: 100, price: 9.99, weight: 0.1 },
1043
+ ];
1044
+
1045
+ const numberFieldColumns: DataTableColumn<NumberFieldRow>[] = [
1046
+ { accessorKey: "quantity", header: "Quantity", field: "stepper", fieldProps: { min: 0 } },
1047
+ {
1048
+ accessorKey: "price",
1049
+ header: "Price",
1050
+ field: "stepper",
1051
+ fieldProps: { min: 0, step: 0.01 },
1052
+ },
1053
+ { accessorKey: "weight", header: "Weight (kg)", field: "stepper", fieldProps: { min: 0 } },
1054
+ ];
1055
+
1056
+ const NumberFieldStory = () => {
1057
+ const [data, setData] = React.useState(numberFieldData);
1058
+ return (
1059
+ <YStack gap="$4" flex={1} padding="$4">
1060
+ <Text fontSize="$5" fontWeight="bold">
1061
+ Number Field Type
1062
+ </Text>
1063
+ <DataTable
1064
+ data={data}
1065
+ columns={numberFieldColumns as DataTableColumn<Record<string, any>>[]}
1066
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1067
+ showRowNumbers={true}
1068
+ aria-label="Number field type table"
1069
+ />
1070
+ </YStack>
1071
+ );
1072
+ };
1073
+
1074
+ export const NumberField: Story = {
1075
+ render: () => <NumberFieldStory />,
1076
+ };
1077
+
1078
+ export const NumberFieldReadOnly: Story = {
1079
+ args: {
1080
+ data: numberFieldData,
1081
+ columns: numberFieldColumns as DataTableColumn<Record<string, any>>[],
1082
+ readOnly: true,
1083
+ showRowNumbers: true,
1084
+ },
1085
+ };
1086
+
1087
+ // Select Field Story
1088
+ interface SelectFieldRow {
1089
+ id: number;
1090
+ category: string;
1091
+ priority: string;
1092
+ status: string;
1093
+ }
1094
+
1095
+ const selectFieldData: SelectFieldRow[] = [
1096
+ { id: 1, category: "electronics", priority: "high", status: "active" },
1097
+ { id: 2, category: "clothing", priority: "medium", status: "pending" },
1098
+ { id: 3, category: "food", priority: "low", status: "inactive" },
1099
+ ];
1100
+
1101
+ const selectFieldColumns: DataTableColumn<SelectFieldRow>[] = [
1102
+ {
1103
+ accessorKey: "category",
1104
+ header: "Category",
1105
+ field: "select",
1106
+ fieldProps: {
1107
+ options: [
1108
+ { label: "Electronics", value: "electronics" },
1109
+ { label: "Clothing", value: "clothing" },
1110
+ { label: "Food", value: "food" },
1111
+ ],
1112
+ },
1113
+ },
1114
+ {
1115
+ accessorKey: "priority",
1116
+ header: "Priority",
1117
+ field: "select",
1118
+ fieldProps: {
1119
+ options: [
1120
+ { label: "High", value: "high" },
1121
+ { label: "Medium", value: "medium" },
1122
+ { label: "Low", value: "low" },
1123
+ ],
1124
+ },
1125
+ },
1126
+ {
1127
+ accessorKey: "status",
1128
+ header: "Status",
1129
+ field: "select",
1130
+ fieldProps: {
1131
+ options: [
1132
+ { label: "Active", value: "active" },
1133
+ { label: "Pending", value: "pending" },
1134
+ { label: "Inactive", value: "inactive" },
1135
+ ],
1136
+ },
1137
+ },
1138
+ ];
1139
+
1140
+ const SelectFieldStory = () => {
1141
+ const [data, setData] = React.useState(selectFieldData);
1142
+ return (
1143
+ <YStack gap="$4" flex={1} padding="$4">
1144
+ <Text fontSize="$5" fontWeight="bold">
1145
+ Select Field Type
1146
+ </Text>
1147
+ <DataTable
1148
+ data={data}
1149
+ columns={selectFieldColumns as DataTableColumn<Record<string, any>>[]}
1150
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1151
+ showRowNumbers={true}
1152
+ aria-label="Select field type table"
1153
+ />
1154
+ </YStack>
1155
+ );
1156
+ };
1157
+
1158
+ export const SelectField: Story = {
1159
+ render: () => <SelectFieldStory />,
1160
+ };
1161
+
1162
+ export const SelectFieldReadOnly: Story = {
1163
+ args: {
1164
+ data: selectFieldData,
1165
+ columns: selectFieldColumns as DataTableColumn<Record<string, any>>[],
1166
+ readOnly: true,
1167
+ showRowNumbers: true,
1168
+ },
1169
+ };
1170
+
1171
+ // Checkbox Field Story
1172
+ interface CheckboxFieldRow {
1173
+ id: number;
1174
+ isActive: boolean;
1175
+ isVerified: boolean;
1176
+ hasSubscription: boolean;
1177
+ }
1178
+
1179
+ const checkboxFieldData: CheckboxFieldRow[] = [
1180
+ { id: 1, isActive: true, isVerified: true, hasSubscription: false },
1181
+ { id: 2, isActive: false, isVerified: true, hasSubscription: true },
1182
+ { id: 3, isActive: true, isVerified: false, hasSubscription: true },
1183
+ ];
1184
+
1185
+ const checkboxFieldColumns: DataTableColumn<CheckboxFieldRow>[] = [
1186
+ { accessorKey: "isActive", header: "Active", field: "checkbox" },
1187
+ { accessorKey: "isVerified", header: "Verified", field: "checkbox" },
1188
+ { accessorKey: "hasSubscription", header: "Subscription", field: "checkbox" },
1189
+ ];
1190
+
1191
+ const CheckboxFieldStory = () => {
1192
+ const [data, setData] = React.useState(checkboxFieldData);
1193
+ return (
1194
+ <YStack gap="$4" flex={1} padding="$4">
1195
+ <Text fontSize="$5" fontWeight="bold">
1196
+ Checkbox Field Type
1197
+ </Text>
1198
+ <DataTable
1199
+ data={data}
1200
+ columns={checkboxFieldColumns as DataTableColumn<Record<string, any>>[]}
1201
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1202
+ showRowNumbers={true}
1203
+ aria-label="Checkbox field type table"
1204
+ />
1205
+ </YStack>
1206
+ );
1207
+ };
1208
+
1209
+ export const CheckboxField: Story = {
1210
+ render: () => <CheckboxFieldStory />,
1211
+ };
1212
+
1213
+ export const CheckboxFieldReadOnly: Story = {
1214
+ args: {
1215
+ data: checkboxFieldData,
1216
+ columns: checkboxFieldColumns as DataTableColumn<Record<string, any>>[],
1217
+ readOnly: true,
1218
+ showRowNumbers: true,
1219
+ },
1220
+ };
1221
+
1222
+ // Switch Field Story
1223
+ interface SwitchFieldRow {
1224
+ id: number;
1225
+ enabled: boolean;
1226
+ notifications: boolean;
1227
+ darkMode: boolean;
1228
+ }
1229
+
1230
+ const switchFieldData: SwitchFieldRow[] = [
1231
+ { id: 1, enabled: true, notifications: false, darkMode: true },
1232
+ { id: 2, enabled: false, notifications: true, darkMode: false },
1233
+ { id: 3, enabled: true, notifications: true, darkMode: true },
1234
+ ];
1235
+
1236
+ const switchFieldColumns: DataTableColumn<SwitchFieldRow>[] = [
1237
+ { accessorKey: "enabled", header: "Enabled", field: "switch" },
1238
+ { accessorKey: "notifications", header: "Notifications", field: "switch" },
1239
+ { accessorKey: "darkMode", header: "Dark Mode", field: "switch" },
1240
+ ];
1241
+
1242
+ const SwitchFieldStory = () => {
1243
+ const [data, setData] = React.useState(switchFieldData);
1244
+ return (
1245
+ <YStack gap="$4" flex={1} padding="$4">
1246
+ <Text fontSize="$5" fontWeight="bold">
1247
+ Switch Field Type
1248
+ </Text>
1249
+ <DataTable
1250
+ data={data}
1251
+ columns={switchFieldColumns as DataTableColumn<Record<string, any>>[]}
1252
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1253
+ showRowNumbers={true}
1254
+ aria-label="Switch field type table"
1255
+ />
1256
+ </YStack>
1257
+ );
1258
+ };
1259
+
1260
+ export const SwitchField: Story = {
1261
+ render: () => <SwitchFieldStory />,
1262
+ };
1263
+
1264
+ export const SwitchFieldReadOnly: Story = {
1265
+ args: {
1266
+ data: switchFieldData,
1267
+ columns: switchFieldColumns as DataTableColumn<Record<string, any>>[],
1268
+ readOnly: true,
1269
+ showRowNumbers: true,
1270
+ },
1271
+ };
1272
+
1273
+ // Date/Time Field Story
1274
+ interface DateTimeFieldRow {
1275
+ id: number;
1276
+ date: string;
1277
+ datetime: string;
1278
+ time: string;
1279
+ }
1280
+
1281
+ const dateTimeFieldData: DateTimeFieldRow[] = [
1282
+ { id: 1, date: "2024-03-15", datetime: "2024-03-15 14:30", time: "14:30" },
1283
+ { id: 2, date: "2024-06-20", datetime: "2024-06-20 09:00", time: "09:00" },
1284
+ { id: 3, date: "2024-12-25", datetime: "2024-12-25 00:00", time: "00:00" },
1285
+ ];
1286
+
1287
+ const dateTimeFieldColumns: DataTableColumn<DateTimeFieldRow>[] = [
1288
+ { accessorKey: "date", header: "Date", field: "datepicker" },
1289
+ { accessorKey: "datetime", header: "DateTime", field: "datetimepicker" },
1290
+ { accessorKey: "time", header: "Time", field: "timepicker" },
1291
+ ];
1292
+
1293
+ const DateTimeFieldStory = () => {
1294
+ const [data, setData] = React.useState(dateTimeFieldData);
1295
+ return (
1296
+ <YStack gap="$4" flex={1} padding="$4">
1297
+ <Text fontSize="$5" fontWeight="bold">
1298
+ Date/Time Field Types
1299
+ </Text>
1300
+ <DataTable
1301
+ data={data}
1302
+ columns={dateTimeFieldColumns as DataTableColumn<Record<string, any>>[]}
1303
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1304
+ showRowNumbers={true}
1305
+ aria-label="Date time field types table"
1306
+ />
1307
+ </YStack>
1308
+ );
1309
+ };
1310
+
1311
+ export const DateTimeField: Story = {
1312
+ render: () => <DateTimeFieldStory />,
1313
+ };
1314
+
1315
+ export const DateTimeFieldReadOnly: Story = {
1316
+ args: {
1317
+ data: dateTimeFieldData,
1318
+ columns: dateTimeFieldColumns as DataTableColumn<Record<string, any>>[],
1319
+ readOnly: true,
1320
+ showRowNumbers: true,
1321
+ },
1322
+ };
1323
+
1324
+ // Duration Field Story
1325
+ interface DurationFieldRow {
1326
+ id: number;
1327
+ taskDuration: number;
1328
+ breakTime: number;
1329
+ totalTime: number;
1330
+ }
1331
+
1332
+ const durationFieldData: DurationFieldRow[] = [
1333
+ { id: 1, taskDuration: 3600, breakTime: 900, totalTime: 4500 },
1334
+ { id: 2, taskDuration: 7200, breakTime: 1800, totalTime: 9000 },
1335
+ { id: 3, taskDuration: 1800, breakTime: 300, totalTime: 2100 },
1336
+ ];
1337
+
1338
+ const durationFieldColumns: DataTableColumn<DurationFieldRow>[] = [
1339
+ { accessorKey: "taskDuration", header: "Task Duration (s)", field: "duration" },
1340
+ { accessorKey: "breakTime", header: "Break Time (s)", field: "duration" },
1341
+ { accessorKey: "totalTime", header: "Total Time (s)", field: "duration" },
1342
+ ];
1343
+
1344
+ const DurationFieldStory = () => {
1345
+ const [data, setData] = React.useState(durationFieldData);
1346
+ return (
1347
+ <YStack gap="$4" flex={1} padding="$4">
1348
+ <Text fontSize="$5" fontWeight="bold">
1349
+ Duration Field Type
1350
+ </Text>
1351
+ <DataTable
1352
+ data={data}
1353
+ columns={durationFieldColumns as DataTableColumn<Record<string, any>>[]}
1354
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1355
+ showRowNumbers={true}
1356
+ aria-label="Duration field type table"
1357
+ />
1358
+ </YStack>
1359
+ );
1360
+ };
1361
+
1362
+ export const DurationField: Story = {
1363
+ render: () => <DurationFieldStory />,
1364
+ };
1365
+
1366
+ export const DurationFieldReadOnly: Story = {
1367
+ args: {
1368
+ data: durationFieldData,
1369
+ columns: durationFieldColumns as DataTableColumn<Record<string, any>>[],
1370
+ readOnly: true,
1371
+ showRowNumbers: true,
1372
+ },
1373
+ };
1374
+
1375
+ // Color Field Story
1376
+ interface ColorFieldRow {
1377
+ id: number;
1378
+ primaryColor: string;
1379
+ secondaryColor: string;
1380
+ accentColor: string;
1381
+ }
1382
+
1383
+ const colorFieldData: ColorFieldRow[] = [
1384
+ { id: 1, primaryColor: "#FF5733", secondaryColor: "#33FF57", accentColor: "#3357FF" },
1385
+ { id: 2, primaryColor: "#E91E63", secondaryColor: "#9C27B0", accentColor: "#673AB7" },
1386
+ { id: 3, primaryColor: "#00BCD4", secondaryColor: "#009688", accentColor: "#4CAF50" },
1387
+ ];
1388
+
1389
+ const colorFieldColumns: DataTableColumn<ColorFieldRow>[] = [
1390
+ { accessorKey: "primaryColor", header: "Primary Color", field: "colorpicker" },
1391
+ { accessorKey: "secondaryColor", header: "Secondary Color", field: "colorpicker" },
1392
+ { accessorKey: "accentColor", header: "Accent Color", field: "colorpicker" },
1393
+ ];
1394
+
1395
+ const ColorFieldStory = () => {
1396
+ const [data, setData] = React.useState(colorFieldData);
1397
+ return (
1398
+ <YStack gap="$4" flex={1} padding="$4">
1399
+ <Text fontSize="$5" fontWeight="bold">
1400
+ Color Field Type
1401
+ </Text>
1402
+ <DataTable
1403
+ data={data}
1404
+ columns={colorFieldColumns as DataTableColumn<Record<string, any>>[]}
1405
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1406
+ showRowNumbers={true}
1407
+ aria-label="Color field type table"
1408
+ />
1409
+ </YStack>
1410
+ );
1411
+ };
1412
+
1413
+ export const ColorField: Story = {
1414
+ render: () => <ColorFieldStory />,
1415
+ };
1416
+
1417
+ export const ColorFieldReadOnly: Story = {
1418
+ args: {
1419
+ data: colorFieldData,
1420
+ columns: colorFieldColumns as DataTableColumn<Record<string, any>>[],
1421
+ readOnly: true,
1422
+ showRowNumbers: true,
1423
+ },
1424
+ };
1425
+
1426
+ // Rating Field Story
1427
+ interface RatingFieldRow {
1428
+ id: number;
1429
+ productRating: number;
1430
+ serviceRating: number;
1431
+ overallRating: number;
1432
+ }
1433
+
1434
+ const ratingFieldData: RatingFieldRow[] = [
1435
+ { id: 1, productRating: 5, serviceRating: 4, overallRating: 5 },
1436
+ { id: 2, productRating: 3, serviceRating: 5, overallRating: 4 },
1437
+ { id: 3, productRating: 4, serviceRating: 3, overallRating: 3 },
1438
+ ];
1439
+
1440
+ const ratingFieldColumns: DataTableColumn<RatingFieldRow>[] = [
1441
+ { accessorKey: "productRating", header: "Product", field: "rating" },
1442
+ { accessorKey: "serviceRating", header: "Service", field: "rating" },
1443
+ { accessorKey: "overallRating", header: "Overall", field: "rating" },
1444
+ ];
1445
+
1446
+ const RatingFieldStory = () => {
1447
+ const [data, setData] = React.useState(ratingFieldData);
1448
+ return (
1449
+ <YStack gap="$4" flex={1} padding="$4">
1450
+ <Text fontSize="$5" fontWeight="bold">
1451
+ Rating Field Type
1452
+ </Text>
1453
+ <DataTable
1454
+ data={data}
1455
+ columns={ratingFieldColumns as DataTableColumn<Record<string, any>>[]}
1456
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1457
+ showRowNumbers={true}
1458
+ aria-label="Rating field type table"
1459
+ />
1460
+ </YStack>
1461
+ );
1462
+ };
1463
+
1464
+ export const RatingField: Story = {
1465
+ render: () => <RatingFieldStory />,
1466
+ };
1467
+
1468
+ export const RatingFieldReadOnly: Story = {
1469
+ args: {
1470
+ data: ratingFieldData,
1471
+ columns: ratingFieldColumns as DataTableColumn<Record<string, any>>[],
1472
+ readOnly: true,
1473
+ showRowNumbers: true,
1474
+ },
1475
+ };
1476
+
1477
+ // Phone Field Story
1478
+ interface PhoneFieldRow {
1479
+ id: number;
1480
+ mobile: string;
1481
+ work: string;
1482
+ home: string;
1483
+ }
1484
+
1485
+ const phoneFieldData: PhoneFieldRow[] = [
1486
+ { id: 1, mobile: "+1234567890", work: "+0987654321", home: "+1111111111" },
1487
+ { id: 2, mobile: "+4455667788", work: "+9988776655", home: "+2233445566" },
1488
+ { id: 3, mobile: "+1122334455", work: "+6677889900", home: "+3344556677" },
1489
+ ];
1490
+
1491
+ const phoneFieldColumns: DataTableColumn<PhoneFieldRow>[] = [
1492
+ { accessorKey: "mobile", header: "Mobile", field: "phoneinput" },
1493
+ { accessorKey: "work", header: "Work", field: "phoneinput" },
1494
+ { accessorKey: "home", header: "Home", field: "phoneinput" },
1495
+ ];
1496
+
1497
+ const PhoneFieldStory = () => {
1498
+ const [data, setData] = React.useState(phoneFieldData);
1499
+ return (
1500
+ <YStack gap="$4" flex={1} padding="$4">
1501
+ <Text fontSize="$5" fontWeight="bold">
1502
+ Phone Field Type
1503
+ </Text>
1504
+ <DataTable
1505
+ data={data}
1506
+ columns={phoneFieldColumns as DataTableColumn<Record<string, any>>[]}
1507
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1508
+ showRowNumbers={true}
1509
+ aria-label="Phone field type table"
1510
+ />
1511
+ </YStack>
1512
+ );
1513
+ };
1514
+
1515
+ export const PhoneField: Story = {
1516
+ render: () => <PhoneFieldStory />,
1517
+ };
1518
+
1519
+ export const PhoneFieldReadOnly: Story = {
1520
+ args: {
1521
+ data: phoneFieldData,
1522
+ columns: phoneFieldColumns as DataTableColumn<Record<string, any>>[],
1523
+ readOnly: true,
1524
+ showRowNumbers: true,
1525
+ },
1526
+ };
1527
+
1528
+ // Currency Field Story
1529
+ interface CurrencyFieldRow {
1530
+ id: number;
1531
+ priceUSD: number;
1532
+ priceEUR: number;
1533
+ priceGBP: number;
1534
+ }
1535
+
1536
+ const currencyFieldData: CurrencyFieldRow[] = [
1537
+ { id: 1, priceUSD: 99.99, priceEUR: 89.99, priceGBP: 79.99 },
1538
+ { id: 2, priceUSD: 199.5, priceEUR: 179.5, priceGBP: 159.5 },
1539
+ { id: 3, priceUSD: 49.0, priceEUR: 44.0, priceGBP: 39.0 },
1540
+ ];
1541
+
1542
+ const currencyFieldColumns: DataTableColumn<CurrencyFieldRow>[] = [
1543
+ {
1544
+ accessorKey: "priceUSD",
1545
+ header: "Price (USD)",
1546
+ field: "stepper",
1547
+ fieldProps: { currency: "$" },
1548
+ },
1549
+ {
1550
+ accessorKey: "priceEUR",
1551
+ header: "Price (EUR)",
1552
+ field: "stepper",
1553
+ fieldProps: { currency: "€" },
1554
+ },
1555
+ {
1556
+ accessorKey: "priceGBP",
1557
+ header: "Price (GBP)",
1558
+ field: "stepper",
1559
+ fieldProps: { currency: "£" },
1560
+ },
1561
+ ];
1562
+
1563
+ const CurrencyFieldStory = () => {
1564
+ const [data, setData] = React.useState(currencyFieldData);
1565
+ return (
1566
+ <YStack gap="$4" flex={1} padding="$4">
1567
+ <Text fontSize="$5" fontWeight="bold">
1568
+ Currency Field Type
1569
+ </Text>
1570
+ <DataTable
1571
+ data={data}
1572
+ columns={currencyFieldColumns as DataTableColumn<Record<string, any>>[]}
1573
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1574
+ showRowNumbers={true}
1575
+ aria-label="Currency field type table"
1576
+ />
1577
+ </YStack>
1578
+ );
1579
+ };
1580
+
1581
+ export const CurrencyField: Story = {
1582
+ render: () => <CurrencyFieldStory />,
1583
+ };
1584
+
1585
+ export const CurrencyFieldReadOnly: Story = {
1586
+ args: {
1587
+ data: currencyFieldData,
1588
+ columns: currencyFieldColumns as DataTableColumn<Record<string, any>>[],
1589
+ readOnly: true,
1590
+ showRowNumbers: true,
1591
+ },
1592
+ };
1593
+
1594
+ // Percent Field Story
1595
+ interface PercentFieldRow {
1596
+ id: number;
1597
+ progress: number;
1598
+ completion: number;
1599
+ discount: number;
1600
+ }
1601
+
1602
+ const percentFieldData: PercentFieldRow[] = [
1603
+ { id: 1, progress: 75, completion: 100, discount: 10 },
1604
+ { id: 2, progress: 50, completion: 80, discount: 25 },
1605
+ { id: 3, progress: 25, completion: 60, discount: 5 },
1606
+ ];
1607
+
1608
+ const percentFieldColumns: DataTableColumn<PercentFieldRow>[] = [
1609
+ { accessorKey: "progress", header: "Progress", field: "stepper" },
1610
+ { accessorKey: "completion", header: "Completion", field: "stepper" },
1611
+ { accessorKey: "discount", header: "Discount", field: "stepper" },
1612
+ ];
1613
+
1614
+ const PercentFieldStory = () => {
1615
+ const [data, setData] = React.useState(percentFieldData);
1616
+ return (
1617
+ <YStack gap="$4" flex={1} padding="$4">
1618
+ <Text fontSize="$5" fontWeight="bold">
1619
+ Percent Field Type
1620
+ </Text>
1621
+ <DataTable
1622
+ data={data}
1623
+ columns={percentFieldColumns as DataTableColumn<Record<string, any>>[]}
1624
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1625
+ showRowNumbers={true}
1626
+ aria-label="Percent field type table"
1627
+ />
1628
+ </YStack>
1629
+ );
1630
+ };
1631
+
1632
+ export const PercentField: Story = {
1633
+ render: () => <PercentFieldStory />,
1634
+ };
1635
+
1636
+ export const PercentFieldReadOnly: Story = {
1637
+ args: {
1638
+ data: percentFieldData,
1639
+ columns: percentFieldColumns as DataTableColumn<Record<string, any>>[],
1640
+ readOnly: true,
1641
+ showRowNumbers: true,
1642
+ },
1643
+ };
1644
+
1645
+ // Combobox Field Story
1646
+ interface ComboboxFieldRow {
1647
+ id: number;
1648
+ country: string;
1649
+ city: string;
1650
+ language: string;
1651
+ }
1652
+
1653
+ const countryOptions = [
1654
+ { label: "United States", value: "us" },
1655
+ { label: "United Kingdom", value: "uk" },
1656
+ { label: "Germany", value: "de" },
1657
+ { label: "France", value: "fr" },
1658
+ { label: "Japan", value: "jp" },
1659
+ ];
1660
+
1661
+ const cityOptions = [
1662
+ { label: "New York", value: "nyc" },
1663
+ { label: "London", value: "london" },
1664
+ { label: "Berlin", value: "berlin" },
1665
+ { label: "Paris", value: "paris" },
1666
+ { label: "Tokyo", value: "tokyo" },
1667
+ ];
1668
+
1669
+ const languageOptions = [
1670
+ { label: "English", value: "en" },
1671
+ { label: "German", value: "de" },
1672
+ { label: "French", value: "fr" },
1673
+ { label: "Japanese", value: "ja" },
1674
+ { label: "Spanish", value: "es" },
1675
+ ];
1676
+
1677
+ const comboboxFieldData: ComboboxFieldRow[] = [
1678
+ { id: 1, country: "us", city: "nyc", language: "en" },
1679
+ { id: 2, country: "uk", city: "london", language: "en" },
1680
+ { id: 3, country: "de", city: "berlin", language: "de" },
1681
+ ];
1682
+
1683
+ const comboboxFieldColumns: DataTableColumn<ComboboxFieldRow>[] = [
1684
+ {
1685
+ accessorKey: "country",
1686
+ header: "Country",
1687
+ field: "combobox",
1688
+ fieldProps: { options: countryOptions },
1689
+ },
1690
+ {
1691
+ accessorKey: "city",
1692
+ header: "City",
1693
+ field: "combobox",
1694
+ fieldProps: { options: cityOptions },
1695
+ },
1696
+ {
1697
+ accessorKey: "language",
1698
+ header: "Language",
1699
+ field: "combobox",
1700
+ fieldProps: { options: languageOptions },
1701
+ },
1702
+ ];
1703
+
1704
+ const ComboboxFieldStory = () => {
1705
+ const [data, setData] = React.useState(comboboxFieldData);
1706
+ return (
1707
+ <YStack gap="$4" flex={1} padding="$4">
1708
+ <Text fontSize="$5" fontWeight="bold">
1709
+ Combobox Field Type
1710
+ </Text>
1711
+ <DataTable
1712
+ data={data}
1713
+ columns={comboboxFieldColumns as DataTableColumn<Record<string, any>>[]}
1714
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1715
+ showRowNumbers={true}
1716
+ aria-label="Combobox field type table"
1717
+ />
1718
+ </YStack>
1719
+ );
1720
+ };
1721
+
1722
+ export const ComboboxField: Story = {
1723
+ render: () => <ComboboxFieldStory />,
1724
+ };
1725
+
1726
+ export const ComboboxFieldReadOnly: Story = {
1727
+ args: {
1728
+ data: comboboxFieldData,
1729
+ columns: comboboxFieldColumns as DataTableColumn<Record<string, any>>[],
1730
+ readOnly: true,
1731
+ showRowNumbers: true,
1732
+ },
1733
+ };
1734
+
1735
+ // Link Field Story
1736
+ interface LinkFieldRow {
1737
+ id: number;
1738
+ customer: string;
1739
+ product: string;
1740
+ order: string;
1741
+ }
1742
+
1743
+ const customerOptions = [
1744
+ { label: "CUST-001: John Doe", value: "CUST-001" },
1745
+ { label: "CUST-002: Jane Smith", value: "CUST-002" },
1746
+ { label: "CUST-003: Bob Johnson", value: "CUST-003" },
1747
+ ];
1748
+
1749
+ const productOptions = [
1750
+ { label: "PROD-001: Widget A", value: "PROD-001" },
1751
+ { label: "PROD-002: Widget B", value: "PROD-002" },
1752
+ { label: "PROD-003: Widget C", value: "PROD-003" },
1753
+ ];
1754
+
1755
+ const orderOptions = [
1756
+ { label: "ORD-001", value: "ORD-001" },
1757
+ { label: "ORD-002", value: "ORD-002" },
1758
+ { label: "ORD-003", value: "ORD-003" },
1759
+ ];
1760
+
1761
+ const linkFieldData: LinkFieldRow[] = [
1762
+ { id: 1, customer: "CUST-001", product: "PROD-001", order: "ORD-001" },
1763
+ { id: 2, customer: "CUST-002", product: "PROD-002", order: "ORD-002" },
1764
+ { id: 3, customer: "CUST-003", product: "PROD-003", order: "ORD-003" },
1765
+ ];
1766
+
1767
+ const linkFieldColumns: DataTableColumn<LinkFieldRow>[] = [
1768
+ {
1769
+ accessorKey: "customer",
1770
+ header: "Customer",
1771
+ field: "combobox",
1772
+ fieldProps: { options: customerOptions },
1773
+ },
1774
+ {
1775
+ accessorKey: "product",
1776
+ header: "Product",
1777
+ field: "combobox",
1778
+ fieldProps: { options: productOptions },
1779
+ },
1780
+ {
1781
+ accessorKey: "order",
1782
+ header: "Order",
1783
+ field: "combobox",
1784
+ fieldProps: { options: orderOptions },
1785
+ },
1786
+ ];
1787
+
1788
+ const LinkFieldStory = () => {
1789
+ const [data, setData] = React.useState(linkFieldData);
1790
+ return (
1791
+ <YStack gap="$4" flex={1} padding="$4">
1792
+ <Text fontSize="$5" fontWeight="bold">
1793
+ Link Field Type
1794
+ </Text>
1795
+ <DataTable
1796
+ data={data}
1797
+ columns={linkFieldColumns as DataTableColumn<Record<string, any>>[]}
1798
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1799
+ showRowNumbers={true}
1800
+ aria-label="Link field type table"
1801
+ />
1802
+ </YStack>
1803
+ );
1804
+ };
1805
+
1806
+ export const LinkField: Story = {
1807
+ render: () => <LinkFieldStory />,
1808
+ };
1809
+
1810
+ export const LinkFieldReadOnly: Story = {
1811
+ args: {
1812
+ data: linkFieldData,
1813
+ columns: linkFieldColumns as DataTableColumn<Record<string, any>>[],
1814
+ readOnly: true,
1815
+ showRowNumbers: true,
1816
+ },
1817
+ };
1818
+
1819
+ // Custom Field Story
1820
+ interface CustomFieldRow {
1821
+ id: number;
1822
+ customRender: any;
1823
+ customBadge: string;
1824
+ }
1825
+
1826
+ const customFieldData: CustomFieldRow[] = [
1827
+ { id: 1, customRender: { name: "John", role: "Admin" }, customBadge: "premium" },
1828
+ { id: 2, customRender: { name: "Jane", role: "User" }, customBadge: "standard" },
1829
+ { id: 3, customRender: { name: "Bob", role: "Guest" }, customBadge: "trial" },
1830
+ ];
1831
+
1832
+ const customFieldColumns: DataTableColumn<CustomFieldRow>[] = [
1833
+ {
1834
+ accessorKey: "customRender",
1835
+ header: "Custom User",
1836
+ field: "custom",
1837
+ fieldProps: {
1838
+ render: (value: { name: string; role: string }) => (
1839
+ <View flexDirection="row" alignItems="center" gap="$2">
1840
+ <View backgroundColor="$blue5" padding="$1" borderRadius="$2">
1841
+ <Text fontSize="$2" color="$blue11">
1842
+ {value?.role || "N/A"}
1843
+ </Text>
1844
+ </View>
1845
+ <Text>{value?.name || "Unknown"}</Text>
1846
+ </View>
1847
+ ),
1848
+ },
1849
+ },
1850
+ {
1851
+ accessorKey: "customBadge",
1852
+ header: "Badge",
1853
+ field: "custom",
1854
+ fieldProps: {
1855
+ render: (value: string, _row: any, onChange: (v: string) => void) => (
1856
+ <View flexDirection="row" gap="$1">
1857
+ {["premium", "standard", "trial"].map((badge) => (
1858
+ <View
1859
+ key={badge}
1860
+ backgroundColor={value === badge ? "$green5" : "$gray3"}
1861
+ padding="$1"
1862
+ borderRadius="$2"
1863
+ onPress={() => onChange(badge)}
1864
+ cursor="pointer"
1865
+ >
1866
+ <Text fontSize="$2" color={value === badge ? "$green11" : "$gray11"}>
1867
+ {badge}
1868
+ </Text>
1869
+ </View>
1870
+ ))}
1871
+ </View>
1872
+ ),
1873
+ },
1874
+ },
1875
+ ];
1876
+
1877
+ const CustomFieldStory = () => {
1878
+ const [data, setData] = React.useState(customFieldData);
1879
+ return (
1880
+ <YStack gap="$4" flex={1} padding="$4">
1881
+ <Text fontSize="$5" fontWeight="bold">
1882
+ Custom Field Type
1883
+ </Text>
1884
+ <DataTable
1885
+ data={data}
1886
+ columns={customFieldColumns as DataTableColumn<Record<string, any>>[]}
1887
+ onDataChange={setData as (data: Record<string, any>[]) => void}
1888
+ showRowNumbers={true}
1889
+ aria-label="Custom field type table"
1890
+ />
1891
+ </YStack>
1892
+ );
1893
+ };
1894
+
1895
+ export const CustomField: Story = {
1896
+ render: () => <CustomFieldStory />,
1897
+ };
1898
+
1899
+ // ============================================================================
1900
+ // FILTERING & SEARCH STORIES
1901
+ // ============================================================================
1902
+
1903
+ // Search with callback story (for DB-connected tables)
1904
+ interface SearchableRow {
1905
+ id: number;
1906
+ name: string;
1907
+ email: string;
1908
+ department: string;
1909
+ }
1910
+
1911
+ const searchableData: SearchableRow[] = [
1912
+ { id: 1, name: "John Doe", email: "john@example.com", department: "Engineering" },
1913
+ { id: 2, name: "Jane Smith", email: "jane@example.com", department: "Marketing" },
1914
+ { id: 3, name: "Bob Johnson", email: "bob@example.com", department: "Sales" },
1915
+ { id: 4, name: "Alice Williams", email: "alice@example.com", department: "HR" },
1916
+ { id: 5, name: "Charlie Brown", email: "charlie@example.com", department: "Finance" },
1917
+ ];
1918
+
1919
+ const searchableColumns: DataTableColumn<SearchableRow>[] = [
1920
+ { accessorKey: "id", header: "ID", field: "stepper" },
1921
+ { accessorKey: "name", header: "Name", field: "input" },
1922
+ { accessorKey: "email", header: "Email", field: "input" },
1923
+ {
1924
+ accessorKey: "department",
1925
+ header: "Department",
1926
+ field: "select",
1927
+ fieldProps: {
1928
+ options: [
1929
+ { label: "Engineering", value: "Engineering" },
1930
+ { label: "Marketing", value: "Marketing" },
1931
+ { label: "Sales", value: "Sales" },
1932
+ { label: "HR", value: "HR" },
1933
+ { label: "Finance", value: "Finance" },
1934
+ ],
1935
+ },
1936
+ },
1937
+ ];
1938
+
1939
+ const GlobalSearchStory = () => {
1940
+ const [data] = React.useState(searchableData);
1941
+
1942
+ return (
1943
+ <YStack gap="$4" flex={1} padding="$4">
1944
+ <YStack gap="$2">
1945
+ <Text fontSize="$5" fontWeight="bold">
1946
+ Global Search
1947
+ </Text>
1948
+ <Text fontSize="$3" color="$gray11">
1949
+ Search across all visible columns
1950
+ </Text>
1951
+ </YStack>
1952
+ <DataTable
1953
+ data={data}
1954
+ columns={searchableColumns as DataTableColumn<Record<string, any>>[]}
1955
+ enableGlobalSearch={true}
1956
+ enableFiltering={true}
1957
+ enableSorting={true}
1958
+ showRowNumbers={true}
1959
+ aria-label="Global search table"
1960
+ />
1961
+ </YStack>
1962
+ );
1963
+ };
1964
+
1965
+ export const GlobalSearch: Story = {
1966
+ render: () => <GlobalSearchStory />,
1967
+ };
1968
+
1969
+ // Server-side search simulation
1970
+ const ServerSideSearchStory = () => {
1971
+ const [data, setData] = React.useState<SearchableRow[]>(searchableData);
1972
+ const [isLoading, setIsLoading] = React.useState(false);
1973
+
1974
+ // Simulate server-side search
1975
+ const handleSearch = React.useCallback((searchTerm: string) => {
1976
+ setIsLoading(true);
1977
+
1978
+ // Simulate API call delay
1979
+ setTimeout(() => {
1980
+ if (!searchTerm) {
1981
+ setData(searchableData);
1982
+ } else {
1983
+ const filtered = searchableData.filter(
1984
+ (row) =>
1985
+ row.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
1986
+ row.email.toLowerCase().includes(searchTerm.toLowerCase()) ||
1987
+ row.department.toLowerCase().includes(searchTerm.toLowerCase()),
1988
+ );
1989
+ setData(filtered);
1990
+ }
1991
+ setIsLoading(false);
1992
+ }, 500);
1993
+ }, []);
1994
+
1995
+ return (
1996
+ <YStack gap="$4" flex={1} padding="$4">
1997
+ <YStack gap="$2">
1998
+ <Text fontSize="$5" fontWeight="bold">
1999
+ Server-Side Search (Simulated)
2000
+ </Text>
2001
+ <Text fontSize="$3" color="$gray11">
2002
+ Search triggers server callback with debouncing
2003
+ </Text>
2004
+ </YStack>
2005
+ <DataTable
2006
+ data={data}
2007
+ columns={searchableColumns as DataTableColumn<Record<string, any>>[]}
2008
+ enableGlobalSearch={true}
2009
+ manualFiltering={true}
2010
+ renderToolbar={(props) => (
2011
+ <DataTableToolbar
2012
+ {...props}
2013
+ onGlobalFilterChange={(value) => {
2014
+ props.onGlobalFilterChange(value);
2015
+ handleSearch(value);
2016
+ }}
2017
+ />
2018
+ )}
2019
+ initialState={{
2020
+ isLoading,
2021
+ }}
2022
+ showRowNumbers={true}
2023
+ aria-label="Server-side search table"
2024
+ />
2025
+ </YStack>
2026
+ );
2027
+ };
2028
+
2029
+ export const ServerSideSearch: Story = {
2030
+ render: () => <ServerSideSearchStory />,
2031
+ };
2032
+
2033
+ // ============================================================================
2034
+ // ADVANCED FIELD TYPES STORIES
2035
+ // ============================================================================
2036
+
2037
+ // Textarea Field Story
2038
+ interface TextareaFieldRow {
2039
+ id: number;
2040
+ description: string;
2041
+ notes: string;
2042
+ comments: string;
2043
+ }
2044
+
2045
+ const textareaFieldData: TextareaFieldRow[] = [
2046
+ {
2047
+ id: 1,
2048
+ description: "This is a longer description that spans multiple lines.",
2049
+ notes: "Important notes here",
2050
+ comments: "User feedback",
2051
+ },
2052
+ {
2053
+ id: 2,
2054
+ description: "Another description with more details about the item.",
2055
+ notes: "Additional notes",
2056
+ comments: "More comments",
2057
+ },
2058
+ ];
2059
+
2060
+ const textareaFieldColumns: DataTableColumn<TextareaFieldRow>[] = [
2061
+ { accessorKey: "description", header: "Description", field: "textarea" },
2062
+ { accessorKey: "notes", header: "Notes", field: "textarea" },
2063
+ { accessorKey: "comments", header: "Comments", field: "textarea" },
2064
+ ];
2065
+
2066
+ const TextareaFieldStory = () => {
2067
+ const [data, setData] = React.useState(textareaFieldData);
2068
+ return (
2069
+ <YStack gap="$4" flex={1} padding="$4">
2070
+ <Text fontSize="$5" fontWeight="bold">
2071
+ Textarea Field Type
2072
+ </Text>
2073
+ <DataTable
2074
+ data={data}
2075
+ columns={textareaFieldColumns as DataTableColumn<Record<string, any>>[]}
2076
+ onDataChange={setData as (data: Record<string, any>[]) => void}
2077
+ showRowNumbers={true}
2078
+ aria-label="Textarea field type table"
2079
+ />
2080
+ </YStack>
2081
+ );
2082
+ };
2083
+
2084
+ export const TextareaField: Story = {
2085
+ render: () => <TextareaFieldStory />,
2086
+ };
2087
+
2088
+ export const TextareaFieldReadOnly: Story = {
2089
+ args: {
2090
+ data: textareaFieldData,
2091
+ columns: textareaFieldColumns as DataTableColumn<Record<string, any>>[],
2092
+ readOnly: true,
2093
+ showRowNumbers: true,
2094
+ },
2095
+ };
2096
+
2097
+ // Signature Field Story
2098
+ interface SignatureFieldRow {
2099
+ id: number;
2100
+ customerSignature: string | null;
2101
+ managerSignature: string | null;
2102
+ witnessSignature: string | null;
2103
+ }
2104
+
2105
+ const signatureFieldData: SignatureFieldRow[] = [
2106
+ {
2107
+ id: 1,
2108
+ customerSignature: "sig_data_1",
2109
+ managerSignature: null,
2110
+ witnessSignature: "sig_data_3",
2111
+ },
2112
+ { id: 2, customerSignature: null, managerSignature: "sig_data_2", witnessSignature: null },
2113
+ {
2114
+ id: 3,
2115
+ customerSignature: "sig_data_4",
2116
+ managerSignature: "sig_data_5",
2117
+ witnessSignature: "sig_data_6",
2118
+ },
2119
+ ];
2120
+
2121
+ const signatureFieldColumns: DataTableColumn<SignatureFieldRow>[] = [
2122
+ { accessorKey: "customerSignature", header: "Customer", field: "signature" },
2123
+ { accessorKey: "managerSignature", header: "Manager", field: "signature" },
2124
+ { accessorKey: "witnessSignature", header: "Witness", field: "signature" },
2125
+ ];
2126
+
2127
+ const SignatureFieldStory = () => {
2128
+ const [data, setData] = React.useState(signatureFieldData);
2129
+ return (
2130
+ <YStack gap="$4" flex={1} padding="$4">
2131
+ <Text fontSize="$5" fontWeight="bold">
2132
+ Signature Field Type
2133
+ </Text>
2134
+ <DataTable
2135
+ data={data}
2136
+ columns={signatureFieldColumns as DataTableColumn<Record<string, any>>[]}
2137
+ onDataChange={setData as (data: Record<string, any>[]) => void}
2138
+ showRowNumbers={true}
2139
+ aria-label="Signature field type table"
2140
+ />
2141
+ </YStack>
2142
+ );
2143
+ };
2144
+
2145
+ export const SignatureField: Story = {
2146
+ render: () => <SignatureFieldStory />,
2147
+ };
2148
+
2149
+ export const SignatureFieldReadOnly: Story = {
2150
+ args: {
2151
+ data: signatureFieldData,
2152
+ columns: signatureFieldColumns as DataTableColumn<Record<string, any>>[],
2153
+ readOnly: true,
2154
+ showRowNumbers: true,
2155
+ },
2156
+ };
2157
+
2158
+ // File Field Story
2159
+ interface FileFieldRow {
2160
+ id: number;
2161
+ document: string | null;
2162
+ attachment: string | null;
2163
+ report: string | null;
2164
+ }
2165
+
2166
+ const fileFieldData: FileFieldRow[] = [
2167
+ { id: 1, document: "report_2024.pdf", attachment: null, report: "analysis.docx" },
2168
+ { id: 2, document: null, attachment: "invoice.pdf", report: null },
2169
+ { id: 3, document: "contract.pdf", attachment: "receipt.jpg", report: "summary.xlsx" },
2170
+ ];
2171
+
2172
+ const fileFieldColumns: DataTableColumn<FileFieldRow>[] = [
2173
+ { accessorKey: "document", header: "Document", field: "fileupload" },
2174
+ { accessorKey: "attachment", header: "Attachment", field: "fileupload" },
2175
+ { accessorKey: "report", header: "Report", field: "fileupload" },
2176
+ ];
2177
+
2178
+ const FileFieldStory = () => {
2179
+ const [data, setData] = React.useState(fileFieldData);
2180
+ return (
2181
+ <YStack gap="$4" flex={1} padding="$4">
2182
+ <Text fontSize="$5" fontWeight="bold">
2183
+ File Field Type
2184
+ </Text>
2185
+ <DataTable
2186
+ data={data}
2187
+ columns={fileFieldColumns as DataTableColumn<Record<string, any>>[]}
2188
+ onDataChange={setData as (data: Record<string, any>[]) => void}
2189
+ showRowNumbers={true}
2190
+ aria-label="File field type table"
2191
+ />
2192
+ </YStack>
2193
+ );
2194
+ };
2195
+
2196
+ export const FileField: Story = {
2197
+ render: () => <FileFieldStory />,
2198
+ };
2199
+
2200
+ export const FileFieldReadOnly: Story = {
2201
+ args: {
2202
+ data: fileFieldData,
2203
+ columns: fileFieldColumns as DataTableColumn<Record<string, any>>[],
2204
+ readOnly: true,
2205
+ showRowNumbers: true,
2206
+ },
2207
+ };
2208
+
2209
+ // Image Field Story
2210
+ interface ImageFieldRow {
2211
+ id: number;
2212
+ avatar: string | null;
2213
+ productImage: string | null;
2214
+ thumbnail: string | null;
2215
+ }
2216
+
2217
+ const imageFieldData: ImageFieldRow[] = [
2218
+ { id: 1, avatar: "user1.jpg", productImage: "product1.png", thumbnail: null },
2219
+ { id: 2, avatar: null, productImage: "product2.png", thumbnail: "thumb2.jpg" },
2220
+ { id: 3, avatar: "user3.jpg", productImage: null, thumbnail: "thumb3.jpg" },
2221
+ ];
2222
+
2223
+ const imageFieldColumns: DataTableColumn<ImageFieldRow>[] = [
2224
+ { accessorKey: "avatar", header: "Avatar", field: "image" },
2225
+ { accessorKey: "productImage", header: "Product Image", field: "image" },
2226
+ { accessorKey: "thumbnail", header: "Thumbnail", field: "image" },
2227
+ ];
2228
+
2229
+ const ImageFieldStory = () => {
2230
+ const [data, setData] = React.useState(imageFieldData);
2231
+ return (
2232
+ <YStack gap="$4" flex={1} padding="$4">
2233
+ <Text fontSize="$5" fontWeight="bold">
2234
+ Image Field Type
2235
+ </Text>
2236
+ <DataTable
2237
+ data={data}
2238
+ columns={imageFieldColumns as DataTableColumn<Record<string, any>>[]}
2239
+ onDataChange={setData as (data: Record<string, any>[]) => void}
2240
+ showRowNumbers={true}
2241
+ aria-label="Image field type table"
2242
+ />
2243
+ </YStack>
2244
+ );
2245
+ };
2246
+
2247
+ export const ImageField: Story = {
2248
+ render: () => <ImageFieldStory />,
2249
+ };
2250
+
2251
+ export const ImageFieldReadOnly: Story = {
2252
+ args: {
2253
+ data: imageFieldData,
2254
+ columns: imageFieldColumns as DataTableColumn<Record<string, any>>[],
2255
+ readOnly: true,
2256
+ showRowNumbers: true,
2257
+ },
2258
+ };
2259
+
2260
+ // Geolocation Field Story
2261
+ interface GeolocationFieldRow {
2262
+ id: number;
2263
+ storeLocation: { lat: number; lng: number } | null;
2264
+ deliveryAddress: string | null;
2265
+ pickupPoint: { lat: number; lng: number } | null;
2266
+ }
2267
+
2268
+ const geolocationFieldData: GeolocationFieldRow[] = [
2269
+ {
2270
+ id: 1,
2271
+ storeLocation: { lat: 40.7128, lng: -74.006 },
2272
+ deliveryAddress: "123 Main St, NYC",
2273
+ pickupPoint: null,
2274
+ },
2275
+ {
2276
+ id: 2,
2277
+ storeLocation: null,
2278
+ deliveryAddress: null,
2279
+ pickupPoint: { lat: 34.0522, lng: -118.2437 },
2280
+ },
2281
+ {
2282
+ id: 3,
2283
+ storeLocation: { lat: 51.5074, lng: -0.1278 },
2284
+ deliveryAddress: "456 High St, London",
2285
+ pickupPoint: { lat: 48.8566, lng: 2.3522 },
2286
+ },
2287
+ ];
2288
+
2289
+ const geolocationFieldColumns: DataTableColumn<GeolocationFieldRow>[] = [
2290
+ { accessorKey: "storeLocation", header: "Store Location", field: "geolocation" },
2291
+ { accessorKey: "deliveryAddress", header: "Delivery Address", field: "geolocation" },
2292
+ { accessorKey: "pickupPoint", header: "Pickup Point", field: "geolocation" },
2293
+ ];
2294
+
2295
+ const GeolocationFieldStory = () => {
2296
+ const [data, setData] = React.useState(geolocationFieldData);
2297
+ return (
2298
+ <YStack gap="$4" flex={1} padding="$4">
2299
+ <Text fontSize="$5" fontWeight="bold">
2300
+ Geolocation Field Type
2301
+ </Text>
2302
+ <DataTable
2303
+ data={data}
2304
+ columns={geolocationFieldColumns as DataTableColumn<Record<string, any>>[]}
2305
+ onDataChange={setData as (data: Record<string, any>[]) => void}
2306
+ showRowNumbers={true}
2307
+ aria-label="Geolocation field type table"
2308
+ />
2309
+ </YStack>
2310
+ );
2311
+ };
2312
+
2313
+ export const GeolocationField: Story = {
2314
+ render: () => <GeolocationFieldStory />,
2315
+ };
2316
+
2317
+ export const GeolocationFieldReadOnly: Story = {
2318
+ args: {
2319
+ data: geolocationFieldData,
2320
+ columns: geolocationFieldColumns as DataTableColumn<Record<string, any>>[],
2321
+ readOnly: true,
2322
+ showRowNumbers: true,
2323
+ },
2324
+ };
2325
+
2326
+ // Barcode Field Story
2327
+ interface BarcodeFieldRow {
2328
+ id: number;
2329
+ sku: string;
2330
+ upc: string;
2331
+ serialNumber: string;
2332
+ }
2333
+
2334
+ const barcodeFieldData: BarcodeFieldRow[] = [
2335
+ { id: 1, sku: "SKU-001234", upc: "012345678901", serialNumber: "SN-ABC123" },
2336
+ { id: 2, sku: "SKU-005678", upc: "098765432109", serialNumber: "SN-DEF456" },
2337
+ { id: 3, sku: "SKU-009012", upc: "111222333444", serialNumber: "SN-GHI789" },
2338
+ ];
2339
+
2340
+ const barcodeFieldColumns: DataTableColumn<BarcodeFieldRow>[] = [
2341
+ { accessorKey: "sku", header: "SKU", field: "barcode" },
2342
+ { accessorKey: "upc", header: "UPC", field: "barcode" },
2343
+ { accessorKey: "serialNumber", header: "Serial Number", field: "barcode" },
2344
+ ];
2345
+
2346
+ const BarcodeFieldStory = () => {
2347
+ const [data, setData] = React.useState(barcodeFieldData);
2348
+ return (
2349
+ <YStack gap="$4" flex={1} padding="$4">
2350
+ <Text fontSize="$5" fontWeight="bold">
2351
+ Barcode Field Type
2352
+ </Text>
2353
+ <DataTable
2354
+ data={data}
2355
+ columns={barcodeFieldColumns as DataTableColumn<Record<string, any>>[]}
2356
+ onDataChange={setData as (data: Record<string, any>[]) => void}
2357
+ showRowNumbers={true}
2358
+ aria-label="Barcode field type table"
2359
+ />
2360
+ </YStack>
2361
+ );
2362
+ };
2363
+
2364
+ export const BarcodeField: Story = {
2365
+ render: () => <BarcodeFieldStory />,
2366
+ };
2367
+
2368
+ export const BarcodeFieldReadOnly: Story = {
2369
+ args: {
2370
+ data: barcodeFieldData,
2371
+ columns: barcodeFieldColumns as DataTableColumn<Record<string, any>>[],
2372
+ readOnly: true,
2373
+ showRowNumbers: true,
2374
+ },
2375
+ };
2376
+
2377
+ // Slider Field Story
2378
+ interface SliderFieldRow {
2379
+ id: number;
2380
+ volume: number;
2381
+ brightness: number;
2382
+ opacity: number;
2383
+ }
2384
+
2385
+ const sliderFieldData: SliderFieldRow[] = [
2386
+ { id: 1, volume: 75, brightness: 100, opacity: 50 },
2387
+ { id: 2, volume: 30, brightness: 60, opacity: 80 },
2388
+ { id: 3, volume: 100, brightness: 25, opacity: 100 },
2389
+ ];
2390
+
2391
+ const sliderFieldColumns: DataTableColumn<SliderFieldRow>[] = [
2392
+ { accessorKey: "volume", header: "Volume", field: "slider", fieldProps: { max: 100 } },
2393
+ {
2394
+ accessorKey: "brightness",
2395
+ header: "Brightness",
2396
+ field: "slider",
2397
+ fieldProps: { max: 100 },
2398
+ },
2399
+ { accessorKey: "opacity", header: "Opacity", field: "slider", fieldProps: { max: 100 } },
2400
+ ];
2401
+
2402
+ const SliderFieldStory = () => {
2403
+ const [data, setData] = React.useState(sliderFieldData);
2404
+ return (
2405
+ <YStack gap="$4" flex={1} padding="$4">
2406
+ <Text fontSize="$5" fontWeight="bold">
2407
+ Slider Field Type
2408
+ </Text>
2409
+ <DataTable
2410
+ data={data}
2411
+ columns={sliderFieldColumns as DataTableColumn<Record<string, any>>[]}
2412
+ onDataChange={setData as (data: Record<string, any>[]) => void}
2413
+ showRowNumbers={true}
2414
+ aria-label="Slider field type table"
2415
+ />
2416
+ </YStack>
2417
+ );
2418
+ };
2419
+
2420
+ export const SliderField: Story = {
2421
+ render: () => <SliderFieldStory />,
2422
+ };
2423
+
2424
+ export const SliderFieldReadOnly: Story = {
2425
+ args: {
2426
+ data: sliderFieldData,
2427
+ columns: sliderFieldColumns as DataTableColumn<Record<string, any>>[],
2428
+ readOnly: true,
2429
+ showRowNumbers: true,
2430
+ },
2431
+ };
2432
+
2433
+ // Progress Field Story
2434
+ interface ProgressFieldRow {
2435
+ id: number;
2436
+ taskProgress: number;
2437
+ downloadProgress: number;
2438
+ completionRate: number;
2439
+ }
2440
+
2441
+ const progressFieldData: ProgressFieldRow[] = [
2442
+ { id: 1, taskProgress: 75, downloadProgress: 100, completionRate: 50 },
2443
+ { id: 2, taskProgress: 30, downloadProgress: 60, completionRate: 80 },
2444
+ { id: 3, taskProgress: 100, downloadProgress: 25, completionRate: 100 },
2445
+ ];
2446
+
2447
+ const progressFieldColumns: DataTableColumn<ProgressFieldRow>[] = [
2448
+ { accessorKey: "taskProgress", header: "Task Progress", field: "progress" },
2449
+ { accessorKey: "downloadProgress", header: "Download", field: "progress" },
2450
+ { accessorKey: "completionRate", header: "Completion", field: "progress" },
2451
+ ];
2452
+
2453
+ const ProgressFieldStory = () => {
2454
+ const [data, setData] = React.useState(progressFieldData);
2455
+ return (
2456
+ <YStack gap="$4" flex={1} padding="$4">
2457
+ <Text fontSize="$5" fontWeight="bold">
2458
+ Progress Field Type
2459
+ </Text>
2460
+ <DataTable
2461
+ data={data}
2462
+ columns={progressFieldColumns as DataTableColumn<Record<string, any>>[]}
2463
+ onDataChange={setData as (data: Record<string, any>[]) => void}
2464
+ showRowNumbers={true}
2465
+ aria-label="Progress field type table"
2466
+ />
2467
+ </YStack>
2468
+ );
2469
+ };
2470
+
2471
+ export const ProgressField: Story = {
2472
+ render: () => <ProgressFieldStory />,
2473
+ };
2474
+
2475
+ export const ProgressFieldReadOnly: Story = {
2476
+ args: {
2477
+ data: progressFieldData,
2478
+ columns: progressFieldColumns as DataTableColumn<Record<string, any>>[],
2479
+ readOnly: true,
2480
+ showRowNumbers: true,
2481
+ },
2482
+ };
2483
+
2484
+ // ============================================================================
2485
+ // COLUMN LAYOUT STORIES
2486
+ // ============================================================================
2487
+
2488
+ export const ColumnLayoutEqual: Story = {
2489
+ args: {
2490
+ data: sampleData,
2491
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
2492
+ columnLayout: "equal",
2493
+ enablePagination: true,
2494
+ },
2495
+ };
2496
+
2497
+ export const ColumnLayoutAuto: Story = {
2498
+ args: {
2499
+ data: sampleData,
2500
+ columns: basicColumns as DataTableColumn<Record<string, any>>[],
2501
+ columnLayout: "auto",
2502
+ enablePagination: true,
2503
+ },
2504
+ };
2505
+
2506
+ const ScrollLayoutStory = () => {
2507
+ const data = useMemo(() => generateUsers(20), []);
2508
+ return (
2509
+ <View padding="$4">
2510
+ <DataTable
2511
+ data={data}
2512
+ columns={columns}
2513
+ columnLayout="scroll"
2514
+ enablePagination={true}
2515
+ aria-label="Scroll layout table"
2516
+ />
2517
+ </View>
2518
+ );
2519
+ };
2520
+
2521
+ export const ColumnLayoutScroll: Story = {
2522
+ render: () => <ScrollLayoutStory />,
2523
+ };