@dashforge/tw 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (692) hide show
  1. package/CHANGELOG.md +241 -0
  2. package/README.md +74 -15
  3. package/dist/index.d.ts +1 -146
  4. package/dist/index.esm.js +3127 -748
  5. package/dist/src/components/Alert/Alert.d.ts +65 -0
  6. package/dist/src/components/Alert/Alert.d.ts.map +1 -0
  7. package/dist/src/components/Alert/alert.types.d.ts +130 -0
  8. package/dist/src/components/Alert/alert.types.d.ts.map +1 -0
  9. package/dist/src/components/Alert/alert.variants.d.ts +85 -0
  10. package/dist/src/components/Alert/alert.variants.d.ts.map +1 -0
  11. package/dist/src/components/Avatar/Avatar.d.ts +48 -0
  12. package/dist/src/components/Avatar/Avatar.d.ts.map +1 -0
  13. package/dist/src/components/Avatar/avatar.types.d.ts +162 -0
  14. package/dist/src/components/Avatar/avatar.types.d.ts.map +1 -0
  15. package/dist/src/components/Avatar/avatar.variants.d.ts +208 -0
  16. package/dist/src/components/Avatar/avatar.variants.d.ts.map +1 -0
  17. package/dist/src/components/Badge/Badge.d.ts +63 -0
  18. package/dist/src/components/Badge/Badge.d.ts.map +1 -0
  19. package/dist/src/components/Badge/badge.types.d.ts +124 -0
  20. package/dist/src/components/Badge/badge.types.d.ts.map +1 -0
  21. package/dist/src/components/Badge/badge.variants.d.ts +262 -0
  22. package/dist/src/components/Badge/badge.variants.d.ts.map +1 -0
  23. package/dist/src/components/Box/Box.d.ts.map +1 -1
  24. package/dist/src/components/Box/box.types.d.ts +53 -0
  25. package/dist/src/components/Box/box.types.d.ts.map +1 -1
  26. package/dist/src/components/Button/Button.d.ts.map +1 -1
  27. package/dist/src/components/Button/button.types.d.ts +35 -0
  28. package/dist/src/components/Button/button.types.d.ts.map +1 -1
  29. package/dist/src/components/Card/Card.d.ts +107 -0
  30. package/dist/src/components/Card/Card.d.ts.map +1 -0
  31. package/dist/src/components/Card/card.types.d.ts +119 -0
  32. package/dist/src/components/Card/card.types.d.ts.map +1 -0
  33. package/dist/src/components/Chip/Chip.d.ts +67 -0
  34. package/dist/src/components/Chip/Chip.d.ts.map +1 -0
  35. package/dist/src/components/Chip/chip.types.d.ts +113 -0
  36. package/dist/src/components/Chip/chip.types.d.ts.map +1 -0
  37. package/dist/src/components/Chip/chip.variants.d.ts +155 -0
  38. package/dist/src/components/Chip/chip.variants.d.ts.map +1 -0
  39. package/dist/src/components/IconButton/IconButton.d.ts +57 -0
  40. package/dist/src/components/IconButton/IconButton.d.ts.map +1 -0
  41. package/dist/src/components/IconButton/iconButton.types.d.ts +96 -0
  42. package/dist/src/components/IconButton/iconButton.types.d.ts.map +1 -0
  43. package/dist/src/components/IconButton/iconButton.variants.d.ts +26 -0
  44. package/dist/src/components/IconButton/iconButton.variants.d.ts.map +1 -0
  45. package/dist/src/components/Menu/Menu.d.ts +118 -0
  46. package/dist/src/components/Menu/Menu.d.ts.map +1 -0
  47. package/dist/src/components/Menu/menu.types.d.ts +179 -0
  48. package/dist/src/components/Menu/menu.types.d.ts.map +1 -0
  49. package/dist/src/components/Menu/menu.variants.d.ts +129 -0
  50. package/dist/src/components/Menu/menu.variants.d.ts.map +1 -0
  51. package/dist/src/components/Snackbar/Snackbar.d.ts.map +1 -1
  52. package/dist/src/components/Snackbar/snackbar.types.d.ts +40 -3
  53. package/dist/src/components/Snackbar/snackbar.types.d.ts.map +1 -1
  54. package/dist/src/components/Snackbar/snackbar.variants.d.ts +12 -57
  55. package/dist/src/components/Snackbar/snackbar.variants.d.ts.map +1 -1
  56. package/dist/src/components/Spinner/Spinner.d.ts +44 -0
  57. package/dist/src/components/Spinner/Spinner.d.ts.map +1 -0
  58. package/dist/src/components/Spinner/spinner.types.d.ts +89 -0
  59. package/dist/src/components/Spinner/spinner.types.d.ts.map +1 -0
  60. package/dist/src/components/Spinner/spinner.variants.d.ts +111 -0
  61. package/dist/src/components/Spinner/spinner.variants.d.ts.map +1 -0
  62. package/dist/src/components/Table/cells/RenderChip.d.ts +15 -72
  63. package/dist/src/components/Table/cells/RenderChip.d.ts.map +1 -1
  64. package/dist/src/components/_shared/severity/index.d.ts +21 -0
  65. package/dist/src/components/_shared/severity/index.d.ts.map +1 -0
  66. package/dist/src/components/_shared/severity/severity.types.d.ts +48 -0
  67. package/dist/src/components/_shared/severity/severity.types.d.ts.map +1 -0
  68. package/dist/src/components/_shared/severity/severityIcons.d.ts +45 -0
  69. package/dist/src/components/_shared/severity/severityIcons.d.ts.map +1 -0
  70. package/dist/src/components/_shared/severity/severityVariants.d.ts +22 -0
  71. package/dist/src/components/_shared/severity/severityVariants.d.ts.map +1 -0
  72. package/dist/src/index.d.ts +27 -2
  73. package/dist/src/index.d.ts.map +1 -1
  74. package/package.json +9 -3
  75. package/.swcrc +0 -29
  76. package/A11Y.md +0 -130
  77. package/CONSUMER-VALIDATION.md +0 -130
  78. package/COVERAGE.md +0 -63
  79. package/LICENSE +0 -21
  80. package/PARITY.md +0 -481
  81. package/PERFORMANCE.md +0 -227
  82. package/REFINEMENT-NOTES.md +0 -50
  83. package/THEME-AUDIT.md +0 -174
  84. package/dist/components/Accordion/Accordion.d.ts +0 -21
  85. package/dist/components/Accordion/Accordion.d.ts.map +0 -1
  86. package/dist/components/Accordion/accordion.types.d.ts +0 -74
  87. package/dist/components/Accordion/accordion.types.d.ts.map +0 -1
  88. package/dist/components/Accordion/accordion.variants.d.ts +0 -58
  89. package/dist/components/Accordion/accordion.variants.d.ts.map +0 -1
  90. package/dist/components/AppShell/AppShell.d.ts +0 -46
  91. package/dist/components/AppShell/AppShell.d.ts.map +0 -1
  92. package/dist/components/AppShell/appShell.types.d.ts +0 -62
  93. package/dist/components/AppShell/appShell.types.d.ts.map +0 -1
  94. package/dist/components/AppShell/appShell.variants.d.ts +0 -65
  95. package/dist/components/AppShell/appShell.variants.d.ts.map +0 -1
  96. package/dist/components/AspectRatio/AspectRatio.d.ts +0 -36
  97. package/dist/components/AspectRatio/AspectRatio.d.ts.map +0 -1
  98. package/dist/components/AspectRatio/aspectRatio.types.d.ts +0 -50
  99. package/dist/components/AspectRatio/aspectRatio.types.d.ts.map +0 -1
  100. package/dist/components/Autocomplete/Autocomplete.d.ts +0 -32
  101. package/dist/components/Autocomplete/Autocomplete.d.ts.map +0 -1
  102. package/dist/components/Autocomplete/autocomplete.types.d.ts +0 -214
  103. package/dist/components/Autocomplete/autocomplete.types.d.ts.map +0 -1
  104. package/dist/components/Autocomplete/autocomplete.variants.d.ts +0 -214
  105. package/dist/components/Autocomplete/autocomplete.variants.d.ts.map +0 -1
  106. package/dist/components/Box/Box.d.ts +0 -36
  107. package/dist/components/Box/Box.d.ts.map +0 -1
  108. package/dist/components/Box/box.types.d.ts +0 -54
  109. package/dist/components/Box/box.types.d.ts.map +0 -1
  110. package/dist/components/Box/box.variants.d.ts +0 -402
  111. package/dist/components/Box/box.variants.d.ts.map +0 -1
  112. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +0 -23
  113. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +0 -1
  114. package/dist/components/Breadcrumbs/breadcrumbs.types.d.ts +0 -98
  115. package/dist/components/Breadcrumbs/breadcrumbs.types.d.ts.map +0 -1
  116. package/dist/components/Breadcrumbs/breadcrumbs.variants.d.ts +0 -85
  117. package/dist/components/Breadcrumbs/breadcrumbs.variants.d.ts.map +0 -1
  118. package/dist/components/Button/Button.d.ts +0 -44
  119. package/dist/components/Button/Button.d.ts.map +0 -1
  120. package/dist/components/Button/button.types.d.ts +0 -66
  121. package/dist/components/Button/button.types.d.ts.map +0 -1
  122. package/dist/components/Button/button.variants.d.ts +0 -104
  123. package/dist/components/Button/button.variants.d.ts.map +0 -1
  124. package/dist/components/Calendar/Calendar.d.ts +0 -14
  125. package/dist/components/Calendar/Calendar.d.ts.map +0 -1
  126. package/dist/components/Calendar/calendar.types.d.ts +0 -72
  127. package/dist/components/Calendar/calendar.types.d.ts.map +0 -1
  128. package/dist/components/Calendar/calendar.variants.d.ts +0 -99
  129. package/dist/components/Calendar/calendar.variants.d.ts.map +0 -1
  130. package/dist/components/Checkbox/Checkbox.d.ts +0 -31
  131. package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
  132. package/dist/components/Checkbox/checkbox.types.d.ts +0 -86
  133. package/dist/components/Checkbox/checkbox.types.d.ts.map +0 -1
  134. package/dist/components/Checkbox/checkbox.variants.d.ts +0 -109
  135. package/dist/components/Checkbox/checkbox.variants.d.ts.map +0 -1
  136. package/dist/components/ConfirmDialog/ConfirmDialog.d.ts +0 -38
  137. package/dist/components/ConfirmDialog/ConfirmDialog.d.ts.map +0 -1
  138. package/dist/components/ConfirmDialog/confirmDialog.types.d.ts +0 -80
  139. package/dist/components/ConfirmDialog/confirmDialog.types.d.ts.map +0 -1
  140. package/dist/components/ConfirmDialog/confirmDialog.variants.d.ts +0 -90
  141. package/dist/components/ConfirmDialog/confirmDialog.variants.d.ts.map +0 -1
  142. package/dist/components/Container/Container.d.ts +0 -35
  143. package/dist/components/Container/Container.d.ts.map +0 -1
  144. package/dist/components/Container/container.types.d.ts +0 -41
  145. package/dist/components/Container/container.types.d.ts.map +0 -1
  146. package/dist/components/Container/container.variants.d.ts +0 -93
  147. package/dist/components/Container/container.variants.d.ts.map +0 -1
  148. package/dist/components/DataGrid/DataGrid.d.ts +0 -29
  149. package/dist/components/DataGrid/DataGrid.d.ts.map +0 -1
  150. package/dist/components/DataGrid/dataGrid.types.d.ts +0 -214
  151. package/dist/components/DataGrid/dataGrid.types.d.ts.map +0 -1
  152. package/dist/components/DataGrid/dataGrid.variants.d.ts +0 -222
  153. package/dist/components/DataGrid/dataGrid.variants.d.ts.map +0 -1
  154. package/dist/components/DataGrid/filters/ColumnFilters.d.ts +0 -23
  155. package/dist/components/DataGrid/filters/ColumnFilters.d.ts.map +0 -1
  156. package/dist/components/DataGrid/reorder/useColumnReorder.d.ts +0 -50
  157. package/dist/components/DataGrid/reorder/useColumnReorder.d.ts.map +0 -1
  158. package/dist/components/DataGrid/resize/useColumnResize.d.ts +0 -39
  159. package/dist/components/DataGrid/resize/useColumnResize.d.ts.map +0 -1
  160. package/dist/components/DataGrid/visibility/ColumnVisibilityMenu.d.ts +0 -44
  161. package/dist/components/DataGrid/visibility/ColumnVisibilityMenu.d.ts.map +0 -1
  162. package/dist/components/DatePicker/DatePicker.d.ts +0 -14
  163. package/dist/components/DatePicker/DatePicker.d.ts.map +0 -1
  164. package/dist/components/DatePicker/datePicker.types.d.ts +0 -88
  165. package/dist/components/DatePicker/datePicker.types.d.ts.map +0 -1
  166. package/dist/components/DatePicker/datePicker.variants.d.ts +0 -97
  167. package/dist/components/DatePicker/datePicker.variants.d.ts.map +0 -1
  168. package/dist/components/DateRangePicker/DateRangePicker.d.ts +0 -13
  169. package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +0 -1
  170. package/dist/components/DateRangePicker/dateRangePicker.types.d.ts +0 -85
  171. package/dist/components/DateRangePicker/dateRangePicker.types.d.ts.map +0 -1
  172. package/dist/components/DateRangePicker/dateRangePicker.variants.d.ts +0 -183
  173. package/dist/components/DateRangePicker/dateRangePicker.variants.d.ts.map +0 -1
  174. package/dist/components/DateTimePicker/DateTimePicker.d.ts +0 -13
  175. package/dist/components/DateTimePicker/DateTimePicker.d.ts.map +0 -1
  176. package/dist/components/DateTimePicker/dateTimePicker.types.d.ts +0 -90
  177. package/dist/components/DateTimePicker/dateTimePicker.types.d.ts.map +0 -1
  178. package/dist/components/DateTimePicker/dateTimePicker.variants.d.ts +0 -107
  179. package/dist/components/DateTimePicker/dateTimePicker.variants.d.ts.map +0 -1
  180. package/dist/components/Dialog/Dialog.d.ts +0 -17
  181. package/dist/components/Dialog/Dialog.d.ts.map +0 -1
  182. package/dist/components/Dialog/dialog.types.d.ts +0 -75
  183. package/dist/components/Dialog/dialog.types.d.ts.map +0 -1
  184. package/dist/components/Dialog/dialog.variants.d.ts +0 -80
  185. package/dist/components/Dialog/dialog.variants.d.ts.map +0 -1
  186. package/dist/components/Divider/Divider.d.ts +0 -50
  187. package/dist/components/Divider/Divider.d.ts.map +0 -1
  188. package/dist/components/Divider/divider.types.d.ts +0 -47
  189. package/dist/components/Divider/divider.types.d.ts.map +0 -1
  190. package/dist/components/Divider/divider.variants.d.ts +0 -129
  191. package/dist/components/Divider/divider.variants.d.ts.map +0 -1
  192. package/dist/components/Grid/Grid.d.ts +0 -32
  193. package/dist/components/Grid/Grid.d.ts.map +0 -1
  194. package/dist/components/Grid/grid.types.d.ts +0 -103
  195. package/dist/components/Grid/grid.types.d.ts.map +0 -1
  196. package/dist/components/Grid/grid.variants.d.ts +0 -453
  197. package/dist/components/Grid/grid.variants.d.ts.map +0 -1
  198. package/dist/components/LeftNav/LeftNav.d.ts +0 -34
  199. package/dist/components/LeftNav/LeftNav.d.ts.map +0 -1
  200. package/dist/components/LeftNav/leftNav.types.d.ts +0 -136
  201. package/dist/components/LeftNav/leftNav.types.d.ts.map +0 -1
  202. package/dist/components/LeftNav/leftNav.variants.d.ts +0 -143
  203. package/dist/components/LeftNav/leftNav.variants.d.ts.map +0 -1
  204. package/dist/components/NumberField/NumberField.d.ts +0 -18
  205. package/dist/components/NumberField/NumberField.d.ts.map +0 -1
  206. package/dist/components/NumberField/numberField.types.d.ts +0 -79
  207. package/dist/components/NumberField/numberField.types.d.ts.map +0 -1
  208. package/dist/components/NumberField/numberField.variants.d.ts +0 -169
  209. package/dist/components/NumberField/numberField.variants.d.ts.map +0 -1
  210. package/dist/components/OTPField/OTPField.d.ts +0 -25
  211. package/dist/components/OTPField/OTPField.d.ts.map +0 -1
  212. package/dist/components/OTPField/otpField.types.d.ts +0 -74
  213. package/dist/components/OTPField/otpField.types.d.ts.map +0 -1
  214. package/dist/components/OTPField/otpField.variants.d.ts +0 -105
  215. package/dist/components/OTPField/otpField.variants.d.ts.map +0 -1
  216. package/dist/components/Pagination/Pagination.d.ts +0 -32
  217. package/dist/components/Pagination/Pagination.d.ts.map +0 -1
  218. package/dist/components/Pagination/pagination.helpers.d.ts +0 -23
  219. package/dist/components/Pagination/pagination.helpers.d.ts.map +0 -1
  220. package/dist/components/Pagination/pagination.types.d.ts +0 -120
  221. package/dist/components/Pagination/pagination.types.d.ts.map +0 -1
  222. package/dist/components/Pagination/pagination.variants.d.ts +0 -150
  223. package/dist/components/Pagination/pagination.variants.d.ts.map +0 -1
  224. package/dist/components/Popover/Popover.d.ts +0 -15
  225. package/dist/components/Popover/Popover.d.ts.map +0 -1
  226. package/dist/components/Popover/popover.types.d.ts +0 -45
  227. package/dist/components/Popover/popover.types.d.ts.map +0 -1
  228. package/dist/components/Popover/popover.variants.d.ts +0 -34
  229. package/dist/components/Popover/popover.variants.d.ts.map +0 -1
  230. package/dist/components/RadioGroup/RadioGroup.d.ts +0 -35
  231. package/dist/components/RadioGroup/RadioGroup.d.ts.map +0 -1
  232. package/dist/components/RadioGroup/radioGroup.types.d.ts +0 -103
  233. package/dist/components/RadioGroup/radioGroup.types.d.ts.map +0 -1
  234. package/dist/components/RadioGroup/radioGroup.variants.d.ts +0 -166
  235. package/dist/components/RadioGroup/radioGroup.variants.d.ts.map +0 -1
  236. package/dist/components/Skeleton/Skeleton.d.ts +0 -23
  237. package/dist/components/Skeleton/Skeleton.d.ts.map +0 -1
  238. package/dist/components/Skeleton/skeleton.types.d.ts +0 -56
  239. package/dist/components/Skeleton/skeleton.types.d.ts.map +0 -1
  240. package/dist/components/Skeleton/skeleton.variants.d.ts +0 -110
  241. package/dist/components/Skeleton/skeleton.variants.d.ts.map +0 -1
  242. package/dist/components/Snackbar/Snackbar.d.ts +0 -37
  243. package/dist/components/Snackbar/Snackbar.d.ts.map +0 -1
  244. package/dist/components/Snackbar/snackbar.types.d.ts +0 -86
  245. package/dist/components/Snackbar/snackbar.types.d.ts.map +0 -1
  246. package/dist/components/Snackbar/snackbar.variants.d.ts +0 -153
  247. package/dist/components/Snackbar/snackbar.variants.d.ts.map +0 -1
  248. package/dist/components/Stack/Stack.d.ts +0 -24
  249. package/dist/components/Stack/Stack.d.ts.map +0 -1
  250. package/dist/components/Stack/stack.types.d.ts +0 -61
  251. package/dist/components/Stack/stack.types.d.ts.map +0 -1
  252. package/dist/components/Stack/stack.variants.d.ts +0 -163
  253. package/dist/components/Stack/stack.variants.d.ts.map +0 -1
  254. package/dist/components/Switch/Switch.d.ts +0 -15
  255. package/dist/components/Switch/Switch.d.ts.map +0 -1
  256. package/dist/components/Switch/switch.types.d.ts +0 -47
  257. package/dist/components/Switch/switch.types.d.ts.map +0 -1
  258. package/dist/components/Switch/switch.variants.d.ts +0 -105
  259. package/dist/components/Switch/switch.variants.d.ts.map +0 -1
  260. package/dist/components/Table/Table.d.ts +0 -24
  261. package/dist/components/Table/Table.d.ts.map +0 -1
  262. package/dist/components/Table/cells/RenderButton.d.ts +0 -13
  263. package/dist/components/Table/cells/RenderButton.d.ts.map +0 -1
  264. package/dist/components/Table/cells/RenderChip.d.ts +0 -80
  265. package/dist/components/Table/cells/RenderChip.d.ts.map +0 -1
  266. package/dist/components/Table/cells/RenderText.d.ts +0 -21
  267. package/dist/components/Table/cells/RenderText.d.ts.map +0 -1
  268. package/dist/components/Table/cells/RenderTwoLine.d.ts +0 -20
  269. package/dist/components/Table/cells/RenderTwoLine.d.ts.map +0 -1
  270. package/dist/components/Table/cells/RowActionsMenu.d.ts +0 -36
  271. package/dist/components/Table/cells/RowActionsMenu.d.ts.map +0 -1
  272. package/dist/components/Table/cells/index.d.ts +0 -11
  273. package/dist/components/Table/cells/index.d.ts.map +0 -1
  274. package/dist/components/Table/table.types.d.ts +0 -399
  275. package/dist/components/Table/table.types.d.ts.map +0 -1
  276. package/dist/components/Table/table.variants.d.ts +0 -285
  277. package/dist/components/Table/table.variants.d.ts.map +0 -1
  278. package/dist/components/Tabs/Tabs.d.ts +0 -19
  279. package/dist/components/Tabs/Tabs.d.ts.map +0 -1
  280. package/dist/components/Tabs/tabs.types.d.ts +0 -61
  281. package/dist/components/Tabs/tabs.types.d.ts.map +0 -1
  282. package/dist/components/Tabs/tabs.variants.d.ts +0 -82
  283. package/dist/components/Tabs/tabs.variants.d.ts.map +0 -1
  284. package/dist/components/Tabs/useTabs.d.ts +0 -55
  285. package/dist/components/Tabs/useTabs.d.ts.map +0 -1
  286. package/dist/components/TextField/TextField.d.ts +0 -25
  287. package/dist/components/TextField/TextField.d.ts.map +0 -1
  288. package/dist/components/TextField/textField.types.d.ts +0 -98
  289. package/dist/components/TextField/textField.types.d.ts.map +0 -1
  290. package/dist/components/TextField/textField.variants.d.ts +0 -166
  291. package/dist/components/TextField/textField.variants.d.ts.map +0 -1
  292. package/dist/components/Textarea/Textarea.d.ts +0 -16
  293. package/dist/components/Textarea/Textarea.d.ts.map +0 -1
  294. package/dist/components/Textarea/textarea.types.d.ts +0 -63
  295. package/dist/components/Textarea/textarea.types.d.ts.map +0 -1
  296. package/dist/components/Textarea/textarea.variants.d.ts +0 -197
  297. package/dist/components/Textarea/textarea.variants.d.ts.map +0 -1
  298. package/dist/components/TimePicker/TimePicker.d.ts +0 -12
  299. package/dist/components/TimePicker/TimePicker.d.ts.map +0 -1
  300. package/dist/components/TimePicker/timePicker.types.d.ts +0 -80
  301. package/dist/components/TimePicker/timePicker.types.d.ts.map +0 -1
  302. package/dist/components/TimePicker/timePicker.variants.d.ts +0 -103
  303. package/dist/components/TimePicker/timePicker.variants.d.ts.map +0 -1
  304. package/dist/components/Tooltip/Tooltip.d.ts +0 -29
  305. package/dist/components/Tooltip/Tooltip.d.ts.map +0 -1
  306. package/dist/components/Tooltip/tooltip.types.d.ts +0 -47
  307. package/dist/components/Tooltip/tooltip.types.d.ts.map +0 -1
  308. package/dist/components/Tooltip/tooltip.variants.d.ts +0 -34
  309. package/dist/components/Tooltip/tooltip.variants.d.ts.map +0 -1
  310. package/dist/components/TopBar/TopBar.d.ts +0 -33
  311. package/dist/components/TopBar/TopBar.d.ts.map +0 -1
  312. package/dist/components/TopBar/topBar.types.d.ts +0 -49
  313. package/dist/components/TopBar/topBar.types.d.ts.map +0 -1
  314. package/dist/components/TopBar/topBar.variants.d.ts +0 -79
  315. package/dist/components/TopBar/topBar.variants.d.ts.map +0 -1
  316. package/dist/components/Typography/Typography.d.ts +0 -42
  317. package/dist/components/Typography/Typography.d.ts.map +0 -1
  318. package/dist/components/Typography/typography.types.d.ts +0 -61
  319. package/dist/components/Typography/typography.types.d.ts.map +0 -1
  320. package/dist/components/Typography/typography.variants.d.ts +0 -167
  321. package/dist/components/Typography/typography.variants.d.ts.map +0 -1
  322. package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +0 -42
  323. package/dist/components/VisuallyHidden/VisuallyHidden.d.ts.map +0 -1
  324. package/dist/components/VisuallyHidden/visuallyHidden.types.d.ts +0 -42
  325. package/dist/components/VisuallyHidden/visuallyHidden.types.d.ts.map +0 -1
  326. package/dist/components/_shared/data/getNestedValue.d.ts +0 -20
  327. package/dist/components/_shared/data/getNestedValue.d.ts.map +0 -1
  328. package/dist/components/_shared/data/useColumnAutoDetect.d.ts +0 -45
  329. package/dist/components/_shared/data/useColumnAutoDetect.d.ts.map +0 -1
  330. package/dist/components/_shared/data/useControllableState.d.ts +0 -23
  331. package/dist/components/_shared/data/useControllableState.d.ts.map +0 -1
  332. package/dist/components/_shared/data/useDebouncedValue.d.ts +0 -10
  333. package/dist/components/_shared/data/useDebouncedValue.d.ts.map +0 -1
  334. package/dist/components/_shared/data/useTableFilter.d.ts +0 -36
  335. package/dist/components/_shared/data/useTableFilter.d.ts.map +0 -1
  336. package/dist/components/_shared/data/useTableSearch.d.ts +0 -23
  337. package/dist/components/_shared/data/useTableSearch.d.ts.map +0 -1
  338. package/dist/components/_shared/data/useTableSelection.d.ts +0 -25
  339. package/dist/components/_shared/data/useTableSelection.d.ts.map +0 -1
  340. package/dist/components/_shared/data/useTableSort.d.ts +0 -20
  341. package/dist/components/_shared/data/useTableSort.d.ts.map +0 -1
  342. package/dist/components/_shared/data/useVirtualizer.d.ts +0 -107
  343. package/dist/components/_shared/data/useVirtualizer.d.ts.map +0 -1
  344. package/dist/components/_shared/resolveValidationState.d.ts +0 -42
  345. package/dist/components/_shared/resolveValidationState.d.ts.map +0 -1
  346. package/dist/hooks/useAccessState.d.ts +0 -37
  347. package/dist/hooks/useAccessState.d.ts.map +0 -1
  348. package/dist/index.d.ts.map +0 -1
  349. package/dist/tsconfig.lib.tsbuildinfo +0 -1
  350. package/dist/utils/cn.d.ts +0 -26
  351. package/dist/utils/cn.d.ts.map +0 -1
  352. package/eslint.config.mjs +0 -62
  353. package/project.json +0 -15
  354. package/rollup.config.cjs +0 -16
  355. package/src/components/Accordion/Accordion.test.tsx +0 -95
  356. package/src/components/Accordion/Accordion.tsx +0 -97
  357. package/src/components/Accordion/accordion.types.ts +0 -66
  358. package/src/components/Accordion/accordion.variants.ts +0 -32
  359. package/src/components/AppShell/AppShell.test.tsx +0 -223
  360. package/src/components/AppShell/AppShell.tsx +0 -239
  361. package/src/components/AppShell/appShell.types.ts +0 -49
  362. package/src/components/AppShell/appShell.variants.ts +0 -54
  363. package/src/components/AspectRatio/AspectRatio.test.tsx +0 -173
  364. package/src/components/AspectRatio/AspectRatio.tsx +0 -73
  365. package/src/components/AspectRatio/aspectRatio.types.ts +0 -54
  366. package/src/components/Autocomplete/Autocomplete.perf.test.tsx +0 -225
  367. package/src/components/Autocomplete/Autocomplete.test.tsx +0 -556
  368. package/src/components/Autocomplete/Autocomplete.tsx +0 -1069
  369. package/src/components/Autocomplete/autocomplete.types.ts +0 -198
  370. package/src/components/Autocomplete/autocomplete.variants.ts +0 -141
  371. package/src/components/Box/Box.test.tsx +0 -370
  372. package/src/components/Box/Box.tsx +0 -83
  373. package/src/components/Box/box.types.ts +0 -61
  374. package/src/components/Box/box.variants.ts +0 -230
  375. package/src/components/Breadcrumbs/Breadcrumbs.perf.test.tsx +0 -128
  376. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +0 -231
  377. package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -203
  378. package/src/components/Breadcrumbs/breadcrumbs.types.ts +0 -87
  379. package/src/components/Breadcrumbs/breadcrumbs.variants.ts +0 -54
  380. package/src/components/Button/Button.test.tsx +0 -183
  381. package/src/components/Button/Button.tsx +0 -150
  382. package/src/components/Button/button.types.ts +0 -74
  383. package/src/components/Button/button.variants.ts +0 -159
  384. package/src/components/Calendar/Calendar.test.tsx +0 -75
  385. package/src/components/Calendar/Calendar.tsx +0 -264
  386. package/src/components/Calendar/calendar.types.ts +0 -65
  387. package/src/components/Calendar/calendar.variants.ts +0 -64
  388. package/src/components/Checkbox/Checkbox.test.tsx +0 -146
  389. package/src/components/Checkbox/Checkbox.tsx +0 -286
  390. package/src/components/Checkbox/checkbox.types.ts +0 -88
  391. package/src/components/Checkbox/checkbox.variants.ts +0 -68
  392. package/src/components/ConfirmDialog/ConfirmDialog.perf.test.tsx +0 -172
  393. package/src/components/ConfirmDialog/ConfirmDialog.test.tsx +0 -311
  394. package/src/components/ConfirmDialog/ConfirmDialog.tsx +0 -252
  395. package/src/components/ConfirmDialog/confirmDialog.types.ts +0 -70
  396. package/src/components/ConfirmDialog/confirmDialog.variants.ts +0 -76
  397. package/src/components/Container/Container.test.tsx +0 -209
  398. package/src/components/Container/Container.tsx +0 -74
  399. package/src/components/Container/container.types.ts +0 -45
  400. package/src/components/Container/container.variants.ts +0 -81
  401. package/src/components/DataGrid/DataGrid.perf.test.tsx +0 -114
  402. package/src/components/DataGrid/DataGrid.test.tsx +0 -1153
  403. package/src/components/DataGrid/DataGrid.tsx +0 -1282
  404. package/src/components/DataGrid/dataGrid.types.ts +0 -238
  405. package/src/components/DataGrid/dataGrid.variants.ts +0 -152
  406. package/src/components/DataGrid/filters/ColumnFilters.test.tsx +0 -330
  407. package/src/components/DataGrid/filters/ColumnFilters.tsx +0 -456
  408. package/src/components/DataGrid/reorder/useColumnReorder.test.ts +0 -130
  409. package/src/components/DataGrid/reorder/useColumnReorder.ts +0 -144
  410. package/src/components/DataGrid/resize/useColumnResize.test.ts +0 -144
  411. package/src/components/DataGrid/resize/useColumnResize.ts +0 -135
  412. package/src/components/DataGrid/visibility/ColumnVisibilityMenu.tsx +0 -186
  413. package/src/components/DatePicker/DatePicker.test.tsx +0 -76
  414. package/src/components/DatePicker/DatePicker.tsx +0 -305
  415. package/src/components/DatePicker/datePicker.types.ts +0 -77
  416. package/src/components/DatePicker/datePicker.variants.ts +0 -50
  417. package/src/components/DateRangePicker/DateRangePicker.test.tsx +0 -92
  418. package/src/components/DateRangePicker/DateRangePicker.tsx +0 -510
  419. package/src/components/DateRangePicker/dateRangePicker.types.ts +0 -74
  420. package/src/components/DateRangePicker/dateRangePicker.variants.ts +0 -101
  421. package/src/components/DateTimePicker/DateTimePicker.test.tsx +0 -78
  422. package/src/components/DateTimePicker/DateTimePicker.tsx +0 -347
  423. package/src/components/DateTimePicker/dateTimePicker.types.ts +0 -79
  424. package/src/components/DateTimePicker/dateTimePicker.variants.ts +0 -55
  425. package/src/components/Dialog/Dialog.test.tsx +0 -96
  426. package/src/components/Dialog/Dialog.tsx +0 -102
  427. package/src/components/Dialog/dialog.types.ts +0 -62
  428. package/src/components/Dialog/dialog.variants.ts +0 -66
  429. package/src/components/Divider/Divider.test.tsx +0 -243
  430. package/src/components/Divider/Divider.tsx +0 -140
  431. package/src/components/Divider/divider.types.ts +0 -52
  432. package/src/components/Divider/divider.variants.ts +0 -116
  433. package/src/components/Grid/Grid.test.tsx +0 -321
  434. package/src/components/Grid/Grid.tsx +0 -148
  435. package/src/components/Grid/grid.types.ts +0 -112
  436. package/src/components/Grid/grid.variants.ts +0 -133
  437. package/src/components/LeftNav/LeftNav.perf.test.tsx +0 -172
  438. package/src/components/LeftNav/LeftNav.test.tsx +0 -302
  439. package/src/components/LeftNav/LeftNav.tsx +0 -330
  440. package/src/components/LeftNav/leftNav.types.ts +0 -120
  441. package/src/components/LeftNav/leftNav.variants.ts +0 -107
  442. package/src/components/NumberField/NumberField.test.tsx +0 -83
  443. package/src/components/NumberField/NumberField.tsx +0 -321
  444. package/src/components/NumberField/numberField.types.ts +0 -72
  445. package/src/components/NumberField/numberField.variants.ts +0 -94
  446. package/src/components/OTPField/OTPField.test.tsx +0 -121
  447. package/src/components/OTPField/OTPField.tsx +0 -250
  448. package/src/components/OTPField/otpField.types.ts +0 -58
  449. package/src/components/OTPField/otpField.variants.ts +0 -72
  450. package/src/components/Pagination/Pagination.test.tsx +0 -314
  451. package/src/components/Pagination/Pagination.tsx +0 -277
  452. package/src/components/Pagination/pagination.helpers.ts +0 -102
  453. package/src/components/Pagination/pagination.types.ts +0 -117
  454. package/src/components/Pagination/pagination.variants.ts +0 -117
  455. package/src/components/Popover/Popover.test.tsx +0 -72
  456. package/src/components/Popover/Popover.tsx +0 -55
  457. package/src/components/Popover/popover.types.ts +0 -42
  458. package/src/components/Popover/popover.variants.ts +0 -24
  459. package/src/components/RadioGroup/RadioGroup.test.tsx +0 -140
  460. package/src/components/RadioGroup/RadioGroup.tsx +0 -283
  461. package/src/components/RadioGroup/radioGroup.types.ts +0 -85
  462. package/src/components/RadioGroup/radioGroup.variants.ts +0 -87
  463. package/src/components/Skeleton/Skeleton.test.tsx +0 -127
  464. package/src/components/Skeleton/Skeleton.tsx +0 -49
  465. package/src/components/Skeleton/skeleton.types.ts +0 -59
  466. package/src/components/Skeleton/skeleton.variants.ts +0 -87
  467. package/src/components/Snackbar/Snackbar.perf.test.tsx +0 -144
  468. package/src/components/Snackbar/Snackbar.test.tsx +0 -327
  469. package/src/components/Snackbar/Snackbar.tsx +0 -298
  470. package/src/components/Snackbar/snackbar.types.ts +0 -83
  471. package/src/components/Snackbar/snackbar.variants.ts +0 -74
  472. package/src/components/Stack/Stack.test.tsx +0 -309
  473. package/src/components/Stack/Stack.tsx +0 -115
  474. package/src/components/Stack/stack.types.ts +0 -68
  475. package/src/components/Stack/stack.variants.ts +0 -80
  476. package/src/components/Switch/Switch.test.tsx +0 -131
  477. package/src/components/Switch/Switch.tsx +0 -158
  478. package/src/components/Switch/switch.types.ts +0 -36
  479. package/src/components/Switch/switch.variants.ts +0 -70
  480. package/src/components/Table/Table.perf.test.tsx +0 -81
  481. package/src/components/Table/Table.test.tsx +0 -674
  482. package/src/components/Table/Table.tsx +0 -863
  483. package/src/components/Table/cells/RenderButton.tsx +0 -23
  484. package/src/components/Table/cells/RenderChip.tsx +0 -100
  485. package/src/components/Table/cells/RenderText.tsx +0 -37
  486. package/src/components/Table/cells/RenderTwoLine.tsx +0 -34
  487. package/src/components/Table/cells/RowActionsMenu.tsx +0 -147
  488. package/src/components/Table/cells/cells.test.tsx +0 -247
  489. package/src/components/Table/cells/index.ts +0 -14
  490. package/src/components/Table/table.types.ts +0 -438
  491. package/src/components/Table/table.variants.ts +0 -207
  492. package/src/components/Tabs/Tabs.test.tsx +0 -145
  493. package/src/components/Tabs/Tabs.tsx +0 -77
  494. package/src/components/Tabs/tabs.types.ts +0 -55
  495. package/src/components/Tabs/tabs.variants.ts +0 -69
  496. package/src/components/Tabs/useTabs.ts +0 -167
  497. package/src/components/TextField/TextField.test.tsx +0 -198
  498. package/src/components/TextField/TextField.tsx +0 -245
  499. package/src/components/TextField/textField.types.ts +0 -90
  500. package/src/components/TextField/textField.variants.ts +0 -105
  501. package/src/components/Textarea/Textarea.test.tsx +0 -75
  502. package/src/components/Textarea/Textarea.tsx +0 -190
  503. package/src/components/Textarea/textarea.types.ts +0 -60
  504. package/src/components/Textarea/textarea.variants.ts +0 -85
  505. package/src/components/TimePicker/TimePicker.test.tsx +0 -65
  506. package/src/components/TimePicker/TimePicker.tsx +0 -274
  507. package/src/components/TimePicker/timePicker.types.ts +0 -69
  508. package/src/components/TimePicker/timePicker.variants.ts +0 -53
  509. package/src/components/Tooltip/Tooltip.test.tsx +0 -73
  510. package/src/components/Tooltip/Tooltip.tsx +0 -70
  511. package/src/components/Tooltip/tooltip.types.ts +0 -44
  512. package/src/components/Tooltip/tooltip.variants.ts +0 -28
  513. package/src/components/TopBar/TopBar.test.tsx +0 -129
  514. package/src/components/TopBar/TopBar.tsx +0 -66
  515. package/src/components/TopBar/topBar.types.ts +0 -42
  516. package/src/components/TopBar/topBar.variants.ts +0 -38
  517. package/src/components/Typography/Typography.test.tsx +0 -247
  518. package/src/components/Typography/Typography.tsx +0 -112
  519. package/src/components/Typography/typography.types.ts +0 -65
  520. package/src/components/Typography/typography.variants.ts +0 -130
  521. package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +0 -86
  522. package/src/components/VisuallyHidden/VisuallyHidden.tsx +0 -59
  523. package/src/components/VisuallyHidden/visuallyHidden.types.ts +0 -45
  524. package/src/components/_shared/data/getNestedValue.test.ts +0 -50
  525. package/src/components/_shared/data/getNestedValue.ts +0 -32
  526. package/src/components/_shared/data/useColumnAutoDetect.test.ts +0 -123
  527. package/src/components/_shared/data/useColumnAutoDetect.ts +0 -100
  528. package/src/components/_shared/data/useControllableState.ts +0 -48
  529. package/src/components/_shared/data/useDebouncedValue.ts +0 -24
  530. package/src/components/_shared/data/useTableFilter.test.ts +0 -166
  531. package/src/components/_shared/data/useTableFilter.ts +0 -118
  532. package/src/components/_shared/data/useTableSearch.test.ts +0 -115
  533. package/src/components/_shared/data/useTableSearch.ts +0 -66
  534. package/src/components/_shared/data/useTableSelection.test.ts +0 -100
  535. package/src/components/_shared/data/useTableSelection.ts +0 -100
  536. package/src/components/_shared/data/useTableSort.test.ts +0 -150
  537. package/src/components/_shared/data/useTableSort.ts +0 -141
  538. package/src/components/_shared/data/useVirtualizer.test.ts +0 -158
  539. package/src/components/_shared/data/useVirtualizer.ts +0 -199
  540. package/src/components/_shared/resolveValidationState.ts +0 -60
  541. package/src/components/_shared/themeIdentity.test.ts +0 -113
  542. package/src/hooks/useAccessState.spec.tsx +0 -161
  543. package/src/hooks/useAccessState.ts +0 -81
  544. package/src/index.ts +0 -388
  545. package/src/utils/cn.spec.ts +0 -16
  546. package/src/utils/cn.ts +0 -29
  547. package/test-output/vitest/coverage/base.css +0 -224
  548. package/test-output/vitest/coverage/block-navigation.js +0 -87
  549. package/test-output/vitest/coverage/clover.xml +0 -2418
  550. package/test-output/vitest/coverage/coverage-final.json +0 -89
  551. package/test-output/vitest/coverage/favicon.png +0 -0
  552. package/test-output/vitest/coverage/index.html +0 -746
  553. package/test-output/vitest/coverage/prettify.css +0 -1
  554. package/test-output/vitest/coverage/prettify.js +0 -2
  555. package/test-output/vitest/coverage/sort-arrow-sprite.png +0 -0
  556. package/test-output/vitest/coverage/sorter.js +0 -210
  557. package/test-output/vitest/coverage/src/components/Accordion/Accordion.tsx.html +0 -376
  558. package/test-output/vitest/coverage/src/components/Accordion/accordion.variants.ts.html +0 -181
  559. package/test-output/vitest/coverage/src/components/Accordion/index.html +0 -131
  560. package/test-output/vitest/coverage/src/components/AppShell/AppShell.tsx.html +0 -802
  561. package/test-output/vitest/coverage/src/components/AppShell/appShell.variants.ts.html +0 -247
  562. package/test-output/vitest/coverage/src/components/AppShell/index.html +0 -131
  563. package/test-output/vitest/coverage/src/components/AspectRatio/AspectRatio.tsx.html +0 -304
  564. package/test-output/vitest/coverage/src/components/AspectRatio/index.html +0 -116
  565. package/test-output/vitest/coverage/src/components/Autocomplete/Autocomplete.tsx.html +0 -3292
  566. package/test-output/vitest/coverage/src/components/Autocomplete/autocomplete.variants.ts.html +0 -508
  567. package/test-output/vitest/coverage/src/components/Autocomplete/index.html +0 -131
  568. package/test-output/vitest/coverage/src/components/Box/Box.tsx.html +0 -334
  569. package/test-output/vitest/coverage/src/components/Box/box.variants.ts.html +0 -775
  570. package/test-output/vitest/coverage/src/components/Box/index.html +0 -131
  571. package/test-output/vitest/coverage/src/components/Breadcrumbs/Breadcrumbs.tsx.html +0 -694
  572. package/test-output/vitest/coverage/src/components/Breadcrumbs/breadcrumbs.variants.ts.html +0 -247
  573. package/test-output/vitest/coverage/src/components/Breadcrumbs/index.html +0 -131
  574. package/test-output/vitest/coverage/src/components/Button/Button.tsx.html +0 -535
  575. package/test-output/vitest/coverage/src/components/Button/button.variants.ts.html +0 -562
  576. package/test-output/vitest/coverage/src/components/Button/index.html +0 -131
  577. package/test-output/vitest/coverage/src/components/Checkbox/Checkbox.tsx.html +0 -943
  578. package/test-output/vitest/coverage/src/components/Checkbox/checkbox.variants.ts.html +0 -289
  579. package/test-output/vitest/coverage/src/components/Checkbox/index.html +0 -131
  580. package/test-output/vitest/coverage/src/components/ConfirmDialog/ConfirmDialog.tsx.html +0 -841
  581. package/test-output/vitest/coverage/src/components/ConfirmDialog/confirmDialog.variants.ts.html +0 -313
  582. package/test-output/vitest/coverage/src/components/ConfirmDialog/index.html +0 -131
  583. package/test-output/vitest/coverage/src/components/Container/Container.tsx.html +0 -307
  584. package/test-output/vitest/coverage/src/components/Container/container.variants.ts.html +0 -328
  585. package/test-output/vitest/coverage/src/components/Container/index.html +0 -131
  586. package/test-output/vitest/coverage/src/components/DataGrid/DataGrid.tsx.html +0 -3937
  587. package/test-output/vitest/coverage/src/components/DataGrid/dataGrid.variants.ts.html +0 -541
  588. package/test-output/vitest/coverage/src/components/DataGrid/filters/ColumnFilters.tsx.html +0 -1453
  589. package/test-output/vitest/coverage/src/components/DataGrid/filters/index.html +0 -116
  590. package/test-output/vitest/coverage/src/components/DataGrid/index.html +0 -131
  591. package/test-output/vitest/coverage/src/components/DataGrid/reorder/index.html +0 -116
  592. package/test-output/vitest/coverage/src/components/DataGrid/reorder/useColumnReorder.ts.html +0 -517
  593. package/test-output/vitest/coverage/src/components/DataGrid/resize/index.html +0 -116
  594. package/test-output/vitest/coverage/src/components/DataGrid/resize/useColumnResize.ts.html +0 -490
  595. package/test-output/vitest/coverage/src/components/DataGrid/visibility/ColumnVisibilityMenu.tsx.html +0 -592
  596. package/test-output/vitest/coverage/src/components/DataGrid/visibility/index.html +0 -116
  597. package/test-output/vitest/coverage/src/components/DateTimePicker/DateTimePicker.tsx.html +0 -1042
  598. package/test-output/vitest/coverage/src/components/DateTimePicker/dateTimePicker.variants.ts.html +0 -337
  599. package/test-output/vitest/coverage/src/components/DateTimePicker/index.html +0 -131
  600. package/test-output/vitest/coverage/src/components/Dialog/Dialog.tsx.html +0 -391
  601. package/test-output/vitest/coverage/src/components/Dialog/dialog.variants.ts.html +0 -283
  602. package/test-output/vitest/coverage/src/components/Dialog/index.html +0 -131
  603. package/test-output/vitest/coverage/src/components/Divider/Divider.tsx.html +0 -505
  604. package/test-output/vitest/coverage/src/components/Divider/divider.variants.ts.html +0 -433
  605. package/test-output/vitest/coverage/src/components/Divider/index.html +0 -131
  606. package/test-output/vitest/coverage/src/components/Grid/Grid.tsx.html +0 -529
  607. package/test-output/vitest/coverage/src/components/Grid/grid.variants.ts.html +0 -484
  608. package/test-output/vitest/coverage/src/components/Grid/index.html +0 -131
  609. package/test-output/vitest/coverage/src/components/LeftNav/LeftNav.tsx.html +0 -1075
  610. package/test-output/vitest/coverage/src/components/LeftNav/index.html +0 -131
  611. package/test-output/vitest/coverage/src/components/LeftNav/leftNav.variants.ts.html +0 -406
  612. package/test-output/vitest/coverage/src/components/NumberField/NumberField.tsx.html +0 -1048
  613. package/test-output/vitest/coverage/src/components/NumberField/index.html +0 -131
  614. package/test-output/vitest/coverage/src/components/NumberField/numberField.variants.ts.html +0 -367
  615. package/test-output/vitest/coverage/src/components/OTPField/OTPField.tsx.html +0 -835
  616. package/test-output/vitest/coverage/src/components/OTPField/index.html +0 -131
  617. package/test-output/vitest/coverage/src/components/OTPField/otpField.variants.ts.html +0 -301
  618. package/test-output/vitest/coverage/src/components/Pagination/Pagination.tsx.html +0 -916
  619. package/test-output/vitest/coverage/src/components/Pagination/index.html +0 -146
  620. package/test-output/vitest/coverage/src/components/Pagination/pagination.helpers.ts.html +0 -391
  621. package/test-output/vitest/coverage/src/components/Pagination/pagination.variants.ts.html +0 -436
  622. package/test-output/vitest/coverage/src/components/Popover/Popover.tsx.html +0 -250
  623. package/test-output/vitest/coverage/src/components/Popover/index.html +0 -131
  624. package/test-output/vitest/coverage/src/components/Popover/popover.variants.ts.html +0 -157
  625. package/test-output/vitest/coverage/src/components/RadioGroup/RadioGroup.tsx.html +0 -934
  626. package/test-output/vitest/coverage/src/components/RadioGroup/index.html +0 -131
  627. package/test-output/vitest/coverage/src/components/RadioGroup/radioGroup.variants.ts.html +0 -346
  628. package/test-output/vitest/coverage/src/components/Skeleton/Skeleton.tsx.html +0 -232
  629. package/test-output/vitest/coverage/src/components/Skeleton/index.html +0 -131
  630. package/test-output/vitest/coverage/src/components/Skeleton/skeleton.variants.ts.html +0 -346
  631. package/test-output/vitest/coverage/src/components/Snackbar/Snackbar.tsx.html +0 -979
  632. package/test-output/vitest/coverage/src/components/Snackbar/index.html +0 -131
  633. package/test-output/vitest/coverage/src/components/Snackbar/snackbar.variants.ts.html +0 -307
  634. package/test-output/vitest/coverage/src/components/Stack/Stack.tsx.html +0 -430
  635. package/test-output/vitest/coverage/src/components/Stack/index.html +0 -131
  636. package/test-output/vitest/coverage/src/components/Stack/stack.variants.ts.html +0 -325
  637. package/test-output/vitest/coverage/src/components/Switch/Switch.tsx.html +0 -559
  638. package/test-output/vitest/coverage/src/components/Switch/index.html +0 -131
  639. package/test-output/vitest/coverage/src/components/Switch/switch.variants.ts.html +0 -295
  640. package/test-output/vitest/coverage/src/components/Table/Table.tsx.html +0 -2677
  641. package/test-output/vitest/coverage/src/components/Table/cells/RenderButton.tsx.html +0 -154
  642. package/test-output/vitest/coverage/src/components/Table/cells/RenderChip.tsx.html +0 -385
  643. package/test-output/vitest/coverage/src/components/Table/cells/RenderText.tsx.html +0 -196
  644. package/test-output/vitest/coverage/src/components/Table/cells/RenderTwoLine.tsx.html +0 -187
  645. package/test-output/vitest/coverage/src/components/Table/cells/RowActionsMenu.tsx.html +0 -526
  646. package/test-output/vitest/coverage/src/components/Table/cells/index.html +0 -191
  647. package/test-output/vitest/coverage/src/components/Table/cells/index.ts.html +0 -127
  648. package/test-output/vitest/coverage/src/components/Table/index.html +0 -131
  649. package/test-output/vitest/coverage/src/components/Table/table.variants.ts.html +0 -706
  650. package/test-output/vitest/coverage/src/components/Tabs/Tabs.tsx.html +0 -283
  651. package/test-output/vitest/coverage/src/components/Tabs/index.html +0 -131
  652. package/test-output/vitest/coverage/src/components/Tabs/tabs.variants.ts.html +0 -292
  653. package/test-output/vitest/coverage/src/components/TextField/TextField.tsx.html +0 -820
  654. package/test-output/vitest/coverage/src/components/TextField/index.html +0 -131
  655. package/test-output/vitest/coverage/src/components/TextField/textField.variants.ts.html +0 -400
  656. package/test-output/vitest/coverage/src/components/Textarea/Textarea.tsx.html +0 -655
  657. package/test-output/vitest/coverage/src/components/Textarea/index.html +0 -131
  658. package/test-output/vitest/coverage/src/components/Textarea/textarea.variants.ts.html +0 -340
  659. package/test-output/vitest/coverage/src/components/Tooltip/Tooltip.tsx.html +0 -295
  660. package/test-output/vitest/coverage/src/components/Tooltip/index.html +0 -131
  661. package/test-output/vitest/coverage/src/components/Tooltip/tooltip.variants.ts.html +0 -169
  662. package/test-output/vitest/coverage/src/components/TopBar/TopBar.tsx.html +0 -283
  663. package/test-output/vitest/coverage/src/components/TopBar/index.html +0 -131
  664. package/test-output/vitest/coverage/src/components/TopBar/topBar.variants.ts.html +0 -199
  665. package/test-output/vitest/coverage/src/components/Typography/Typography.tsx.html +0 -421
  666. package/test-output/vitest/coverage/src/components/Typography/index.html +0 -131
  667. package/test-output/vitest/coverage/src/components/Typography/typography.variants.ts.html +0 -436
  668. package/test-output/vitest/coverage/src/components/VisuallyHidden/VisuallyHidden.tsx.html +0 -262
  669. package/test-output/vitest/coverage/src/components/VisuallyHidden/index.html +0 -116
  670. package/test-output/vitest/coverage/src/components/_shared/data/getNestedValue.ts.html +0 -181
  671. package/test-output/vitest/coverage/src/components/_shared/data/index.html +0 -236
  672. package/test-output/vitest/coverage/src/components/_shared/data/useColumnAutoDetect.ts.html +0 -385
  673. package/test-output/vitest/coverage/src/components/_shared/data/useControllableState.ts.html +0 -229
  674. package/test-output/vitest/coverage/src/components/_shared/data/useDebouncedValue.ts.html +0 -157
  675. package/test-output/vitest/coverage/src/components/_shared/data/useTableFilter.ts.html +0 -439
  676. package/test-output/vitest/coverage/src/components/_shared/data/useTableSearch.ts.html +0 -283
  677. package/test-output/vitest/coverage/src/components/_shared/data/useTableSelection.ts.html +0 -385
  678. package/test-output/vitest/coverage/src/components/_shared/data/useTableSort.ts.html +0 -508
  679. package/test-output/vitest/coverage/src/components/_shared/data/useVirtualizer.ts.html +0 -682
  680. package/test-output/vitest/coverage/src/components/_shared/index.html +0 -116
  681. package/test-output/vitest/coverage/src/components/_shared/resolveValidationState.ts.html +0 -265
  682. package/test-output/vitest/coverage/src/hooks/index.html +0 -116
  683. package/test-output/vitest/coverage/src/hooks/useAccessState.ts.html +0 -328
  684. package/test-output/vitest/coverage/src/index.html +0 -116
  685. package/test-output/vitest/coverage/src/index.ts.html +0 -1153
  686. package/test-output/vitest/coverage/src/utils/cn.ts.html +0 -172
  687. package/test-output/vitest/coverage/src/utils/index.html +0 -116
  688. package/tsconfig.json +0 -13
  689. package/tsconfig.lib.json +0 -58
  690. package/tsconfig.spec.json +0 -34
  691. package/vite.config.ts +0 -33
  692. package/vitest.config.mts +0 -29
