@fabio.caffarello/react-design-system 1.7.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/README.md +48 -3
  2. package/dist/docs/components/ComponentStatusTable.d.ts +11 -0
  3. package/dist/ui/atoms/Accordion/Accordion.d.ts +34 -0
  4. package/dist/ui/atoms/Accordion/Accordion.stories.d.ts +11 -0
  5. package/dist/ui/atoms/Accordion/Accordion.test.d.ts +1 -0
  6. package/dist/ui/atoms/Accordion/index.d.ts +2 -0
  7. package/dist/ui/atoms/Avatar/Avatar.d.ts +30 -0
  8. package/dist/ui/atoms/Avatar/Avatar.stories.d.ts +13 -0
  9. package/dist/ui/atoms/Avatar/Avatar.test.d.ts +1 -0
  10. package/dist/ui/atoms/Avatar/AvatarGroup.d.ts +26 -0
  11. package/dist/ui/atoms/Avatar/index.d.ts +9 -0
  12. package/dist/ui/atoms/Badge/Badge.d.ts +14 -6
  13. package/dist/ui/atoms/Badge/Badge.stories.d.ts +8 -9
  14. package/dist/ui/atoms/BoxWrapper/BoxWrapper.d.ts +3 -3
  15. package/dist/ui/atoms/BoxWrapper/BoxWrapper.test.d.ts +1 -0
  16. package/dist/ui/atoms/Button/Button.d.ts +32 -10
  17. package/dist/ui/atoms/Button/Button.stories.d.ts +7 -0
  18. package/dist/ui/atoms/Button/Button.test.d.ts +1 -0
  19. package/dist/ui/atoms/Checkbox/Checkbox.d.ts +2 -1
  20. package/dist/ui/atoms/Collapsible/Collapsible.stories.d.ts +2 -0
  21. package/dist/ui/atoms/Info/Info.d.ts +2 -3
  22. package/dist/ui/atoms/Info/Info.test.d.ts +1 -0
  23. package/dist/ui/atoms/Input/Input.d.ts +14 -4
  24. package/dist/ui/atoms/Input/Input.stories.d.ts +6 -0
  25. package/dist/ui/atoms/Popover/Popover.d.ts +35 -0
  26. package/dist/ui/atoms/Popover/Popover.stories.d.ts +11 -0
  27. package/dist/ui/atoms/Popover/Popover.test.d.ts +1 -0
  28. package/dist/ui/atoms/Popover/index.d.ts +2 -0
  29. package/dist/ui/atoms/Progress/Progress.d.ts +33 -0
  30. package/dist/ui/atoms/Progress/Progress.stories.d.ts +12 -0
  31. package/dist/ui/atoms/Progress/Progress.test.d.ts +1 -0
  32. package/dist/ui/atoms/Select/Select.d.ts +18 -6
  33. package/dist/ui/atoms/Select/Select.stories.d.ts +11 -8
  34. package/dist/ui/atoms/Separator/Separator.d.ts +23 -0
  35. package/dist/ui/atoms/Separator/Separator.stories.d.ts +10 -0
  36. package/dist/ui/atoms/Separator/Separator.test.d.ts +1 -0
  37. package/dist/ui/atoms/Separator/index.d.ts +2 -0
  38. package/dist/ui/atoms/Skeleton/Skeleton.d.ts +1 -1
  39. package/dist/ui/atoms/Skeleton/Skeleton.stories.d.ts +24 -0
  40. package/dist/ui/atoms/Slider/Slider.d.ts +45 -0
  41. package/dist/ui/atoms/Slider/Slider.stories.d.ts +13 -0
  42. package/dist/ui/atoms/Slider/Slider.test.d.ts +1 -0
  43. package/dist/ui/atoms/Slider/index.d.ts +2 -0
  44. package/dist/ui/atoms/Spinner/Spinner.d.ts +22 -0
  45. package/dist/ui/atoms/Spinner/Spinner.stories.d.ts +9 -0
  46. package/dist/ui/atoms/Spinner/Spinner.test.d.ts +1 -0
  47. package/dist/ui/atoms/Switch/Switch.d.ts +28 -0
  48. package/dist/ui/atoms/Switch/Switch.stories.d.ts +11 -0
  49. package/dist/ui/atoms/Switch/Switch.test.d.ts +1 -0
  50. package/dist/ui/atoms/Switch/index.d.ts +2 -0
  51. package/dist/ui/atoms/Tooltip/Tooltip.d.ts +2 -1
  52. package/dist/ui/atoms/Tooltip/Tooltip.stories.d.ts +17 -0
  53. package/dist/ui/atoms/index.d.ts +20 -3
  54. package/dist/ui/index.d.ts +6 -1
  55. package/dist/ui/molecules/Card/Card.d.ts +6 -2
  56. package/dist/ui/molecules/Card/Card.stories.d.ts +2 -0
  57. package/dist/ui/molecules/ColorPicker/ColorPicker.d.ts +28 -0
  58. package/dist/ui/molecules/ColorPicker/ColorPicker.stories.d.ts +12 -0
  59. package/dist/ui/molecules/ColorPicker/ColorPicker.test.d.ts +1 -0
  60. package/dist/ui/molecules/ColorPicker/index.d.ts +2 -0
  61. package/dist/ui/molecules/DatePicker/DatePicker.d.ts +74 -0
  62. package/dist/ui/molecules/DatePicker/DatePicker.stories.d.ts +12 -0
  63. package/dist/ui/molecules/DatePicker/DatePicker.test.d.ts +1 -0
  64. package/dist/ui/molecules/DatePicker/DatePickerCalendar.d.ts +6 -0
  65. package/dist/ui/molecules/DatePicker/DatePickerContext.d.ts +28 -0
  66. package/dist/ui/molecules/DatePicker/DatePickerInput.d.ts +9 -0
  67. package/dist/ui/molecules/DatePicker/DatePickerProvider.d.ts +23 -0
  68. package/dist/ui/molecules/DatePicker/index.d.ts +14 -0
  69. package/dist/ui/molecules/Dropdown/Dropdown.d.ts +2 -1
  70. package/dist/ui/molecules/Dropdown/Dropdown.stories.d.ts +13 -0
  71. package/dist/ui/molecules/EmptyState/EmptyState.stories.d.ts +22 -0
  72. package/dist/ui/molecules/FileUpload/FileUpload.d.ts +37 -0
  73. package/dist/ui/molecules/FileUpload/FileUpload.stories.d.ts +12 -0
  74. package/dist/ui/molecules/FileUpload/FileUpload.test.d.ts +1 -0
  75. package/dist/ui/molecules/FileUpload/index.d.ts +2 -0
  76. package/dist/ui/molecules/Form/Form.d.ts +29 -4
  77. package/dist/ui/molecules/Form/Form.stories.d.ts +2 -0
  78. package/dist/ui/molecules/Form/FormContext.d.ts +17 -0
  79. package/dist/ui/molecules/Form/FormField.d.ts +36 -0
  80. package/dist/ui/molecules/Form/FormProvider.d.ts +14 -0
  81. package/dist/ui/molecules/Form/index.d.ts +13 -0
  82. package/dist/ui/molecules/Form/useFormFieldArray.d.ts +28 -0
  83. package/dist/ui/molecules/InputWithLabel/InputWithLabel.test.d.ts +1 -0
  84. package/dist/ui/molecules/Rating/Rating.d.ts +33 -0
  85. package/dist/ui/molecules/Rating/Rating.stories.d.ts +13 -0
  86. package/dist/ui/molecules/Rating/Rating.test.d.ts +1 -0
  87. package/dist/ui/molecules/Rating/index.d.ts +2 -0
  88. package/dist/ui/molecules/SearchInput/SearchInput.d.ts +24 -0
  89. package/dist/ui/molecules/SearchInput/SearchInput.stories.d.ts +10 -0
  90. package/dist/ui/molecules/SearchInput/SearchInput.test.d.ts +1 -0
  91. package/dist/ui/molecules/SearchInput/index.d.ts +2 -0
  92. package/dist/ui/molecules/SidebarHeader/SidebarHeader.test.d.ts +1 -0
  93. package/dist/ui/molecules/TableActions/TableActions.d.ts +31 -0
  94. package/dist/ui/molecules/TableActions/TableActions.stories.d.ts +7 -0
  95. package/dist/ui/molecules/TableActions/TableActions.test.d.ts +1 -0
  96. package/dist/ui/molecules/TableFilters/TableFilters.d.ts +37 -0
  97. package/dist/ui/molecules/TableFilters/TableFilters.stories.d.ts +7 -0
  98. package/dist/ui/molecules/TableFilters/TableFilters.test.d.ts +1 -0
  99. package/dist/ui/molecules/TablePagination/TablePagination.d.ts +29 -0
  100. package/dist/ui/molecules/TablePagination/TablePagination.stories.d.ts +8 -0
  101. package/dist/ui/molecules/TablePagination/TablePagination.test.d.ts +1 -0
  102. package/dist/ui/molecules/Tabs/Tabs.d.ts +15 -0
  103. package/dist/ui/molecules/Tabs/Tabs.stories.d.ts +10 -0
  104. package/dist/ui/molecules/Tabs/Tabs.test.d.ts +1 -0
  105. package/dist/ui/molecules/Tabs/TabsContent.d.ts +14 -0
  106. package/dist/ui/molecules/Tabs/TabsContext.d.ts +18 -0
  107. package/dist/ui/molecules/Tabs/TabsList.d.ts +12 -0
  108. package/dist/ui/molecules/Tabs/TabsProvider.d.ts +16 -0
  109. package/dist/ui/molecules/Tabs/TabsTrigger.d.ts +13 -0
  110. package/dist/ui/molecules/Tabs/index.d.ts +17 -0
  111. package/dist/ui/molecules/TimePicker/TimePicker.d.ts +29 -0
  112. package/dist/ui/molecules/TimePicker/TimePicker.stories.d.ts +12 -0
  113. package/dist/ui/molecules/TimePicker/TimePicker.test.d.ts +1 -0
  114. package/dist/ui/molecules/TimePicker/index.d.ts +2 -0
  115. package/dist/ui/molecules/index.d.ts +13 -5
  116. package/dist/ui/organisms/CommandPalette/CommandPalette.d.ts +37 -0
  117. package/dist/ui/organisms/CommandPalette/CommandPalette.stories.d.ts +11 -0
  118. package/dist/ui/organisms/CommandPalette/CommandPalette.test.d.ts +1 -0
  119. package/dist/ui/organisms/CommandPalette/index.d.ts +2 -0
  120. package/dist/ui/organisms/DataGrid/DataGrid.d.ts +84 -0
  121. package/dist/ui/organisms/DataGrid/DataGrid.stories.d.ts +14 -0
  122. package/dist/ui/organisms/DataGrid/DataGrid.test.d.ts +1 -0
  123. package/dist/ui/organisms/DataGrid/index.d.ts +2 -0
  124. package/dist/ui/organisms/Dialog/AlertDialog.d.ts +34 -0
  125. package/dist/ui/organisms/Dialog/Dialog.d.ts +58 -0
  126. package/dist/ui/organisms/Dialog/Dialog.stories.d.ts +13 -0
  127. package/dist/ui/organisms/Dialog/Dialog.test.d.ts +1 -0
  128. package/dist/ui/organisms/Dialog/DialogClose.d.ts +8 -0
  129. package/dist/ui/organisms/Dialog/DialogContent.d.ts +8 -0
  130. package/dist/ui/organisms/Dialog/DialogContext.d.ts +10 -0
  131. package/dist/ui/organisms/Dialog/DialogDescription.d.ts +4 -0
  132. package/dist/ui/organisms/Dialog/DialogFooter.d.ts +5 -0
  133. package/dist/ui/organisms/Dialog/DialogHeader.d.ts +5 -0
  134. package/dist/ui/organisms/Dialog/DialogProvider.d.ts +10 -0
  135. package/dist/ui/organisms/Dialog/DialogTitle.d.ts +5 -0
  136. package/dist/ui/organisms/Dialog/DialogTrigger.d.ts +6 -0
  137. package/dist/ui/organisms/Dialog/index.d.ts +22 -0
  138. package/dist/ui/organisms/Sidebar/Sidebar.d.ts +7 -4
  139. package/dist/ui/organisms/Sidebar/SidebarGroup/SidebarGroup.d.ts +27 -0
  140. package/dist/ui/organisms/Sidebar/SidebarGroup/SidebarGroup.stories.d.ts +11 -0
  141. package/dist/ui/organisms/Sidebar/SidebarGroup/SidebarGroup.test.d.ts +1 -0
  142. package/dist/ui/organisms/Sidebar/SidebarHeader/SidebarHeader.d.ts +19 -0
  143. package/dist/ui/organisms/Sidebar/SidebarHeader/SidebarHeader.test.d.ts +1 -0
  144. package/dist/ui/organisms/Sidebar/SidebarItem/SidebarItem.d.ts +23 -0
  145. package/dist/ui/organisms/Sidebar/SidebarItem/SidebarItem.stories.d.ts +10 -0
  146. package/dist/ui/organisms/Sidebar/SidebarItem/SidebarItem.test.d.ts +1 -0
  147. package/dist/ui/organisms/Sidebar/index.d.ts +8 -0
  148. package/dist/ui/organisms/Stepper/Stepper.d.ts +40 -0
  149. package/dist/ui/organisms/Stepper/Stepper.stories.d.ts +12 -0
  150. package/dist/ui/organisms/Stepper/Stepper.test.d.ts +1 -0
  151. package/dist/ui/organisms/Stepper/index.d.ts +2 -0
  152. package/dist/ui/organisms/Table/Table.d.ts +84 -16
  153. package/dist/ui/organisms/Table/Table.stories.d.ts +15 -0
  154. package/dist/ui/organisms/Table/TableActions/TableActions.d.ts +31 -0
  155. package/dist/ui/organisms/Table/TableActions/TableActions.stories.d.ts +7 -0
  156. package/dist/ui/organisms/Table/TableActions/TableActions.test.d.ts +1 -0
  157. package/dist/ui/organisms/Table/TableActions.d.ts +13 -0
  158. package/dist/ui/organisms/Table/TableBody.d.ts +12 -0
  159. package/dist/ui/organisms/Table/TableCell.d.ts +14 -0
  160. package/dist/ui/organisms/Table/TableContext.d.ts +75 -0
  161. package/dist/ui/organisms/Table/TableEmptyState.d.ts +11 -0
  162. package/dist/ui/organisms/Table/TableFilters/TableFilters.d.ts +37 -0
  163. package/dist/ui/organisms/Table/TableFilters/TableFilters.stories.d.ts +7 -0
  164. package/dist/ui/organisms/Table/TableFilters/TableFilters.test.d.ts +1 -0
  165. package/dist/ui/organisms/Table/TableFilters.d.ts +12 -0
  166. package/dist/ui/organisms/Table/TableHeader.d.ts +10 -0
  167. package/dist/ui/organisms/Table/TableHeaderCell.d.ts +18 -0
  168. package/dist/ui/organisms/Table/TableHeaderRow.d.ts +10 -0
  169. package/dist/ui/organisms/Table/TablePagination/TablePagination.d.ts +29 -0
  170. package/dist/ui/organisms/Table/TablePagination/TablePagination.stories.d.ts +8 -0
  171. package/dist/ui/organisms/Table/TablePagination/TablePagination.test.d.ts +1 -0
  172. package/dist/ui/organisms/Table/TablePagination.d.ts +14 -0
  173. package/dist/ui/organisms/Table/TableProvider.d.ts +55 -0
  174. package/dist/ui/organisms/Table/TableRow.d.ts +14 -0
  175. package/dist/ui/organisms/Table/TableTypes.d.ts +8 -0
  176. package/dist/ui/organisms/Table/index.d.ts +30 -0
  177. package/dist/ui/organisms/Table/useColumnResizing.d.ts +39 -0
  178. package/dist/ui/organisms/Table/useVirtualScrolling.d.ts +35 -0
  179. package/dist/ui/organisms/Timeline/Timeline.d.ts +34 -0
  180. package/dist/ui/organisms/Timeline/Timeline.stories.d.ts +12 -0
  181. package/dist/ui/organisms/Timeline/Timeline.test.d.ts +1 -0
  182. package/dist/ui/organisms/Timeline/index.d.ts +2 -0
  183. package/dist/ui/organisms/Toast/Toast.d.ts +8 -0
  184. package/dist/ui/organisms/Toast/Toast.stories.d.ts +14 -0
  185. package/dist/ui/organisms/Toast/Toast.test.d.ts +1 -0
  186. package/dist/ui/organisms/Toast/ToastContainer.d.ts +5 -0
  187. package/dist/ui/organisms/Toast/ToastContext.d.ts +21 -0
  188. package/dist/ui/organisms/Toast/ToastProvider.d.ts +7 -0
  189. package/dist/ui/organisms/Toast/index.d.ts +15 -0
  190. package/dist/ui/organisms/Toast/useToast.d.ts +35 -0
  191. package/dist/ui/organisms/index.d.ts +12 -2
  192. package/dist/ui/providers/AdvancedThemeProvider.d.ts +52 -0
  193. package/dist/ui/providers/index.d.ts +9 -0
  194. package/dist/ui/themes/ThemeBuilder.d.ts +28 -0
  195. package/dist/ui/themes/ThemeRegistry.d.ts +55 -0
  196. package/dist/ui/themes/index.d.ts +9 -0
  197. package/dist/ui/themes/types.d.ts +48 -0
  198. package/dist/ui/themes/utils.d.ts +21 -0
  199. package/dist/ui/tokens/TokenVisualizations.d.ts +41 -0
  200. package/dist/ui/tokens/animations.d.ts +65 -0
  201. package/dist/ui/tokens/borders.d.ts +61 -0
  202. package/dist/ui/tokens/gradients.d.ts +55 -0
  203. package/dist/ui/tokens/index.d.ts +31 -0
  204. package/dist/ui/tokens/opacity.d.ts +51 -0
  205. package/dist/ui/tokens/radius.d.ts +45 -0
  206. package/dist/ui/tokens/shadows.d.ts +42 -0
  207. package/dist/ui/tokens/themes/dark.d.ts +26 -26
  208. package/dist/ui/tokens/themes/light.d.ts +26 -26
  209. package/dist/ui/tokens/tokens.factory.d.ts +42 -0
  210. package/dist/ui/tokens/z-index.d.ts +44 -0
  211. package/dist/ui/utils/index.d.ts +6 -0
  212. package/package.json +50 -6
  213. package/src/docs/Accessibility.mdx +402 -0
  214. package/src/docs/BestPractices.mdx +315 -0
  215. package/src/docs/ComponentComposition.mdx +381 -0
  216. package/src/docs/ComponentStatus.mdx +177 -0
  217. package/src/docs/DesignSystem.mdx +121 -0
  218. package/src/docs/GettingStarted.mdx +284 -0
  219. package/src/docs/MigrationGuide.mdx +297 -0
  220. package/src/docs/Performance.mdx +206 -0
  221. package/src/docs/components/ComponentStatusTable.tsx +184 -0
  222. package/src/setupTests.ts +32 -0
  223. package/src/ui/atoms/Accordion/Accordion.stories.tsx +147 -0
  224. package/src/ui/atoms/Accordion/Accordion.test.tsx +86 -0
  225. package/src/ui/atoms/Accordion/Accordion.tsx +147 -0
  226. package/src/ui/atoms/Accordion/index.ts +2 -0
  227. package/src/ui/atoms/Avatar/Avatar.stories.tsx +226 -0
  228. package/src/ui/atoms/Avatar/Avatar.test.tsx +233 -0
  229. package/src/ui/atoms/Avatar/Avatar.tsx +128 -0
  230. package/src/ui/atoms/Avatar/AvatarGroup.tsx +96 -0
  231. package/src/ui/atoms/Avatar/index.ts +11 -0
  232. package/src/ui/atoms/Badge/Badge.stories.tsx +65 -56
  233. package/src/ui/atoms/Badge/Badge.test.tsx +27 -50
  234. package/src/ui/atoms/Badge/Badge.tsx +70 -27
  235. package/src/ui/atoms/BoxWrapper/BoxWrapper.stories.tsx +1 -1
  236. package/src/ui/atoms/BoxWrapper/BoxWrapper.test.tsx +27 -0
  237. package/src/ui/atoms/BoxWrapper/BoxWrapper.tsx +5 -2
  238. package/src/ui/atoms/Button/Button.stories.tsx +130 -1
  239. package/src/ui/atoms/Button/Button.test.tsx +233 -0
  240. package/src/ui/atoms/Button/Button.tsx +160 -53
  241. package/src/ui/atoms/Checkbox/Checkbox.tsx +14 -1
  242. package/src/ui/atoms/Collapsible/Collapsible.stories.tsx +47 -1
  243. package/src/ui/atoms/Collapsible/Collapsible.test.tsx +36 -24
  244. package/src/ui/atoms/Collapsible/Collapsible.tsx +9 -1
  245. package/src/ui/atoms/ErrorMessage/ErrorMessage.stories.tsx +1 -1
  246. package/src/ui/atoms/Info/Info.stories.tsx +1 -1
  247. package/src/ui/atoms/Info/Info.test.tsx +45 -0
  248. package/src/ui/atoms/Info/Info.tsx +2 -2
  249. package/src/ui/atoms/Input/Input.stories.tsx +80 -0
  250. package/src/ui/atoms/Input/Input.test.tsx +190 -36
  251. package/src/ui/atoms/Input/Input.tsx +144 -25
  252. package/src/ui/atoms/Label/Label.stories.tsx +1 -1
  253. package/src/ui/atoms/NavLink/NavLink.stories.tsx +1 -1
  254. package/src/ui/atoms/Popover/Popover.stories.tsx +157 -0
  255. package/src/ui/atoms/Popover/Popover.test.tsx +80 -0
  256. package/src/ui/atoms/Popover/Popover.tsx +256 -0
  257. package/src/ui/atoms/Popover/index.ts +2 -0
  258. package/src/ui/atoms/Progress/Progress.css +17 -0
  259. package/src/ui/atoms/Progress/Progress.stories.tsx +170 -0
  260. package/src/ui/atoms/Progress/Progress.test.tsx +134 -0
  261. package/src/ui/atoms/Progress/Progress.tsx +138 -0
  262. package/src/ui/atoms/Radio/Radio.tsx +1 -1
  263. package/src/ui/atoms/Select/Select.stories.tsx +93 -58
  264. package/src/ui/atoms/Select/Select.test.tsx +162 -46
  265. package/src/ui/atoms/Select/Select.tsx +142 -44
  266. package/src/ui/atoms/Separator/Separator.stories.tsx +88 -0
  267. package/src/ui/atoms/Separator/Separator.test.tsx +34 -0
  268. package/src/ui/atoms/Separator/Separator.tsx +81 -0
  269. package/src/ui/atoms/Separator/index.ts +2 -0
  270. package/src/ui/atoms/Skeleton/Skeleton.stories.tsx +62 -0
  271. package/src/ui/atoms/Skeleton/Skeleton.tsx +19 -2
  272. package/src/ui/atoms/Slider/Slider.stories.tsx +205 -0
  273. package/src/ui/atoms/Slider/Slider.test.tsx +53 -0
  274. package/src/ui/atoms/Slider/Slider.tsx +307 -0
  275. package/src/ui/atoms/Slider/index.ts +2 -0
  276. package/src/ui/atoms/Spinner/Spinner.stories.tsx +56 -0
  277. package/src/ui/atoms/Spinner/Spinner.test.tsx +35 -0
  278. package/src/ui/atoms/Spinner/Spinner.tsx +88 -0
  279. package/src/ui/atoms/Switch/Switch.stories.tsx +182 -0
  280. package/src/ui/atoms/Switch/Switch.test.tsx +90 -0
  281. package/src/ui/atoms/Switch/Switch.tsx +181 -0
  282. package/src/ui/atoms/Switch/index.ts +2 -0
  283. package/src/ui/atoms/Text/Text.stories.tsx +1 -1
  284. package/src/ui/atoms/Text/Text.test.tsx +48 -32
  285. package/src/ui/atoms/Textarea/Textarea.stories.tsx +1 -1
  286. package/src/ui/atoms/Tooltip/Tooltip.stories.tsx +44 -0
  287. package/src/ui/atoms/Tooltip/Tooltip.tsx +94 -6
  288. package/src/ui/atoms/index.ts +27 -4
  289. package/src/ui/index.ts +6 -1
  290. package/src/ui/molecules/Breadcrumb/Breadcrumb.stories.tsx +1 -1
  291. package/src/ui/molecules/Breadcrumb/Breadcrumb.tsx +1 -1
  292. package/src/ui/molecules/Card/Card.stories.tsx +49 -1
  293. package/src/ui/molecules/Card/Card.tsx +40 -5
  294. package/src/ui/molecules/ColorPicker/ColorPicker.stories.tsx +156 -0
  295. package/src/ui/molecules/ColorPicker/ColorPicker.test.tsx +47 -0
  296. package/src/ui/molecules/ColorPicker/ColorPicker.tsx +271 -0
  297. package/src/ui/molecules/ColorPicker/index.ts +2 -0
  298. package/src/ui/molecules/DatePicker/DatePicker.mdx +150 -0
  299. package/src/ui/molecules/DatePicker/DatePicker.stories.tsx +188 -0
  300. package/src/ui/molecules/DatePicker/DatePicker.test.tsx +381 -0
  301. package/src/ui/molecules/DatePicker/DatePicker.tsx +231 -0
  302. package/src/ui/molecules/DatePicker/DatePickerCalendar.tsx +277 -0
  303. package/src/ui/molecules/DatePicker/DatePickerContext.tsx +39 -0
  304. package/src/ui/molecules/DatePicker/DatePickerInput.tsx +147 -0
  305. package/src/ui/molecules/DatePicker/DatePickerProvider.tsx +100 -0
  306. package/src/ui/molecules/DatePicker/index.ts +16 -0
  307. package/src/ui/molecules/Dropdown/Dropdown.stories.tsx +50 -8
  308. package/src/ui/molecules/Dropdown/Dropdown.test.tsx +272 -12
  309. package/src/ui/molecules/Dropdown/Dropdown.tsx +176 -10
  310. package/src/ui/molecules/EmptyState/EmptyState.stories.tsx +24 -2
  311. package/src/ui/molecules/EmptyState/EmptyState.tsx +9 -3
  312. package/src/ui/molecules/FileUpload/FileUpload.stories.tsx +177 -0
  313. package/src/ui/molecules/FileUpload/FileUpload.test.tsx +114 -0
  314. package/src/ui/molecules/FileUpload/FileUpload.tsx +312 -0
  315. package/src/ui/molecules/FileUpload/index.ts +2 -0
  316. package/src/ui/molecules/Form/Form.mdx +145 -0
  317. package/src/ui/molecules/Form/Form.stories.tsx +121 -1
  318. package/src/ui/molecules/Form/Form.test.tsx +1 -3
  319. package/src/ui/molecules/Form/Form.tsx +95 -15
  320. package/src/ui/molecules/Form/FormContext.tsx +35 -0
  321. package/src/ui/molecules/Form/FormField.tsx +83 -0
  322. package/src/ui/molecules/Form/FormProvider.tsx +34 -0
  323. package/src/ui/molecules/Form/index.ts +21 -0
  324. package/src/ui/molecules/Form/useFormFieldArray.ts +46 -0
  325. package/src/ui/molecules/InputWithLabel/InputWithLabel.stories.tsx +1 -1
  326. package/src/ui/molecules/InputWithLabel/InputWithLabel.test.tsx +44 -0
  327. package/src/ui/molecules/InputWithLabel/InputWithLabel.tsx +3 -1
  328. package/src/ui/molecules/NavbarGroup/NavbarGroup.stories.tsx +1 -1
  329. package/src/ui/molecules/Pagination/Pagination.stories.tsx +1 -1
  330. package/src/ui/molecules/Rating/Rating.stories.tsx +206 -0
  331. package/src/ui/molecules/Rating/Rating.test.tsx +60 -0
  332. package/src/ui/molecules/Rating/Rating.tsx +173 -0
  333. package/src/ui/molecules/Rating/index.ts +2 -0
  334. package/src/ui/molecules/SearchInput/SearchInput.stories.tsx +146 -0
  335. package/src/ui/molecules/SearchInput/SearchInput.test.tsx +82 -0
  336. package/src/ui/molecules/SearchInput/SearchInput.tsx +133 -0
  337. package/src/ui/molecules/SearchInput/index.ts +2 -0
  338. package/src/ui/molecules/Tabs/Tabs.stories.tsx +229 -0
  339. package/src/ui/molecules/Tabs/Tabs.test.tsx +497 -0
  340. package/src/ui/molecules/Tabs/Tabs.tsx +58 -0
  341. package/src/ui/molecules/Tabs/TabsContent.tsx +50 -0
  342. package/src/ui/molecules/Tabs/TabsContext.tsx +36 -0
  343. package/src/ui/molecules/Tabs/TabsList.tsx +98 -0
  344. package/src/ui/molecules/Tabs/TabsProvider.tsx +53 -0
  345. package/src/ui/molecules/Tabs/TabsTrigger.tsx +111 -0
  346. package/src/ui/molecules/Tabs/index.ts +23 -0
  347. package/src/ui/molecules/TimePicker/TimePicker.stories.tsx +145 -0
  348. package/src/ui/molecules/TimePicker/TimePicker.test.tsx +41 -0
  349. package/src/ui/molecules/TimePicker/TimePicker.tsx +264 -0
  350. package/src/ui/molecules/TimePicker/index.ts +2 -0
  351. package/src/ui/molecules/index.ts +20 -7
  352. package/src/ui/organisms/CommandPalette/CommandPalette.stories.tsx +218 -0
  353. package/src/ui/organisms/CommandPalette/CommandPalette.test.tsx +85 -0
  354. package/src/ui/organisms/CommandPalette/CommandPalette.tsx +333 -0
  355. package/src/ui/organisms/CommandPalette/index.ts +2 -0
  356. package/src/ui/organisms/DataGrid/DataGrid.stories.tsx +196 -0
  357. package/src/ui/organisms/DataGrid/DataGrid.test.tsx +53 -0
  358. package/src/ui/organisms/DataGrid/DataGrid.tsx +294 -0
  359. package/src/ui/organisms/DataGrid/index.ts +2 -0
  360. package/src/ui/organisms/Dialog/AlertDialog.tsx +92 -0
  361. package/src/ui/organisms/Dialog/Dialog.mdx +200 -0
  362. package/src/ui/organisms/Dialog/Dialog.stories.tsx +226 -0
  363. package/src/ui/organisms/Dialog/Dialog.test.tsx +435 -0
  364. package/src/ui/organisms/Dialog/Dialog.tsx +79 -0
  365. package/src/ui/organisms/Dialog/DialogClose.tsx +45 -0
  366. package/src/ui/organisms/Dialog/DialogContent.tsx +149 -0
  367. package/src/ui/organisms/Dialog/DialogContext.tsx +25 -0
  368. package/src/ui/organisms/Dialog/DialogDescription.tsx +28 -0
  369. package/src/ui/organisms/Dialog/DialogFooter.tsx +18 -0
  370. package/src/ui/organisms/Dialog/DialogHeader.tsx +18 -0
  371. package/src/ui/organisms/Dialog/DialogProvider.tsx +73 -0
  372. package/src/ui/organisms/Dialog/DialogTitle.tsx +31 -0
  373. package/src/ui/organisms/Dialog/DialogTrigger.tsx +34 -0
  374. package/src/ui/organisms/Dialog/index.ts +24 -0
  375. package/src/ui/organisms/LoginBox/LoginBox.stories.tsx +1 -1
  376. package/src/ui/organisms/Modal/Modal.stories.tsx +2 -2
  377. package/src/ui/organisms/Modal/Modal.test.tsx +1 -1
  378. package/src/ui/organisms/Sidebar/Sidebar.stories.tsx +1 -1
  379. package/src/ui/organisms/Sidebar/Sidebar.test.tsx +5 -3
  380. package/src/ui/organisms/Sidebar/Sidebar.tsx +21 -6
  381. package/src/ui/{molecules → organisms/Sidebar}/SidebarGroup/SidebarGroup.stories.tsx +2 -2
  382. package/src/ui/{molecules → organisms/Sidebar}/SidebarGroup/SidebarGroup.test.tsx +32 -9
  383. package/src/ui/{molecules → organisms/Sidebar}/SidebarGroup/SidebarGroup.tsx +7 -7
  384. package/src/ui/organisms/Sidebar/SidebarHeader/SidebarHeader.test.tsx +66 -0
  385. package/src/ui/{molecules → organisms/Sidebar}/SidebarHeader/SidebarHeader.tsx +1 -2
  386. package/src/ui/{atoms → organisms/Sidebar}/SidebarItem/SidebarItem.stories.tsx +1 -1
  387. package/src/ui/{atoms → organisms/Sidebar}/SidebarItem/SidebarItem.test.tsx +9 -8
  388. package/src/ui/{atoms → organisms/Sidebar}/SidebarItem/SidebarItem.tsx +9 -3
  389. package/src/ui/organisms/Sidebar/index.ts +13 -0
  390. package/src/ui/organisms/Stepper/Stepper.stories.tsx +253 -0
  391. package/src/ui/organisms/Stepper/Stepper.test.tsx +76 -0
  392. package/src/ui/organisms/Stepper/Stepper.tsx +323 -0
  393. package/src/ui/organisms/Stepper/index.ts +2 -0
  394. package/src/ui/organisms/Table/Table.mdx +154 -0
  395. package/src/ui/organisms/Table/Table.stories.tsx +614 -4
  396. package/src/ui/organisms/Table/Table.test.tsx +86 -4
  397. package/src/ui/organisms/Table/Table.tsx +215 -99
  398. package/src/ui/organisms/Table/TableActions/TableActions.stories.tsx +88 -0
  399. package/src/ui/organisms/Table/TableActions/TableActions.test.tsx +64 -0
  400. package/src/ui/organisms/Table/TableActions/TableActions.tsx +71 -0
  401. package/src/ui/organisms/Table/TableActions.tsx +46 -0
  402. package/src/ui/organisms/Table/TableBody.tsx +137 -0
  403. package/src/ui/organisms/Table/TableCell.tsx +36 -0
  404. package/src/ui/organisms/Table/TableContext.tsx +111 -0
  405. package/src/ui/organisms/Table/TableEmptyState.tsx +51 -0
  406. package/src/ui/organisms/Table/TableFilters/TableFilters.stories.tsx +111 -0
  407. package/src/ui/organisms/Table/TableFilters/TableFilters.test.tsx +104 -0
  408. package/src/ui/organisms/Table/TableFilters/TableFilters.tsx +191 -0
  409. package/src/ui/organisms/Table/TableFilters.tsx +39 -0
  410. package/src/ui/organisms/Table/TableHeader.tsx +29 -0
  411. package/src/ui/organisms/Table/TableHeaderCell.tsx +142 -0
  412. package/src/ui/organisms/Table/TableHeaderRow.tsx +72 -0
  413. package/src/ui/organisms/Table/TablePagination/TablePagination.stories.tsx +87 -0
  414. package/src/ui/organisms/Table/TablePagination/TablePagination.test.tsx +90 -0
  415. package/src/ui/organisms/Table/TablePagination/TablePagination.tsx +207 -0
  416. package/src/ui/organisms/Table/TablePagination.tsx +48 -0
  417. package/src/ui/organisms/Table/TableProvider.tsx +429 -0
  418. package/src/ui/organisms/Table/TableRow.tsx +85 -0
  419. package/src/ui/organisms/Table/TableTypes.ts +11 -0
  420. package/src/ui/organisms/Table/index.ts +55 -0
  421. package/src/ui/organisms/Table/useColumnResizing.ts +134 -0
  422. package/src/ui/organisms/Table/useVirtualScrolling.ts +116 -0
  423. package/src/ui/organisms/Timeline/Timeline.stories.tsx +230 -0
  424. package/src/ui/organisms/Timeline/Timeline.test.tsx +47 -0
  425. package/src/ui/organisms/Timeline/Timeline.tsx +179 -0
  426. package/src/ui/organisms/Timeline/index.ts +2 -0
  427. package/src/ui/organisms/Toast/Toast.stories.tsx +169 -0
  428. package/src/ui/organisms/Toast/Toast.test.tsx +537 -0
  429. package/src/ui/organisms/Toast/Toast.tsx +144 -0
  430. package/src/ui/organisms/Toast/ToastContainer.tsx +54 -0
  431. package/src/ui/organisms/Toast/ToastContext.tsx +38 -0
  432. package/src/ui/organisms/Toast/ToastProvider.tsx +56 -0
  433. package/src/ui/organisms/Toast/index.ts +17 -0
  434. package/src/ui/organisms/Toast/useToast.ts +70 -0
  435. package/src/ui/organisms/index.ts +17 -2
  436. package/src/ui/providers/AdvancedThemeProvider.tsx +229 -0
  437. package/src/ui/providers/index.ts +14 -0
  438. package/src/ui/themes/README.md +281 -0
  439. package/src/ui/themes/ThemeBuilder.ts +149 -0
  440. package/src/ui/themes/ThemeRegistry.ts +187 -0
  441. package/src/ui/themes/index.ts +20 -0
  442. package/src/ui/themes/types.ts +53 -0
  443. package/src/ui/themes/utils.ts +70 -0
  444. package/src/ui/tokens/README.md +212 -0
  445. package/src/ui/tokens/TokenVisualizations.tsx +273 -0
  446. package/src/ui/tokens/Tokens.mdx +348 -0
  447. package/src/ui/tokens/animations.ts +157 -0
  448. package/src/ui/tokens/borders.ts +121 -0
  449. package/src/ui/tokens/gradients.ts +154 -0
  450. package/src/ui/tokens/index.ts +57 -0
  451. package/src/ui/tokens/opacity.ts +107 -0
  452. package/src/ui/tokens/radius.ts +107 -0
  453. package/src/ui/tokens/shadows.ts +92 -0
  454. package/src/ui/tokens/tokens.factory.ts +124 -0
  455. package/src/ui/tokens/z-index.ts +113 -0
  456. package/src/ui/utils/index.ts +10 -0
  457. package/src/App.css +0 -42
  458. package/src/App.tsx +0 -35
  459. package/src/index.css +0 -68
  460. package/src/main.tsx +0 -15
