@multiplatform.one/table 7.4.0 → 7.5.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 (353) hide show
  1. package/dist/cjs/components/ChildTable/index.cjs +12 -3
  2. package/dist/cjs/components/ChildTable/index.native.js +14 -3
  3. package/dist/cjs/components/ChildTable/index.native.js.map +1 -1
  4. package/dist/cjs/components/ColumnHeaderFilter/index.cjs +11 -13
  5. package/dist/cjs/components/ColumnHeaderFilter/index.native.js +11 -16
  6. package/dist/cjs/components/ColumnHeaderFilter/index.native.js.map +1 -1
  7. package/dist/cjs/components/DataTable/DataTableCardControls.cjs +7 -4
  8. package/dist/cjs/components/DataTable/DataTableCardControls.native.js +7 -4
  9. package/dist/cjs/components/DataTable/DataTableCardControls.native.js.map +1 -1
  10. package/dist/cjs/components/DataTable/DataTableDocumentList.cjs +10 -4
  11. package/dist/cjs/components/DataTable/DataTableDocumentList.native.js +10 -4
  12. package/dist/cjs/components/DataTable/DataTableDocumentList.native.js.map +1 -1
  13. package/dist/cjs/components/DataTable/DataTableMobileCards.cjs +6 -1
  14. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js +6 -1
  15. package/dist/cjs/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  16. package/dist/cjs/components/DataTable/DataTableRoot.cjs +55 -42
  17. package/dist/cjs/components/DataTable/DataTableRoot.native.js +55 -42
  18. package/dist/cjs/components/DataTable/DataTableRoot.native.js.map +1 -1
  19. package/dist/cjs/components/DataTable/DataTableVirtualized.cjs +5 -2
  20. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js +5 -2
  21. package/dist/cjs/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  22. package/dist/cjs/components/DataTable/dataTableChrome.cjs +59 -0
  23. package/dist/cjs/components/DataTable/dataTableChrome.native.js +62 -0
  24. package/dist/cjs/components/DataTable/dataTableChrome.native.js.map +1 -0
  25. package/dist/cjs/components/DataTable/index.native.js +34 -20
  26. package/dist/cjs/components/DataTable/index.native.js.map +1 -1
  27. package/dist/cjs/components/DataTableBulkActions/index.cjs +6 -4
  28. package/dist/cjs/components/DataTableBulkActions/index.native.js +6 -4
  29. package/dist/cjs/components/DataTableBulkActions/index.native.js.map +1 -1
  30. package/dist/cjs/components/DataTableCell/CellModalEditor.cjs +9 -31
  31. package/dist/cjs/components/DataTableCell/CellModalEditor.native.js +2 -5
  32. package/dist/cjs/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  33. package/dist/cjs/components/DataTableCell/CellOptionsEditor.cjs +0 -1
  34. package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js +0 -1
  35. package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  36. package/dist/cjs/components/DataTableColumnPinning/index.cjs +7 -4
  37. package/dist/cjs/components/DataTableColumnPinning/index.native.js +7 -4
  38. package/dist/cjs/components/DataTableColumnPinning/index.native.js.map +1 -1
  39. package/dist/cjs/components/DataTableDateFilter/index.cjs +24 -22
  40. package/dist/cjs/components/DataTableDateFilter/index.native.js +24 -22
  41. package/dist/cjs/components/DataTableDateFilter/index.native.js.map +1 -1
  42. package/dist/cjs/components/DataTableExport/index.cjs +42 -28
  43. package/dist/cjs/components/DataTableExport/index.native.js +42 -28
  44. package/dist/cjs/components/DataTableExport/index.native.js.map +1 -1
  45. package/dist/cjs/components/DataTableFacetMenu/index.cjs +10 -4
  46. package/dist/cjs/components/DataTableFacetMenu/index.native.js +10 -4
  47. package/dist/cjs/components/DataTableFacetMenu/index.native.js.map +1 -1
  48. package/dist/cjs/components/DataTableFilters/index.cjs +3 -3
  49. package/dist/cjs/components/DataTableFilters/index.native.js +3 -3
  50. package/dist/cjs/components/DataTableFilters/index.native.js.map +1 -1
  51. package/dist/cjs/components/DataTableGrouping/index.cjs +46 -41
  52. package/dist/cjs/components/DataTableGrouping/index.native.js +46 -41
  53. package/dist/cjs/components/DataTableGrouping/index.native.js.map +1 -1
  54. package/dist/cjs/components/DataTablePagination/index.cjs +4 -2
  55. package/dist/cjs/components/DataTablePagination/index.native.js +4 -2
  56. package/dist/cjs/components/DataTablePagination/index.native.js.map +1 -1
  57. package/dist/cjs/components/DataTableSearch/index.cjs +3 -3
  58. package/dist/cjs/components/DataTableSearch/index.native.js +3 -3
  59. package/dist/cjs/components/DataTableToolbar/index.cjs +19 -13
  60. package/dist/cjs/components/DataTableToolbar/index.native.js +19 -15
  61. package/dist/cjs/components/DataTableToolbar/index.native.js.map +1 -1
  62. package/dist/cjs/components/DataTableViewOptions/index.cjs +36 -35
  63. package/dist/cjs/components/DataTableViewOptions/index.native.js +36 -35
  64. package/dist/cjs/components/DataTableViewOptions/index.native.js.map +1 -1
  65. package/dist/cjs/components/KnobDialog.cjs +1 -3
  66. package/dist/cjs/components/KnobDialog.native.js +1 -3
  67. package/dist/cjs/components/KnobDialog.native.js.map +1 -1
  68. package/dist/cjs/components/SimpleTable/index.cjs +159 -117
  69. package/dist/cjs/components/SimpleTable/index.native.js +168 -128
  70. package/dist/cjs/components/SimpleTable/index.native.js.map +1 -1
  71. package/dist/cjs/components/TableInput/index.cjs +159 -90
  72. package/dist/cjs/components/TableInput/index.native.js +3 -3
  73. package/dist/cjs/components/TableInput/index.native.js.map +1 -1
  74. package/dist/cjs/utils/chromeIcons.cjs +31 -0
  75. package/dist/cjs/utils/chromeIcons.native.js +34 -0
  76. package/dist/cjs/utils/chromeIcons.native.js.map +1 -0
  77. package/dist/esm/components/ChildTable/index.mjs +12 -3
  78. package/dist/esm/components/ChildTable/index.mjs.map +1 -1
  79. package/dist/esm/components/ChildTable/index.native.js +14 -3
  80. package/dist/esm/components/ChildTable/index.native.js.map +1 -1
  81. package/dist/esm/components/ColumnHeaderFilter/index.mjs +11 -13
  82. package/dist/esm/components/ColumnHeaderFilter/index.mjs.map +1 -1
  83. package/dist/esm/components/ColumnHeaderFilter/index.native.js +11 -16
  84. package/dist/esm/components/ColumnHeaderFilter/index.native.js.map +1 -1
  85. package/dist/esm/components/DataTable/DataTableCardControls.mjs +7 -4
  86. package/dist/esm/components/DataTable/DataTableCardControls.mjs.map +1 -1
  87. package/dist/esm/components/DataTable/DataTableCardControls.native.js +7 -4
  88. package/dist/esm/components/DataTable/DataTableCardControls.native.js.map +1 -1
  89. package/dist/esm/components/DataTable/DataTableDocumentList.mjs +10 -4
  90. package/dist/esm/components/DataTable/DataTableDocumentList.mjs.map +1 -1
  91. package/dist/esm/components/DataTable/DataTableDocumentList.native.js +10 -4
  92. package/dist/esm/components/DataTable/DataTableDocumentList.native.js.map +1 -1
  93. package/dist/esm/components/DataTable/DataTableMobileCards.mjs +6 -1
  94. package/dist/esm/components/DataTable/DataTableMobileCards.mjs.map +1 -1
  95. package/dist/esm/components/DataTable/DataTableMobileCards.native.js +6 -1
  96. package/dist/esm/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  97. package/dist/esm/components/DataTable/DataTableRoot.mjs +55 -42
  98. package/dist/esm/components/DataTable/DataTableRoot.mjs.map +1 -1
  99. package/dist/esm/components/DataTable/DataTableRoot.native.js +55 -42
  100. package/dist/esm/components/DataTable/DataTableRoot.native.js.map +1 -1
  101. package/dist/esm/components/DataTable/DataTableVirtualized.mjs +5 -2
  102. package/dist/esm/components/DataTable/DataTableVirtualized.mjs.map +1 -1
  103. package/dist/esm/components/DataTable/DataTableVirtualized.native.js +5 -2
  104. package/dist/esm/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  105. package/dist/esm/components/DataTable/dataTableChrome.mjs +32 -0
  106. package/dist/esm/components/DataTable/dataTableChrome.mjs.map +1 -0
  107. package/dist/esm/components/DataTable/dataTableChrome.native.js +32 -0
  108. package/dist/esm/components/DataTable/dataTableChrome.native.js.map +1 -0
  109. package/dist/esm/components/DataTable/index.native.js +34 -20
  110. package/dist/esm/components/DataTable/index.native.js.map +1 -1
  111. package/dist/esm/components/DataTableBulkActions/index.mjs +6 -4
  112. package/dist/esm/components/DataTableBulkActions/index.mjs.map +1 -1
  113. package/dist/esm/components/DataTableBulkActions/index.native.js +6 -4
  114. package/dist/esm/components/DataTableBulkActions/index.native.js.map +1 -1
  115. package/dist/esm/components/DataTableCell/CellModalEditor.mjs +11 -33
  116. package/dist/esm/components/DataTableCell/CellModalEditor.mjs.map +1 -1
  117. package/dist/esm/components/DataTableCell/CellModalEditor.native.js +2 -5
  118. package/dist/esm/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  119. package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs +0 -1
  120. package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs.map +1 -1
  121. package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js +0 -1
  122. package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  123. package/dist/esm/components/DataTableColumnPinning/index.mjs +7 -4
  124. package/dist/esm/components/DataTableColumnPinning/index.mjs.map +1 -1
  125. package/dist/esm/components/DataTableColumnPinning/index.native.js +7 -4
  126. package/dist/esm/components/DataTableColumnPinning/index.native.js.map +1 -1
  127. package/dist/esm/components/DataTableDateFilter/index.mjs +24 -22
  128. package/dist/esm/components/DataTableDateFilter/index.mjs.map +1 -1
  129. package/dist/esm/components/DataTableDateFilter/index.native.js +24 -22
  130. package/dist/esm/components/DataTableDateFilter/index.native.js.map +1 -1
  131. package/dist/esm/components/DataTableExport/index.mjs +43 -29
  132. package/dist/esm/components/DataTableExport/index.mjs.map +1 -1
  133. package/dist/esm/components/DataTableExport/index.native.js +43 -29
  134. package/dist/esm/components/DataTableExport/index.native.js.map +1 -1
  135. package/dist/esm/components/DataTableFacetMenu/index.mjs +10 -4
  136. package/dist/esm/components/DataTableFacetMenu/index.mjs.map +1 -1
  137. package/dist/esm/components/DataTableFacetMenu/index.native.js +10 -4
  138. package/dist/esm/components/DataTableFacetMenu/index.native.js.map +1 -1
  139. package/dist/esm/components/DataTableFilters/index.mjs +3 -3
  140. package/dist/esm/components/DataTableFilters/index.mjs.map +1 -1
  141. package/dist/esm/components/DataTableFilters/index.native.js +3 -3
  142. package/dist/esm/components/DataTableFilters/index.native.js.map +1 -1
  143. package/dist/esm/components/DataTableGrouping/index.mjs +47 -42
  144. package/dist/esm/components/DataTableGrouping/index.mjs.map +1 -1
  145. package/dist/esm/components/DataTableGrouping/index.native.js +47 -42
  146. package/dist/esm/components/DataTableGrouping/index.native.js.map +1 -1
  147. package/dist/esm/components/DataTablePagination/index.mjs +4 -2
  148. package/dist/esm/components/DataTablePagination/index.mjs.map +1 -1
  149. package/dist/esm/components/DataTablePagination/index.native.js +4 -2
  150. package/dist/esm/components/DataTablePagination/index.native.js.map +1 -1
  151. package/dist/esm/components/DataTableSearch/index.mjs +3 -3
  152. package/dist/esm/components/DataTableSearch/index.native.js +3 -3
  153. package/dist/esm/components/DataTableToolbar/index.mjs +19 -13
  154. package/dist/esm/components/DataTableToolbar/index.mjs.map +1 -1
  155. package/dist/esm/components/DataTableToolbar/index.native.js +19 -15
  156. package/dist/esm/components/DataTableToolbar/index.native.js.map +1 -1
  157. package/dist/esm/components/DataTableViewOptions/index.mjs +36 -35
  158. package/dist/esm/components/DataTableViewOptions/index.mjs.map +1 -1
  159. package/dist/esm/components/DataTableViewOptions/index.native.js +36 -35
  160. package/dist/esm/components/DataTableViewOptions/index.native.js.map +1 -1
  161. package/dist/esm/components/KnobDialog.mjs +1 -3
  162. package/dist/esm/components/KnobDialog.mjs.map +1 -1
  163. package/dist/esm/components/KnobDialog.native.js +1 -3
  164. package/dist/esm/components/KnobDialog.native.js.map +1 -1
  165. package/dist/esm/components/SimpleTable/index.mjs +160 -118
  166. package/dist/esm/components/SimpleTable/index.mjs.map +1 -1
  167. package/dist/esm/components/SimpleTable/index.native.js +169 -129
  168. package/dist/esm/components/SimpleTable/index.native.js.map +1 -1
  169. package/dist/esm/components/TableInput/index.mjs +160 -91
  170. package/dist/esm/components/TableInput/index.mjs.map +1 -1
  171. package/dist/esm/components/TableInput/index.native.js +3 -3
  172. package/dist/esm/components/TableInput/index.native.js.map +1 -1
  173. package/dist/esm/utils/chromeIcons.mjs +6 -0
  174. package/dist/esm/utils/chromeIcons.mjs.map +1 -0
  175. package/dist/esm/utils/chromeIcons.native.js +6 -0
  176. package/dist/esm/utils/chromeIcons.native.js.map +1 -0
  177. package/dist/jsx/components/ChildTable/index.mjs +12 -3
  178. package/dist/jsx/components/ChildTable/index.mjs.map +1 -1
  179. package/dist/jsx/components/ChildTable/index.native.js +14 -3
  180. package/dist/jsx/components/ChildTable/index.native.js.map +1 -1
  181. package/dist/jsx/components/ColumnHeaderFilter/index.mjs +11 -13
  182. package/dist/jsx/components/ColumnHeaderFilter/index.mjs.map +1 -1
  183. package/dist/jsx/components/ColumnHeaderFilter/index.native.js +11 -16
  184. package/dist/jsx/components/ColumnHeaderFilter/index.native.js.map +1 -1
  185. package/dist/jsx/components/DataTable/DataTableCardControls.mjs +7 -4
  186. package/dist/jsx/components/DataTable/DataTableCardControls.mjs.map +1 -1
  187. package/dist/jsx/components/DataTable/DataTableCardControls.native.js +7 -4
  188. package/dist/jsx/components/DataTable/DataTableCardControls.native.js.map +1 -1
  189. package/dist/jsx/components/DataTable/DataTableDocumentList.mjs +10 -4
  190. package/dist/jsx/components/DataTable/DataTableDocumentList.mjs.map +1 -1
  191. package/dist/jsx/components/DataTable/DataTableDocumentList.native.js +10 -4
  192. package/dist/jsx/components/DataTable/DataTableDocumentList.native.js.map +1 -1
  193. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs +6 -1
  194. package/dist/jsx/components/DataTable/DataTableMobileCards.mjs.map +1 -1
  195. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js +6 -1
  196. package/dist/jsx/components/DataTable/DataTableMobileCards.native.js.map +1 -1
  197. package/dist/jsx/components/DataTable/DataTableRoot.mjs +55 -42
  198. package/dist/jsx/components/DataTable/DataTableRoot.mjs.map +1 -1
  199. package/dist/jsx/components/DataTable/DataTableRoot.native.js +55 -42
  200. package/dist/jsx/components/DataTable/DataTableRoot.native.js.map +1 -1
  201. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs +5 -2
  202. package/dist/jsx/components/DataTable/DataTableVirtualized.mjs.map +1 -1
  203. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js +5 -2
  204. package/dist/jsx/components/DataTable/DataTableVirtualized.native.js.map +1 -1
  205. package/dist/jsx/components/DataTable/dataTableChrome.mjs +32 -0
  206. package/dist/jsx/components/DataTable/dataTableChrome.mjs.map +1 -0
  207. package/dist/jsx/components/DataTable/dataTableChrome.native.js +62 -0
  208. package/dist/jsx/components/DataTable/dataTableChrome.native.js.map +1 -0
  209. package/dist/jsx/components/DataTable/index.native.js +34 -20
  210. package/dist/jsx/components/DataTable/index.native.js.map +1 -1
  211. package/dist/jsx/components/DataTableBulkActions/index.mjs +6 -4
  212. package/dist/jsx/components/DataTableBulkActions/index.mjs.map +1 -1
  213. package/dist/jsx/components/DataTableBulkActions/index.native.js +6 -4
  214. package/dist/jsx/components/DataTableBulkActions/index.native.js.map +1 -1
  215. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs +11 -33
  216. package/dist/jsx/components/DataTableCell/CellModalEditor.mjs.map +1 -1
  217. package/dist/jsx/components/DataTableCell/CellModalEditor.native.js +2 -5
  218. package/dist/jsx/components/DataTableCell/CellModalEditor.native.js.map +1 -1
  219. package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs +0 -1
  220. package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs.map +1 -1
  221. package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js +0 -1
  222. package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
  223. package/dist/jsx/components/DataTableColumnPinning/index.mjs +7 -4
  224. package/dist/jsx/components/DataTableColumnPinning/index.mjs.map +1 -1
  225. package/dist/jsx/components/DataTableColumnPinning/index.native.js +7 -4
  226. package/dist/jsx/components/DataTableColumnPinning/index.native.js.map +1 -1
  227. package/dist/jsx/components/DataTableDateFilter/index.mjs +24 -22
  228. package/dist/jsx/components/DataTableDateFilter/index.mjs.map +1 -1
  229. package/dist/jsx/components/DataTableDateFilter/index.native.js +24 -22
  230. package/dist/jsx/components/DataTableDateFilter/index.native.js.map +1 -1
  231. package/dist/jsx/components/DataTableExport/index.mjs +43 -29
  232. package/dist/jsx/components/DataTableExport/index.mjs.map +1 -1
  233. package/dist/jsx/components/DataTableExport/index.native.js +42 -28
  234. package/dist/jsx/components/DataTableExport/index.native.js.map +1 -1
  235. package/dist/jsx/components/DataTableFacetMenu/index.mjs +10 -4
  236. package/dist/jsx/components/DataTableFacetMenu/index.mjs.map +1 -1
  237. package/dist/jsx/components/DataTableFacetMenu/index.native.js +10 -4
  238. package/dist/jsx/components/DataTableFacetMenu/index.native.js.map +1 -1
  239. package/dist/jsx/components/DataTableFilters/index.mjs +3 -3
  240. package/dist/jsx/components/DataTableFilters/index.mjs.map +1 -1
  241. package/dist/jsx/components/DataTableFilters/index.native.js +3 -3
  242. package/dist/jsx/components/DataTableFilters/index.native.js.map +1 -1
  243. package/dist/jsx/components/DataTableGrouping/index.mjs +47 -42
  244. package/dist/jsx/components/DataTableGrouping/index.mjs.map +1 -1
  245. package/dist/jsx/components/DataTableGrouping/index.native.js +46 -41
  246. package/dist/jsx/components/DataTableGrouping/index.native.js.map +1 -1
  247. package/dist/jsx/components/DataTablePagination/index.mjs +4 -2
  248. package/dist/jsx/components/DataTablePagination/index.mjs.map +1 -1
  249. package/dist/jsx/components/DataTablePagination/index.native.js +4 -2
  250. package/dist/jsx/components/DataTablePagination/index.native.js.map +1 -1
  251. package/dist/jsx/components/DataTableSearch/index.mjs +3 -3
  252. package/dist/jsx/components/DataTableSearch/index.native.js +3 -3
  253. package/dist/jsx/components/DataTableToolbar/index.mjs +19 -13
  254. package/dist/jsx/components/DataTableToolbar/index.mjs.map +1 -1
  255. package/dist/jsx/components/DataTableToolbar/index.native.js +19 -15
  256. package/dist/jsx/components/DataTableToolbar/index.native.js.map +1 -1
  257. package/dist/jsx/components/DataTableViewOptions/index.mjs +36 -35
  258. package/dist/jsx/components/DataTableViewOptions/index.mjs.map +1 -1
  259. package/dist/jsx/components/DataTableViewOptions/index.native.js +36 -35
  260. package/dist/jsx/components/DataTableViewOptions/index.native.js.map +1 -1
  261. package/dist/jsx/components/KnobDialog.mjs +1 -3
  262. package/dist/jsx/components/KnobDialog.mjs.map +1 -1
  263. package/dist/jsx/components/KnobDialog.native.js +1 -3
  264. package/dist/jsx/components/KnobDialog.native.js.map +1 -1
  265. package/dist/jsx/components/SimpleTable/index.mjs +160 -118
  266. package/dist/jsx/components/SimpleTable/index.mjs.map +1 -1
  267. package/dist/jsx/components/SimpleTable/index.native.js +168 -128
  268. package/dist/jsx/components/SimpleTable/index.native.js.map +1 -1
  269. package/dist/jsx/components/TableInput/index.mjs +160 -91
  270. package/dist/jsx/components/TableInput/index.mjs.map +1 -1
  271. package/dist/jsx/components/TableInput/index.native.js +3 -3
  272. package/dist/jsx/components/TableInput/index.native.js.map +1 -1
  273. package/dist/jsx/utils/chromeIcons.mjs +6 -0
  274. package/dist/jsx/utils/chromeIcons.mjs.map +1 -0
  275. package/dist/jsx/utils/chromeIcons.native.js +34 -0
  276. package/dist/jsx/utils/chromeIcons.native.js.map +1 -0
  277. package/package.json +12 -12
  278. package/src/components/ChildTable/ChildTable.stories.tsx +144 -0
  279. package/src/components/ChildTable/childTable.reorder.spec.tsx +65 -0
  280. package/src/components/ChildTable/childTable.spec.tsx +108 -0
  281. package/src/components/ChildTable/index.tsx +21 -2
  282. package/src/components/ColumnHeaderFilter/index.tsx +9 -14
  283. package/src/components/DataTable/DataTableCardControls.tsx +19 -16
  284. package/src/components/DataTable/DataTableDocumentList.tsx +7 -4
  285. package/src/components/DataTable/DataTableMobileCards.tsx +3 -1
  286. package/src/components/DataTable/DataTableRoot.tsx +52 -41
  287. package/src/components/DataTable/DataTableVirtualized.tsx +6 -2
  288. package/src/components/DataTable/FieldsInCells.stories.tsx +10 -5
  289. package/src/components/DataTable/dataTableChrome.ts +48 -0
  290. package/src/components/DataTable/designLaw.spec.tsx +114 -0
  291. package/src/components/DataTable/index.native.tsx +46 -20
  292. package/src/components/DataTableBulkActions/index.tsx +5 -3
  293. package/src/components/DataTableCell/CellModalEditor.native.tsx +3 -6
  294. package/src/components/DataTableCell/CellModalEditor.tsx +11 -22
  295. package/src/components/DataTableCell/CellOptionsEditor.tsx +0 -1
  296. package/src/components/DataTableCell/cellDraftPolicy.spec.tsx +8 -1
  297. package/src/components/DataTableCell/cellModalEditor.spec.tsx +82 -0
  298. package/src/components/DataTableCell/dataTableCell.spec.tsx +8 -1
  299. package/src/components/DataTableColumnPinning/index.tsx +6 -4
  300. package/src/components/DataTableDateFilter/index.tsx +19 -17
  301. package/src/components/DataTableExport/DataTableExport.spec.tsx +29 -0
  302. package/src/components/DataTableExport/index.tsx +47 -23
  303. package/src/components/DataTableFacetMenu/index.tsx +13 -4
  304. package/src/components/DataTableFilters/index.tsx +3 -3
  305. package/src/components/DataTableGrouping/index.tsx +42 -35
  306. package/src/components/DataTablePagination/index.tsx +2 -2
  307. package/src/components/DataTableSearch/index.tsx +3 -3
  308. package/src/components/DataTableToolbar/DataTableToolbar.spec.tsx +20 -0
  309. package/src/components/DataTableToolbar/DataTableToolbar.stories.tsx +1 -9
  310. package/src/components/DataTableToolbar/index.tsx +19 -14
  311. package/src/components/DataTableViewOptions/index.tsx +30 -30
  312. package/src/components/KnobDialog.tsx +1 -3
  313. package/src/components/SimpleTable/SimpleTable.stories.tsx +13 -0
  314. package/src/components/SimpleTable/index.tsx +171 -149
  315. package/src/components/SimpleTable/simpleTable.spec.tsx +120 -0
  316. package/src/components/TableInput/index.native.tsx +5 -3
  317. package/src/components/TableInput/index.tsx +207 -113
  318. package/src/components/chromeDesignLaw.spec.tsx +97 -0
  319. package/src/utils/chromeIcons.ts +6 -0
  320. package/types/components/ChildTable/index.d.ts +6 -1
  321. package/types/components/ChildTable/index.d.ts.map +1 -1
  322. package/types/components/ColumnHeaderFilter/index.d.ts.map +1 -1
  323. package/types/components/DataTable/DataTableCardControls.d.ts.map +1 -1
  324. package/types/components/DataTable/DataTableDocumentList.d.ts.map +1 -1
  325. package/types/components/DataTable/DataTableMobileCards.d.ts.map +1 -1
  326. package/types/components/DataTable/DataTableRoot.d.ts +6 -1
  327. package/types/components/DataTable/DataTableRoot.d.ts.map +1 -1
  328. package/types/components/DataTable/DataTableVirtualized.d.ts +3 -1
  329. package/types/components/DataTable/DataTableVirtualized.d.ts.map +1 -1
  330. package/types/components/DataTable/dataTableChrome.d.ts +27 -0
  331. package/types/components/DataTable/dataTableChrome.d.ts.map +1 -0
  332. package/types/components/DataTable/index.native.d.ts +1 -1
  333. package/types/components/DataTable/index.native.d.ts.map +1 -1
  334. package/types/components/DataTableBulkActions/index.d.ts.map +1 -1
  335. package/types/components/DataTableCell/CellModalEditor.d.ts.map +1 -1
  336. package/types/components/DataTableCell/CellModalEditor.native.d.ts.map +1 -1
  337. package/types/components/DataTableCell/CellOptionsEditor.d.ts.map +1 -1
  338. package/types/components/DataTableColumnPinning/index.d.ts.map +1 -1
  339. package/types/components/DataTableDateFilter/index.d.ts.map +1 -1
  340. package/types/components/DataTableExport/index.d.ts.map +1 -1
  341. package/types/components/DataTableFacetMenu/index.d.ts.map +1 -1
  342. package/types/components/DataTableGrouping/index.d.ts.map +1 -1
  343. package/types/components/DataTableToolbar/index.d.ts +2 -0
  344. package/types/components/DataTableToolbar/index.d.ts.map +1 -1
  345. package/types/components/DataTableViewOptions/index.d.ts.map +1 -1
  346. package/types/components/KnobDialog.d.ts.map +1 -1
  347. package/types/components/SimpleTable/index.d.ts.map +1 -1
  348. package/types/components/TableInput/index.d.ts +8 -4
  349. package/types/components/TableInput/index.d.ts.map +1 -1
  350. package/types/components/TableInput/index.native.d.ts +2 -0
  351. package/types/components/TableInput/index.native.d.ts.map +1 -1
  352. package/types/utils/chromeIcons.d.ts +3 -0
  353. package/types/utils/chromeIcons.d.ts.map +1 -0
