@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,239 +0,0 @@
1
- import { useEffect, useRef } from 'react';
2
- import { cn } from '../../utils/cn.js';
3
- import { appShellVariants } from './appShell.variants.js';
4
- import type { AppShellProps } from './appShell.types.js';
5
-
6
- /**
7
- * Query selector for natively-focusable elements + anything with an
8
- * explicit positive (or implicit `0`) tabindex. Used by the focus
9
- * trap to enumerate the drawer's interactive content.
10
- *
11
- * Notes:
12
- * - Excludes `[tabindex="-1"]` (intentionally non-tabbable).
13
- * - Excludes `:disabled` — the browser already skips them in tab
14
- * order; including them here would route focus to dead elements.
15
- * - `details > summary` is the standard way to get a focusable
16
- * `<details>` toggle.
17
- *
18
- * @internal
19
- */
20
- const FOCUSABLE_SELECTOR = [
21
- 'a[href]',
22
- 'button:not(:disabled)',
23
- 'input:not(:disabled):not([type="hidden"])',
24
- 'select:not(:disabled)',
25
- 'textarea:not(:disabled)',
26
- '[tabindex]:not([tabindex="-1"]):not(:disabled)',
27
- 'details > summary:first-of-type',
28
- ].join(',');
29
-
30
- /**
31
- * Dashforge TW AppShell — top-level layout orchestrator.
32
- *
33
- * ┌──────────────────────────────────────────┐
34
- * │ header │ ← `header` slot
35
- * ├────────┬─────────────────────────────────┤
36
- * │ │ │
37
- * │ nav │ main │ ← `nav` + `children`
38
- * │ │ │
39
- * ├────────┴─────────────────────────────────┤
40
- * │ footer │ ← `footer` slot
41
- * └──────────────────────────────────────────┘
42
- *
43
- * **Responsive**:
44
- * - `≥ md`: nav stays in the inline slot at the left.
45
- * - `< md`: nav becomes a slide-in drawer toggled by `navOpen`.
46
- * A backdrop closes the drawer on click (mirrors `<Dialog>` UX).
47
- *
48
- * **Body scroll lock**: when the mobile drawer is open we add
49
- * `overflow-hidden` to `<body>` to prevent dual-scroll wobble. The
50
- * effect cleans up on close + on unmount.
51
- *
52
- * **A11y**:
53
- * - `<main>` landmark wraps the content area.
54
- * - `<header>` / `<footer>` come for free from their HTML tags.
55
- * - The mobile drawer + backdrop participate in the standard
56
- * "click outside to close" pattern — `Escape` closes the drawer
57
- * too (added via global keydown).
58
- * - **Focus trap** (WCAG 2.4.3) — when the mobile drawer opens:
59
- * 1. The previously-focused element is captured.
60
- * 2. Focus moves to the first focusable element inside the drawer.
61
- * 3. Tab / Shift+Tab wrap inside the drawer (cycle from
62
- * last → first and first → last) — Tab can never escape
63
- * to the page underneath while the drawer is open.
64
- * 4. On close, focus returns to the captured element (typically
65
- * the hamburger toggle the user pressed to open the drawer).
66
- * This pattern matches WAI-ARIA APG's modal dialog guidance even
67
- * though the drawer isn't strictly a dialog — same focus
68
- * management makes keyboard users' experience predictable.
69
- * - **`role="dialog"` + `aria-modal="true"`** are applied to the
70
- * drawer when open so screen readers announce it as a modal
71
- * overlay rather than just an aside.
72
- */
73
- export function AppShell(props: AppShellProps) {
74
- const {
75
- header,
76
- nav,
77
- footer,
78
- children,
79
- navOpen = false,
80
- onNavOpenChange,
81
- sx,
82
- slotProps,
83
- } = props;
84
-
85
- const v = appShellVariants({ navOpen });
86
-
87
- // Lock body scroll while the mobile drawer is open.
88
- useEffect(() => {
89
- if (!navOpen) return;
90
- const prev = document.body.style.overflow;
91
- document.body.style.overflow = 'hidden';
92
- return () => {
93
- document.body.style.overflow = prev;
94
- };
95
- }, [navOpen]);
96
-
97
- // Esc closes the drawer.
98
- useEffect(() => {
99
- if (!navOpen || !onNavOpenChange) return;
100
- const handler = (event: KeyboardEvent) => {
101
- if (event.key === 'Escape') onNavOpenChange(false);
102
- };
103
- document.addEventListener('keydown', handler);
104
- return () => document.removeEventListener('keydown', handler);
105
- }, [navOpen, onNavOpenChange]);
106
-
107
- /*
108
- * Focus trap for the mobile drawer.
109
- *
110
- * Implementation:
111
- * - On open: capture the currently-focused element (`document.activeElement`)
112
- * so we can restore it on close. Then move focus to the first
113
- * focusable element inside the drawer.
114
- * - While open: a Tab/Shift+Tab keydown listener wraps focus inside
115
- * the drawer subtree (last → first on Tab from end, first → last
116
- * on Shift+Tab from start).
117
- * - On close: restore focus to the captured element.
118
- *
119
- * Hand-rolled (no `focus-trap-react` dep) — the logic is ~20 LOC and
120
- * scoped to a single drawer; adding a runtime dep felt like overkill.
121
- * If we ever need more sophisticated trap semantics (nested traps,
122
- * sentinel nodes, etc.) the dep is the right call.
123
- */
124
- const drawerRef = useRef<HTMLDivElement | null>(null);
125
- const restoreFocusRef = useRef<HTMLElement | null>(null);
126
-
127
- useEffect(() => {
128
- if (!navOpen) return;
129
- // 1) Capture the element that had focus before the drawer opened.
130
- restoreFocusRef.current = document.activeElement as HTMLElement | null;
131
-
132
- // 2) Move focus to the first focusable element inside the drawer.
133
- // Defer via rAF so the drawer DOM (slide-in animation start) has
134
- // settled and the elements are actually visible/focusable.
135
- const raf = requestAnimationFrame(() => {
136
- const drawer = drawerRef.current;
137
- if (!drawer) return;
138
- const first = drawer.querySelector<HTMLElement>(FOCUSABLE_SELECTOR);
139
- first?.focus();
140
- });
141
-
142
- // 3) Trap Tab / Shift+Tab inside the drawer.
143
- const onKeyDown = (event: KeyboardEvent) => {
144
- if (event.key !== 'Tab') return;
145
- const drawer = drawerRef.current;
146
- if (!drawer) return;
147
- const focusables = Array.from(
148
- drawer.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)
149
- );
150
- if (focusables.length === 0) {
151
- event.preventDefault();
152
- return;
153
- }
154
- const first = focusables[0];
155
- const last = focusables[focusables.length - 1];
156
- const active = document.activeElement as HTMLElement | null;
157
- if (event.shiftKey) {
158
- // Shift+Tab on first → wrap to last.
159
- if (active === first || !drawer.contains(active)) {
160
- event.preventDefault();
161
- last.focus();
162
- }
163
- } else {
164
- // Tab on last → wrap to first.
165
- if (active === last || !drawer.contains(active)) {
166
- event.preventDefault();
167
- first.focus();
168
- }
169
- }
170
- };
171
- document.addEventListener('keydown', onKeyDown);
172
-
173
- return () => {
174
- cancelAnimationFrame(raf);
175
- document.removeEventListener('keydown', onKeyDown);
176
- // 4) Restore focus to the previously-focused element on close.
177
- // Guard against the element being removed from the DOM (rare
178
- // but possible if the consumer re-renders the page while the
179
- // drawer is open).
180
- const restore = restoreFocusRef.current;
181
- if (restore && document.body.contains(restore)) {
182
- restore.focus();
183
- }
184
- };
185
- }, [navOpen]);
186
-
187
- return (
188
- <div className={cn(v.root(), sx, slotProps?.root?.className)}>
189
- {header && (
190
- <div className={cn(v.header(), slotProps?.header?.className)}>
191
- {header}
192
- </div>
193
- )}
194
-
195
- <div className={v.body()}>
196
- {nav && (
197
- <>
198
- <aside className={cn(v.nav(), slotProps?.nav?.className)}>
199
- {nav}
200
- </aside>
201
- <aside
202
- ref={drawerRef}
203
- className={cn(v.navMobile(), slotProps?.navMobile?.className)}
204
- aria-hidden={!navOpen}
205
- // When open, the drawer is a modal overlay — `dialog` +
206
- // `aria-modal="true"` so screen readers announce it as
207
- // such. When closed, drop both attributes (the aria-
208
- // hidden=true above already removes it from the AT tree).
209
- role={navOpen ? 'dialog' : undefined}
210
- aria-modal={navOpen ? true : undefined}
211
- // The drawer is the SAME nav content rendered twice — once
212
- // inline (desktop) and once as a slide-in (mobile). We
213
- // mark the inactive copy hidden from AT to avoid double
214
- // announcements.
215
- >
216
- {nav}
217
- </aside>
218
- <div
219
- className={cn(v.backdrop(), slotProps?.backdrop?.className)}
220
- role="presentation"
221
- onClick={() => onNavOpenChange?.(false)}
222
- data-testid="appshell-backdrop"
223
- />
224
- </>
225
- )}
226
-
227
- <main className={cn(v.main(), slotProps?.main?.className)}>
228
- {children}
229
- </main>
230
- </div>
231
-
232
- {footer && (
233
- <div className={cn(v.footer(), slotProps?.footer?.className)}>
234
- {footer}
235
- </div>
236
- )}
237
- </div>
238
- );
239
- }
@@ -1,49 +0,0 @@
1
- import type { ReactNode } from 'react';
2
- import type { AppShellVariants } from './appShell.variants.js';
3
-
4
- export interface AppShellSlotProps {
5
- root?: { className?: string };
6
- header?: { className?: string };
7
- nav?: { className?: string };
8
- navMobile?: { className?: string };
9
- main?: { className?: string };
10
- footer?: { className?: string };
11
- backdrop?: { className?: string };
12
- }
13
-
14
- /**
15
- * Props for `<AppShell>`.
16
- *
17
- * Top-level layout orchestrator with 4 named slots:
18
- *
19
- * - `header` (top, sticky)
20
- * - `nav` (left side, fixed-width on desktop, drawer on mobile)
21
- * - `footer` (bottom, non-sticky)
22
- * - `children` (main content, scrolls independently)
23
- *
24
- * Responsive behavior:
25
- * - **≥ md (768px)**: nav is rendered inline at the left.
26
- * - **< md**: nav slides in as an overlay drawer when
27
- * `navOpen={true}` (controlled).
28
- *
29
- * The shell is router-agnostic — pass any nav/header content. Typical
30
- * pairing is `<LeftNav>` + `<TopBar>` (with a hamburger button in
31
- * `TopBar.start` that flips `navOpen`).
32
- */
33
- export interface AppShellProps extends AppShellVariants {
34
- header?: ReactNode;
35
- nav?: ReactNode;
36
- footer?: ReactNode;
37
- children?: ReactNode;
38
- /**
39
- * Mobile drawer open state. Controlled — provide
40
- * `onNavOpenChange` to update. When `undefined`, the mobile drawer
41
- * is always closed (consumer hasn't wired up the toggle yet).
42
- */
43
- navOpen?: boolean;
44
- onNavOpenChange?: (open: boolean) => void;
45
- /** Root className shortcut. */
46
- sx?: string;
47
- /** Per-slot className overrides. */
48
- slotProps?: AppShellSlotProps;
49
- }
@@ -1,54 +0,0 @@
1
- import { tv, type VariantProps } from 'tailwind-variants';
2
-
3
- /**
4
- * Tailwind-variants recipe for `<AppShell>`.
5
- *
6
- * Slots:
7
- * - `root` — outer flex column (full viewport)
8
- * - `header` — top region
9
- * - `body` — flex row holding nav + main
10
- * - `nav` — desktop nav rail (md+)
11
- * - `navMobile` — mobile drawer (slide-in)
12
- * - `main` — scrollable content area
13
- * - `footer` — bottom region
14
- * - `backdrop` — semi-opaque overlay behind the mobile drawer
15
- */
16
- export const appShellVariants = tv({
17
- slots: {
18
- root: 'flex flex-col min-h-screen bg-neutral-100',
19
- header: 'shrink-0',
20
- body: 'flex flex-1 min-h-0',
21
- nav: 'hidden md:flex shrink-0',
22
- navMobile: [
23
- 'flex md:hidden fixed inset-y-0 left-0 z-40',
24
- // Drawer slide-in is the most prominent motion in AppShell and
25
- // a clear WCAG 2.3.3 candidate. Gate the transition on
26
- // `prefers-reduced-motion: no-preference`; the data-driven
27
- // `-translate-x-full` / `translate-x-0` still applies, just
28
- // without the smooth slide.
29
- 'transition-transform duration-200 ease-out motion-reduce:transition-none motion-reduce:duration-0',
30
- '-translate-x-full',
31
- ],
32
- main: 'flex-1 min-w-0 overflow-y-auto',
33
- footer: 'shrink-0',
34
- backdrop: [
35
- 'md:hidden fixed inset-0 z-30 bg-black/40',
36
- // Backdrop opacity fade — micro motion, gated for consistency.
37
- 'transition-opacity duration-200 motion-reduce:transition-none motion-reduce:duration-0',
38
- 'opacity-0 pointer-events-none',
39
- ],
40
- },
41
- variants: {
42
- navOpen: {
43
- true: {
44
- navMobile: 'translate-x-0',
45
- backdrop: 'opacity-100 pointer-events-auto',
46
- },
47
- },
48
- },
49
- defaultVariants: {
50
- navOpen: false,
51
- },
52
- });
53
-
54
- export type AppShellVariants = VariantProps<typeof appShellVariants>;
@@ -1,173 +0,0 @@
1
- // @vitest-environment jsdom
2
- import { describe, it, expect } from 'vitest';
3
- import { render } from '@testing-library/react';
4
- import { AspectRatio } from './AspectRatio.js';
5
-
6
- describe('<AspectRatio>', () => {
7
- // ─── Default rendering ──────────────────────────────────────────────
8
- describe('default rendering', () => {
9
- it('renders a <div> by default', () => {
10
- const { container } = render(<AspectRatio>x</AspectRatio>);
11
- expect(container.firstElementChild?.tagName).toBe('DIV');
12
- });
13
-
14
- it('default ratio is 1 (square)', () => {
15
- const { container } = render(<AspectRatio>x</AspectRatio>);
16
- const el = container.firstElementChild as HTMLElement;
17
- expect(el.style.aspectRatio).toBe('1 / 1');
18
- });
19
-
20
- it('always has w-full baseline', () => {
21
- const { container } = render(<AspectRatio>x</AspectRatio>);
22
- expect(container.firstElementChild?.className).toContain('w-full');
23
- });
24
- });
25
-
26
- // ─── ratio prop ─────────────────────────────────────────────────────
27
- describe('ratio', () => {
28
- it('numeric ratio 16/9 → "1.7777… / 1"', () => {
29
- const { container } = render(<AspectRatio ratio={16 / 9}>x</AspectRatio>);
30
- const el = container.firstElementChild as HTMLElement;
31
- // 16/9 ≈ 1.7777, formatted as "<number> / 1"
32
- expect(el.style.aspectRatio).toMatch(/^1\.\d+ \/ 1$/);
33
- });
34
-
35
- it('numeric ratio 4/3', () => {
36
- const { container } = render(<AspectRatio ratio={4 / 3}>x</AspectRatio>);
37
- const el = container.firstElementChild as HTMLElement;
38
- expect(el.style.aspectRatio).toMatch(/^1\.\d+ \/ 1$/);
39
- });
40
-
41
- it('string ratio "16 / 9" passes through', () => {
42
- const { container } = render(<AspectRatio ratio="16 / 9">x</AspectRatio>);
43
- const el = container.firstElementChild as HTMLElement;
44
- expect(el.style.aspectRatio).toBe('16 / 9');
45
- });
46
-
47
- it('string ratio "21/9" passes through (ultrawide)', () => {
48
- const { container } = render(<AspectRatio ratio="21/9">x</AspectRatio>);
49
- const el = container.firstElementChild as HTMLElement;
50
- expect(el.style.aspectRatio).toBe('21/9');
51
- });
52
- });
53
-
54
- // ─── Override ───────────────────────────────────────────────────────
55
- describe('override', () => {
56
- it('sx adds utility classes', () => {
57
- const { container } = render(
58
- <AspectRatio ratio={16 / 9} sx="rounded-xl overflow-hidden">
59
- x
60
- </AspectRatio>,
61
- );
62
- const cls = container.firstElementChild?.className ?? '';
63
- expect(cls).toContain('rounded-xl');
64
- expect(cls).toContain('overflow-hidden');
65
- });
66
-
67
- it('user style merges with aspect-ratio', () => {
68
- const { container } = render(
69
- <AspectRatio ratio={1} style={{ backgroundColor: 'red' }}>x</AspectRatio>,
70
- );
71
- const el = container.firstElementChild as HTMLElement;
72
- expect(el.style.backgroundColor).toBe('red');
73
- expect(el.style.aspectRatio).toBe('1 / 1');
74
- });
75
-
76
- it('user style aspect-ratio overrides the prop (last wins)', () => {
77
- const { container } = render(
78
- <AspectRatio ratio={1} style={{ aspectRatio: '2 / 1' }}>x</AspectRatio>,
79
- );
80
- const el = container.firstElementChild as HTMLElement;
81
- // Inline style merge — user's later spread wins
82
- expect(el.style.aspectRatio).toBe('2 / 1');
83
- });
84
- });
85
-
86
- // ─── Polymorphism ───────────────────────────────────────────────────
87
- describe('polymorphism', () => {
88
- it('as="figure" renders <figure>', () => {
89
- const { container } = render(
90
- <AspectRatio as="figure" ratio={1}>x</AspectRatio>,
91
- );
92
- expect(container.firstElementChild?.tagName).toBe('FIGURE');
93
- });
94
-
95
- it('as="picture" works for responsive image markup', () => {
96
- const { container } = render(
97
- <AspectRatio as="picture" ratio={16 / 9}>
98
- <img src="x.jpg" alt="" />
99
- </AspectRatio>,
100
- );
101
- expect(container.firstElementChild?.tagName).toBe('PICTURE');
102
- });
103
- });
104
-
105
- // ─── Child rendering ────────────────────────────────────────────────
106
- describe('child rendering', () => {
107
- it('renders an <img> child', () => {
108
- const { container } = render(
109
- <AspectRatio ratio={16 / 9}>
110
- <img src="hero.jpg" alt="hero" className="w-full h-full object-cover" />
111
- </AspectRatio>,
112
- );
113
- const img = container.querySelector('img');
114
- expect(img?.getAttribute('src')).toBe('hero.jpg');
115
- });
116
-
117
- it('renders multiple children (e.g. overlay pattern)', () => {
118
- const { container } = render(
119
- <AspectRatio ratio={16 / 9}>
120
- <img src="hero.jpg" alt="hero" />
121
- <div className="absolute inset-0 bg-black/40" />
122
- </AspectRatio>,
123
- );
124
- expect(container.firstElementChild?.children.length).toBe(2);
125
- });
126
- });
127
-
128
- // ─── Pass-through ───────────────────────────────────────────────────
129
- it('forwards data-* + aria-*', () => {
130
- const { container } = render(
131
- <AspectRatio data-testid="ar" aria-label="hero">x</AspectRatio>,
132
- );
133
- const el = container.firstElementChild;
134
- expect(el?.getAttribute('data-testid')).toBe('ar');
135
- expect(el?.getAttribute('aria-label')).toBe('hero');
136
- });
137
-
138
- // ─── F11-bis edge cases ─────────────────────────────────────────────
139
- describe('extreme ratio values', () => {
140
- it('ratio="21 / 9" (ultrawide cinema) passes through verbatim', () => {
141
- const { container } = render(<AspectRatio ratio="21 / 9">x</AspectRatio>);
142
- expect((container.firstElementChild as HTMLElement).style.aspectRatio).toBe('21 / 9');
143
- });
144
-
145
- it('ratio="9 / 16" (portrait video) passes through verbatim', () => {
146
- const { container } = render(<AspectRatio ratio="9 / 16">x</AspectRatio>);
147
- expect((container.firstElementChild as HTMLElement).style.aspectRatio).toBe('9 / 16');
148
- });
149
-
150
- it('numeric tiny ratio (0.5) formats as "0.5 / 1"', () => {
151
- const { container } = render(<AspectRatio ratio={0.5}>x</AspectRatio>);
152
- expect((container.firstElementChild as HTMLElement).style.aspectRatio).toBe('0.5 / 1');
153
- });
154
-
155
- it('numeric large ratio (3) formats as "3 / 1"', () => {
156
- const { container } = render(<AspectRatio ratio={3}>x</AspectRatio>);
157
- expect((container.firstElementChild as HTMLElement).style.aspectRatio).toBe('3 / 1');
158
- });
159
- });
160
-
161
- describe('rounded clipped media pattern (the #1 doc gotcha)', () => {
162
- it('rounded + overflow-hidden both end up on the className', () => {
163
- const { container } = render(
164
- <AspectRatio ratio={16 / 9} sx="rounded-2xl overflow-hidden">
165
- <img src="x.jpg" alt="" className="w-full h-full object-cover" />
166
- </AspectRatio>,
167
- );
168
- const cls = container.firstElementChild?.className ?? '';
169
- expect(cls).toContain('rounded-2xl');
170
- expect(cls).toContain('overflow-hidden');
171
- });
172
- });
173
- });
@@ -1,73 +0,0 @@
1
- import { forwardRef, type CSSProperties, type ElementType } from 'react';
2
- import { cn } from '../../utils/cn.js';
3
- import type { AspectRatioProps } from './aspectRatio.types.js';
4
-
5
- /**
6
- * `<AspectRatio>` — locks the aspect ratio of its child container,
7
- * regardless of width. The classic use is responsive images and
8
- * embedded media: an `<img>` that takes 100% of the available width
9
- * but always renders at 16:9 (or 1:1, or whatever the source ratio is)
10
- * — no jumping layouts during image load, no whitespace below the
11
- * media, no JS measurement.
12
- *
13
- * Implementation: native CSS `aspect-ratio` property. Supported in
14
- * every browser shipped from 2021 onward (Chrome 88, Firefox 89,
15
- * Safari 15, Edge 88). No padding-bottom hack — that workaround
16
- * predates the native property and brings ugly absolute-positioning
17
- * requirements on the child.
18
- *
19
- * Why a component if it's "just one CSS property"?
20
- * Two reasons:
21
- * 1. Discoverability — `<AspectRatio ratio={16/9}>` documents the
22
- * intent at the call site. `style={{ aspectRatio: '16/9' }}` is
23
- * the same thing functionally, but harder to spot in a 200-line
24
- * component file.
25
- * 2. Composition — pairs naturally with `sx="rounded-xl overflow-hidden"`
26
- * for the canonical "rounded clipped media" pattern. Forgetting
27
- * the `overflow-hidden` is the #1 mistake we want to prevent
28
- * through documentation (it's in this component's MDX, at the
29
- * top of the Notes).
30
- *
31
- * Child contract:
32
- * The single child is expected to fill the container — typically
33
- * `<img>` / `<video>` with `className="w-full h-full object-cover"`.
34
- * We don't force this via CSS (the consumer might want a centered
35
- * icon instead of a filling image) — but it's the 99% case, and the
36
- * docs show it first.
37
- */
38
- export const AspectRatio = forwardRef<HTMLElement, AspectRatioProps>(
39
- function AspectRatio(props, ref) {
40
- const {
41
- ratio = 1,
42
- as,
43
- sx,
44
- style,
45
- children,
46
- ...rest
47
- } = props;
48
-
49
- /*
50
- * Normalise to a CSS `aspect-ratio` string. The CSS property
51
- * accepts both `16/9` and `16 / 9` (with spaces), but for safety
52
- * we convert numbers to the canonical `N / 1` form — `aspectRatio: 1.7777`
53
- * works too, but produces an arbitrary-looking value in DevTools.
54
- */
55
- const aspectRatioValue = typeof ratio === 'number' ? `${ratio} / 1` : ratio;
56
-
57
- const mergedStyle: CSSProperties = {
58
- aspectRatio: aspectRatioValue,
59
- ...style,
60
- };
61
-
62
- const classes = cn('w-full', sx);
63
- const Tag = (as ?? 'div') as ElementType;
64
-
65
- return (
66
- <Tag ref={ref as never} className={classes} style={mergedStyle} {...rest}>
67
- {children}
68
- </Tag>
69
- );
70
- },
71
- );
72
-
73
- AspectRatio.displayName = 'AspectRatio';
@@ -1,54 +0,0 @@
1
- import type { ElementType, HTMLAttributes, ReactNode } from 'react';
2
-
3
- /**
4
- * Props for `<AspectRatio>` — content-shape primitive that locks the
5
- * aspect ratio of its child regardless of width.
6
- *
7
- * Implementation: uses the native CSS `aspect-ratio` property
8
- * (supported in all current browsers since 2021 — Chrome 88+, Firefox 89+,
9
- * Safari 15+, Edge 88+). No padding-bottom hack, no JS measurement.
10
- *
11
- * `ratio` accepts:
12
- * • A number — width / height. `16/9` is 1.7777…, `1` is square,
13
- * `4/3` is 1.333…, `21/9` is ultrawide cinema.
14
- * • A string with the CSS `aspect-ratio` syntax, e.g. `'16 / 9'`,
15
- * `'4 / 3'`. Useful when you want the source ratio to read clearly
16
- * in the JSX (`ratio="16 / 9"` is more legible than `ratio={16/9}`).
17
- *
18
- * The component renders a single element with `aspect-ratio: X` and
19
- * `width: 100%`. The child is expected to fill it — typically an
20
- * `<img>` or `<video>` with `className="w-full h-full object-cover"`.
21
- *
22
- * Why not a TV recipe?
23
- * The ratio is arbitrary (`16/9`, `1`, `2.35`, anything). Tailwind
24
- * has `aspect-square` / `aspect-video` / `aspect-[16/9]` arbitrary
25
- * values, but enumerating every conceivable ratio in TV would be
26
- * pointless. We set `style={{ aspectRatio }}` directly — pure CSS
27
- * property, no class purge concerns.
28
- */
29
- export interface AspectRatioProps
30
- extends Omit<HTMLAttributes<HTMLDivElement>, 'className'> {
31
- /**
32
- * Aspect ratio as width/height. Number (`16/9`) or CSS string
33
- * (`'16 / 9'`). Default `1` (square).
34
- */
35
- ratio?: number | string;
36
-
37
- /**
38
- * The child that fills the locked-ratio container. Typically an
39
- * `<img>` or `<video>` with `className="w-full h-full object-cover"`.
40
- */
41
- children?: ReactNode;
42
-
43
- /**
44
- * Override the rendered HTML tag. Defaults to `'div'`.
45
- */
46
- as?: ElementType;
47
-
48
- /**
49
- * Utility classes appended to the base. Resolved via `tailwind-merge`.
50
- * Common overrides: `sx="rounded-xl overflow-hidden"` to clip the
51
- * child's overflow (image bleeds otherwise).
52
- */
53
- sx?: string;
54
- }