@@ -0,0 +1,40 @@
1
+ import { type ReactNode } from 'react';
2
+ export type StepperStatus = 'pending' | 'active' | 'completed' | 'error';
3
+ export interface StepperStep {
4
+ id: string;
5
+ title: string;
6
+ description?: string;
7
+ content: ReactNode;
8
+ status?: StepperStatus;
9
+ disabled?: boolean;
10
+ }
11
+ export interface StepperProps {
12
+ steps: StepperStep[];
13
+ currentStep?: number;
14
+ defaultCurrentStep?: number;
15
+ onStepChange?: (stepIndex: number) => void;
16
+ onComplete?: () => void;
17
+ allowNavigation?: boolean;
18
+ showStepNumbers?: boolean;
19
+ orientation?: 'horizontal' | 'vertical';
20
+ className?: string;
21
+ }
22
+ /**
23
+ * Stepper Component
24
+ *
25
+ * A multi-step wizard component for guided workflows.
26
+ * Supports validation, navigation, and completion callbacks.
27
+ * Follows Atomic Design principles as an Organism component.
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * <Stepper
32
+ * steps={[
33
+ * { id: '1', title: 'Step 1', content: <div>Content 1</div> },
34
+ * { id: '2', title: 'Step 2', content: <div>Content 2</div> },
35
+ * ]}
36
+ * onComplete={() => console.log('Completed!')}
37
+ * />
38
+ * ```
39
+ */
40
+ export default function Stepper({ steps, currentStep: controlledCurrentStep, defaultCurrentStep, onStepChange, onComplete, allowNavigation, showStepNumbers, orientation, className, }: StepperProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import Stepper from './Stepper';
3
+ declare const meta: Meta<typeof Stepper>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Stepper>;
6
+ export declare const Default: Story;
7
+ export declare const Vertical: Story;
8
+ export declare const WithoutStepNumbers: Story;
9
+ export declare const WithStatus: Story;
10
+ export declare const WithError: Story;
11
+ export declare const WithoutNavigation: Story;
12
+ export declare const ComplexWorkflow: Story;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export { default } from './Stepper';
2
+ export type { StepperProps, StepperStep, StepperStatus } from './Stepper';
@@ -1,11 +1,20 @@
1
1
  import type { HTMLAttributes, ReactNode } from "react";
2
- export interface TableColumn<T = any> {
3
- key: string;
4
- label: string;
5
- render?: (value: any, row: T) => ReactNode;
6
- sortable?: boolean;
7
- }
8
- interface Props<T = any> extends HTMLAttributes<HTMLTableElement> {
2
+ import { type TableProviderProps } from './TableProvider';
3
+ import type { FilterConfig, FilterValue } from './TableFilters/TableFilters';
4
+ import type { TableAction } from './TableActions/TableActions';
5
+ import type { TableColumn } from './TableTypes';
6
+ import TableHeader from './TableHeader';
7
+ import TableHeaderRow from './TableHeaderRow';
8
+ import TableHeaderCell from './TableHeaderCell';
9
+ import TableBody from './TableBody';
10
+ import TableRow from './TableRow';
11
+ import TableCell from './TableCell';
12
+ import TableFilters from './TableFilters';
13
+ import TablePagination from './TablePagination';
14
+ import TableEmptyState from './TableEmptyState';
15
+ import TableActions from './TableActions';
16
+ export type { TableColumn } from './TableTypes';
17
+ interface SimplifiedTableProps<T extends Record<string, unknown> = Record<string, unknown>> extends Omit<HTMLAttributes<HTMLDivElement>, 'onSort' | 'children'> {
9
18
  columns: TableColumn<T>[];
10
19
  data: T[];
11
20
  loading?: boolean;
@@ -13,23 +22,82 @@ interface Props<T = any> extends HTMLAttributes<HTMLTableElement> {
13
22
  sortColumn?: string;
14
23
  sortDirection?: 'asc' | 'desc';
15
24
  emptyMessage?: string;
25
+ emptyStateTitle?: string;
26
+ emptyStateMessage?: string;
27
+ emptyStateIllustration?: ReactNode;
28
+ emptyStateAction?: ReactNode;
29
+ pagination?: {
30
+ page: number;
31
+ pageSize: number;
32
+ total: number;
33
+ onPageChange: (page: number) => void;
34
+ onPageSizeChange: (size: number) => void;
35
+ pageSizeOptions?: number[];
36
+ };
37
+ filters?: {
38
+ config: FilterConfig[];
39
+ onFilter: (filters: Record<string, FilterValue>) => void;
40
+ initialValues?: Record<string, FilterValue>;
41
+ };
42
+ selectable?: boolean;
43
+ selectedRows?: string[];
44
+ onSelectionChange?: (selected: string[]) => void;
45
+ rowId?: (row: T) => string;
46
+ actions?: (row: T) => TableAction<T>[];
47
+ paginationMode?: 'client' | 'server' | 'auto';
48
+ defaultPageSize?: number;
49
+ resizable?: boolean;
50
+ columnWidths?: Record<string, number>;
51
+ onColumnResize?: (columnKey: string, width: number) => void;
52
+ virtualScrolling?: boolean;
53
+ virtualScrollingOptions?: {
54
+ itemHeight?: number;
55
+ containerHeight?: number;
56
+ overscan?: number;
57
+ };
58
+ 'aria-label'?: string;
59
+ 'aria-labelledby'?: string;
60
+ children?: never;
61
+ }
62
+ interface DeclarativeTableProps<T extends Record<string, unknown> = Record<string, unknown>> extends Omit<TableProviderProps<T>, 'children'> {
63
+ children: ReactNode;
16
64
  }
65
+ type TableProps<T extends Record<string, unknown> = Record<string, unknown>> = SimplifiedTableProps<T> | DeclarativeTableProps<T>;
17
66
  /**
18
67
  * Table Component
19
68
  *
20
- * A table component with sorting, loading states, and responsive design.
21
- * Follows Atomic Design principles as an Organism component.
69
+ * A comprehensive table component with sorting, pagination, filters, selection, and actions.
70
+ * Supports both simplified API (props-based) and declarative API (compound components).
22
71
  *
23
72
  * @example
24
73
  * ```tsx
74
+ * // Simplified API
25
75
  * <Table
26
- * columns={[
27
- * { key: 'name', label: 'Name', sortable: true },
28
- * { key: 'status', label: 'Status' }
29
- * ]}
30
- * data={items}
76
+ * columns={columns}
77
+ * data={data}
78
+ * pagination={{ page, pageSize, total, onPageChange }}
31
79
  * />
80
+ *
81
+ * // Declarative API
82
+ * <Table columns={columns} data={data}>
83
+ * <Table.Filters />
84
+ * <Table.Header />
85
+ * <Table.Body />
86
+ * <Table.Pagination />
87
+ * </Table>
32
88
  * ```
33
89
  */
34
- export default function Table<T = any>({ columns, data, loading, onSort, sortColumn, sortDirection, emptyMessage, className, ...props }: Props<T>): import("react/jsx-runtime").JSX.Element;
35
- export {};
90
+ declare function TableComponent<T = any>(props: TableProps<T>): import("react/jsx-runtime").JSX.Element;
91
+ declare namespace TableComponent {
92
+ var Header: typeof TableHeader;
93
+ var HeaderRow: typeof TableHeaderRow;
94
+ var HeaderCell: typeof TableHeaderCell;
95
+ var Body: typeof TableBody;
96
+ var Row: typeof TableRow;
97
+ var Cell: typeof TableCell;
98
+ var Filters: typeof TableFilters;
99
+ var Pagination: typeof TablePagination;
100
+ var EmptyState: typeof TableEmptyState;
101
+ var Actions: typeof TableActions;
102
+ }
103
+ export default TableComponent;
@@ -6,4 +6,19 @@ export declare const WithSorting: StoryObj<typeof Table>;
6
6
  export declare const WithCustomRendering: StoryObj<typeof Table>;
7
7
  export declare const Loading: StoryObj<typeof Table>;
8
8
  export declare const Empty: StoryObj<typeof Table>;
9
+ export declare const WithPagination: StoryObj<typeof Table>;
10
+ export declare const WithFilters: StoryObj<typeof Table>;
11
+ export declare const WithSelection: StoryObj<typeof Table>;
12
+ export declare const WithActions: StoryObj<typeof Table>;
13
+ export declare const FullFeatured: StoryObj<typeof Table>;
14
+ export declare const ClientSidePagination: StoryObj<typeof Table>;
15
+ export declare const ServerSidePagination: StoryObj<typeof Table>;
16
+ export declare const AutoDetectPagination: StoryObj<typeof Table>;
17
+ export declare const DeclarativeAPI: StoryObj<typeof Table>;
18
+ export declare const Accessibility: StoryObj<typeof Table>;
19
+ export declare const KeyboardNavigation: StoryObj<typeof Table>;
20
+ export declare const DashboardComposition: StoryObj<typeof Table>;
21
+ export declare const EmptyState: StoryObj<typeof Table>;
22
+ export declare const LoadingState: StoryObj<typeof Table>;
23
+ export declare const LargeDataset: StoryObj<typeof Table>;
9
24
  export default meta;
@@ -0,0 +1,31 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export interface TableAction<T extends Record<string, unknown> = Record<string, unknown>> {
3
+ label: string;
4
+ onClick: (row: T) => void;
5
+ variant?: 'default' | 'danger';
6
+ disabled?: boolean;
7
+ icon?: React.ReactNode;
8
+ }
9
+ export interface TableActionsProps<T extends Record<string, unknown> = Record<string, unknown>> extends HTMLAttributes<HTMLDivElement> {
10
+ actions: TableAction<T>[];
11
+ row: T;
12
+ align?: 'left' | 'right';
13
+ }
14
+ /**
15
+ * TableActions Component
16
+ *
17
+ * Dropdown menu for row actions in tables.
18
+ * Follows Atomic Design principles as a Molecule component.
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * <TableActions
23
+ * row={rowData}
24
+ * actions={[
25
+ * { label: 'Edit', onClick: (row) => handleEdit(row) },
26
+ * { label: 'Delete', onClick: (row) => handleDelete(row), variant: 'danger' },
27
+ * ]}
28
+ * />
29
+ * ```
30
+ */
31
+ export default function TableActions<T extends Record<string, unknown> = Record<string, unknown>>({ actions, row, align, className, ...props }: TableActionsProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import TableActions from "./TableActions";
3
+ declare const meta: Meta<typeof TableActions>;
4
+ export declare const Default: StoryObj<typeof TableActions>;
5
+ export declare const WithDisabledAction: StoryObj<typeof TableActions>;
6
+ export declare const LeftAligned: StoryObj<typeof TableActions>;
7
+ export default meta;
@@ -0,0 +1,13 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export interface TableActionsProps<T extends Record<string, unknown> = Record<string, unknown>> extends HTMLAttributes<HTMLDivElement> {
3
+ row: T;
4
+ align?: 'left' | 'right';
5
+ }
6
+ /**
7
+ * TableActions Component
8
+ *
9
+ * Renders action dropdown menu for a table row.
10
+ * Uses actions configuration from Table context.
11
+ * Must be used within a Table component.
12
+ */
13
+ export default function TableActions<T extends Record<string, unknown> = Record<string, unknown>>({ row, align, className, ...props }: TableActionsProps<T>): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,12 @@
1
+ import { type HTMLAttributes, ReactNode } from 'react';
2
+ export interface TableBodyProps<T extends Record<string, unknown> = Record<string, unknown>> extends HTMLAttributes<HTMLTableSectionElement> {
3
+ children?: (row: T, index: number) => ReactNode;
4
+ }
5
+ /**
6
+ * TableBody Component
7
+ *
8
+ * Renders the table body (tbody) with rows.
9
+ * Can render loading skeleton, empty state, or data rows.
10
+ * Must be used within a Table component.
11
+ */
12
+ export default function TableBody({ children, className, ...props }: TableBodyProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ import type { TableColumn } from './TableTypes';
3
+ export interface TableCellProps<T = any> extends HTMLAttributes<HTMLTableCellElement> {
4
+ column: TableColumn<T>;
5
+ row: T;
6
+ }
7
+ /**
8
+ * TableCell Component
9
+ *
10
+ * Renders a table cell (td) for a column.
11
+ * Uses column.render if available, otherwise renders the raw value.
12
+ * Must be used within a Table component.
13
+ */
14
+ export default function TableCell<T extends Record<string, unknown> = Record<string, unknown>>({ column, row, className, ...props }: TableCellProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,75 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { TableColumn } from './TableTypes';
3
+ import type { FilterConfig } from './TableFilters/TableFilters';
4
+ import type { TableAction } from './TableActions/TableActions';
5
+ export type PaginationMode = 'client' | 'server' | 'auto';
6
+ export interface PaginationState {
7
+ page: number;
8
+ pageSize: number;
9
+ total: number;
10
+ totalPages: number;
11
+ }
12
+ export interface SortState {
13
+ column: string;
14
+ direction: 'asc' | 'desc';
15
+ }
16
+ import type { FilterValue } from './TableFilters/TableFilters';
17
+ export interface FilterState {
18
+ values: Record<string, FilterValue>;
19
+ config: FilterConfig[];
20
+ }
21
+ export interface SelectionState {
22
+ selectedRows: string[];
23
+ isAllSelected: boolean;
24
+ isIndeterminate: boolean;
25
+ }
26
+ export interface TableContextValue<T extends Record<string, unknown> = Record<string, unknown>> {
27
+ columns: TableColumn<T>[];
28
+ data: T[];
29
+ paginatedData: T[];
30
+ loading: boolean;
31
+ paginationState: PaginationState;
32
+ sortState: SortState;
33
+ filterState: FilterState;
34
+ selectionState: SelectionState;
35
+ paginationMode: PaginationMode;
36
+ selectable: boolean;
37
+ rowId?: (row: T) => string;
38
+ actions?: (row: T) => TableAction<T>[];
39
+ resizable?: boolean;
40
+ columnWidths?: Record<string, number>;
41
+ virtualScrolling?: boolean;
42
+ emptyMessage?: string;
43
+ emptyStateTitle?: string;
44
+ emptyStateMessage?: string;
45
+ emptyStateIllustration?: ReactNode;
46
+ emptyStateAction?: ReactNode;
47
+ setPage: (page: number) => void;
48
+ setPageSize: (size: number) => void;
49
+ setSorting: (column: string, direction: 'asc' | 'desc') => void;
50
+ setFilters: (filters: Record<string, FilterValue>) => void;
51
+ setSelection: (selected: string[]) => void;
52
+ toggleRowSelection: (rowId: string) => void;
53
+ toggleSelectAll: () => void;
54
+ getRowId: (row: T, index: number) => string;
55
+ setColumnWidth?: (columnKey: string, width: number) => void;
56
+ onPageChange?: (page: number) => void;
57
+ onPageSizeChange?: (size: number) => void;
58
+ onSort?: (column: string, direction: 'asc' | 'desc') => void;
59
+ onFilter?: (filters: Record<string, FilterValue>) => void;
60
+ onSelectionChange?: (selected: string[]) => void;
61
+ onRowClick?: (row: T) => void;
62
+ onColumnResize?: (columnKey: string, width: number) => void;
63
+ }
64
+ declare const TableContext: import("react").Context<TableContextValue<Record<string, unknown>> | undefined>;
65
+ /**
66
+ * Hook to access Table context
67
+ *
68
+ * @throws Error if used outside of Table component
69
+ */
70
+ export declare function useTableContext<T extends Record<string, unknown> = Record<string, unknown>>(): TableContextValue<T>;
71
+ /**
72
+ * Hook to access Table context (optional, returns undefined if not in Table)
73
+ */
74
+ export declare function useTableContextOptional<T extends Record<string, unknown> = Record<string, unknown>>(): TableContextValue<T> | undefined;
75
+ export { TableContext };
@@ -0,0 +1,11 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export interface TableEmptyStateProps extends HTMLAttributes<HTMLDivElement> {
3
+ }
4
+ /**
5
+ * TableEmptyState Component
6
+ *
7
+ * Renders empty state when table has no data.
8
+ * Uses empty state configuration from Table context.
9
+ * Must be used within a Table component.
10
+ */
11
+ export default function TableEmptyState({ className, ...props }: TableEmptyStateProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,37 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export type FilterType = 'text' | 'select' | 'date';
3
+ export interface FilterConfig {
4
+ key: string;
5
+ label: string;
6
+ type: FilterType;
7
+ options?: Array<{
8
+ value: string;
9
+ label: string;
10
+ }>;
11
+ placeholder?: string;
12
+ }
13
+ export type FilterValue = string | number | boolean | null | undefined;
14
+ export interface TableFiltersProps extends HTMLAttributes<HTMLDivElement> {
15
+ filters: FilterConfig[];
16
+ onFilter: (filters: Record<string, FilterValue>) => void;
17
+ initialValues?: Record<string, FilterValue>;
18
+ showClearAll?: boolean;
19
+ }
20
+ /**
21
+ * TableFilters Component
22
+ *
23
+ * Filter controls for tables with support for text, select, and date filters.
24
+ * Follows Atomic Design principles as a Molecule component.
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * <TableFilters
29
+ * filters={[
30
+ * { key: 'status', label: 'Status', type: 'select', options: [...] },
31
+ * { key: 'search', label: 'Search', type: 'text', placeholder: 'Search...' }
32
+ * ]}
33
+ * onFilter={(filters) => handleFilter(filters)}
34
+ * />
35
+ * ```
36
+ */
37
+ export default function TableFilters({ filters, onFilter, initialValues, showClearAll, className, ...props }: TableFiltersProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import TableFilters from "./TableFilters";
3
+ declare const meta: Meta<typeof TableFilters>;
4
+ export declare const Default: StoryObj<typeof TableFilters>;
5
+ export declare const WithInitialValues: StoryObj<typeof TableFilters>;
6
+ export declare const WithDateFilter: StoryObj<typeof TableFilters>;
7
+ export default meta;
@@ -0,0 +1,12 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export interface TableFiltersProps extends HTMLAttributes<HTMLDivElement> {
3
+ showClearAll?: boolean;
4
+ }
5
+ /**
6
+ * TableFilters Component
7
+ *
8
+ * Renders filter controls for the table.
9
+ * Uses filter configuration from Table context.
10
+ * Must be used within a Table component.
11
+ */
12
+ export default function TableFilters({ showClearAll, className, ...props }: TableFiltersProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export interface TableHeaderProps extends HTMLAttributes<HTMLTableSectionElement> {
3
+ }
4
+ /**
5
+ * TableHeader Component
6
+ *
7
+ * Renders the table header (thead) with columns.
8
+ * Must be used within a Table component.
9
+ */
10
+ export default function TableHeader({ className, ...props }: TableHeaderProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import { type HTMLAttributes } from 'react';
2
+ import type { TableColumn } from './TableTypes';
3
+ export interface TableHeaderCellProps extends HTMLAttributes<HTMLTableCellElement> {
4
+ column: TableColumn;
5
+ resizable?: boolean;
6
+ width?: number;
7
+ onResize?: (columnKey: string, width: number) => void;
8
+ minWidth?: number;
9
+ maxWidth?: number;
10
+ }
11
+ /**
12
+ * TableHeaderCell Component
13
+ *
14
+ * Renders a header cell (th) for a column.
15
+ * Supports sorting if column is sortable.
16
+ * Must be used within a Table component.
17
+ */
18
+ export default function TableHeaderCell({ column, resizable, width, onResize, minWidth, maxWidth, className, ...props }: TableHeaderCellProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export interface TableHeaderRowProps extends HTMLAttributes<HTMLTableRowElement> {
3
+ }
4
+ /**
5
+ * TableHeaderRow Component
6
+ *
7
+ * Renders a header row (tr) with header cells.
8
+ * Must be used within a Table component.
9
+ */
10
+ export default function TableHeaderRow({ className, ...props }: TableHeaderRowProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,29 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export interface TablePaginationProps extends HTMLAttributes<HTMLDivElement> {
3
+ page: number;
4
+ pageSize: number;
5
+ total: number;
6
+ onPageChange: (page: number) => void;
7
+ onPageSizeChange: (size: number) => void;
8
+ pageSizeOptions?: number[];
9
+ showPageSizeSelector?: boolean;
10
+ showPageInfo?: boolean;
11
+ }
12
+ /**
13
+ * TablePagination Component
14
+ *
15
+ * Pagination controls for tables with page navigation and page size selection.
16
+ * Follows Atomic Design principles as a Molecule component.
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * <TablePagination
21
+ * page={1}
22
+ * pageSize={10}
23
+ * total={100}
24
+ * onPageChange={(page) => setPage(page)}
25
+ * onPageSizeChange={(size) => setPageSize(size)}
26
+ * />
27
+ * ```
28
+ */
29
+ export default function TablePagination({ page, pageSize, total, onPageChange, onPageSizeChange, pageSizeOptions, showPageSizeSelector, showPageInfo, className, ...props }: TablePaginationProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import TablePagination from "./TablePagination";
3
+ declare const meta: Meta<typeof TablePagination>;
4
+ export declare const Default: StoryObj<typeof TablePagination>;
5
+ export declare const WithoutPageSizeSelector: StoryObj<typeof TablePagination>;
6
+ export declare const WithoutPageInfo: StoryObj<typeof TablePagination>;
7
+ export declare const LargeDataset: StoryObj<typeof TablePagination>;
8
+ export default meta;
@@ -0,0 +1,14 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export interface TablePaginationProps extends HTMLAttributes<HTMLDivElement> {
3
+ showPageSizeSelector?: boolean;
4
+ showPageInfo?: boolean;
5
+ pageSizeOptions?: number[];
6
+ }
7
+ /**
8
+ * TablePagination Component
9
+ *
10
+ * Renders pagination controls for the table.
11
+ * Uses pagination state from Table context.
12
+ * Must be used within a Table component.
13
+ */
14
+ export default function TablePagination({ showPageSizeSelector, showPageInfo, pageSizeOptions, className, ...props }: TablePaginationProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,55 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type PaginationMode } from './TableContext';
3
+ import type { TableColumn } from './TableTypes';
4
+ import type { FilterConfig, FilterValue } from './TableFilters/TableFilters';
5
+ import type { TableAction } from './TableActions/TableActions';
6
+ export interface TableProviderProps<T extends Record<string, unknown> = Record<string, unknown>> {
7
+ columns: TableColumn<T>[];
8
+ data: T[];
9
+ loading?: boolean;
10
+ paginationMode?: PaginationMode;
11
+ page?: number;
12
+ pageSize?: number;
13
+ total?: number;
14
+ onPageChange?: (page: number) => void;
15
+ onPageSizeChange?: (size: number) => void;
16
+ defaultPageSize?: number;
17
+ pageSizeOptions?: number[];
18
+ sortColumn?: string;
19
+ sortDirection?: 'asc' | 'desc';
20
+ onSort?: (column: string, direction: 'asc' | 'desc') => void;
21
+ defaultSortColumn?: string;
22
+ defaultSortDirection?: 'asc' | 'desc';
23
+ filters?: FilterConfig[];
24
+ filterValues?: Record<string, FilterValue>;
25
+ onFilter?: (filters: Record<string, FilterValue>) => void;
26
+ initialFilterValues?: Record<string, FilterValue>;
27
+ selectable?: boolean;
28
+ selectedRows?: string[];
29
+ onSelectionChange?: (selected: string[]) => void;
30
+ rowId?: (row: T) => string;
31
+ actions?: (row: T) => TableAction<T>[];
32
+ emptyMessage?: string;
33
+ emptyStateTitle?: string;
34
+ emptyStateMessage?: string;
35
+ emptyStateIllustration?: ReactNode;
36
+ emptyStateAction?: ReactNode;
37
+ onRowClick?: (row: T) => void;
38
+ resizable?: boolean;
39
+ columnWidths?: Record<string, number>;
40
+ onColumnResize?: (columnKey: string, width: number) => void;
41
+ virtualScrolling?: boolean;
42
+ virtualScrollingOptions?: {
43
+ itemHeight?: number;
44
+ containerHeight?: number;
45
+ overscan?: number;
46
+ };
47
+ children: ReactNode;
48
+ }
49
+ /**
50
+ * TableProvider Component
51
+ *
52
+ * Manages table state (pagination, sorting, filters, selection) and provides it via Context.
53
+ * Supports both client-side and server-side pagination with auto-detection.
54
+ */
55
+ export declare function TableProvider<T extends Record<string, unknown> = Record<string, unknown>>({ columns, data, loading, paginationMode: explicitMode, page: controlledPage, pageSize: controlledPageSize, total: externalTotal, onPageChange, onPageSizeChange, defaultPageSize, pageSizeOptions, sortColumn: controlledSortColumn, sortDirection: controlledSortDirection, onSort, defaultSortColumn, defaultSortDirection, filters, filterValues: controlledFilterValues, onFilter, initialFilterValues, selectable, selectedRows: controlledSelectedRows, onSelectionChange, rowId, actions, emptyMessage, emptyStateTitle, emptyStateMessage, emptyStateIllustration, emptyStateAction, onRowClick, resizable, columnWidths, onColumnResize, virtualScrolling, virtualScrollingOptions, children, }: TableProviderProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ export interface TableRowProps<T extends Record<string, unknown> = Record<string, unknown>> extends HTMLAttributes<HTMLTableRowElement> {
3
+ row: T;
4
+ rowIndex: number;
5
+ style?: React.CSSProperties;
6
+ }
7
+ /**
8
+ * TableRow Component
9
+ *
10
+ * Renders a table row (tr) with cells.
11
+ * Supports selection and row click.
12
+ * Must be used within a Table component.
13
+ */
14
+ export default function TableRow<T extends Record<string, unknown> = Record<string, unknown>>({ row, rowIndex, className, onClick, style, ...props }: TableRowProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface TableColumn<T = Record<string, unknown>> {
3
+ key: keyof T | string;
4
+ label: string;
5
+ render?: (value: unknown, row: T) => ReactNode;
6
+ sortable?: boolean;
7
+ hiddenOnMobile?: boolean;
8
+ }