@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,70 @@
1
+ /**
2
+ * Theme Utilities
3
+ *
4
+ * Helper functions for theme operations.
5
+ */
6
+
7
+ /**
8
+ * Deep merge utility
9
+ */
10
+ export function mergeDeep<T extends Record<string, unknown>>(
11
+ target: T,
12
+ ...sources: Partial<T>[]
13
+ ): T {
14
+ if (!sources.length) return target;
15
+ const source = sources.shift();
16
+
17
+ if (isObject(target) && isObject(source)) {
18
+ for (const key in source) {
19
+ if (isObject(source[key])) {
20
+ if (!target[key]) Object.assign(target, { [key]: {} });
21
+ mergeDeep(target[key], source[key]);
22
+ } else {
23
+ Object.assign(target, { [key]: source[key] });
24
+ }
25
+ }
26
+ }
27
+
28
+ return mergeDeep(target, ...sources);
29
+ }
30
+
31
+ /**
32
+ * Check if value is an object
33
+ */
34
+ function isObject(item: unknown): item is Record<string, unknown> {
35
+ return item && typeof item === 'object' && !Array.isArray(item);
36
+ }
37
+
38
+ /**
39
+ * Convert CSS variable name to kebab-case
40
+ */
41
+ export function toCSSVariableName(name: string): string {
42
+ return name
43
+ .replace(/([A-Z])/g, '-$1')
44
+ .toLowerCase()
45
+ .replace(/^-/, '');
46
+ }
47
+
48
+ /**
49
+ * Apply CSS variables to element
50
+ */
51
+ export function applyCSSVariables(
52
+ element: HTMLElement,
53
+ variables: Record<string, string>
54
+ ): void {
55
+ for (const [key, value] of Object.entries(variables)) {
56
+ element.style.setProperty(key, value);
57
+ }
58
+ }
59
+
60
+ /**
61
+ * Remove CSS variables from element
62
+ */
63
+ export function removeCSSVariables(
64
+ element: HTMLElement,
65
+ variableNames: string[]
66
+ ): void {
67
+ for (const name of variableNames) {
68
+ element.style.removeProperty(name);
69
+ }
70
+ }
@@ -0,0 +1,212 @@
1
+ # Design Tokens System
2
+
3
+ Este documento descreve o sistema de design tokens do `react-design-system`, que fornece valores centralizados e consistentes para cores, espaçamento, tipografia, sombras, bordas, raios e breakpoints.
4
+
5
+ ## Visão Geral
6
+
7
+ O sistema de tokens utiliza o **Factory Pattern** para criar tokens de forma type-safe e consistente. Todos os tokens seguem uma estrutura padronizada e podem ser acessados através de helper functions.
8
+
9
+ ## Estrutura de Tokens
10
+
11
+ ### 1. Colors (`colors.ts`)
12
+
13
+ Sistema de cores semânticas com suporte a temas claro e escuro.
14
+
15
+ **Roles**: `primary`, `secondary`, `success`, `warning`, `error`, `info`, `neutral`
16
+
17
+ **Shades**: `light`, `DEFAULT`, `dark`, `contrast`
18
+
19
+ **Uso:**
20
+ ```typescript
21
+ import { getColorClass, COLOR_TOKENS } from './tokens/colors';
22
+
23
+ // Obter classe Tailwind
24
+ const bgClass = getColorClass('primary', 'DEFAULT', 'bg'); // 'bg-indigo-500'
25
+ const textClass = getColorClass('error', 'dark', 'text'); // 'text-red-600'
26
+
27
+ // Acessar token diretamente
28
+ const primaryColor = COLOR_TOKENS.primary.DEFAULT.hex; // '#6366f1'
29
+ ```
30
+
31
+ ### 2. Spacing (`spacing.ts`)
32
+
33
+ Sistema de espaçamento baseado em unidades de 4px.
34
+
35
+ **Escala**: `xs` (4px), `sm` (8px), `md` (12px), `base` (16px), `lg` (24px), `xl` (32px), `2xl` (40px), `3xl` (48px), `4xl` (64px), `5xl` (80px), `6xl` (96px)
36
+
37
+ **Uso:**
38
+ ```typescript
39
+ import { getSpacingClass, SPACING_TOKENS } from './tokens/spacing';
40
+
41
+ // Obter classe Tailwind
42
+ const paddingClass = getSpacingClass('md', 'p'); // 'p-3'
43
+ const marginClass = getSpacingClass('lg', 'mx'); // 'mx-6'
44
+
45
+ // Acessar token diretamente
46
+ const mdSpacing = SPACING_TOKENS.md.px; // '12px'
47
+ ```
48
+
49
+ ### 3. Typography (`typography.ts`)
50
+
51
+ Sistema de tipografia com tamanhos, pesos e line heights.
52
+
53
+ **Tamanhos**: `xs`, `sm`, `base`, `lg`, `xl`, `2xl`, `3xl`, `4xl`, `5xl`, `6xl`
54
+
55
+ **Pesos**: `light`, `normal`, `medium`, `semibold`, `bold`
56
+
57
+ **Line Heights**: `none`, `tight`, `snug`, `normal`, `relaxed`, `loose`
58
+
59
+ **Uso:**
60
+ ```typescript
61
+ import { getTypographyClasses, TYPOGRAPHY_TOKENS } from './tokens/typography';
62
+
63
+ // Obter classes completas
64
+ const headingClasses = getTypographyClasses('h1'); // 'text-4xl leading-tight font-bold'
65
+
66
+ // Acessar token diretamente
67
+ const h1Size = TYPOGRAPHY_TOKENS.h1.fontSize.px; // '36px'
68
+ ```
69
+
70
+ ### 4. Shadows (`shadows.ts`)
71
+
72
+ Sistema de sombras para elevação e profundidade.
73
+
74
+ **Tamanhos**: `none`, `sm`, `md`, `lg`, `xl`, `2xl`, `inner`
75
+
76
+ **Uso:**
77
+ ```typescript
78
+ import { getShadowClass, SHADOW_TOKENS } from './tokens/shadows';
79
+
80
+ // Obter classe Tailwind
81
+ const shadowClass = getShadowClass('lg'); // 'shadow-lg'
82
+
83
+ // Acessar token diretamente
84
+ const lgShadow = SHADOW_TOKENS.lg.value; // '0 4px 6px -1px rgb(0 0 0 / 0.1)...'
85
+ ```
86
+
87
+ ### 5. Radius (`radius.ts`)
88
+
89
+ Sistema de border radius para cantos arredondados.
90
+
91
+ **Tamanhos**: `none`, `sm` (2px), `md` (6px), `lg` (8px), `xl` (12px), `2xl` (16px), `3xl` (24px), `full`
92
+
93
+ **Uso:**
94
+ ```typescript
95
+ import { getRadiusClass, RADIUS_TOKENS } from './tokens/radius';
96
+
97
+ // Obter classe Tailwind
98
+ const radiusClass = getRadiusClass('lg'); // 'rounded-lg'
99
+
100
+ // Acessar token diretamente
101
+ const lgRadius = RADIUS_TOKENS.lg.px; // '8px'
102
+ ```
103
+
104
+ ### 6. Borders (`borders.ts`)
105
+
106
+ Sistema de bordas para larguras e estilos.
107
+
108
+ **Larguras**: `none`, `thin` (1px), `base` (1px), `medium` (2px), `thick` (4px)
109
+
110
+ **Estilos**: `solid`, `dashed`, `dotted`
111
+
112
+ **Uso:**
113
+ ```typescript
114
+ import { getBorderWidthClass, getBorderStyleClass, getBorderClasses, BORDER_TOKENS } from './tokens/borders';
115
+
116
+ // Obter classes
117
+ const widthClass = getBorderWidthClass('base'); // 'border'
118
+ const styleClass = getBorderStyleClass('solid'); // 'border-solid'
119
+ const fullBorder = getBorderClasses('base', 'solid'); // 'border border-solid'
120
+
121
+ // Acessar token diretamente
122
+ const baseBorder = BORDER_TOKENS.base.width.px; // '1px'
123
+ ```
124
+
125
+ ### 7. Breakpoints (`breakpoints.ts`)
126
+
127
+ Sistema de breakpoints responsivos.
128
+
129
+ **Breakpoints**: `sm` (640px), `md` (768px), `lg` (1024px), `xl` (1280px), `2xl` (1536px)
130
+
131
+ **Uso:**
132
+ ```typescript
133
+ import { BREAKPOINT_TOKENS } from './tokens/breakpoints';
134
+
135
+ // Acessar breakpoint
136
+ const mdBreakpoint = BREAKPOINT_TOKENS.md.value; // 768
137
+ ```
138
+
139
+ ## Tokens Factory
140
+
141
+ O `TokensFactory` fornece uma interface unificada para criar todos os tipos de tokens:
142
+
143
+ ```typescript
144
+ import { TokensFactory } from './tokens/tokens.factory';
145
+
146
+ const factory = new TokensFactory('light');
147
+ const tokenSet = factory.createTokenSet();
148
+
149
+ // Acessar todos os tokens
150
+ const spacing = tokenSet.spacing;
151
+ const colors = tokenSet.colors;
152
+ const shadows = tokenSet.shadows;
153
+ ```
154
+
155
+ ## Padrões de Uso
156
+
157
+ ### ✅ Usar Tokens
158
+
159
+ ```typescript
160
+ import { getColorClass } from './tokens/colors';
161
+ import { getSpacingClass } from './tokens/spacing';
162
+ import { getRadiusClass } from './tokens/radius';
163
+ import { getShadowClass } from './tokens/shadows';
164
+
165
+ const className = `
166
+ ${getColorClass('primary', 'DEFAULT', 'bg')}
167
+ ${getSpacingClass('md', 'p')}
168
+ ${getRadiusClass('lg')}
169
+ ${getShadowClass('md')}
170
+ `;
171
+ ```
172
+
173
+ ### ❌ Evitar Classes Hardcoded
174
+
175
+ ```typescript
176
+ // ❌ Evitar
177
+ const className = 'bg-indigo-500 p-3 rounded-lg shadow-md';
178
+
179
+ // ✅ Preferir
180
+ const className = `
181
+ ${getColorClass('primary', 'DEFAULT', 'bg')}
182
+ ${getSpacingClass('md', 'p')}
183
+ ${getRadiusClass('lg')}
184
+ ${getShadowClass('md')}
185
+ `;
186
+ ```
187
+
188
+ ## Migração de Classes Hardcoded
189
+
190
+ Ao refatorar componentes, substitua classes hardcoded por tokens:
191
+
192
+ 1. **Cores**: `bg-gray-500` → `getColorClass('neutral', 'DEFAULT', 'bg')`
193
+ 2. **Espaçamento**: `p-4` → `getSpacingClass('base', 'p')`
194
+ 3. **Sombras**: `shadow-lg` → `getShadowClass('lg')`
195
+ 4. **Radius**: `rounded-md` → `getRadiusClass('md')`
196
+ 5. **Bordas**: `border-2` → `getBorderWidthClass('medium')`
197
+
198
+ ## Benefícios
199
+
200
+ 1. **Consistência**: Valores centralizados garantem consistência visual
201
+ 2. **Manutenibilidade**: Mudanças em um lugar refletem em todo o sistema
202
+ 3. **Type Safety**: TypeScript garante uso correto dos tokens
203
+ 4. **Temas**: Suporte fácil a temas claro/escuro
204
+ 5. **Documentação**: Tokens são auto-documentados com descrições
205
+
206
+ ## Próximos Passos
207
+
208
+ - [ ] Auditar todos os componentes para uso de tokens
209
+ - [ ] Substituir classes hardcoded por tokens
210
+ - [ ] Adicionar tokens para animações e transições
211
+ - [ ] Criar tokens para z-index layers
212
+ - [ ] Documentar tokens no Storybook
@@ -0,0 +1,273 @@
1
+ /**
2
+ * Token Visualization Components
3
+ *
4
+ * React components for visualizing design tokens in Storybook
5
+ */
6
+
7
+ import React from 'react';
8
+ import {
9
+ COLOR_TOKENS_LIGHT,
10
+ SPACING_TOKENS,
11
+ SHADOW_TOKENS,
12
+ RADIUS_TOKENS,
13
+ ANIMATION_TOKENS,
14
+ Z_INDEX_TOKENS,
15
+ OPACITY_TOKENS,
16
+ GRADIENT_TOKENS,
17
+ type ColorRole,
18
+ } from './index';
19
+
20
+ /**
21
+ * Color Palette Visualization
22
+ */
23
+ export function ColorPalette() {
24
+ const colorRoles: ColorRole[] = ['primary', 'secondary', 'success', 'warning', 'error', 'info', 'neutral'];
25
+
26
+ return (
27
+ <div className="space-y-6">
28
+ {colorRoles.map(role => {
29
+ const color = COLOR_TOKENS_LIGHT[role];
30
+ return (
31
+ <div key={role} className="space-y-2">
32
+ <h3 className="text-sm font-semibold text-gray-700 capitalize">{role}</h3>
33
+ <div className="flex gap-2">
34
+ <ColorSwatch
35
+ label="light"
36
+ color={color.light.hex}
37
+ textColor={color.light.contrast || '#000'}
38
+ />
39
+ <ColorSwatch
40
+ label="DEFAULT"
41
+ color={color.DEFAULT.hex}
42
+ textColor={color.DEFAULT.contrast || '#fff'}
43
+ />
44
+ <ColorSwatch
45
+ label="dark"
46
+ color={color.dark.hex}
47
+ textColor={color.dark.contrast || '#fff'}
48
+ />
49
+ <ColorSwatch
50
+ label="contrast"
51
+ color={color.contrast.hex}
52
+ textColor={color.DEFAULT.hex}
53
+ />
54
+ </div>
55
+ <div className="text-xs text-gray-500 space-y-1">
56
+ <div>Light: {color.light.hex} ({color.light.tailwind})</div>
57
+ <div>Default: {color.DEFAULT.hex} ({color.DEFAULT.tailwind})</div>
58
+ <div>Dark: {color.dark.hex} ({color.dark.tailwind})</div>
59
+ </div>
60
+ </div>
61
+ );
62
+ })}
63
+ </div>
64
+ );
65
+ }
66
+
67
+ function ColorSwatch({ label, color, textColor }: { label: string; color: string; textColor: string }) {
68
+ return (
69
+ <div className="flex flex-col items-center gap-1">
70
+ <div
71
+ className="w-20 h-20 rounded-md border border-gray-200 flex items-center justify-center text-xs font-medium"
72
+ style={{ backgroundColor: color, color: textColor }}
73
+ >
74
+ {label}
75
+ </div>
76
+ <span className="text-xs text-gray-600">{label}</span>
77
+ </div>
78
+ );
79
+ }
80
+
81
+ /**
82
+ * Spacing Reference Visualization
83
+ */
84
+ export function SpacingReference() {
85
+ const spacingEntries = Object.entries(SPACING_TOKENS);
86
+
87
+ return (
88
+ <div className="space-y-4">
89
+ {spacingEntries.map(([key, token]) => (
90
+ <div key={key} className="flex items-center gap-4">
91
+ <div className="w-32 text-sm font-medium text-gray-700">{key}</div>
92
+ <div className="flex-1 flex items-center gap-2">
93
+ <div
94
+ className="bg-indigo-500 h-4"
95
+ style={{ width: token.px }}
96
+ />
97
+ <span className="text-xs text-gray-600">{token.px} ({token.rem})</span>
98
+ </div>
99
+ <div className="w-24 text-xs text-gray-500 font-mono">{token.tailwind}</div>
100
+ </div>
101
+ ))}
102
+ </div>
103
+ );
104
+ }
105
+
106
+ /**
107
+ * Typography Reference Visualization
108
+ */
109
+ export function TypographyReference() {
110
+ const typographyEntries = [
111
+ { name: 'h1', size: '4xl', weight: 'bold', lineHeight: 'tight' },
112
+ { name: 'h2', size: '3xl', weight: 'bold', lineHeight: 'tight' },
113
+ { name: 'h3', size: '2xl', weight: 'semibold', lineHeight: 'snug' },
114
+ { name: 'body', size: 'base', weight: 'normal', lineHeight: 'relaxed' },
115
+ { name: 'label', size: 'sm', weight: 'medium', lineHeight: 'normal' },
116
+ { name: 'caption', size: 'xs', weight: 'normal', lineHeight: 'normal' },
117
+ ];
118
+
119
+ return (
120
+ <div className="space-y-4">
121
+ {typographyEntries.map(({ name, size, weight, lineHeight }) => (
122
+ <div key={name} className="border-b border-gray-200 pb-4">
123
+ <div className="flex items-baseline gap-4">
124
+ <div className="w-24 text-sm font-medium text-gray-700">{name}</div>
125
+ <div className={`text-${size} font-${weight} leading-${lineHeight}`}>
126
+ The quick brown fox jumps over the lazy dog
127
+ </div>
128
+ </div>
129
+ <div className="mt-2 text-xs text-gray-500">
130
+ Size: {size} | Weight: {weight} | Line Height: {lineHeight}
131
+ </div>
132
+ </div>
133
+ ))}
134
+ </div>
135
+ );
136
+ }
137
+
138
+ /**
139
+ * Shadow Reference Visualization
140
+ */
141
+ export function ShadowReference() {
142
+ const shadowEntries = Object.entries(SHADOW_TOKENS);
143
+
144
+ return (
145
+ <div className="grid grid-cols-2 gap-4">
146
+ {shadowEntries.map(([key, token]) => (
147
+ <div key={key} className="space-y-2">
148
+ <div className="text-sm font-medium text-gray-700">{key}</div>
149
+ <div
150
+ className="w-full h-20 bg-white rounded-md flex items-center justify-center"
151
+ style={{ boxShadow: token.value }}
152
+ >
153
+ <span className="text-xs text-gray-600">{token.description}</span>
154
+ </div>
155
+ <div className="text-xs text-gray-500 font-mono">{token.tailwind}</div>
156
+ </div>
157
+ ))}
158
+ </div>
159
+ );
160
+ }
161
+
162
+ /**
163
+ * Radius Reference Visualization
164
+ */
165
+ export function RadiusReference() {
166
+ const radiusEntries = Object.entries(RADIUS_TOKENS);
167
+
168
+ return (
169
+ <div className="grid grid-cols-4 gap-4">
170
+ {radiusEntries.map(([key, token]) => (
171
+ <div key={key} className="space-y-2">
172
+ <div className="text-sm font-medium text-gray-700">{key}</div>
173
+ <div
174
+ className="w-20 h-20 bg-indigo-500"
175
+ style={{ borderRadius: token.px }}
176
+ />
177
+ <div className="text-xs text-gray-500">{token.px}</div>
178
+ <div className="text-xs text-gray-500 font-mono">{token.tailwind}</div>
179
+ </div>
180
+ ))}
181
+ </div>
182
+ );
183
+ }
184
+
185
+ /**
186
+ * Animation Reference Visualization
187
+ */
188
+ export function AnimationReference() {
189
+ const animationEntries = Object.entries(ANIMATION_TOKENS);
190
+
191
+ return (
192
+ <div className="space-y-4">
193
+ {animationEntries.map(([key, token]) => (
194
+ <div key={key} className="border-b border-gray-200 pb-4">
195
+ <div className="text-sm font-medium text-gray-700 mb-2">{key}</div>
196
+ <div className="space-y-1 text-xs text-gray-600">
197
+ <div>Duration: {token.duration.value} ({token.duration.ms}ms)</div>
198
+ <div>Easing: {token.easing.description}</div>
199
+ <div className="font-mono">{token.duration.tailwind} {token.easing.tailwind}</div>
200
+ </div>
201
+ </div>
202
+ ))}
203
+ </div>
204
+ );
205
+ }
206
+
207
+ /**
208
+ * Z-Index Reference Visualization
209
+ */
210
+ export function ZIndexReference() {
211
+ const zIndexEntries = Object.entries(Z_INDEX_TOKENS).sort((a, b) => b[1].value - a[1].value);
212
+
213
+ return (
214
+ <div className="space-y-2">
215
+ {zIndexEntries.map(([key, token]) => (
216
+ <div key={key} className="flex items-center gap-4 border-b border-gray-200 pb-2">
217
+ <div className="w-32 text-sm font-medium text-gray-700">{key}</div>
218
+ <div className="flex-1">
219
+ <div className="text-xs text-gray-600">{token.description}</div>
220
+ </div>
221
+ <div className="w-24 text-xs text-gray-500 font-mono">{token.tailwind}</div>
222
+ <div className="w-16 text-xs text-gray-500 text-right">{token.value}</div>
223
+ </div>
224
+ ))}
225
+ </div>
226
+ );
227
+ }
228
+
229
+ /**
230
+ * Opacity Reference Visualization
231
+ */
232
+ export function OpacityReference() {
233
+ const opacityEntries = Object.entries(OPACITY_TOKENS);
234
+
235
+ return (
236
+ <div className="grid grid-cols-5 gap-4">
237
+ {opacityEntries.map(([key, token]) => (
238
+ <div key={key} className="space-y-2">
239
+ <div className="text-sm font-medium text-gray-700">{key}</div>
240
+ <div
241
+ className="w-full h-16 bg-indigo-500 rounded-md"
242
+ style={{ opacity: token.decimal }}
243
+ />
244
+ <div className="text-xs text-gray-500">{token.value}%</div>
245
+ <div className="text-xs text-gray-500 font-mono">{token.tailwind}</div>
246
+ </div>
247
+ ))}
248
+ </div>
249
+ );
250
+ }
251
+
252
+ /**
253
+ * Gradient Reference Visualization
254
+ */
255
+ export function GradientReference() {
256
+ const gradientEntries = Object.entries(GRADIENT_TOKENS);
257
+
258
+ return (
259
+ <div className="grid grid-cols-2 gap-4">
260
+ {gradientEntries.map(([key, token]) => (
261
+ <div key={key} className="space-y-2">
262
+ <div className="text-sm font-medium text-gray-700">{key}</div>
263
+ <div
264
+ className="w-full h-20 rounded-md"
265
+ style={{ background: token.value }}
266
+ />
267
+ <div className="text-xs text-gray-500">{token.description}</div>
268
+ <div className="text-xs text-gray-500 font-mono break-all">{token.tailwind}</div>
269
+ </div>
270
+ ))}
271
+ </div>
272
+ );
273
+ }