@@ -38,6 +38,7 @@ import { DataTableCell } from "../DataTableCell";
38
38
  import { Table } from "@multiplatform.one/table-primitives";
39
39
  import { DataTableContext } from "./DataTableContext";
40
40
  import { DataTableDocumentList } from "./DataTableDocumentList";
41
+ import { dataTableChrome, resolveDataTableIntent, rowIntentProps } from "./dataTableChrome";
41
42
  import { tableRowStateProps } from "./rowStateChrome";
42
43
  import { DataTableStateContext } from "./DataTableStateContext";
43
44
  import type { DataTableStateContextValue } from "./DataTableStateContext";
@@ -104,8 +105,6 @@ function mapFieldToFilterType(
104
105
  }
105
106
  }
106
107
 
107
- const rowHeightPx = 40;
108
-
109
108
  function DataTableRoot<TData extends Record<string, any> = Record<string, any>>({
110
109
  data,
111
110
  columns,
@@ -160,6 +159,10 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
160
159
  size,
161
160
  compact = false,
162
161
  disabled = false,
162
+ accent,
163
+ error,
164
+ warning,
165
+ success,
163
166
  children,
164
167
  "aria-label": ariaLabel,
165
168
  "aria-describedby": ariaDescribedBy,
@@ -171,11 +174,14 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
171
174
  // the certified compact pattern; `table` pins the grid.
172
175
  const showList = layout === "list";
173
176
  const showCards = !showList && (layout === "cards" || (layout === "auto" && !sm));
177
+ const intent = resolveDataTableIntent({ accent, error, warning, success });
174
178
  const { knobProps, disabledState } = useResolvedKnobs({
175
- intent: undefined,
179
+ intent,
176
180
  component: "DataTable",
177
181
  compact,
178
182
  });
183
+ const chrome = dataTableChrome(String(knobProps.sizeToken));
184
+ const rowHeightPx = chrome.rowPx;
179
185
  // Collapsed expand-caret points toward inline-end, so it mirrors in RTL via
180
186
  // glyph swap (useDirection, Axiom 15); rotation sign flips so expanded
181
187
  // still points down.
@@ -375,7 +381,11 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
375
381
  return (
376
382
  <>
377
383
  {showRowNumbers && (
378
- <Table.Cell cellWidth={50} cellHeight={cellHeight as any} cellLocation="first">
384
+ <Table.Cell
385
+ cellWidth={chrome.rowNumberCol}
386
+ cellHeight={cellHeight as any}
387
+ cellLocation="first"
388
+ >
379
389
  <Text fontSize={knobProps.sizeToken} color="$color10">
380
390
  {rowIndex + 1}
381
391
  </Text>
@@ -383,7 +393,7 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
383
393
  )}
384
394
  {enableRowExpansion && (
385
395
  <Table.Cell
386
- cellWidth={32}
396
+ cellWidth={chrome.expandCol}
387
397
  cellHeight={cellHeight as any}
388
398
  cellLocation={showRowNumbers ? "middle" : "first"}
389
399
  >
@@ -408,12 +418,12 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
408
418
  }
409
419
  >
410
420
  <ExpandCaretIcon
411
- size={14}
421
+ size={chrome.iconPx}
412
422
  style={{ transform: row.getIsExpanded() ? expandedCaretRotation : "none" }}
413
423
  />
414
424
  </View>
415
425
  ) : (
416
- <View width={14} />
426
+ <View width={chrome.iconPx} />
417
427
  )}
418
428
  </Table.Cell>
419
429
  )}