@@ -1,863 +0,0 @@
1
- import { useMemo, useEffect, type ReactNode, type MouseEvent } from 'react';
2
- import { cn } from '../../utils/cn.js';
3
- import { useAccessState } from '../../hooks/useAccessState.js';
4
- import { Skeleton } from '../Skeleton/Skeleton.js';
5
- import { tableVariants } from './table.variants.js';
6
- import { useControllableState } from '../_shared/data/useControllableState.js';
7
- import { useDebouncedValue } from '../_shared/data/useDebouncedValue.js';
8
- import { useTableSearch } from '../_shared/data/useTableSearch.js';
9
- import { useTableFilter } from '../_shared/data/useTableFilter.js';
10
- import { useTableSort, cycleSortFor } from '../_shared/data/useTableSort.js';
11
- import { useTableSelection } from '../_shared/data/useTableSelection.js';
12
- import { getNestedValue } from '../_shared/data/getNestedValue.js';
13
- import {
14
- useColumnAutoDetect,
15
- resolveAlign,
16
- resolveMonospace,
17
- resolveTabularNums,
18
- } from '../_shared/data/useColumnAutoDetect.js';
19
- import type {
20
- TableProps,
21
- TableColumn,
22
- TableSortModel,
23
- TableFilterModel,
24
- TableLabels,
25
- } from './table.types.js';
26
-
27
- const DEFAULT_LABELS: Required<TableLabels> = {
28
- searchPlaceholder: 'Search...',
29
- noData: 'No data',
30
- noResults: 'No matching results',
31
- loading: 'Loading…',
32
- ariaSortNone: 'Not sorted. Click to sort ascending.',
33
- ariaSortAscending: 'Sorted ascending. Click to sort descending.',
34
- ariaSortDescending: 'Sorted descending. Click to clear sort.',
35
- ariaSelectRow: 'Select row',
36
- ariaSelectAllRows: 'Select all rows',
37
- ariaExpandRow: 'Expand row',
38
- ariaCollapseRow: 'Collapse row',
39
- selectedCount: '{count} selected',
40
- clearSelection: 'Clear selection',
41
- filterColumn: 'Filter',
42
- filterApply: 'Apply',
43
- filterClear: 'Clear',
44
- filterMin: 'Min',
45
- filterMax: 'Max',
46
- filterFrom: 'From',
47
- filterTo: 'To',
48
- filterAll: 'All',
49
- filterTrue: 'True',
50
- filterFalse: 'False',
51
- density: 'Density',
52
- densityCompact: 'Compact',
53
- densityComfortable: 'Comfortable',
54
- densitySpacious: 'Spacious',
55
- columnsButton: 'Columns',
56
- columnsTitle: 'Toggle columns',
57
- columnsToggleAll: 'Toggle all columns',
58
- };
59
-
60
- const DEFAULT_GET_ROW_ID = <T extends object>(_row: T, index: number) => String(index);
61
-
62
- /**
63
- * Dashforge TW `<Table>` — declarative-first, market-grounded table.
64
- *
65
- * Design references:
66
- * - Visual: Stripe (clean line dividers, hover row actions, sticky header)
67
- * - Density: Pencil & Paper UX research (compact / comfortable / spacious)
68
- * - A11Y: W3C WAI Table tutorial (semantic `<table>`, scope, aria-sort)
69
- * - Column model: extended from Dashforge MUI Table existing API
70
- *
71
- * Smart defaults: column types auto-detected → numbers right-aligned
72
- * + tabular-nums, dates monospace, booleans center-aligned. Override
73
- * via explicit `align` / `monospace` per column.
74
- *
75
- * State (sort / search / filter / selection / expansion) is internal
76
- * by default; pass the controlled prop + matching change handler to
77
- * lift state up — same pattern as `<TextField>` value.
78
- *
79
- * i18n: pass `header: t('users.name')` for column headers; pass
80
- * `labels={{ searchPlaceholder: t('...'), ... }}` for internal default
81
- * strings.
82
- */
83
- export function Table<T extends object>(props: TableProps<T>) {
84
- const {
85
- rows,
86
- cols,
87
- getRowId = DEFAULT_GET_ROW_ID,
88
-
89
- // State props (controllable)
90
- sortModel: sortModelProp,
91
- onSortChange,
92
- defaultSortModel,
93
-
94
- enableSearch = false,
95
- searchQuery: searchQueryProp,
96
- onSearchQueryChange,
97
- searchPlaceholder,
98
- searchDebounceMs = 200,
99
-
100
- filterModel: filterModelProp,
101
- onFilterChange,
102
-
103
- rowSelection = 'none',
104
- selectedRowIds: selectedRowIdsProp,
105
- onSelectionChange,
106
- bulkActions,
107
-
108
- expandable,
109
-
110
- rowActions,
111
-
112
- loading = false,
113
- loadingRowCount = 5,
114
- emptyState,
115
-
116
- stickyHeader = true,
117
- caption,
118
- showCaption = false,
119
-
120
- access: tableAccess,
121
-
122
- labels: labelsProp,
123
-
124
- variant,
125
- size,
126
- density,
127
-
128
- sx,
129
- slotProps,
130
- } = props;
131
-
132
- const labels = { ...DEFAULT_LABELS, ...labelsProp };
133
- const tableAccessState = useAccessState(tableAccess);
134
-
135
- // Dev-only guard: `getRowId` is optional (positional-index fallback)
136
- // but that fallback breaks row identity once rows reorder (sort) or
137
- // change presence (search / filter) — selection + expansion state
138
- // then jump to the wrong rows. Warn when it's omitted AND a feature
139
- // that relies on stable identity is active. Stripped in production.
140
- const getRowIdProvided = props.getRowId !== undefined;
141
- useEffect(() => {
142
- if (process.env.NODE_ENV === 'production') return;
143
- if (getRowIdProvided) return;
144
- const identityMatters =
145
- rowSelection !== 'none' ||
146
- expandable != null ||
147
- enableSearch ||
148
- cols.some((c) => Boolean(c.sortable));
149
- if (identityMatters) {
150
- console.warn(
151
- '[Dashforge Table] `getRowId` is not set — falling back to the ' +
152
- 'positional row index. With sort / search / selection / ' +
153
- 'expandable rows active, the index-based key breaks row ' +
154
- 'identity when rows reorder. Pass a stable resolver, e.g. ' +
155
- '`getRowId={(row) => row.id}`.',
156
- );
157
- }
158
- }, [getRowIdProvided, rowSelection, expandable, enableSearch, cols]);
159
-
160
- // ───── Controllable state machinery ─────
161
-
162
- const [sortModel, setSortModel] = useControllableState<TableSortModel>({
163
- controlledValue: sortModelProp,
164
- defaultValue: defaultSortModel ?? [],
165
- onChange: onSortChange,
166
- });
167
- const [searchQuery, setSearchQuery] = useControllableState<string>({
168
- controlledValue: searchQueryProp,
169
- defaultValue: '',
170
- onChange: onSearchQueryChange,
171
- });
172
- // Filter UI (per-column quick filters) is scoped for v1-bis; for now
173
- // the model is read-only inside the component — the consumer wires it
174
- // up via `filterModelProp` + `onFilterChange` from their own state.
175
- // Until the in-table filter UI ships, only the controlled mode is
176
- // meaningful, so we don't need an internal setter.
177
- void onFilterChange;
178
- const filterModel: TableFilterModel = filterModelProp ?? [];
179
- const [selectedRowIds, setSelectedRowIds] = useControllableState<string[]>({
180
- controlledValue: selectedRowIdsProp,
181
- defaultValue: [],
182
- onChange: onSelectionChange,
183
- });
184
- const [expandedRowIds, setExpandedRowIds] = useControllableState<string[]>({
185
- controlledValue: expandable?.expandedRowIds,
186
- defaultValue: [],
187
- onChange: expandable?.onExpandChange,
188
- });
189
-
190
- // ───── RBAC: filter out hidden columns ─────
191
-
192
- const visibleCols = useMemo(
193
- () =>
194
- cols.filter(
195
- (col) => !col.access || col.access.onUnauthorized !== 'hide',
196
- ),
197
- [cols],
198
- );
199
-
200
- // ───── Smart-default column types ─────
201
-
202
- const columnTypes = useColumnAutoDetect(rows, visibleCols);
203
-
204
- // ───── Pipeline: search → filter → sort ─────
205
-
206
- const debouncedSearchQuery = useDebouncedValue(searchQuery, searchDebounceMs);
207
- const searchedRows = useTableSearch(rows, visibleCols, debouncedSearchQuery);
208
- const filteredRows = useTableFilter(searchedRows, filterModel);
209
- const sortedRows = useTableSort(filteredRows, visibleCols, sortModel);
210
-
211
- // ───── Selection helpers ─────
212
-
213
- const visibleRowIds = useMemo(
214
- () => sortedRows.map((row, idx) => getRowId(row, idx)),
215
- [sortedRows, getRowId],
216
- );
217
-
218
- const selection = useTableSelection(rowSelection, selectedRowIds, setSelectedRowIds);
219
-
220
- const selectedRows = useMemo(
221
- () => sortedRows.filter((row, idx) => selection.isSelected(getRowId(row, idx))),
222
- [sortedRows, selection, getRowId],
223
- );
224
-
225
- // ───── Variant recipe ─────
226
-
227
- const v = tableVariants({ variant, size, density, stickyHeader });
228
-
229
- // ───── Render ─────
230
-
231
- if (!tableAccessState.visible) return null;
232
-
233
- const isTableInteractive = !tableAccessState.disabled;
234
- const showSelectionColumn = rowSelection !== 'none';
235
- const showExpandColumn = expandable != null;
236
- const showRowActionsColumn = rowActions != null;
237
-
238
- const totalColumnCount =
239
- visibleCols.length +
240
- (showSelectionColumn ? 1 : 0) +
241
- (showExpandColumn ? 1 : 0) +
242
- (showRowActionsColumn ? 1 : 0);
243
-
244
- return (
245
- <div
246
- className={cn(v.root(), sx, slotProps?.root?.className)}
247
- data-disabled={!isTableInteractive ? 'true' : undefined}
248
- >
249
- {/* ───── Toolbar (search) ───── */}
250
- {enableSearch && (
251
- <div className={cn(v.toolbar(), slotProps?.toolbar?.className)}>
252
- <label className={cn(v.search(), slotProps?.search?.className)}>
253
- <span className="sr-only">{labels.searchPlaceholder}</span>
254
- <SearchIcon className="ml-2 shrink-0 text-neutral-500" />
255
- <input
256
- type="text"
257
- value={searchQuery}
258
- onChange={(e) => setSearchQuery(e.target.value)}
259
- placeholder={searchPlaceholder ?? labels.searchPlaceholder}
260
- disabled={!isTableInteractive}
261
- className={cn(
262
- 'flex-1 bg-transparent border-0 outline-none',
263
- 'px-2 py-1.5',
264
- // placeholder color auto-inverts via the CSS-var preset;
265
- // no `dark:` variant needed on neutral palette.
266
- 'placeholder:text-neutral-400',
267
- 'disabled:opacity-50 disabled:cursor-not-allowed',
268
- )}
269
- />
270
- </label>
271
- </div>
272
- )}
273
-
274
- {/* ───── Scroll wrapper ───── */}
275
- <div className={cn(v.scroll(), slotProps?.scroll?.className)}>
276
- <table className={cn(v.table(), slotProps?.table?.className)}>
277
- {caption != null && (
278
- <caption className={cn(!showCaption && 'sr-only', 'py-2 text-sm text-neutral-500')}>
279
- {caption}
280
- </caption>
281
- )}
282
-
283
- {/* ───── Header ───── */}
284
- <thead className={cn(v.thead(), slotProps?.thead?.className)}>
285
- <tr className={cn(v.headerRow(), slotProps?.headerRow?.className)}>
286
- {showSelectionColumn && (
287
- <th
288
- scope="col"
289
- className={cn(
290
- v.headerCell(),
291
- v.selectionCell(),
292
- slotProps?.headerCell?.className,
293
- slotProps?.selectionCell?.className,
294
- )}
295
- >
296
- {rowSelection === 'multiple' && (
297
- <input
298
- type="checkbox"
299
- aria-label={labels.ariaSelectAllRows}
300
- checked={selection.isAllSelected(visibleRowIds)}
301
- ref={(el) => {
302
- if (el) el.indeterminate = selection.isIndeterminate(visibleRowIds);
303
- }}
304
- onChange={() => selection.toggleAll(visibleRowIds)}
305
- disabled={!isTableInteractive}
306
- className="cursor-pointer"
307
- />
308
- )}
309
- </th>
310
- )}
311
-
312
- {showExpandColumn && (
313
- <th
314
- scope="col"
315
- aria-hidden="true"
316
- className={cn(
317
- v.headerCell(),
318
- v.expandToggleCell(),
319
- slotProps?.headerCell?.className,
320
- slotProps?.expandToggleCell?.className,
321
- )}
322
- />
323
- )}
324
-
325
- {visibleCols.map((col) => (
326
- <HeaderCell
327
- key={col.field as string}
328
- col={col}
329
- sortModel={sortModel}
330
- onSortClick={(e) => handleSortClick(col, e, sortModel, setSortModel)}
331
- inferredType={columnTypes.get(col.field as string)}
332
- labels={labels}
333
- className={cn(v.headerCell(), slotProps?.headerCell?.className)}
334
- buttonClassName={v.headerCellButton()}
335
- disabled={!isTableInteractive}
336
- />
337
- ))}
338
-
339
- {showRowActionsColumn && (
340
- <th
341
- scope="col"
342
- aria-hidden="true"
343
- className={cn(
344
- v.headerCell(),
345
- 'w-12',
346
- slotProps?.headerCell?.className,
347
- )}
348
- />
349
- )}
350
- </tr>
351
- </thead>
352
-
353
- {/* ───── Body ───── */}
354
- <tbody className={cn(v.tbody(), slotProps?.tbody?.className)}>
355
- {loading
356
- ? renderLoadingRows({
357
- count: loadingRowCount,
358
- visibleCols,
359
- showSelectionColumn,
360
- showExpandColumn,
361
- showRowActionsColumn,
362
- rowClass: cn(v.row(), slotProps?.row?.className),
363
- cellClass: cn(v.cell(), slotProps?.cell?.className),
364
- })
365
- : sortedRows.length === 0
366
- ? renderEmptyState({
367
- totalColumnCount,
368
- emptyState,
369
- // Distinguish a genuinely empty dataset from one
370
- // emptied by an active search / filter.
371
- fallback:
372
- rows.length > 0 &&
373
- (debouncedSearchQuery.trim().length > 0 ||
374
- filterModel.length > 0)
375
- ? labels.noResults
376
- : labels.noData,
377
- cellClass: cn(v.cell(), v.emptyState(), slotProps?.emptyState?.className),
378
- })
379
- : sortedRows.map((row, idx) => {
380
- const rowId = getRowId(row, idx);
381
- const isSelected = selection.isSelected(rowId);
382
- const isExpanded = expandedRowIds.includes(rowId);
383
- return (
384
- <Row
385
- key={rowId}
386
- row={row}
387
- rowId={rowId}
388
- rowIndex={idx}
389
- isSelected={isSelected}
390
- isExpanded={isExpanded}
391
- visibleCols={visibleCols}
392
- columnTypes={columnTypes}
393
- rowSelection={rowSelection}
394
- showSelectionColumn={showSelectionColumn}
395
- showExpandColumn={showExpandColumn}
396
- showRowActionsColumn={showRowActionsColumn}
397
- expandable={expandable}
398
- rowActions={rowActions}
399
- labels={labels}
400
- toggleRow={selection.toggleRow}
401
- toggleExpand={(id) =>
402
- setExpandedRowIds((prev) =>
403
- prev.includes(id)
404
- ? prev.filter((p) => p !== id)
405
- : [...prev, id],
406
- )
407
- }
408
- isInteractive={isTableInteractive}
409
- rowClass={cn(v.row(), slotProps?.row?.className)}
410
- cellClass={cn(v.cell(), slotProps?.cell?.className)}
411
- selectionCellClass={cn(
412
- v.cell(),
413
- v.selectionCell(),
414
- slotProps?.cell?.className,
415
- slotProps?.selectionCell?.className,
416
- )}
417
- expandToggleCellClass={cn(
418
- v.cell(),
419
- v.expandToggleCell(),
420
- slotProps?.cell?.className,
421
- slotProps?.expandToggleCell?.className,
422
- )}
423
- rowActionsCellClass={cn(
424
- v.cell(),
425
- v.rowActionsCell(),
426
- slotProps?.cell?.className,
427
- slotProps?.rowActionsCell?.className,
428
- )}
429
- expandedRowClass={cn(v.expandedRow(), slotProps?.expandedRow?.className)}
430
- totalColumnCount={totalColumnCount}
431
- />
432
- );
433
- })}
434
- </tbody>
435
- </table>
436
- </div>
437
-
438
- {/* ───── Bulk action footer (sticky) ───── */}
439
- {bulkActions && selectedRows.length > 0 && (
440
- <div
441
- className={cn(v.bulkActionFooter(), slotProps?.bulkActionFooter?.className)}
442
- role="region"
443
- aria-label={labels.selectedCount.replace('{count}', String(selectedRows.length))}
444
- >
445
- <span className="text-sm text-neutral-700">
446
- {labels.selectedCount.replace('{count}', String(selectedRows.length))}
447
- </span>
448
- <div className="flex items-center gap-2">
449
- {bulkActions(selectedRows)}
450
- <button
451
- type="button"
452
- onClick={selection.clearSelection}
453
- className={cn(
454
- // text-neutral-500 → text-neutral-900 on hover; both auto-invert.
455
- 'text-sm text-neutral-500 hover:text-neutral-900',
456
- 'underline-offset-2 hover:underline',
457
- 'focus:outline-none focus-visible:underline',
458
- )}
459
- >
460
- {labels.clearSelection}
461
- </button>
462
- </div>
463
- </div>
464
- )}
465
- </div>
466
- );
467
- }
468
-
469
- // ───── Header cell (with sort button) ─────
470
-
471
- function HeaderCell<T extends object>(props: {
472
- col: TableColumn<T>;
473
- sortModel: TableSortModel;
474
- onSortClick: (e: MouseEvent<HTMLButtonElement>) => void;
475
- inferredType: string | undefined;
476
- labels: Required<TableLabels>;
477
- className: string;
478
- buttonClassName: string;
479
- disabled: boolean;
480
- }) {
481
- const { col, sortModel, onSortClick, inferredType, labels, className, buttonClassName, disabled } = props;
482
-
483
- const align = resolveAlign(col, inferredType as never);
484
- const alignClass =
485
- align === 'right' ? 'text-right' : align === 'center' ? 'text-center' : 'text-left';
486
-
487
- const sortEntry = sortModel.find((s) => s.field === col.field);
488
- const ariaSort: 'ascending' | 'descending' | 'none' =
489
- sortEntry?.direction === 'asc'
490
- ? 'ascending'
491
- : sortEntry?.direction === 'desc'
492
- ? 'descending'
493
- : 'none';
494
-
495
- const headerContent =
496
- typeof col.header === 'function' ? col.header() : col.header;
497
-
498
- const cellStyle = {
499
- width: col.width != null ? `${col.width}px` : undefined,
500
- minWidth: col.minWidth != null ? `${col.minWidth}px` : undefined,
501
- flex: col.flex,
502
- };
503
-
504
- if (col.sortable) {
505
- return (
506
- <th
507
- scope="col"
508
- aria-sort={ariaSort}
509
- className={cn(className, alignClass)}
510
- style={cellStyle}
511
- >
512
- <button
513
- type="button"
514
- onClick={onSortClick}
515
- disabled={disabled}
516
- aria-label={
517
- ariaSort === 'ascending'
518
- ? labels.ariaSortAscending
519
- : ariaSort === 'descending'
520
- ? labels.ariaSortDescending
521
- : labels.ariaSortNone
522
- }
523
- className={cn(
524
- buttonClassName,
525
- align === 'right' && 'flex-row-reverse',
526
- 'disabled:cursor-not-allowed disabled:opacity-50',
527
- )}
528
- >
529
- <span>{headerContent}</span>
530
- <SortIcon direction={sortEntry?.direction} />
531
- </button>
532
- </th>
533
- );
534
- }
535
-
536
- return (
537
- <th
538
- scope="col"
539
- className={cn(className, alignClass)}
540
- style={cellStyle}
541
- >
542
- {headerContent}
543
- </th>
544
- );
545
- }
546
-
547
- // ───── Data row ─────
548
-
549
- function Row<T extends object>(props: {
550
- row: T;
551
- rowId: string;
552
- rowIndex: number;
553
- isSelected: boolean;
554
- isExpanded: boolean;
555
- visibleCols: TableColumn<T>[];
556
- columnTypes: Map<string, string>;
557
- rowSelection: 'none' | 'single' | 'multiple';
558
- showSelectionColumn: boolean;
559
- showExpandColumn: boolean;
560
- showRowActionsColumn: boolean;
561
- expandable: TableProps<T>['expandable'];
562
- rowActions: TableProps<T>['rowActions'];
563
- labels: Required<TableLabels>;
564
- toggleRow: (rowId: string) => void;
565
- toggleExpand: (rowId: string) => void;
566
- isInteractive: boolean;
567
- rowClass: string;
568
- cellClass: string;
569
- selectionCellClass: string;
570
- expandToggleCellClass: string;
571
- rowActionsCellClass: string;
572
- expandedRowClass: string;
573
- totalColumnCount: number;
574
- }) {
575
- const {
576
- row,
577
- rowId,
578
- rowIndex,
579
- isSelected,
580
- isExpanded,
581
- visibleCols,
582
- columnTypes,
583
- rowSelection,
584
- showSelectionColumn,
585
- showExpandColumn,
586
- showRowActionsColumn,
587
- expandable,
588
- rowActions,
589
- labels,
590
- toggleRow,
591
- toggleExpand,
592
- isInteractive,
593
- rowClass,
594
- cellClass,
595
- selectionCellClass,
596
- expandToggleCellClass,
597
- rowActionsCellClass,
598
- expandedRowClass,
599
- totalColumnCount,
600
- } = props;
601
-
602
- return (
603
- <>
604
- <tr
605
- data-selected={isSelected ? 'true' : 'false'}
606
- aria-selected={rowSelection !== 'none' ? isSelected : undefined}
607
- className={rowClass}
608
- >
609
- {showSelectionColumn && (
610
- <td className={selectionCellClass}>
611
- <input
612
- type="checkbox"
613
- aria-label={labels.ariaSelectRow}
614
- checked={isSelected}
615
- onChange={() => toggleRow(rowId)}
616
- disabled={!isInteractive}
617
- className="cursor-pointer"
618
- />
619
- </td>
620
- )}
621
-
622
- {showExpandColumn && (
623
- <td className={expandToggleCellClass}>
624
- <button
625
- type="button"
626
- onClick={() => toggleExpand(rowId)}
627
- aria-label={isExpanded ? labels.ariaCollapseRow : labels.ariaExpandRow}
628
- aria-expanded={isExpanded}
629
- disabled={!isInteractive}
630
- className={cn(
631
- 'inline-flex items-center justify-center h-6 w-6 rounded',
632
- // text-neutral-500 + hover bump; both auto-invert via CSS-var preset.
633
- 'text-neutral-500 hover:text-neutral-900',
634
- 'focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500',
635
- 'transition-transform motion-reduce:transition-none',
636
- isExpanded && 'rotate-90',
637
- )}
638
- >
639
- <ChevronRightIcon />
640
- </button>
641
- </td>
642
- )}
643
-
644
- {visibleCols.map((col) => (
645
- <DataCell
646
- key={col.field as string}
647
- col={col}
648
- row={row}
649
- rowIndex={rowIndex}
650
- isSelected={isSelected}
651
- isExpanded={isExpanded}
652
- inferredType={columnTypes.get(col.field as string)}
653
- cellClass={cellClass}
654
- />
655
- ))}
656
-
657
- {showRowActionsColumn && rowActions && (
658
- <td className={rowActionsCellClass}>
659
- {rowActions(row)}
660
- </td>
661
- )}
662
- </tr>
663
-
664
- {isExpanded && expandable && (
665
- <tr className={expandedRowClass}>
666
- <td colSpan={totalColumnCount} className="p-3">
667
- {expandable.render(row)}
668
- </td>
669
- </tr>
670
- )}
671
- </>
672
- );
673
- }
674
-
675
- // ───── Data cell ─────
676
-
677
- function DataCell<T extends object>(props: {
678
- col: TableColumn<T>;
679
- row: T;
680
- rowIndex: number;
681
- isSelected: boolean;
682
- isExpanded: boolean;
683
- inferredType: string | undefined;
684
- cellClass: string;
685
- }) {
686
- const { col, row, rowIndex, isSelected, isExpanded, inferredType, cellClass } = props;
687
- const value = getNestedValue(row, col.field as string);
688
- const align = resolveAlign(col, inferredType as never);
689
- // tabularNums = digit alignment via font-variant-numeric — does NOT
690
- // change the font family. Auto-true for number / date columns.
691
- const tabularNums = resolveTabularNums(col, inferredType as never);
692
- // monospace = font-family override (font-mono). Library never
693
- // auto-picks a font family — only explicit consumer opt-in. The
694
- // consumer's theme font-sans is preserved by default.
695
- const monospace = resolveMonospace(col);
696
- const alignClass =
697
- align === 'right' ? 'text-right' : align === 'center' ? 'text-center' : 'text-left';
698
-
699
- // Per-column RBAC state for the cellRenderer context
700
- const columnAccessState = col.access
701
- ? {
702
- hidden: col.access.onUnauthorized === 'hide',
703
- disabled: col.access.onUnauthorized === 'disable',
704
- readonly: col.access.onUnauthorized === 'readonly',
705
- }
706
- : null;
707
-
708
- const content = col.cellRenderer
709
- ? col.cellRenderer({
710
- row,
711
- value,
712
- rowIndex,
713
- isSelected,
714
- isExpanded,
715
- access: columnAccessState,
716
- })
717
- : renderDefaultCell(value);
718
-
719
- return (
720
- <td
721
- className={cn(
722
- cellClass,
723
- alignClass,
724
- tabularNums && 'tabular-nums',
725
- monospace && 'font-mono',
726
- )}
727
- style={{
728
- width: col.width != null ? `${col.width}px` : undefined,
729
- minWidth: col.minWidth != null ? `${col.minWidth}px` : undefined,
730
- }}
731
- >
732
- {content}
733
- </td>
734
- );
735
- }
736
-
737
- // ───── Helpers ─────
738
-
739
- function renderDefaultCell(value: unknown): ReactNode {
740
- if (value == null) return null;
741
- if (typeof value === 'boolean') return value ? '✓' : '✗';
742
- if (value instanceof Date) return value.toISOString().slice(0, 10);
743
- if (typeof value === 'object') return JSON.stringify(value);
744
- return value as ReactNode;
745
- }
746
-
747
- function handleSortClick<T extends object>(
748
- col: TableColumn<T>,
749
- event: MouseEvent<HTMLButtonElement>,
750
- current: TableSortModel,
751
- setSortModel: (next: TableSortModel | ((prev: TableSortModel) => TableSortModel)) => void,
752
- ) {
753
- if (!col.sortable) return;
754
- const multi = event.shiftKey;
755
- setSortModel((prev) => cycleSortFor(prev, col.field as string, multi));
756
- }
757
-
758
- function renderLoadingRows<T extends object>(args: {
759
- count: number;
760
- visibleCols: TableColumn<T>[];
761
- showSelectionColumn: boolean;
762
- showExpandColumn: boolean;
763
- showRowActionsColumn: boolean;
764
- rowClass: string;
765
- cellClass: string;
766
- }): ReactNode {
767
- const { count, visibleCols, showSelectionColumn, showExpandColumn, showRowActionsColumn, rowClass, cellClass } = args;
768
- // No explicit row height here (unlike DataGrid's loading rows, which
769
- // pin `rowHeight` for the virtualization math): Table is auto-height
770
- // by design. Skeleton rows inherit the same density padding via
771
- // `cellClass`, so they line up with real rows without a fixed height.
772
- return Array.from({ length: count }).map((_, i) => (
773
- <tr key={`loading-${i}`} className={rowClass} aria-busy="true">
774
- {showSelectionColumn && <td className={cellClass}><Skeleton variant="rectangle" width="16px" height="16px" /></td>}
775
- {showExpandColumn && <td className={cellClass}><Skeleton variant="rectangle" width="16px" height="16px" /></td>}
776
- {visibleCols.map((col) => (
777
- <td key={col.field as string} className={cellClass}>
778
- <Skeleton variant="text" width="80%" />
779
- </td>
780
- ))}
781
- {showRowActionsColumn && <td className={cellClass}><Skeleton variant="rectangle" width="24px" height="24px" /></td>}
782
- </tr>
783
- ));
784
- }
785
-
786
- function renderEmptyState(args: {
787
- totalColumnCount: number;
788
- emptyState: ReactNode;
789
- fallback: string;
790
- cellClass: string;
791
- }): ReactNode {
792
- return (
793
- <tr>
794
- <td colSpan={args.totalColumnCount} className={args.cellClass}>
795
- {args.emptyState ?? args.fallback}
796
- </td>
797
- </tr>
798
- );
799
- }
800
-
801
- // ───── Icons ─────
802
-
803
- function SortIcon(props: { direction?: 'asc' | 'desc' }) {
804
- return (
805
- <svg
806
- width="0.75em"
807
- height="0.75em"
808
- viewBox="0 0 16 16"
809
- fill="currentColor"
810
- aria-hidden="true"
811
- className="shrink-0 opacity-60 group-hover:opacity-100"
812
- >
813
- {props.direction === 'asc' ? (
814
- <path d="M8 4l4 6H4z" />
815
- ) : props.direction === 'desc' ? (
816
- <path d="M8 12L4 6h8z" />
817
- ) : (
818
- <>
819
- <path d="M8 3l3 4H5z" opacity="0.5" />
820
- <path d="M8 13l-3-4h6z" opacity="0.5" />
821
- </>
822
- )}
823
- </svg>
824
- );
825
- }
826
-
827
- function ChevronRightIcon() {
828
- return (
829
- <svg
830
- width="0.875em"
831
- height="0.875em"
832
- viewBox="0 0 16 16"
833
- fill="none"
834
- stroke="currentColor"
835
- strokeWidth="1.5"
836
- strokeLinecap="round"
837
- strokeLinejoin="round"
838
- aria-hidden="true"
839
- >
840
- <path d="M6 4l4 4-4 4" />
841
- </svg>
842
- );
843
- }
844
-
845
- function SearchIcon(props: { className?: string }) {
846
- return (
847
- <svg
848
- width="0.875em"
849
- height="0.875em"
850
- viewBox="0 0 16 16"
851
- fill="none"
852
- stroke="currentColor"
853
- strokeWidth="1.5"
854
- strokeLinecap="round"
855
- strokeLinejoin="round"
856
- aria-hidden="true"
857
- className={props.className}
858
- >
859
- <circle cx="7" cy="7" r="4.5" />
860
- <path d="M11 11l3 3" />
861
- </svg>
862
- );
863
- }