@@ -435,7 +445,7 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
435
445
  })}
436
446
  {showDeleteRow && !readOnly && (
437
447
  <Table.Cell
438
- cellWidth={60}
448
+ cellWidth={chrome.deleteCol}
439
449
  cellHeight={cellHeight as any}
440
450
  cellLocation="last"
441
451
  justifyContent="center"
@@ -533,6 +543,7 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
533
543
  "data-table-zebra": tableZebraOn ? (index % 2 === 0 ? "even" : "odd") : "off",
534
544
  } as any)}
535
545
  {...(getRowPressProps(row, index) as any)}
546
+ {...(rowIntentProps(row.original) as any)}
536
547
  >
537
548
  {renderRowContent(row, index)}
538
549
  </Table.Row>
@@ -554,6 +565,7 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
554
565
  padding="$3"
555
566
  marginBottom="$2"
556
567
  {...(getRowPressProps(row, index) as any)}
568
+ {...(rowIntentProps(rowData) as any)}
557
569
  >
558
570
  {showRowNumbers && (
559
571
  <View
@@ -813,7 +825,7 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
813
825
  alignCells={{ x: "start", y: "center" }}
814
826
  alignHeaderCells={{ x: "start", y: "center" }}
815
827
  cellHeight={cellHeight}
816
- {...knobProps.borderRadius}
828
+ {...knobProps.borderRadiusOuter}
817
829
  width="100%"
818
830
  marginBottom={enablePagination ? "$10" : undefined}
819
831
  aria-label={ariaLabel || "Data table"}
@@ -830,22 +842,28 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
830
842
  key={headerGroup.id}
831
843
  backgroundColor="$color2"
832
844
  rowLocation={groupIndex === 0 ? "first" : "middle"}
833
- borderTopRightRadius="$4"
834
- borderTopLeftRadius="$4"
845
+ borderTopRightRadius={knobProps.borderRadiusOuter.borderRadius}
846
+ borderTopLeftRadius={knobProps.borderRadiusOuter.borderRadius}
835
847
  borderBottomLeftRadius="$0"
836
848
  borderBottomRightRadius="$0"
837
849
  aria-rowindex={groupIndex}
838
850
  >
839
851
  {showRowNumbers && (
840
- <Table.HeaderCell cellWidth={50} cellHeight={cellHeight as any}>
841
- <Text fontSize="$4" fontWeight="600">
852
+ <Table.HeaderCell
853
+ cellWidth={chrome.rowNumberCol}
854
+ cellHeight={cellHeight as any}
855
+ >
856
+ <Text fontSize={knobProps.sizeToken} fontWeight="600">
842
857
  #
843
858
  </Text>
844
859
  </Table.HeaderCell>
845
860
  )}
846
861
  {enableRowExpansion && (
847
- <Table.HeaderCell cellWidth={32} cellHeight={cellHeight as any}>
848
- <View width={14} />
862
+ <Table.HeaderCell
863
+ cellWidth={chrome.expandCol}
864
+ cellHeight={cellHeight as any}
865
+ >
866
+ <View width={chrome.iconPx} />
849
867
  </Table.HeaderCell>
850
868
  )}
851
869
  {headerGroup.headers.map((header, headerIndex) => {
@@ -888,7 +906,11 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
888
906
  justifyContent="flex-start"
889
907
  flex={1}
890
908
  >
891
- <Text fontSize="$4" selectable={false} userSelect="none">
909
+ <Text
910
+ fontSize={knobProps.sizeToken}
911
+ selectable={false}
912
+ userSelect="none"
913
+ >
892
914
  {header.isPlaceholder
893
915
  ? null
894
916
  : flexRender(
@@ -902,14 +924,18 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
902
924
  role="presentation"
903
925
  color={sortDirection ? "$color10" : "$color8"}
904
926
  >
905
- {sortDirection === "asc" && <CaretDownIcon size={14} />}
927
+ {sortDirection === "asc" && (
928
+ <CaretDownIcon size={chrome.iconPx} />
929
+ )}
906
930
  {sortDirection === "desc" && (
907
931
  <CaretDownIcon
908
- size={14}
932
+ size={chrome.iconPx}
909
933
  style={{ transform: "rotate(180deg)" }}
910
934
  />
911
935
  )}
912
- {sortDirection === false && <CaretUpDownIcon size={14} />}
936
+ {sortDirection === false && (
937
+ <CaretUpDownIcon size={chrome.iconPx} />
938
+ )}
913
939
  </Text>
914
940
  )}
915
941
  {pinning && (
@@ -925,7 +951,7 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
925
951
  })}
926
952
  {showDeleteRow && !readOnly && (
927
953
  <Table.HeaderCell
928
- cellWidth={60}
954
+ cellWidth={chrome.deleteCol}
929
955
  cellHeight={cellHeight as any}
930
956
  cellLocation="last"
931
957
  />
@@ -6,6 +6,7 @@ import { Button, zIndex } from "@multiplatform.one/forms";
6
6
  import { ConfirmDialog, DropdownMenu } from "@multiplatform.one/components";
7
7
  import { Text, View, XStack } from "tamagui";
8
8
  import type { BulkAction } from "../../types";
9
+ import { iconSizeForToken } from "../../utils/chromeIcons";
9
10
  import { withInterp } from "../../utils/withInterp";
10
11
  import { useDataTableState } from "../DataTable/DataTableStateContext";
11
12
 
@@ -137,7 +138,7 @@ export function DataTableBulkActions<T = any>(props: DataTableBulkActionsProps<T
137
138
  data-bulk-bar-placement={placement}
138
139
  >
139
140
  {showSelectionCount && (
140
- <Text fontSize="$3" fontWeight="600" color={countColor}>
141
+ <Text {...knobProps.label} fontWeight="400" color={countColor}>
141
142
  {/* D-15: one whole-sentence key per variant (never concatenated
142
143
  fragments — word order is locale-owned); withInterp fills the
143
144
  params when no i18n instance is mounted (house table pattern). */}
@@ -167,7 +168,7 @@ export function DataTableBulkActions<T = any>(props: DataTableBulkActionsProps<T
167
168
  </Button>
168
169
  )}
169
170
 
170
- <XStack gap="$2" flex={1}>
171
+ <XStack {...knobProps.gap} flex={1}>
171
172
  {visibleActions.map((action) => (
172
173
  <Button
173
174
  key={action.id}
@@ -246,6 +247,7 @@ function BulkActionsOverflowMenu<T = any>({
246
247
  isExecuting,
247
248
  }: BulkActionsOverflowMenuProps<T>) {
248
249
  const { knobProps } = useResolvedKnobs();
250
+ const iconPx = iconSizeForToken(String(knobProps.sizeToken));
249
251
  return (
250
252
  <DropdownMenu
251
253
  items={actions.map((action) => ({
@@ -264,7 +266,7 @@ function BulkActionsOverflowMenu<T = any>({
264
266
  <Button
265
267
  size={knobProps.sizeToken}
266
268
  variant="outlined"
267
- icon={<DotsThreeIcon size={16} />}
269
+ icon={<DotsThreeIcon size={iconPx} />}
268
270
  aria-label="More bulk actions"
269
271
  {...knobProps.borderRadius}
270
272
  />
@@ -95,7 +95,6 @@ export function CellModalEditor({
95
95
  width="100%"
96
96
  paddingHorizontal="$1"
97
97
  paddingVertical="$1"
98
- borderRadius="$2"
99
98
  {...(label
100
99
  ? { accessibilityLabel: label, accessibilityRole: "button" as const }
101
100
  : undefined)}
@@ -104,12 +103,10 @@ export function CellModalEditor({
104
103
  </View>
105
104
  }
106
105
  >
107
- <YStack gap="$3">
108
- <Text {...knobProps.heading} fontSize="$5" fontWeight="600">
109
- {title ?? t("Edit")}
110
- </Text>
106
+ <YStack {...knobProps.gap}>
107
+ <Text {...knobProps.heading}>{title ?? t("Edit")}</Text>
111
108
  <YStack minHeight={0}>{children(draft ? draft.value : value, handleDraftChange)}</YStack>
112
- <XStack gap="$2" justifyContent="flex-end">
109
+ <XStack {...knobProps.gap} justifyContent="flex-end">
113
110
  {/* LC-30 CANCEL-ALWAYS-LIVE: the discard exit never disables. */}
114
111
  <Button onPress={handleCancel}>{t("Cancel")}</Button>
115
112
  <Button onPress={() => handleOpenChange(false)}>{t("Done")}</Button>
@@ -12,12 +12,12 @@
12
12
  * footer stays within the two-action dialog budget (LC-31).
13
13
  */
14
14
 
15
- import { DialogOverlay } from "@multiplatform.one/components";
16
- import { FieldDisplay, type FieldDisplayType } from "@multiplatform.one/forms";
15
+ import { DialogContent, DialogOverlay } from "@multiplatform.one/components";
16
+ import { Button, FieldDisplay, type FieldDisplayType } from "@multiplatform.one/forms";
17
17
  import { TableCellContext } from "@multiplatform.one/table-primitives";
18
18
  import { useResolvedKnobs } from "@multiplatform.one/theme";
19
19
  import { useCallback, useRef, useState, type ReactNode } from "react";
20
- import { Button, Dialog, Text, View, XStack, YStack, isWeb } from "tamagui";
20
+ import { Dialog, View, XStack, YStack, isWeb } from "tamagui";
21
21
  import { t } from "../../shared/t";
22
22
 
23
23
  export interface CellModalEditorProps {
@@ -127,7 +127,6 @@ export function CellModalEditor({
127
127
  width="100%"
128
128
  paddingHorizontal="$1"
129
129
  paddingVertical="$1"
130
- borderRadius="$2"
131
130
  hoverStyle={!triggerLocked ? { backgroundColor: "$backgroundHover" } : undefined}
132
131
  // LC-71: parent CellWrapper paints the one ring on the cell boundary.
133
132
  outlineWidth={0}
@@ -148,13 +147,7 @@ export function CellModalEditor({
148
147
  <Dialog open={open} onOpenChange={handleOpenChange} modal>
149
148
  <Dialog.Portal>
150
149
  <DialogOverlay opacity={0.5} />
151
- <Dialog.Content
152
- borderWidth={1}
153
- borderColor="$borderColor"
154
- elevation={knobProps.elevation}
155
- transition={knobProps.transition}
156
- enterStyle={{ y: -10, opacity: 0, scale: 0.96 }}
157
- exitStyle={{ y: 10, opacity: 0, scale: 0.96 }}
150
+ <DialogContent
158
151
  maxWidth={720}
159
152
  maxHeight="80vh"
160
153
  width="90vw"
@@ -164,29 +157,25 @@ export function CellModalEditor({
164
157
  discardRef.current = true;
165
158
  }}
166
159
  >
167
- <Dialog.Title>
168
- <Text fontSize="$5" fontWeight="600">
169
- {title ?? t("Edit")}
170
- </Text>
171
- </Dialog.Title>
160
+ <Dialog.Title {...knobProps.heading}>{title ?? t("Edit")}</Dialog.Title>
172
161
  {/* flexShrink (not flex-basis 0): in the auto-height dialog a
173
162
  basis-0 wrapper collapses and its children paint over the
174
163
  footer / past the dialog frame (LC-10). The context reset
175
164
  restores full field chrome — the modal is not a table cell,
176
165
  but React context flows through the Dialog portal. */}
177
- <YStack flexShrink={1} minHeight={0} marginTop="$3" marginBottom="$4">
166
+ <YStack flexShrink={1} minHeight={0}>
178
167
  <TableCellContext.Provider value={{ inTableCell: false }}>
179
168
  {children(draft ? draft.value : value, handleDraftChange)}
180
169
  </TableCellContext.Provider>
181
170
  </YStack>
182
- <XStack gap="$2" justifyContent="flex-end">
171
+ <XStack {...knobProps.gap} justifyContent="flex-end">
183
172
  {/* LC-30 CANCEL-ALWAYS-LIVE: the discard exit never disables. */}
184
173
  <Button onPress={handleCancel}>{t("Cancel")}</Button>
185
- <Dialog.Close asChild>
186
- <Button theme="accent">{t("Done")}</Button>
187
- </Dialog.Close>
174
+ <Button theme="accent" onPress={() => handleOpenChange(false)}>
175
+ {t("Done")}
176
+ </Button>
188
177
  </XStack>
189
- </Dialog.Content>
178
+ </DialogContent>
190
179
  </Dialog.Portal>
191
180
  </Dialog>
192
181
  </>
@@ -57,7 +57,6 @@ export function CellOptionsEditor({
57
57
  width="100%"
58
58
  paddingHorizontal="$1"
59
59
  paddingVertical="$1"
60
- borderRadius="$2"
61
60
  opacity={disabled ? 0.5 : 1}
62
61
  // LC-71: the parent CellWrapper paints the one ring; this face must
63
62
  // not add a second outline on keyboard focus.
@@ -255,7 +255,14 @@ vi.mock("@multiplatform.one/forms", async (importOriginal) => ({
255
255
  Signature: createMock("Signature"),
256
256
  Geolocation: createMock("Geolocation"),
257
257
  ColorPicker: createMock("ColorPicker"),
258
- Button: createMock("Button"),
258
+ Button: ({
259
+ children,
260
+ onPress,
261
+ ...props
262
+ }: {
263
+ children?: React.ReactNode;
264
+ onPress?: (event: unknown) => void;
265
+ }) => React.createElement("button", { type: "button", ...props, onClick: onPress }, children),
259
266
  FieldDisplay: (props: any) =>
260
267
  React.createElement("div", {
261
268
  "data-testid": "mock-FieldDisplay",
@@ -0,0 +1,82 @@
1
+ /**
2
+ * CellModalEditor design-law tests — the modal is SF-OVERLAY / E-OVERLAY.
3
+ *
4
+ * The house DialogContent owns elevatedSurface + containerRadius + transition
5
+ * (LC-18). A fixed 1px border on Dialog.Content was the recorded GAP; this
6
+ * spec locks the recipe path so it cannot regress to a handwritten frame.
7
+ */
8
+
9
+ import React from "react";
10
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
11
+ import { fireEvent, screen, waitFor } from "@testing-library/react";
12
+ import { describe, expect, it, vi } from "vitest";
13
+
14
+ const dialogContentProps: Record<string, unknown>[] = [];
15
+
16
+ vi.mock("@multiplatform.one/components", async (importOriginal) => {
17
+ const actual = await importOriginal<typeof import("@multiplatform.one/components")>();
18
+ return {
19
+ ...actual,
20
+ DialogContent: (props: Record<string, unknown>) => {
21
+ dialogContentProps.push(props);
22
+ return React.createElement(
23
+ "div",
24
+ { "data-testid": "cell-modal-dialog-content" },
25
+ props.children as React.ReactNode,
26
+ );
27
+ },
28
+ };
29
+ });
30
+
31
+ vi.mock("@multiplatform.one/forms", async (importOriginal) => ({
32
+ ...(await importOriginal<typeof import("@multiplatform.one/forms")>()),
33
+ FieldDisplay: (props: { field?: string }) =>
34
+ React.createElement("div", {
35
+ "data-testid": "mock-FieldDisplay",
36
+ "data-field": props.field,
37
+ }),
38
+ Button: ({
39
+ children,
40
+ onPress,
41
+ ...props
42
+ }: {
43
+ children?: React.ReactNode;
44
+ onPress?: (event: unknown) => void;
45
+ }) => React.createElement("button", { type: "button", ...props, onClick: onPress }, children),
46
+ }));
47
+
48
+ import { CellModalEditor } from "./CellModalEditor";
49
+
50
+ describe("CellModalEditor — overlay recipes", () => {
51
+ it("opens DialogContent without a fixed 1px border (SF-OVERLAY recipe path)", async () => {
52
+ dialogContentProps.length = 0;
53
+ renderWithProviders(
54
+ <CellModalEditor
55
+ field="textarea"
56
+ value="hello"
57
+ onCommit={vi.fn()}
58
+ title="Edit text"
59
+ label="Notes"
60
+ >
61
+ {(draft, onDraftChange) =>
62
+ React.createElement("textarea", {
63
+ "data-testid": "draft-editor",
64
+ value: draft,
65
+ onChange: (event: React.ChangeEvent<HTMLTextAreaElement>) =>
66
+ onDraftChange(event.target.value),
67
+ })
68
+ }
69
+ </CellModalEditor>,
70
+ );
71
+
72
+ fireEvent.click(screen.getByTestId("mock-FieldDisplay"));
73
+ await waitFor(() => expect(screen.getByTestId("cell-modal-dialog-content")).toBeTruthy());
74
+
75
+ const frame = dialogContentProps.at(-1);
76
+ expect(frame).toBeTruthy();
77
+ expect(frame?.borderWidth).toBeUndefined();
78
+ expect(frame?.borderColor).toBeUndefined();
79
+ expect(screen.getByRole("button", { name: "Cancel" })).not.toBeDisabled();
80
+ expect(screen.getByRole("button", { name: "Done" })).toBeTruthy();
81
+ });
82
+ });
@@ -83,7 +83,14 @@ vi.mock("@multiplatform.one/forms", async (importOriginal) => ({
83
83
  Signature: createMock("Signature"),
84
84
  Geolocation: createMock("Geolocation"),
85
85
  ColorPicker: createMock("ColorPicker"),
86
- Button: createMock("Button"),
86
+ Button: ({
87
+ children,
88
+ onPress,
89
+ ...props
90
+ }: {
91
+ children?: React.ReactNode;
92
+ onPress?: (event: unknown) => void;
93
+ }) => React.createElement("button", { type: "button", ...props, onClick: onPress }, children),
87
94
  // Compact in-cell summary used by CellModalEditor; expose the routed field
88
95
  // type so tests can assert which field the cell delegates to.
89
96
  FieldDisplay: (props: any) =>
@@ -10,6 +10,7 @@ import { useCallback, useMemo, useState } from "react";
10
10
  import { Text, View, isWeb, styled } from "tamagui";
11
11
  import { useDataTableState } from "../DataTable/DataTableStateContext";
12
12
  import { t } from "../../shared/t";
13
+ import { iconSizeForToken } from "../../utils/chromeIcons";
13
14
 
14
15
  // DG-LAY-04 / SP-FIXED: the pin glyph stays small (~22px incl. padding) but the
15
16
  // press target is floored at 44×44 via hitSlop; negative margins keep header
@@ -85,6 +86,7 @@ export function DataTableColumnPinning<TData>(props: DataTableColumnPinningProps
85
86
  const { onPinChange, maxPinnedColumns = 3, allowPinning = true, disabled = false } = props;
86
87
 
87
88
  const { knobProps } = useResolvedKnobs();
89
+ const iconPx = iconSizeForToken(String(knobProps.sizeToken));
88
90
 
89
91
  // Get fresh table state on each render
90
92
  const pinnedColumns = table.getState().columnPinning || {
@@ -271,16 +273,16 @@ export function DataTableColumnPinning<TData>(props: DataTableColumnPinningProps
271
273
  flexDirection="row"
272
274
  alignItems="center"
273
275
  justifyContent="center"
274
- gap={2}
276
+ gap={knobProps.gap.gap}
275
277
  {...(next === "none" ? undefined : { hoverStyle: { backgroundColor: "$color4" } })}
276
278
  >
277
279
  <PushPinIcon
278
- size={14}
280
+ size={iconPx}
279
281
  color={pinned ? "var(--accentColor)" : "var(--color10)"}
280
282
  weight={pinned ? "fill" : "regular"}
281
283
  />
282
284
  {pinned && currentPosition ? (
283
- <Text fontSize={10} color="$color10">
285
+ <Text {...knobProps.label} fontWeight="400" color="$color10">
284
286
  {currentPosition === "left" ? "L" : "R"}
285
287
  </Text>
286
288
  ) : null}
@@ -288,7 +290,7 @@ export function DataTableColumnPinning<TData>(props: DataTableColumnPinningProps
288
290
  </View>
289
291
  );
290
292
  },
291
- [allowPinning, disabled, getPinPosition, canPin, cyclePin, table],
293
+ [allowPinning, disabled, getPinPosition, canPin, cyclePin, table, iconPx, knobProps],
292
294
  );
293
295
 
294
296
  const pinnedLeftColumns = useMemo(() => {
@@ -21,6 +21,7 @@ import {
21
21
  getVariableValue,
22
22
  } from "tamagui";
23
23
  import { t } from "../../shared/t";
24
+ import { iconSizeForToken } from "../../utils/chromeIcons";
24
25
 
25
26
  export type DateFilterOperator =
26
27
  | "is"
@@ -91,6 +92,7 @@ export function DataTableDateFilter({
91
92
  }: DataTableDateFilterProps) {
92
93
  const { knobProps } = useResolvedKnobs();
93
94
  const sz = knobProps.sizeToken;
95
+ const iconPx = iconSizeForToken(String(sz));
94
96
  const triggerMinWidth = sz === "$3" ? 160 : sz === "$5" ? 240 : 200;
95
97
  const popoverMinWidth = sz === "$3" ? 280 : sz === "$5" ? 360 : 320;
96
98
  // Row height derives from the same size token the preset Buttons render
@@ -114,25 +116,25 @@ export function DataTableDateFilter({
114
116
  id: "today",
115
117
  label: t("Today"),
116
118
  operator: "isToday",
117
- icon: <CalendarIcon size={16} />,
119
+ icon: <CalendarIcon size={iconPx} />,
118
120
  },
119
121
  {
120
122
  id: "yesterday",
121
123
  label: t("Yesterday"),
122
124
  operator: "isYesterday",
123
- icon: <CalendarIcon size={16} />,
125
+ icon: <CalendarIcon size={iconPx} />,
124
126
  },
125
127
  {
126
128
  id: "thisWeek",
127
129
  label: t("This Week"),
128
130
  operator: "isThisWeek",
129
- icon: <CalendarDotsIcon size={16} />,
131
+ icon: <CalendarDotsIcon size={iconPx} />,
130
132
  },
131
133
  {
132
134
  id: "thisMonth",
133
135
  label: t("This Month"),
134
136
  operator: "isThisMonth",
135
- icon: <CalendarDotsIcon size={16} />,
137
+ icon: <CalendarDotsIcon size={iconPx} />,
136
138
  },
137
139
  {
138
140
  id: "last7days",
@@ -142,7 +144,7 @@ export function DataTableDateFilter({
142
144
  new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString(),
143
145
  new Date().toISOString(),
144
146
  ],
145
- icon: <CalendarBlankIcon size={16} />,
147
+ icon: <CalendarBlankIcon size={iconPx} />,
146
148
  },
147
149
  {
148
150
  id: "last30days",
@@ -152,19 +154,19 @@ export function DataTableDateFilter({
152
154
  new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString(),
153
155
  new Date().toISOString(),
154
156
  ],
155
- icon: <CalendarBlankIcon size={16} />,
157
+ icon: <CalendarBlankIcon size={iconPx} />,
156
158
  },
157
159
  {
158
160
  id: "empty",
159
161
  label: t("Is Empty"),
160
162
  operator: "isEmpty",
161
- icon: <XIcon size={16} />,
163
+ icon: <XIcon size={iconPx} />,
162
164
  },
163
165
  {
164
166
  id: "notEmpty",
165
167
  label: t("Is Not Empty"),
166
168
  operator: "isNotEmpty",
167
- icon: <ClockIcon size={16} />,
169
+ icon: <ClockIcon size={iconPx} />,
168
170
  },
169
171
  ];
170
172
 
@@ -326,7 +328,7 @@ export function DataTableDateFilter({
326
328
  size={knobProps.sizeToken}
327
329
  variant="outlined"
328
330
  disabled={disabled}
329
- icon={<CalendarIcon size={16} />}
331
+ icon={<CalendarIcon size={iconPx} />}
330
332
  justifyContent="flex-start"
331
333
  minWidth={triggerMinWidth}
332
334
  >
@@ -341,7 +343,7 @@ export function DataTableDateFilter({
341
343
  >
342
344
  {getDisplayValue()}
343
345
  </Text>
344
- <CaretDownIcon size={16} />
346
+ <CaretDownIcon size={iconPx} />
345
347
  </Button>
346
348
  </Popover.Trigger>
347
349
 
@@ -362,15 +364,15 @@ export function DataTableDateFilter({
362
364
  <Popover.ScrollView minHeight={0}>
363
365
  <YStack {...knobProps.panelPadding} {...knobProps.gapLg}>
364
366
  <XStack justifyContent="space-between" alignItems="center">
365
- <Text fontSize="$5" fontWeight="600">
367
+ <Text {...knobProps.label} fontWeight="400">
366
368
  {t("Date Filter")}
367
369
  </Text>
368
370
  {value && (
369
371
  <Button
370
- size="$2"
372
+ size={knobProps.sizeToken}
371
373
  variant="outlined"
372
374
  onPress={handleClear}
373
- icon={<XIcon size={16} />}
375
+ icon={<XIcon size={iconPx} />}
374
376
  >
375
377
  {t("Clear")}
376
378
  </Button>
@@ -380,7 +382,7 @@ export function DataTableDateFilter({
380
382
  {/* Quick Presets */}
381
383
  {showPresets && (
382
384
  <YStack gap="$2">
383
- <Text fontSize="$4" fontWeight="500">
385
+ <Text {...knobProps.label} fontWeight="400">
384
386
  {t("Quick Filters")}
385
387
  </Text>
386
388
  <ScrollView maxHeight={presetListMaxHeight}>
@@ -408,7 +410,7 @@ export function DataTableDateFilter({
408
410
 
409
411
  {/* Custom Date Selection */}
410
412
  <YStack {...knobProps.gap}>
411
- <Text fontSize="$4" fontWeight="500">
413
+ <Text {...knobProps.label} fontWeight="400">
412
414
  {t("Custom Date")}
413
415
  </Text>
414
416
 
@@ -438,7 +440,7 @@ export function DataTableDateFilter({
438
440
 
439
441
  {/* Date Range */}
440
442
  <YStack gap="$2">
441
- <Text fontSize="$3" fontWeight="500">
443
+ <Text {...knobProps.label} fontWeight="400">
442
444
  {t("Date Range")}
443
445
  </Text>
444
446
  <XStack gap="$2">
@@ -473,7 +475,7 @@ export function DataTableDateFilter({
473
475
 
474
476
  {/* DatePicker-based Custom Range Selection */}
475
477
  <YStack gap="$2">
476
- <Text fontSize="$3" fontWeight="500">
478
+ <Text {...knobProps.label} fontWeight="400">
477
479
  {t("Custom Range")}
478
480
  </Text>
479
481
  <XStack gap="$2">