@12-apps/ui 1.0.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 (633) hide show
  1. package/components-catalog.md +806 -0
  2. package/components-guidelines.md +347 -0
  3. package/dist/index.cjs +2 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +2 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -0
  9. package/eslint.config.js +77 -0
  10. package/package.json +247 -0
  11. package/src/__tests__/package-wiring.test.ts +37 -0
  12. package/src/__tests__/setup.ts +1 -0
  13. package/src/__tests__/social-login-button.test.tsx +186 -0
  14. package/src/__tests__/user-avatar.test.tsx +195 -0
  15. package/src/button.tsx +22 -0
  16. package/src/components/command/__tests__/command.test.tsx +112 -0
  17. package/src/components/data-display/Alert/Alert.md +209 -0
  18. package/src/components/data-display/Alert/Alert.stories.tsx +561 -0
  19. package/src/components/data-display/Alert/Alert.test.stories.tsx +709 -0
  20. package/src/components/data-display/Alert/Alert.tsx +449 -0
  21. package/src/components/data-display/Alert/Alert.types.ts +79 -0
  22. package/src/components/data-display/Alert/index.ts +2 -0
  23. package/src/components/data-display/AlertDialog/AlertDialog.md +408 -0
  24. package/src/components/data-display/AlertDialog/AlertDialog.stories.tsx +360 -0
  25. package/src/components/data-display/AlertDialog/AlertDialog.test.stories.tsx +753 -0
  26. package/src/components/data-display/AlertDialog/AlertDialog.tsx +273 -0
  27. package/src/components/data-display/AlertDialog/AlertDialog.types.ts +74 -0
  28. package/src/components/data-display/AlertDialog/index.ts +2 -0
  29. package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.stories.tsx +230 -0
  30. package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.test.stories.tsx +270 -0
  31. package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.tsx +116 -0
  32. package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.types.ts +70 -0
  33. package/src/components/data-display/AsyncStateContainer/index.ts +2 -0
  34. package/src/components/data-display/Avatar/Avatar.md +568 -0
  35. package/src/components/data-display/Avatar/Avatar.stories.tsx +718 -0
  36. package/src/components/data-display/Avatar/Avatar.test.stories.tsx +820 -0
  37. package/src/components/data-display/Avatar/Avatar.tsx +507 -0
  38. package/src/components/data-display/Avatar/Avatar.types.ts +88 -0
  39. package/src/components/data-display/Avatar/index.ts +2 -0
  40. package/src/components/data-display/Badge/Badge.md +469 -0
  41. package/src/components/data-display/Badge/Badge.stories.tsx +1136 -0
  42. package/src/components/data-display/Badge/Badge.test.stories.tsx +1193 -0
  43. package/src/components/data-display/Badge/Badge.tsx +606 -0
  44. package/src/components/data-display/Badge/Badge.types.ts +118 -0
  45. package/src/components/data-display/Badge/index.ts +2 -0
  46. package/src/components/data-display/Banner/Banner.stories.tsx +524 -0
  47. package/src/components/data-display/Banner/Banner.test.stories.tsx +503 -0
  48. package/src/components/data-display/Banner/Banner.tsx +350 -0
  49. package/src/components/data-display/Banner/Banner.types.ts +41 -0
  50. package/src/components/data-display/Banner/banner.md +141 -0
  51. package/src/components/data-display/Banner/index.ts +2 -0
  52. package/src/components/data-display/Carousel/Carousel.md +815 -0
  53. package/src/components/data-display/Carousel/Carousel.stories.tsx +607 -0
  54. package/src/components/data-display/Carousel/Carousel.test.stories.tsx +691 -0
  55. package/src/components/data-display/Carousel/Carousel.tsx +765 -0
  56. package/src/components/data-display/Carousel/Carousel.types.ts +79 -0
  57. package/src/components/data-display/Carousel/index.ts +8 -0
  58. package/src/components/data-display/Chart/Chart.md +352 -0
  59. package/src/components/data-display/Chart/Chart.stories.tsx +568 -0
  60. package/src/components/data-display/Chart/Chart.test.stories.tsx +174 -0
  61. package/src/components/data-display/Chart/Chart.tsx +520 -0
  62. package/src/components/data-display/Chart/Chart.types.ts +65 -0
  63. package/src/components/data-display/Chart/index.ts +2 -0
  64. package/src/components/data-display/Chip/Chip.stories.tsx +251 -0
  65. package/src/components/data-display/Chip/Chip.test.stories.tsx +263 -0
  66. package/src/components/data-display/Chip/Chip.tsx +134 -0
  67. package/src/components/data-display/Chip/Chip.types.ts +51 -0
  68. package/src/components/data-display/Chip/chip.md +395 -0
  69. package/src/components/data-display/Chip/index.ts +2 -0
  70. package/src/components/data-display/DataGrid/DataGrid.md +602 -0
  71. package/src/components/data-display/DataGrid/DataGrid.stories.tsx +515 -0
  72. package/src/components/data-display/DataGrid/DataGrid.test.stories.tsx +659 -0
  73. package/src/components/data-display/DataGrid/DataGrid.tsx +743 -0
  74. package/src/components/data-display/DataGrid/DataGrid.types.ts +171 -0
  75. package/src/components/data-display/DataGrid/index.ts +21 -0
  76. package/src/components/data-display/DateTimeDisplay/DateTimeDisplay.tsx +197 -0
  77. package/src/components/data-display/DateTimeDisplay/DateTimeDisplay.types.ts +46 -0
  78. package/src/components/data-display/DateTimeDisplay/index.ts +2 -0
  79. package/src/components/data-display/DescriptionItem/DescriptionItem.md +226 -0
  80. package/src/components/data-display/DescriptionItem/DescriptionItem.stories.tsx +254 -0
  81. package/src/components/data-display/DescriptionItem/DescriptionItem.tsx +100 -0
  82. package/src/components/data-display/DescriptionItem/DescriptionItem.types.ts +1 -0
  83. package/src/components/data-display/DescriptionItem/index.ts +2 -0
  84. package/src/components/data-display/EmptyState/EmptyState.md +265 -0
  85. package/src/components/data-display/EmptyState/EmptyState.stories.tsx +282 -0
  86. package/src/components/data-display/EmptyState/EmptyState.test.stories.tsx +441 -0
  87. package/src/components/data-display/EmptyState/EmptyState.tsx +180 -0
  88. package/src/components/data-display/EmptyState/EmptyState.types.ts +31 -0
  89. package/src/components/data-display/EmptyState/index.ts +2 -0
  90. package/src/components/data-display/ErrorState/ErrorState.stories.tsx +110 -0
  91. package/src/components/data-display/ErrorState/ErrorState.test.stories.tsx +133 -0
  92. package/src/components/data-display/ErrorState/ErrorState.tsx +118 -0
  93. package/src/components/data-display/ErrorState/ErrorState.types.ts +45 -0
  94. package/src/components/data-display/ErrorState/index.ts +2 -0
  95. package/src/components/data-display/HoverCard/HoverCard.md +389 -0
  96. package/src/components/data-display/HoverCard/HoverCard.stories.tsx +648 -0
  97. package/src/components/data-display/HoverCard/HoverCard.test.stories.tsx +929 -0
  98. package/src/components/data-display/HoverCard/HoverCard.tsx +657 -0
  99. package/src/components/data-display/HoverCard/HoverCard.types.ts +116 -0
  100. package/src/components/data-display/HoverCard/index.ts +2 -0
  101. package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.md +532 -0
  102. package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.stories.tsx +411 -0
  103. package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.tsx +245 -0
  104. package/src/components/data-display/InteractiveTooltip/InteractiveTooltip.types.ts +64 -0
  105. package/src/components/data-display/InteractiveTooltip/index.ts +2 -0
  106. package/src/components/data-display/LazyImage/LazyImage.md +356 -0
  107. package/src/components/data-display/LazyImage/LazyImage.stories.tsx +387 -0
  108. package/src/components/data-display/LazyImage/LazyImage.tsx +323 -0
  109. package/src/components/data-display/LazyImage/LazyImage.types.ts +205 -0
  110. package/src/components/data-display/LazyImage/index.ts +2 -0
  111. package/src/components/data-display/Lightbox/Lightbox.stories.tsx +315 -0
  112. package/src/components/data-display/Lightbox/Lightbox.test.stories.tsx +605 -0
  113. package/src/components/data-display/Lightbox/Lightbox.tsx +666 -0
  114. package/src/components/data-display/Lightbox/Lightbox.types.ts +49 -0
  115. package/src/components/data-display/Lightbox/index.ts +2 -0
  116. package/src/components/data-display/Lightbox/lightbox.md +298 -0
  117. package/src/components/data-display/LoadingState/LoadingState.stories.tsx +124 -0
  118. package/src/components/data-display/LoadingState/LoadingState.test.stories.tsx +99 -0
  119. package/src/components/data-display/LoadingState/LoadingState.tsx +103 -0
  120. package/src/components/data-display/LoadingState/LoadingState.types.ts +37 -0
  121. package/src/components/data-display/LoadingState/index.ts +2 -0
  122. package/src/components/data-display/MapPreview/MapPreview.md +154 -0
  123. package/src/components/data-display/MapPreview/MapPreview.stories.tsx +458 -0
  124. package/src/components/data-display/MapPreview/MapPreview.test.stories.tsx +390 -0
  125. package/src/components/data-display/MapPreview/MapPreview.tsx +922 -0
  126. package/src/components/data-display/MapPreview/MapPreview.types.ts +56 -0
  127. package/src/components/data-display/MapPreview/index.ts +2 -0
  128. package/src/components/data-display/Popover/Popover.md +245 -0
  129. package/src/components/data-display/Popover/Popover.stories.tsx +295 -0
  130. package/src/components/data-display/Popover/Popover.test.stories.tsx +1168 -0
  131. package/src/components/data-display/Popover/Popover.tsx +132 -0
  132. package/src/components/data-display/Popover/Popover.types.ts +33 -0
  133. package/src/components/data-display/Popover/index.ts +2 -0
  134. package/src/components/data-display/Progress/Progress.md +450 -0
  135. package/src/components/data-display/Progress/Progress.stories.tsx +481 -0
  136. package/src/components/data-display/Progress/Progress.test.stories.tsx +2070 -0
  137. package/src/components/data-display/Progress/Progress.tsx +332 -0
  138. package/src/components/data-display/Progress/Progress.types.ts +61 -0
  139. package/src/components/data-display/Progress/index.ts +2 -0
  140. package/src/components/data-display/SectionOnboarding/SectionOnboarding.md +108 -0
  141. package/src/components/data-display/SectionOnboarding/SectionOnboarding.stories.tsx +160 -0
  142. package/src/components/data-display/SectionOnboarding/SectionOnboarding.test.stories.tsx +190 -0
  143. package/src/components/data-display/SectionOnboarding/SectionOnboarding.tsx +224 -0
  144. package/src/components/data-display/SectionOnboarding/SectionOnboarding.types.ts +101 -0
  145. package/src/components/data-display/SectionOnboarding/index.ts +7 -0
  146. package/src/components/data-display/Sheet/Sheet.md +475 -0
  147. package/src/components/data-display/Sheet/Sheet.stories.tsx +883 -0
  148. package/src/components/data-display/Sheet/Sheet.test.stories.tsx +1101 -0
  149. package/src/components/data-display/Sheet/Sheet.tsx +978 -0
  150. package/src/components/data-display/Sheet/Sheet.types.ts +93 -0
  151. package/src/components/data-display/Sheet/index.ts +8 -0
  152. package/src/components/data-display/Stepper/Stepper.md +542 -0
  153. package/src/components/data-display/Stepper/Stepper.stories.tsx +540 -0
  154. package/src/components/data-display/Stepper/Stepper.test.stories.tsx +607 -0
  155. package/src/components/data-display/Stepper/Stepper.tsx +328 -0
  156. package/src/components/data-display/Stepper/Stepper.types.ts +97 -0
  157. package/src/components/data-display/Stepper/index.ts +2 -0
  158. package/src/components/data-display/Table/Table.md +243 -0
  159. package/src/components/data-display/Table/Table.stories.tsx +801 -0
  160. package/src/components/data-display/Table/Table.test.stories.tsx +369 -0
  161. package/src/components/data-display/Table/Table.tsx +831 -0
  162. package/src/components/data-display/Table/Table.types.ts +335 -0
  163. package/src/components/data-display/Table/index.ts +2 -0
  164. package/src/components/data-display/Timeline/Timeline.md +201 -0
  165. package/src/components/data-display/Timeline/Timeline.stories.tsx +444 -0
  166. package/src/components/data-display/Timeline/Timeline.test.stories.tsx +944 -0
  167. package/src/components/data-display/Timeline/Timeline.tsx +348 -0
  168. package/src/components/data-display/Timeline/Timeline.types.ts +26 -0
  169. package/src/components/data-display/Timeline/index.ts +2 -0
  170. package/src/components/data-display/TimingDiagram/TimingDiagram.md +162 -0
  171. package/src/components/data-display/TimingDiagram/TimingDiagram.stories.tsx +475 -0
  172. package/src/components/data-display/TimingDiagram/TimingDiagram.test.stories.tsx +734 -0
  173. package/src/components/data-display/TimingDiagram/TimingDiagram.tsx +399 -0
  174. package/src/components/data-display/TimingDiagram/TimingDiagram.types.ts +19 -0
  175. package/src/components/data-display/TimingDiagram/index.ts +2 -0
  176. package/src/components/data-display/Tooltip/Tooltip.md +397 -0
  177. package/src/components/data-display/Tooltip/Tooltip.stories.tsx +465 -0
  178. package/src/components/data-display/Tooltip/Tooltip.test.stories.tsx +1168 -0
  179. package/src/components/data-display/Tooltip/Tooltip.tsx +161 -0
  180. package/src/components/data-display/Tooltip/Tooltip.types.ts +33 -0
  181. package/src/components/data-display/Tooltip/index.ts +2 -0
  182. package/src/components/data-display/index.ts +29 -0
  183. package/src/components/feedback/Dialog/Dialog.md +527 -0
  184. package/src/components/feedback/Dialog/Dialog.stories.tsx +833 -0
  185. package/src/components/feedback/Dialog/Dialog.styles.ts +171 -0
  186. package/src/components/feedback/Dialog/Dialog.test.stories.tsx +955 -0
  187. package/src/components/feedback/Dialog/Dialog.tsx +256 -0
  188. package/src/components/feedback/Dialog/Dialog.types.ts +46 -0
  189. package/src/components/feedback/Dialog/index.ts +9 -0
  190. package/src/components/feedback/Modal/Modal.md +629 -0
  191. package/src/components/feedback/Modal/Modal.stories.tsx +765 -0
  192. package/src/components/feedback/Modal/Modal.test.stories.tsx +251 -0
  193. package/src/components/feedback/Modal/Modal.tsx +279 -0
  194. package/src/components/feedback/Modal/Modal.types.ts +26 -0
  195. package/src/components/feedback/Modal/index.ts +7 -0
  196. package/src/components/feedback/Sonner/Sonner.stories.tsx +698 -0
  197. package/src/components/feedback/Sonner/Sonner.test.stories.tsx +896 -0
  198. package/src/components/feedback/Sonner/Sonner.tsx +493 -0
  199. package/src/components/feedback/Sonner/Sonner.types.ts +65 -0
  200. package/src/components/feedback/Sonner/index.ts +8 -0
  201. package/src/components/feedback/StackedModal/StackedModal.md +273 -0
  202. package/src/components/feedback/StackedModal/StackedModal.stories.tsx +1785 -0
  203. package/src/components/feedback/StackedModal/StackedModal.test.stories.tsx +975 -0
  204. package/src/components/feedback/StackedModal/StackedModal.tsx +664 -0
  205. package/src/components/feedback/StackedModal/StackedModal.types.ts +70 -0
  206. package/src/components/feedback/StackedModal/index.ts +11 -0
  207. package/src/components/feedback/Toast/Toast.md +547 -0
  208. package/src/components/feedback/Toast/Toast.stories.tsx +548 -0
  209. package/src/components/feedback/Toast/Toast.test.stories.tsx +834 -0
  210. package/src/components/feedback/Toast/Toast.tsx +279 -0
  211. package/src/components/feedback/Toast/Toast.types.ts +59 -0
  212. package/src/components/feedback/Toast/index.ts +8 -0
  213. package/src/components/feedback/TutorialOverlay/TutorialOverlay.md +610 -0
  214. package/src/components/feedback/TutorialOverlay/TutorialOverlay.stories.tsx +691 -0
  215. package/src/components/feedback/TutorialOverlay/TutorialOverlay.test.stories.tsx +634 -0
  216. package/src/components/feedback/TutorialOverlay/TutorialOverlay.tsx +554 -0
  217. package/src/components/feedback/TutorialOverlay/TutorialOverlay.types.ts +30 -0
  218. package/src/components/feedback/TutorialOverlay/index.ts +2 -0
  219. package/src/components/feedback/index.ts +6 -0
  220. package/src/components/form/AddressAutocomplete/AddressAutocomplete.md +633 -0
  221. package/src/components/form/AddressAutocomplete/AddressAutocomplete.stories.tsx +663 -0
  222. package/src/components/form/AddressAutocomplete/AddressAutocomplete.test.stories.tsx +723 -0
  223. package/src/components/form/AddressAutocomplete/AddressAutocomplete.tsx +836 -0
  224. package/src/components/form/AddressAutocomplete/AddressAutocomplete.types.ts +37 -0
  225. package/src/components/form/AddressAutocomplete/index.ts +2 -0
  226. package/src/components/form/Autocomplete/Autocomplete.helpers.ts +115 -0
  227. package/src/components/form/Autocomplete/Autocomplete.keys.ts +134 -0
  228. package/src/components/form/Autocomplete/Autocomplete.parts.tsx +337 -0
  229. package/src/components/form/Autocomplete/Autocomplete.stories.tsx +715 -0
  230. package/src/components/form/Autocomplete/Autocomplete.test.stories.tsx +825 -0
  231. package/src/components/form/Autocomplete/Autocomplete.tsx +166 -0
  232. package/src/components/form/Autocomplete/Autocomplete.types.ts +116 -0
  233. package/src/components/form/Autocomplete/autocomplete.md +789 -0
  234. package/src/components/form/Autocomplete/index.ts +8 -0
  235. package/src/components/form/Autocomplete/useAutocomplete.ts +311 -0
  236. package/src/components/form/Button/Button.md +411 -0
  237. package/src/components/form/Button/Button.stories.tsx +362 -0
  238. package/src/components/form/Button/Button.test.stories.tsx +603 -0
  239. package/src/components/form/Button/Button.tsx +326 -0
  240. package/src/components/form/Button/Button.types.ts +74 -0
  241. package/src/components/form/Button/index.ts +2 -0
  242. package/src/components/form/Calendar/Calendar.md +807 -0
  243. package/src/components/form/Calendar/Calendar.stories.tsx +349 -0
  244. package/src/components/form/Calendar/Calendar.test.stories.tsx +465 -0
  245. package/src/components/form/Calendar/Calendar.tsx +571 -0
  246. package/src/components/form/Calendar/Calendar.types.ts +81 -0
  247. package/src/components/form/Calendar/index.ts +11 -0
  248. package/src/components/form/Checkbox/Checkbox.md +200 -0
  249. package/src/components/form/Checkbox/Checkbox.stories.tsx +265 -0
  250. package/src/components/form/Checkbox/Checkbox.test.stories.tsx +181 -0
  251. package/src/components/form/Checkbox/Checkbox.tsx +170 -0
  252. package/src/components/form/Checkbox/Checkbox.types.ts +20 -0
  253. package/src/components/form/Checkbox/index.ts +2 -0
  254. package/src/components/form/CodeEditor/CodeEditor.md +350 -0
  255. package/src/components/form/CodeEditor/CodeEditor.stories.tsx +871 -0
  256. package/src/components/form/CodeEditor/CodeEditor.test.stories.tsx +575 -0
  257. package/src/components/form/CodeEditor/CodeEditor.tsx +415 -0
  258. package/src/components/form/CodeEditor/CodeEditor.types.ts +38 -0
  259. package/src/components/form/CodeEditor/index.ts +2 -0
  260. package/src/components/form/Command/Command.md +468 -0
  261. package/src/components/form/Command/Command.stories.tsx +580 -0
  262. package/src/components/form/Command/Command.test.stories.tsx +215 -0
  263. package/src/components/form/Command/Command.tsx +545 -0
  264. package/src/components/form/Command/Command.types.ts +116 -0
  265. package/src/components/form/Command/index.ts +12 -0
  266. package/src/components/form/CreatableSelect/CreatableSelect.md +114 -0
  267. package/src/components/form/CreatableSelect/CreatableSelect.stories.tsx +112 -0
  268. package/src/components/form/CreatableSelect/CreatableSelect.test.stories.tsx +134 -0
  269. package/src/components/form/CreatableSelect/CreatableSelect.tsx +149 -0
  270. package/src/components/form/CreatableSelect/CreatableSelect.types.ts +37 -0
  271. package/src/components/form/CreatableSelect/index.ts +2 -0
  272. package/src/components/form/Form/Form.md +325 -0
  273. package/src/components/form/Form/Form.stories.tsx +687 -0
  274. package/src/components/form/Form/Form.test.stories.tsx +601 -0
  275. package/src/components/form/Form/Form.tsx +136 -0
  276. package/src/components/form/Form/Form.types.ts +42 -0
  277. package/src/components/form/Form/index.ts +8 -0
  278. package/src/components/form/Input/Input.md +252 -0
  279. package/src/components/form/Input/Input.stories.tsx +256 -0
  280. package/src/components/form/Input/Input.test.stories.tsx +1184 -0
  281. package/src/components/form/Input/Input.tsx +263 -0
  282. package/src/components/form/Input/Input.types.ts +24 -0
  283. package/src/components/form/Input/index.ts +2 -0
  284. package/src/components/form/InputOTP/InputOTP.md +419 -0
  285. package/src/components/form/InputOTP/InputOTP.stories.tsx +774 -0
  286. package/src/components/form/InputOTP/InputOTP.test.stories.tsx +596 -0
  287. package/src/components/form/InputOTP/InputOTP.tsx +231 -0
  288. package/src/components/form/InputOTP/InputOTP.types.ts +68 -0
  289. package/src/components/form/InputOTP/index.ts +2 -0
  290. package/src/components/form/Label/Label.md +426 -0
  291. package/src/components/form/Label/Label.stories.tsx +473 -0
  292. package/src/components/form/Label/Label.test.stories.tsx +909 -0
  293. package/src/components/form/Label/Label.tsx +367 -0
  294. package/src/components/form/Label/Label.types.ts +35 -0
  295. package/src/components/form/Label/index.ts +2 -0
  296. package/src/components/form/Menubar/Menubar.md +275 -0
  297. package/src/components/form/Menubar/Menubar.stories.tsx +472 -0
  298. package/src/components/form/Menubar/Menubar.test.stories.tsx +588 -0
  299. package/src/components/form/Menubar/Menubar.tsx +467 -0
  300. package/src/components/form/Menubar/Menubar.types.ts +71 -0
  301. package/src/components/form/Menubar/index.ts +8 -0
  302. package/src/components/form/PasswordStrength/PasswordStrength.md +139 -0
  303. package/src/components/form/PasswordStrength/PasswordStrength.stories.tsx +562 -0
  304. package/src/components/form/PasswordStrength/PasswordStrength.test.stories.tsx +327 -0
  305. package/src/components/form/PasswordStrength/PasswordStrength.tsx +419 -0
  306. package/src/components/form/PasswordStrength/PasswordStrength.types.ts +18 -0
  307. package/src/components/form/PasswordStrength/index.ts +2 -0
  308. package/src/components/form/PhoneInput/PhoneInput.md +578 -0
  309. package/src/components/form/PhoneInput/PhoneInput.stories.tsx +495 -0
  310. package/src/components/form/PhoneInput/PhoneInput.test.stories.tsx +666 -0
  311. package/src/components/form/PhoneInput/PhoneInput.tsx +376 -0
  312. package/src/components/form/PhoneInput/PhoneInput.types.ts +25 -0
  313. package/src/components/form/PhoneInput/index.ts +2 -0
  314. package/src/components/form/RadioGroup/RadioGroup.md +477 -0
  315. package/src/components/form/RadioGroup/RadioGroup.stories.tsx +518 -0
  316. package/src/components/form/RadioGroup/RadioGroup.test.stories.tsx +685 -0
  317. package/src/components/form/RadioGroup/RadioGroup.tsx +664 -0
  318. package/src/components/form/RadioGroup/RadioGroup.types.ts +82 -0
  319. package/src/components/form/RadioGroup/index.ts +2 -0
  320. package/src/components/form/RichTextEditor/RichTextEditor.md +710 -0
  321. package/src/components/form/RichTextEditor/RichTextEditor.stories.tsx +261 -0
  322. package/src/components/form/RichTextEditor/RichTextEditor.test.stories.tsx +498 -0
  323. package/src/components/form/RichTextEditor/RichTextEditor.tsx +468 -0
  324. package/src/components/form/RichTextEditor/RichTextEditor.types.ts +72 -0
  325. package/src/components/form/RichTextEditor/index.ts +2 -0
  326. package/src/components/form/SearchPalette/SearchPalette.md +69 -0
  327. package/src/components/form/SearchPalette/SearchPalette.parts.tsx +358 -0
  328. package/src/components/form/SearchPalette/SearchPalette.stories.tsx +135 -0
  329. package/src/components/form/SearchPalette/SearchPalette.tsx +141 -0
  330. package/src/components/form/SearchPalette/SearchPalette.types.ts +82 -0
  331. package/src/components/form/SearchPalette/index.ts +7 -0
  332. package/src/components/form/Select/Select.md +254 -0
  333. package/src/components/form/Select/Select.stories.tsx +364 -0
  334. package/src/components/form/Select/Select.test.stories.tsx +977 -0
  335. package/src/components/form/Select/Select.tsx +239 -0
  336. package/src/components/form/Select/Select.types.ts +57 -0
  337. package/src/components/form/Select/index.ts +2 -0
  338. package/src/components/form/Slider/Slider.md +326 -0
  339. package/src/components/form/Slider/Slider.stories.tsx +418 -0
  340. package/src/components/form/Slider/Slider.test.stories.tsx +1044 -0
  341. package/src/components/form/Slider/Slider.tsx +374 -0
  342. package/src/components/form/Slider/Slider.types.ts +113 -0
  343. package/src/components/form/Slider/index.ts +2 -0
  344. package/src/components/form/Switch/Switch.md +565 -0
  345. package/src/components/form/Switch/Switch.stories.tsx +697 -0
  346. package/src/components/form/Switch/Switch.test.stories.tsx +597 -0
  347. package/src/components/form/Switch/Switch.tsx +578 -0
  348. package/src/components/form/Switch/Switch.types.ts +130 -0
  349. package/src/components/form/Switch/index.ts +2 -0
  350. package/src/components/form/Textarea/Textarea.stories.tsx +473 -0
  351. package/src/components/form/Textarea/Textarea.test.stories.tsx +708 -0
  352. package/src/components/form/Textarea/Textarea.tsx +678 -0
  353. package/src/components/form/Textarea/Textarea.types.ts +84 -0
  354. package/src/components/form/Textarea/index.ts +2 -0
  355. package/src/components/form/Toggle/Toggle.md +234 -0
  356. package/src/components/form/Toggle/Toggle.stories.tsx +638 -0
  357. package/src/components/form/Toggle/Toggle.test.stories.tsx +1167 -0
  358. package/src/components/form/Toggle/Toggle.tsx +265 -0
  359. package/src/components/form/Toggle/Toggle.types.ts +79 -0
  360. package/src/components/form/Toggle/index.ts +2 -0
  361. package/src/components/form/ToggleGroup/ToggleGroup.md +329 -0
  362. package/src/components/form/ToggleGroup/ToggleGroup.stories.tsx +617 -0
  363. package/src/components/form/ToggleGroup/ToggleGroup.test.stories.tsx +918 -0
  364. package/src/components/form/ToggleGroup/ToggleGroup.tsx +129 -0
  365. package/src/components/form/ToggleGroup/ToggleGroup.types.ts +53 -0
  366. package/src/components/form/ToggleGroup/index.ts +2 -0
  367. package/src/components/form/UploadButton/UploadButton.md +44 -0
  368. package/src/components/form/UploadButton/UploadButton.stories.tsx +366 -0
  369. package/src/components/form/UploadButton/UploadButton.test.stories.tsx +454 -0
  370. package/src/components/form/UploadButton/UploadButton.tsx +312 -0
  371. package/src/components/form/UploadButton/UploadButton.types.ts +58 -0
  372. package/src/components/form/UploadButton/index.ts +2 -0
  373. package/src/components/form/index.ts +25 -0
  374. package/src/components/form/total-form/Fields/SelectField.tsx +57 -0
  375. package/src/components/form/total-form/Fields/TextField.tsx +58 -0
  376. package/src/components/form/total-form/Fields/index.ts +4 -0
  377. package/src/components/form/total-form/FormContainer.tsx +104 -0
  378. package/src/components/form/total-form/FormContext.tsx +38 -0
  379. package/src/components/form/total-form/FormErrorSnackbar.tsx +35 -0
  380. package/src/components/form/total-form/SubmitButton.tsx +27 -0
  381. package/src/components/form/total-form/index.ts +12 -0
  382. package/src/components/form/total-form/total-form.test.tsx +97 -0
  383. package/src/components/index.ts +7 -0
  384. package/src/components/layout/Accordion/Accordion.md +725 -0
  385. package/src/components/layout/Accordion/Accordion.stories.tsx +690 -0
  386. package/src/components/layout/Accordion/Accordion.test.stories.tsx +1362 -0
  387. package/src/components/layout/Accordion/Accordion.tsx +242 -0
  388. package/src/components/layout/Accordion/Accordion.types.ts +32 -0
  389. package/src/components/layout/Accordion/index.ts +8 -0
  390. package/src/components/layout/Card/Card.md +533 -0
  391. package/src/components/layout/Card/Card.stories.tsx +593 -0
  392. package/src/components/layout/Card/Card.test.stories.tsx +1134 -0
  393. package/src/components/layout/Card/Card.tsx +404 -0
  394. package/src/components/layout/Card/Card.types.ts +57 -0
  395. package/src/components/layout/Card/index.ts +8 -0
  396. package/src/components/layout/Collapsible/Collapsible.md +135 -0
  397. package/src/components/layout/Collapsible/Collapsible.stories.tsx +180 -0
  398. package/src/components/layout/Collapsible/Collapsible.test.stories.tsx +304 -0
  399. package/src/components/layout/Collapsible/Collapsible.tsx +198 -0
  400. package/src/components/layout/Collapsible/Collapsible.types.ts +35 -0
  401. package/src/components/layout/Collapsible/index.ts +6 -0
  402. package/src/components/layout/Container/Container.md +420 -0
  403. package/src/components/layout/Container/Container.stories.tsx +557 -0
  404. package/src/components/layout/Container/Container.test.stories.tsx +750 -0
  405. package/src/components/layout/Container/Container.tsx +72 -0
  406. package/src/components/layout/Container/Container.types.ts +11 -0
  407. package/src/components/layout/Container/index.ts +2 -0
  408. package/src/components/layout/ContentToolbar/ColumnsMenu.tsx +99 -0
  409. package/src/components/layout/ContentToolbar/ContentToolbar.md +75 -0
  410. package/src/components/layout/ContentToolbar/ContentToolbar.stories.tsx +129 -0
  411. package/src/components/layout/ContentToolbar/ContentToolbar.test.stories.tsx +251 -0
  412. package/src/components/layout/ContentToolbar/ContentToolbar.tsx +108 -0
  413. package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +229 -0
  414. package/src/components/layout/ContentToolbar/FilterTrigger.tsx +71 -0
  415. package/src/components/layout/ContentToolbar/MultiSelectDropdown.tsx +297 -0
  416. package/src/components/layout/ContentToolbar/SavedViewsMenu.tsx +334 -0
  417. package/src/components/layout/ContentToolbar/SortByDropdown.tsx +213 -0
  418. package/src/components/layout/ContentToolbar/ViewSelector.tsx +98 -0
  419. package/src/components/layout/ContentToolbar/__tests__/ColumnsMenu.test.tsx +39 -0
  420. package/src/components/layout/ContentToolbar/__tests__/MultiSelectDropdown.test.tsx +110 -0
  421. package/src/components/layout/ContentToolbar/__tests__/SavedViewsMenu.test.tsx +99 -0
  422. package/src/components/layout/ContentToolbar/index.ts +24 -0
  423. package/src/components/layout/ContentToolbar/tests.md +42 -0
  424. package/src/components/layout/ContentToolbar/track.md +41 -0
  425. package/src/components/layout/Dashboard/Dashboard.md +71 -0
  426. package/src/components/layout/Dashboard/Dashboard.stories.tsx +104 -0
  427. package/src/components/layout/Dashboard/Dashboard.test.stories.tsx +164 -0
  428. package/src/components/layout/Dashboard/Dashboard.tsx +297 -0
  429. package/src/components/layout/Dashboard/Dashboard.types.ts +157 -0
  430. package/src/components/layout/Dashboard/DashboardContext.tsx +47 -0
  431. package/src/components/layout/Dashboard/DashboardParts.tsx +216 -0
  432. package/src/components/layout/Dashboard/index.ts +18 -0
  433. package/src/components/layout/Dashboard/tests.md +46 -0
  434. package/src/components/layout/Dashboard/track.md +50 -0
  435. package/src/components/layout/Drawer/Drawer.md +479 -0
  436. package/src/components/layout/Drawer/Drawer.stories.tsx +660 -0
  437. package/src/components/layout/Drawer/Drawer.test.stories.tsx +1339 -0
  438. package/src/components/layout/Drawer/Drawer.tsx +150 -0
  439. package/src/components/layout/Drawer/Drawer.types.ts +34 -0
  440. package/src/components/layout/Drawer/index.ts +2 -0
  441. package/src/components/layout/Resizable/Resizable.md +308 -0
  442. package/src/components/layout/Resizable/Resizable.stories.tsx +1039 -0
  443. package/src/components/layout/Resizable/Resizable.test.stories.tsx +750 -0
  444. package/src/components/layout/Resizable/Resizable.tsx +190 -0
  445. package/src/components/layout/Resizable/Resizable.types.ts +34 -0
  446. package/src/components/layout/Resizable/index.ts +2 -0
  447. package/src/components/layout/ScrollArea/ScrollArea.md +122 -0
  448. package/src/components/layout/ScrollArea/ScrollArea.stories.tsx +651 -0
  449. package/src/components/layout/ScrollArea/ScrollArea.test.stories.tsx +619 -0
  450. package/src/components/layout/ScrollArea/ScrollArea.tsx +449 -0
  451. package/src/components/layout/ScrollArea/ScrollArea.types.ts +80 -0
  452. package/src/components/layout/ScrollArea/index.ts +7 -0
  453. package/src/components/layout/Separator/Separator.stories.tsx +563 -0
  454. package/src/components/layout/Separator/Separator.test.stories.tsx +527 -0
  455. package/src/components/layout/Separator/Separator.tsx +187 -0
  456. package/src/components/layout/Separator/Separator.types.ts +17 -0
  457. package/src/components/layout/Separator/index.ts +2 -0
  458. package/src/components/layout/SettingsLayout/SettingsLayout.md +139 -0
  459. package/src/components/layout/SettingsLayout/SettingsLayout.parts.tsx +357 -0
  460. package/src/components/layout/SettingsLayout/SettingsLayout.stories.tsx +194 -0
  461. package/src/components/layout/SettingsLayout/SettingsLayout.test.stories.tsx +175 -0
  462. package/src/components/layout/SettingsLayout/SettingsLayout.tsx +69 -0
  463. package/src/components/layout/SettingsLayout/SettingsLayout.types.ts +61 -0
  464. package/src/components/layout/SettingsLayout/index.ts +6 -0
  465. package/src/components/layout/Sidebar/Sidebar.md +367 -0
  466. package/src/components/layout/Sidebar/Sidebar.stories.tsx +611 -0
  467. package/src/components/layout/Sidebar/Sidebar.test.stories.tsx +1326 -0
  468. package/src/components/layout/Sidebar/Sidebar.tsx +131 -0
  469. package/src/components/layout/Sidebar/Sidebar.types.ts +30 -0
  470. package/src/components/layout/Sidebar/index.ts +7 -0
  471. package/src/components/layout/Skeleton/Skeleton.md +240 -0
  472. package/src/components/layout/Skeleton/Skeleton.stories.tsx +689 -0
  473. package/src/components/layout/Skeleton/Skeleton.test.stories.tsx +521 -0
  474. package/src/components/layout/Skeleton/Skeleton.tsx +166 -0
  475. package/src/components/layout/Skeleton/Skeleton.types.ts +19 -0
  476. package/src/components/layout/Skeleton/index.ts +2 -0
  477. package/src/components/layout/Spacer/Spacer.md +84 -0
  478. package/src/components/layout/Spacer/Spacer.stories.tsx +502 -0
  479. package/src/components/layout/Spacer/Spacer.test.stories.tsx +472 -0
  480. package/src/components/layout/Spacer/Spacer.tsx +68 -0
  481. package/src/components/layout/Spacer/Spacer.types.ts +12 -0
  482. package/src/components/layout/Spacer/index.ts +2 -0
  483. package/src/components/layout/TableFilter/TableFilter.md +55 -0
  484. package/src/components/layout/TableFilter/TableFilter.stories.tsx +82 -0
  485. package/src/components/layout/TableFilter/TableFilter.test.stories.tsx +87 -0
  486. package/src/components/layout/TableFilter/TableFilter.tsx +383 -0
  487. package/src/components/layout/TableFilter/TableFilter.types.ts +87 -0
  488. package/src/components/layout/TableFilter/TableFilterContext.tsx +29 -0
  489. package/src/components/layout/TableFilter/index.ts +15 -0
  490. package/src/components/layout/TableFilter/tests.md +37 -0
  491. package/src/components/layout/TableFilter/track.md +36 -0
  492. package/src/components/layout/index.ts +14 -0
  493. package/src/components/navigation/Breadcrumbs/Breadcrumbs.md +558 -0
  494. package/src/components/navigation/Breadcrumbs/Breadcrumbs.stories.tsx +640 -0
  495. package/src/components/navigation/Breadcrumbs/Breadcrumbs.test.stories.tsx +1007 -0
  496. package/src/components/navigation/Breadcrumbs/Breadcrumbs.tsx +516 -0
  497. package/src/components/navigation/Breadcrumbs/Breadcrumbs.types.ts +132 -0
  498. package/src/components/navigation/Breadcrumbs/index.ts +2 -0
  499. package/src/components/navigation/CommandPalette/CommandPalette.md +201 -0
  500. package/src/components/navigation/CommandPalette/CommandPalette.stories.tsx +384 -0
  501. package/src/components/navigation/CommandPalette/CommandPalette.test.stories.tsx +437 -0
  502. package/src/components/navigation/CommandPalette/CommandPalette.tsx +434 -0
  503. package/src/components/navigation/CommandPalette/CommandPalette.types.ts +25 -0
  504. package/src/components/navigation/CommandPalette/index.ts +2 -0
  505. package/src/components/navigation/ContextMenu/ContextMenu.md +535 -0
  506. package/src/components/navigation/ContextMenu/ContextMenu.stories.tsx +611 -0
  507. package/src/components/navigation/ContextMenu/ContextMenu.test.stories.tsx +850 -0
  508. package/src/components/navigation/ContextMenu/ContextMenu.tsx +254 -0
  509. package/src/components/navigation/ContextMenu/ContextMenu.types.ts +96 -0
  510. package/src/components/navigation/ContextMenu/index.ts +2 -0
  511. package/src/components/navigation/DropdownMenu/DropdownMenu.md +514 -0
  512. package/src/components/navigation/DropdownMenu/DropdownMenu.stories.tsx +580 -0
  513. package/src/components/navigation/DropdownMenu/DropdownMenu.test.stories.tsx +660 -0
  514. package/src/components/navigation/DropdownMenu/DropdownMenu.tsx +305 -0
  515. package/src/components/navigation/DropdownMenu/DropdownMenu.types.ts +116 -0
  516. package/src/components/navigation/DropdownMenu/index.ts +2 -0
  517. package/src/components/navigation/NavigationMenu/NavigationMenu.md +580 -0
  518. package/src/components/navigation/NavigationMenu/NavigationMenu.tsx +874 -0
  519. package/src/components/navigation/NavigationMenu/NavigationMenu.types.ts +135 -0
  520. package/src/components/navigation/NavigationMenu/index.ts +2 -0
  521. package/src/components/navigation/NavigationMenu/stories/NavigationMenu.stories.tsx +518 -0
  522. package/src/components/navigation/NavigationMenu/stories/NavigationMenu.test.stories.tsx +931 -0
  523. package/src/components/navigation/NavigationMenu/stories/NavigationMenuHorizontal.stories.tsx +503 -0
  524. package/src/components/navigation/NavigationMenu/stories/NavigationMenuVertical.stories.tsx +455 -0
  525. package/src/components/navigation/Pagination/Pagination.md +699 -0
  526. package/src/components/navigation/Pagination/Pagination.stories.tsx +604 -0
  527. package/src/components/navigation/Pagination/Pagination.test.stories.tsx +520 -0
  528. package/src/components/navigation/Pagination/Pagination.tsx +356 -0
  529. package/src/components/navigation/Pagination/Pagination.types.ts +129 -0
  530. package/src/components/navigation/Pagination/index.ts +2 -0
  531. package/src/components/navigation/Tabs/Tabs.md +774 -0
  532. package/src/components/navigation/Tabs/Tabs.stories.tsx +1006 -0
  533. package/src/components/navigation/Tabs/Tabs.test.stories.tsx +1225 -0
  534. package/src/components/navigation/Tabs/Tabs.tsx +433 -0
  535. package/src/components/navigation/Tabs/Tabs.types.ts +239 -0
  536. package/src/components/navigation/Tabs/index.ts +2 -0
  537. package/src/components/navigation/index.ts +7 -0
  538. package/src/components/typography/Blockquote/Blockquote.md +130 -0
  539. package/src/components/typography/Blockquote/Blockquote.stories.tsx +359 -0
  540. package/src/components/typography/Blockquote/Blockquote.test.stories.tsx +432 -0
  541. package/src/components/typography/Blockquote/Blockquote.tsx +166 -0
  542. package/src/components/typography/Blockquote/Blockquote.types.ts +11 -0
  543. package/src/components/typography/Blockquote/index.ts +2 -0
  544. package/src/components/typography/Code/Code.md +182 -0
  545. package/src/components/typography/Code/Code.stories.tsx +686 -0
  546. package/src/components/typography/Code/Code.test.stories.tsx +703 -0
  547. package/src/components/typography/Code/Code.tsx +228 -0
  548. package/src/components/typography/Code/Code.types.ts +12 -0
  549. package/src/components/typography/Code/index.ts +2 -0
  550. package/src/components/typography/Heading/Heading.md +143 -0
  551. package/src/components/typography/Heading/Heading.stories.tsx +451 -0
  552. package/src/components/typography/Heading/Heading.test.stories.tsx +830 -0
  553. package/src/components/typography/Heading/Heading.tsx +178 -0
  554. package/src/components/typography/Heading/Heading.types.ts +11 -0
  555. package/src/components/typography/Heading/index.ts +2 -0
  556. package/src/components/typography/Paragraph/Paragraph.md +80 -0
  557. package/src/components/typography/Paragraph/Paragraph.stories.tsx +280 -0
  558. package/src/components/typography/Paragraph/Paragraph.test.stories.tsx +238 -0
  559. package/src/components/typography/Paragraph/Paragraph.tsx +99 -0
  560. package/src/components/typography/Paragraph/Paragraph.types.ts +10 -0
  561. package/src/components/typography/Paragraph/index.ts +2 -0
  562. package/src/components/typography/Text/Text.md +129 -0
  563. package/src/components/typography/Text/Text.stories.tsx +359 -0
  564. package/src/components/typography/Text/Text.test.stories.tsx +762 -0
  565. package/src/components/typography/Text/Text.tsx +159 -0
  566. package/src/components/typography/Text/Text.types.ts +15 -0
  567. package/src/components/typography/Text/index.ts +2 -0
  568. package/src/components/typography/index.ts +5 -0
  569. package/src/components/utility/AnimatedIcon/AnimatedIcon.md +359 -0
  570. package/src/components/utility/AnimatedIcon/AnimatedIcon.stories.tsx +947 -0
  571. package/src/components/utility/AnimatedIcon/AnimatedIcon.test.stories.tsx +596 -0
  572. package/src/components/utility/AnimatedIcon/AnimatedIcon.tsx +595 -0
  573. package/src/components/utility/AnimatedIcon/AnimatedIcon.types.ts +98 -0
  574. package/src/components/utility/AnimatedIcon/index.ts +2 -0
  575. package/src/components/utility/AspectRatio/AspectRatio.md +200 -0
  576. package/src/components/utility/AspectRatio/AspectRatio.stories.tsx +414 -0
  577. package/src/components/utility/AspectRatio/AspectRatio.test.stories.tsx +859 -0
  578. package/src/components/utility/AspectRatio/AspectRatio.tsx +76 -0
  579. package/src/components/utility/AspectRatio/AspectRatio.types.ts +13 -0
  580. package/src/components/utility/AspectRatio/index.ts +2 -0
  581. package/src/components/utility/InfiniteScroll/InfiniteScroll.md +531 -0
  582. package/src/components/utility/InfiniteScroll/InfiniteScroll.stories.tsx +620 -0
  583. package/src/components/utility/InfiniteScroll/InfiniteScroll.test.stories.tsx +358 -0
  584. package/src/components/utility/InfiniteScroll/InfiniteScroll.tsx +204 -0
  585. package/src/components/utility/InfiniteScroll/InfiniteScroll.types.ts +39 -0
  586. package/src/components/utility/InfiniteScroll/index.ts +6 -0
  587. package/src/components/utility/Portal/Portal.button-container.example.tsx +99 -0
  588. package/src/components/utility/Portal/Portal.md +593 -0
  589. package/src/components/utility/Portal/Portal.stories.tsx +340 -0
  590. package/src/components/utility/Portal/Portal.test.stories.tsx +2086 -0
  591. package/src/components/utility/Portal/Portal.tsx +39 -0
  592. package/src/components/utility/Portal/Portal.types.ts +7 -0
  593. package/src/components/utility/Portal/index.ts +2 -0
  594. package/src/components/utility/Transition/Transition.md +684 -0
  595. package/src/components/utility/Transition/Transition.stories.tsx +493 -0
  596. package/src/components/utility/Transition/Transition.test.stories.tsx +854 -0
  597. package/src/components/utility/Transition/Transition.tsx +140 -0
  598. package/src/components/utility/Transition/Transition.types.ts +14 -0
  599. package/src/components/utility/Transition/index.ts +6 -0
  600. package/src/components/utility/VirtualList/VirtualList.md +520 -0
  601. package/src/components/utility/VirtualList/VirtualList.stories.tsx +1073 -0
  602. package/src/components/utility/VirtualList/VirtualList.test.stories.tsx +1074 -0
  603. package/src/components/utility/VirtualList/VirtualList.tsx +369 -0
  604. package/src/components/utility/VirtualList/VirtualList.types.ts +56 -0
  605. package/src/components/utility/VirtualList/index.ts +7 -0
  606. package/src/components/utility/WorkflowStep/WorkflowStep.md +187 -0
  607. package/src/components/utility/WorkflowStep/WorkflowStep.stories.tsx +433 -0
  608. package/src/components/utility/WorkflowStep/WorkflowStep.test.stories.tsx +364 -0
  609. package/src/components/utility/WorkflowStep/WorkflowStep.tsx +506 -0
  610. package/src/components/utility/WorkflowStep/WorkflowStep.types.ts +133 -0
  611. package/src/components/utility/WorkflowStep/index.ts +13 -0
  612. package/src/components/utility/index.ts +7 -0
  613. package/src/index.ts +17 -0
  614. package/src/mui/AppBar.ts +2 -0
  615. package/src/mui/Box.ts +2 -0
  616. package/src/mui/CssBaseline.ts +2 -0
  617. package/src/mui/FormControl.ts +2 -0
  618. package/src/mui/FormControlLabel.ts +2 -0
  619. package/src/mui/Grid2.ts +2 -0
  620. package/src/mui/InputLabel.ts +2 -0
  621. package/src/mui/List.ts +2 -0
  622. package/src/mui/ListItem.ts +2 -0
  623. package/src/mui/ListItemButton.ts +2 -0
  624. package/src/mui/ListItemText.ts +2 -0
  625. package/src/mui/Stack.ts +2 -0
  626. package/src/mui/SvgIcon.ts +2 -0
  627. package/src/mui/Toolbar.ts +2 -0
  628. package/src/mui/styles.ts +2 -0
  629. package/src/mui/useMediaQuery.ts +1 -0
  630. package/src/social-login-button.tsx +199 -0
  631. package/src/user-avatar.tsx +102 -0
  632. package/src/utils/cn.ts +9 -0
  633. package/src/utils/index.ts +1 -0
@@ -0,0 +1,1039 @@
1
+ import { Box, List, ListItem, ListItemText,Paper, Typography } from '@mui/material';
2
+ import type { Meta, StoryObj } from '@storybook/react-vite';
3
+ import React, { useState } from 'react';
4
+
5
+ import { Resizable } from './Resizable';
6
+
7
+ const meta: Meta<typeof Resizable> = {
8
+ title: 'Layout/Resizable',
9
+ component: Resizable,
10
+ parameters: {
11
+ layout: 'centered',
12
+ docs: {
13
+ description: {
14
+ component:
15
+ 'A resizable container component that allows users to adjust dimensions by dragging handles. Supports horizontal, vertical, and both-direction resizing.',
16
+ },
17
+ },
18
+ },
19
+ tags: ['autodocs', 'component:Resizable'],
20
+ argTypes: {
21
+ variant: {
22
+ control: { type: 'select' },
23
+ options: ['horizontal', 'vertical', 'both'],
24
+ description: 'Resize direction constraint',
25
+ table: {
26
+ type: { summary: 'horizontal | vertical | both' },
27
+ defaultValue: { summary: 'both' },
28
+ },
29
+ },
30
+ width: {
31
+ control: { type: 'number', min: 50, max: 1000, step: 10 },
32
+ description: 'Initial width of the resizable container',
33
+ },
34
+ height: {
35
+ control: { type: 'number', min: 50, max: 1000, step: 10 },
36
+ description: 'Initial height of the resizable container',
37
+ },
38
+ minWidth: {
39
+ control: { type: 'number', min: 10, max: 500, step: 10 },
40
+ description: 'Minimum width constraint',
41
+ },
42
+ maxWidth: {
43
+ control: { type: 'number', min: 100, max: 2000, step: 10 },
44
+ description: 'Maximum width constraint',
45
+ },
46
+ minHeight: {
47
+ control: { type: 'number', min: 10, max: 500, step: 10 },
48
+ description: 'Minimum height constraint',
49
+ },
50
+ maxHeight: {
51
+ control: { type: 'number', min: 100, max: 2000, step: 10 },
52
+ description: 'Maximum height constraint',
53
+ },
54
+ disabled: {
55
+ control: { type: 'boolean' },
56
+ description: 'Whether resizing is disabled',
57
+ },
58
+ handles: {
59
+ control: { type: 'check' },
60
+ options: [
61
+ 'top',
62
+ 'right',
63
+ 'bottom',
64
+ 'left',
65
+ 'topRight',
66
+ 'bottomRight',
67
+ 'bottomLeft',
68
+ 'topLeft',
69
+ ],
70
+ description: 'Custom resize handles to display',
71
+ },
72
+ onResize: {
73
+ action: 'resized',
74
+ description: 'Callback fired when component is resized',
75
+ },
76
+ },
77
+ };
78
+
79
+ export default meta;
80
+ type Story = StoryObj<typeof meta>;
81
+
82
+ interface ContentBoxProps {
83
+ title?: string;
84
+ description?: string;
85
+ }
86
+
87
+ const ContentBox: React.FC<ContentBoxProps> = ({
88
+ title = 'Resizable Content',
89
+ description = 'Drag the handles to resize this container. The content will adapt to the new dimensions.',
90
+ }) => (
91
+ <Box
92
+ sx={{ p: 2, height: '100%', display: 'flex', flexDirection: 'column' }}
93
+ data-testid="resizable-content"
94
+ >
95
+ <Typography variant="h6" gutterBottom>
96
+ {title}
97
+ </Typography>
98
+ <Typography variant="body2" color="text.secondary" paragraph>
99
+ {description}
100
+ </Typography>
101
+ <Box sx={{ flex: 1, bgcolor: 'grey.100', borderRadius: 1, p: 1 }}>
102
+ <Typography variant="caption">Content Area</Typography>
103
+ </Box>
104
+ </Box>
105
+ );
106
+
107
+ export const Default: Story = {
108
+ args: {
109
+ width: 300,
110
+ height: 200,
111
+ children: <ContentBox />,
112
+ },
113
+ parameters: {
114
+ docs: {
115
+ description: {
116
+ story:
117
+ 'Basic resizable container with both horizontal and vertical resizing enabled. Drag the handles on the right edge, bottom edge, or corner to resize.',
118
+ },
119
+ },
120
+ },
121
+ };
122
+
123
+ export const HorizontalOnly: Story = {
124
+ args: {
125
+ variant: 'horizontal',
126
+ width: 250,
127
+ height: 150,
128
+ children: (
129
+ <Box sx={{ p: 2, bgcolor: 'primary.50', height: '100%' }} data-testid="horizontal-content">
130
+ <Typography variant="body1">Horizontal Resize Only</Typography>
131
+ <Typography variant="caption" color="text.secondary">
132
+ Drag the right edge to resize width
133
+ </Typography>
134
+ </Box>
135
+ ),
136
+ },
137
+ parameters: {
138
+ docs: {
139
+ description: {
140
+ story:
141
+ 'Resizable container constrained to horizontal resizing only. Only the right edge handle is available for resizing.',
142
+ },
143
+ },
144
+ },
145
+ };
146
+
147
+ export const VerticalOnly: Story = {
148
+ args: {
149
+ variant: 'vertical',
150
+ width: 300,
151
+ height: 120,
152
+ children: (
153
+ <Box sx={{ p: 2, bgcolor: 'secondary.50', height: '100%' }} data-testid="vertical-content">
154
+ <Typography variant="body1">Vertical Resize Only</Typography>
155
+ <Typography variant="caption" color="text.secondary">
156
+ Drag the bottom edge to resize height
157
+ </Typography>
158
+ </Box>
159
+ ),
160
+ },
161
+ parameters: {
162
+ docs: {
163
+ description: {
164
+ story:
165
+ 'Resizable container constrained to vertical resizing only. Only the bottom edge handle is available for resizing.',
166
+ },
167
+ },
168
+ },
169
+ };
170
+
171
+ export const BothDirections: Story = {
172
+ args: {
173
+ variant: 'both',
174
+ width: 280,
175
+ height: 180,
176
+ children: (
177
+ <Box sx={{ p: 2, bgcolor: 'info.50', height: '100%' }} data-testid="both-directions-content">
178
+ <Typography variant="body1">Both Directions</Typography>
179
+ <Typography variant="caption" color="text.secondary">
180
+ Drag edges or corner to resize
181
+ </Typography>
182
+ </Box>
183
+ ),
184
+ },
185
+ parameters: {
186
+ docs: {
187
+ description: {
188
+ story:
189
+ 'Resizable container with both horizontal and vertical resizing enabled. Provides handles on right edge, bottom edge, and bottom-right corner.',
190
+ },
191
+ },
192
+ },
193
+ };
194
+
195
+ export const WithConstraints: Story = {
196
+ args: {
197
+ variant: 'both',
198
+ width: 200,
199
+ height: 150,
200
+ minWidth: 150,
201
+ maxWidth: 400,
202
+ minHeight: 100,
203
+ maxHeight: 300,
204
+ children: (
205
+ <Box sx={{ p: 2, bgcolor: 'warning.50', height: '100%' }} data-testid="constrained-content">
206
+ <Typography variant="body2" gutterBottom>
207
+ Constrained Resizing
208
+ </Typography>
209
+ <Typography variant="caption">
210
+ Min: 150x100
211
+ <br />
212
+ Max: 400x300
213
+ </Typography>
214
+ </Box>
215
+ ),
216
+ },
217
+ parameters: {
218
+ docs: {
219
+ description: {
220
+ story:
221
+ 'Demonstrates size constraints in action. The container cannot be resized below 150x100 or above 400x300 pixels.',
222
+ },
223
+ },
224
+ },
225
+ };
226
+
227
+ const WithCallbackComponent: React.FC = () => {
228
+ const [dimensions, setDimensions] = useState({ width: 250, height: 150 });
229
+
230
+ return (
231
+ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2, alignItems: 'center' }}>
232
+ <Box sx={{ bgcolor: 'grey.100', p: 2, borderRadius: 1 }}>
233
+ <Typography variant="body2">
234
+ Current size: {dimensions.width}px × {dimensions.height}px
235
+ </Typography>
236
+ </Box>
237
+
238
+ <Resizable
239
+ variant="both"
240
+ width={250}
241
+ height={150}
242
+ onResize={(width, height) => setDimensions({ width, height })}
243
+ data-testid="callback-resizable"
244
+ >
245
+ <Box sx={{ p: 2, bgcolor: 'success.50', height: '100%' }}>
246
+ <Typography variant="body1">Resize Tracking</Typography>
247
+ <Typography variant="caption">Size updates in real-time</Typography>
248
+ </Box>
249
+ </Resizable>
250
+ </Box>
251
+ );
252
+ };
253
+
254
+ export const WithCallback: Story = {
255
+ render: () => <WithCallbackComponent />,
256
+ parameters: {
257
+ docs: {
258
+ description: {
259
+ story:
260
+ 'Demonstrates the onResize callback functionality. The current dimensions are displayed above the resizable container and update in real-time.',
261
+ },
262
+ },
263
+ },
264
+ };
265
+
266
+ // Additional comprehensive stories
267
+
268
+ export const CustomHandles: Story = {
269
+ args: {
270
+ variant: 'both',
271
+ width: 200,
272
+ height: 150,
273
+ handles: ['top', 'right', 'bottom', 'left'],
274
+ children: (
275
+ <Box
276
+ sx={{ p: 2, bgcolor: 'success.50', height: '100%' }}
277
+ data-testid="custom-handles-content"
278
+ >
279
+ <Typography variant="body1">Custom Handles</Typography>
280
+ <Typography variant="caption" color="text.secondary">
281
+ All edge handles enabled (no corners)
282
+ </Typography>
283
+ </Box>
284
+ ),
285
+ },
286
+ parameters: {
287
+ docs: {
288
+ description: {
289
+ story:
290
+ 'Custom handle configuration showing only edge handles (top, right, bottom, left) without corner handles.',
291
+ },
292
+ },
293
+ },
294
+ };
295
+
296
+ export const AllHandles: Story = {
297
+ args: {
298
+ variant: 'both',
299
+ width: 250,
300
+ height: 180,
301
+ handles: ['top', 'right', 'bottom', 'left', 'topRight', 'bottomRight', 'bottomLeft', 'topLeft'],
302
+ children: (
303
+ <Box sx={{ p: 2, bgcolor: 'error.50', height: '100%' }} data-testid="all-handles-content">
304
+ <Typography variant="body1">All Resize Handles</Typography>
305
+ <Typography variant="caption" color="text.secondary">
306
+ 8 handles: 4 edges + 4 corners
307
+ </Typography>
308
+ </Box>
309
+ ),
310
+ },
311
+ parameters: {
312
+ docs: {
313
+ description: {
314
+ story:
315
+ 'Maximum handle configuration with all 8 possible handles enabled (4 edges + 4 corners).',
316
+ },
317
+ },
318
+ },
319
+ };
320
+
321
+ export const MinimalSize: Story = {
322
+ args: {
323
+ variant: 'both',
324
+ width: 100,
325
+ height: 80,
326
+ minWidth: 80,
327
+ minHeight: 60,
328
+ maxWidth: 200,
329
+ maxHeight: 150,
330
+ children: (
331
+ <Box
332
+ sx={{ p: 1, bgcolor: 'info.50', height: '100%', fontSize: '0.75rem' }}
333
+ data-testid="minimal-size-content"
334
+ >
335
+ <Typography variant="caption">Small</Typography>
336
+ </Box>
337
+ ),
338
+ },
339
+ parameters: {
340
+ docs: {
341
+ description: {
342
+ story:
343
+ 'Resizable container starting at a small size with tight constraints to test minimal size handling.',
344
+ },
345
+ },
346
+ },
347
+ };
348
+
349
+ export const LargeSize: Story = {
350
+ args: {
351
+ variant: 'both',
352
+ width: 600,
353
+ height: 400,
354
+ minWidth: 400,
355
+ minHeight: 300,
356
+ maxWidth: 800,
357
+ maxHeight: 600,
358
+ children: (
359
+ <Box
360
+ sx={{
361
+ p: 3,
362
+ bgcolor: 'warning.50',
363
+ height: '100%',
364
+ display: 'flex',
365
+ flexDirection: 'column',
366
+ }}
367
+ data-testid="large-size-content"
368
+ >
369
+ <Typography variant="h4" gutterBottom>
370
+ Large Container
371
+ </Typography>
372
+ <Typography variant="body1" paragraph>
373
+ This is a larger resizable container to test performance and behavior with bigger
374
+ dimensions.
375
+ </Typography>
376
+ <Box sx={{ flex: 1, bgcolor: 'grey.100', borderRadius: 1, p: 2 }}>
377
+ <Typography variant="body2">Large content area</Typography>
378
+ </Box>
379
+ </Box>
380
+ ),
381
+ },
382
+ parameters: {
383
+ docs: {
384
+ description: {
385
+ story: 'Large resizable container to test performance and handling of bigger dimensions.',
386
+ },
387
+ },
388
+ },
389
+ };
390
+
391
+ const ResponsiveContentComponent: React.FC = () => {
392
+ const [size, setSize] = useState({ width: 300, height: 200 });
393
+
394
+ return (
395
+ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2, alignItems: 'center' }}>
396
+ <Typography variant="body2" color="text.secondary">
397
+ Container: {size.width}px × {size.height}px
398
+ </Typography>
399
+
400
+ <Resizable
401
+ variant="both"
402
+ width={300}
403
+ height={200}
404
+ onResize={(width, height) => setSize({ width, height })}
405
+ data-testid="responsive-resizable"
406
+ >
407
+ <Box
408
+ sx={{
409
+ p: 2,
410
+ bgcolor: 'primary.50',
411
+ height: '100%',
412
+ display: 'flex',
413
+ flexDirection: 'column',
414
+ }}
415
+ >
416
+ <Typography variant="h6" gutterBottom>
417
+ Responsive Content
418
+ </Typography>
419
+ <Typography variant="body2" paragraph>
420
+ Content adapts to container size:
421
+ </Typography>
422
+ <Box
423
+ sx={{
424
+ display: 'grid',
425
+ gridTemplateColumns:
426
+ size.width > 250 ? 'repeat(3, 1fr)' : size.width > 150 ? 'repeat(2, 1fr)' : '1fr',
427
+ gap: 1,
428
+ flex: 1,
429
+ }}
430
+ >
431
+ <Paper sx={{ p: 1, textAlign: 'center' }}>
432
+ <Typography variant="caption">Item 1</Typography>
433
+ </Paper>
434
+ <Paper sx={{ p: 1, textAlign: 'center' }}>
435
+ <Typography variant="caption">Item 2</Typography>
436
+ </Paper>
437
+ <Paper sx={{ p: 1, textAlign: 'center' }}>
438
+ <Typography variant="caption">Item 3</Typography>
439
+ </Paper>
440
+ </Box>
441
+ </Box>
442
+ </Resizable>
443
+ </Box>
444
+ );
445
+ };
446
+
447
+ export const ResponsiveContent: Story = {
448
+ render: () => <ResponsiveContentComponent />,
449
+ parameters: {
450
+ docs: {
451
+ description: {
452
+ story:
453
+ 'Demonstrates how content can adapt responsively to container size changes. The grid layout changes based on available width.',
454
+ },
455
+ },
456
+ },
457
+ };
458
+
459
+ export const NestedResizable: Story = {
460
+ render: () => (
461
+ <Box sx={{ p: 2, border: 1, borderColor: 'divider' }} data-testid="nested-layout">
462
+ <Typography variant="h6" gutterBottom>
463
+ Nested Resizable Containers
464
+ </Typography>
465
+
466
+ <Resizable variant="both" width={400} height={300} data-testid="outer-resizable">
467
+ <Box
468
+ sx={{
469
+ p: 2,
470
+ bgcolor: 'primary.50',
471
+ height: '100%',
472
+ display: 'flex',
473
+ flexDirection: 'column',
474
+ }}
475
+ >
476
+ <Typography variant="subtitle1" gutterBottom>
477
+ Outer Container
478
+ </Typography>
479
+
480
+ <Resizable
481
+ variant="both"
482
+ width={200}
483
+ height={120}
484
+ minWidth={100}
485
+ minHeight={80}
486
+ data-testid="inner-resizable"
487
+ >
488
+ <Box sx={{ p: 2, bgcolor: 'secondary.50', height: '100%' }}>
489
+ <Typography variant="body2">Inner Container</Typography>
490
+ <Typography variant="caption">Nested resizable</Typography>
491
+ </Box>
492
+ </Resizable>
493
+ </Box>
494
+ </Resizable>
495
+ </Box>
496
+ ),
497
+ parameters: {
498
+ docs: {
499
+ description: {
500
+ story:
501
+ 'Nested resizable containers to test complex scenarios where one resizable is inside another.',
502
+ },
503
+ },
504
+ },
505
+ };
506
+
507
+ export const AccessibilityEnhanced: Story = {
508
+ args: {
509
+ variant: 'both',
510
+ width: 300,
511
+ height: 200,
512
+ children: (
513
+ <Box
514
+ sx={{ p: 2, bgcolor: 'info.50', height: '100%' }}
515
+ role="region"
516
+ aria-label="Resizable content area"
517
+ data-testid="accessible-content"
518
+ >
519
+ <Typography variant="h6" gutterBottom>
520
+ Accessible Resizable
521
+ </Typography>
522
+ <Typography variant="body2" paragraph>
523
+ This container includes proper ARIA attributes and semantic HTML for better accessibility.
524
+ </Typography>
525
+ <Typography variant="caption" color="text.secondary">
526
+ Use mouse or touch to resize by dragging the handles.
527
+ </Typography>
528
+ </Box>
529
+ ),
530
+ },
531
+ parameters: {
532
+ docs: {
533
+ description: {
534
+ story:
535
+ 'Enhanced accessibility example with proper ARIA attributes and semantic HTML structure.',
536
+ },
537
+ },
538
+ },
539
+ };
540
+
541
+ export const DisabledState: Story = {
542
+ args: {
543
+ variant: 'both',
544
+ width: 250,
545
+ height: 150,
546
+ disabled: true,
547
+ children: (
548
+ <Box sx={{ p: 2, bgcolor: 'grey.200', height: '100%' }} data-testid="disabled-content">
549
+ <Typography variant="body1" color="text.disabled">
550
+ Disabled Resizing
551
+ </Typography>
552
+ <Typography variant="caption" color="text.disabled">
553
+ Resizing is disabled for this container
554
+ </Typography>
555
+ </Box>
556
+ ),
557
+ },
558
+ parameters: {
559
+ docs: {
560
+ description: {
561
+ story:
562
+ 'When disabled is true, resize handles are hidden and resizing functionality is completely disabled.',
563
+ },
564
+ },
565
+ },
566
+ };
567
+
568
+ export const SidePanel: Story = {
569
+ render: () => (
570
+ <Box
571
+ sx={{ display: 'flex', height: 400, border: 1, borderColor: 'divider' }}
572
+ data-testid="side-panel-layout"
573
+ >
574
+ <Resizable
575
+ variant="horizontal"
576
+ width={200}
577
+ minWidth={150}
578
+ maxWidth={350}
579
+ data-testid="resizable-sidebar"
580
+ >
581
+ <Box sx={{ bgcolor: 'primary.50', height: '100%', p: 2 }}>
582
+ <Typography variant="h6" gutterBottom>
583
+ Sidebar
584
+ </Typography>
585
+ <List dense>
586
+ <ListItem>
587
+ <ListItemText primary="Item 1" />
588
+ </ListItem>
589
+ <ListItem>
590
+ <ListItemText primary="Item 2" />
591
+ </ListItem>
592
+ <ListItem>
593
+ <ListItemText primary="Item 3" />
594
+ </ListItem>
595
+ </List>
596
+ </Box>
597
+ </Resizable>
598
+
599
+ <Box sx={{ flex: 1, p: 3 }} data-testid="main-content">
600
+ <Typography variant="h5" gutterBottom>
601
+ Main Content
602
+ </Typography>
603
+ <Typography variant="body1" color="text.secondary">
604
+ The sidebar on the left is resizable. Drag its right edge to adjust the width.
605
+ </Typography>
606
+ </Box>
607
+ </Box>
608
+ ),
609
+ parameters: {
610
+ docs: {
611
+ description: {
612
+ story:
613
+ 'Common use case: Resizable sidebar panel in a layout. The sidebar can be resized horizontally while the main content area adapts.',
614
+ },
615
+ },
616
+ },
617
+ };
618
+
619
+ export const TextEditor: Story = {
620
+ render: () => (
621
+ <Box
622
+ sx={{
623
+ display: 'flex',
624
+ flexDirection: 'column',
625
+ height: 500,
626
+ border: 1,
627
+ borderColor: 'divider',
628
+ }}
629
+ data-testid="text-editor-layout"
630
+ >
631
+ <Box sx={{ p: 2, borderBottom: 1, borderColor: 'divider', bgcolor: 'grey.50' }}>
632
+ <Typography variant="h6">Code Editor</Typography>
633
+ </Box>
634
+
635
+ <Box sx={{ flex: 1, display: 'flex', overflow: 'hidden' }}>
636
+ <Box
637
+ sx={{ flex: 1, p: 2, bgcolor: 'grey.900', color: 'common.white' }}
638
+ data-testid="code-area"
639
+ >
640
+ <Typography variant="body2" fontFamily="monospace">
641
+ {/* Main editor content */}
642
+ <br />
643
+ function example() {'{'}
644
+ <br />
645
+ {' '}return &quot;Hello World&quot;;
646
+ <br />
647
+ {'}'}
648
+ </Typography>
649
+ </Box>
650
+
651
+ <Resizable
652
+ variant="vertical"
653
+ width={300}
654
+ height={200}
655
+ minHeight={100}
656
+ data-testid="resizable-console"
657
+ >
658
+ <Box sx={{ bgcolor: 'grey.100', height: '100%', p: 2 }}>
659
+ <Typography variant="subtitle2" gutterBottom>
660
+ Console Output
661
+ </Typography>
662
+ <Typography variant="body2" fontFamily="monospace" color="success.main">
663
+ &gt; Hello World
664
+ </Typography>
665
+ </Box>
666
+ </Resizable>
667
+ </Box>
668
+ </Box>
669
+ ),
670
+ parameters: {
671
+ docs: {
672
+ description: {
673
+ story:
674
+ 'Code editor layout with resizable console panel. The console can be resized vertically to show more or less output.',
675
+ },
676
+ },
677
+ },
678
+ };
679
+
680
+ export const GridLayout: Story = {
681
+ render: () => (
682
+ <Box
683
+ sx={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 2, p: 2, bgcolor: 'grey.50' }}
684
+ data-testid="grid-layout"
685
+ >
686
+ <Resizable variant="both" width={250} height={150} data-testid="widget-1">
687
+ <Paper sx={{ p: 2, height: '100%' }}>
688
+ <Typography variant="h6">Widget 1</Typography>
689
+ <Typography variant="caption">Resizable widget</Typography>
690
+ </Paper>
691
+ </Resizable>
692
+
693
+ <Resizable variant="both" width={250} height={150} data-testid="widget-2">
694
+ <Paper sx={{ p: 2, height: '100%', bgcolor: 'primary.50' }}>
695
+ <Typography variant="h6">Widget 2</Typography>
696
+ <Typography variant="caption">Another resizable widget</Typography>
697
+ </Paper>
698
+ </Resizable>
699
+
700
+ <Resizable variant="both" width={250} height={150} data-testid="widget-3">
701
+ <Paper sx={{ p: 2, height: '100%', bgcolor: 'secondary.50' }}>
702
+ <Typography variant="h6">Widget 3</Typography>
703
+ <Typography variant="caption">Dashboard component</Typography>
704
+ </Paper>
705
+ </Resizable>
706
+
707
+ <Resizable variant="both" width={250} height={150} data-testid="widget-4">
708
+ <Paper sx={{ p: 2, height: '100%', bgcolor: 'info.50' }}>
709
+ <Typography variant="h6">Widget 4</Typography>
710
+ <Typography variant="caption">Flexible layout</Typography>
711
+ </Paper>
712
+ </Resizable>
713
+ </Box>
714
+ ),
715
+ parameters: {
716
+ docs: {
717
+ description: {
718
+ story:
719
+ 'Dashboard-style grid layout with multiple resizable widgets. Each widget can be independently resized in both dimensions.',
720
+ },
721
+ },
722
+ },
723
+ };
724
+
725
+ // Required story exports for validation
726
+
727
+ export const AllVariants: Story = {
728
+ render: () => (
729
+ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, alignItems: 'center', p: 2 }}>
730
+ <Typography variant="h6">All Resizable Variants</Typography>
731
+
732
+ <Box sx={{ display: 'flex', gap: 2, flexWrap: 'wrap', justifyContent: 'center' }}>
733
+ <Box>
734
+ <Typography variant="subtitle2" gutterBottom>
735
+ Horizontal Only
736
+ </Typography>
737
+ <Resizable variant="horizontal" width={200} height={100}>
738
+ <Box sx={{ p: 2, bgcolor: 'primary.50', height: '100%', textAlign: 'center' }}>
739
+ <Typography variant="caption">Horizontal</Typography>
740
+ </Box>
741
+ </Resizable>
742
+ </Box>
743
+
744
+ <Box>
745
+ <Typography variant="subtitle2" gutterBottom>
746
+ Vertical Only
747
+ </Typography>
748
+ <Resizable variant="vertical" width={200} height={100}>
749
+ <Box sx={{ p: 2, bgcolor: 'secondary.50', height: '100%', textAlign: 'center' }}>
750
+ <Typography variant="caption">Vertical</Typography>
751
+ </Box>
752
+ </Resizable>
753
+ </Box>
754
+
755
+ <Box>
756
+ <Typography variant="subtitle2" gutterBottom>
757
+ Both Directions
758
+ </Typography>
759
+ <Resizable variant="both" width={200} height={100}>
760
+ <Box sx={{ p: 2, bgcolor: 'info.50', height: '100%', textAlign: 'center' }}>
761
+ <Typography variant="caption">Both</Typography>
762
+ </Box>
763
+ </Resizable>
764
+ </Box>
765
+ </Box>
766
+ </Box>
767
+ ),
768
+ parameters: {
769
+ docs: {
770
+ description: {
771
+ story: 'Showcase of all resizable variants side by side.',
772
+ },
773
+ },
774
+ },
775
+ };
776
+
777
+ export const AllSizes: Story = {
778
+ render: () => (
779
+ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, alignItems: 'center', p: 2 }}>
780
+ <Typography variant="h6">All Resizable Sizes</Typography>
781
+
782
+ <Box
783
+ sx={{
784
+ display: 'flex',
785
+ gap: 2,
786
+ flexWrap: 'wrap',
787
+ justifyContent: 'center',
788
+ alignItems: 'flex-end',
789
+ }}
790
+ >
791
+ <Box>
792
+ <Typography variant="subtitle2" gutterBottom>
793
+ Small
794
+ </Typography>
795
+ <Resizable variant="both" width={100} height={80}>
796
+ <Box sx={{ p: 1, bgcolor: 'primary.50', height: '100%', textAlign: 'center' }}>
797
+ <Typography variant="caption">Small</Typography>
798
+ </Box>
799
+ </Resizable>
800
+ </Box>
801
+
802
+ <Box>
803
+ <Typography variant="subtitle2" gutterBottom>
804
+ Medium
805
+ </Typography>
806
+ <Resizable variant="both" width={200} height={150}>
807
+ <Box sx={{ p: 2, bgcolor: 'secondary.50', height: '100%', textAlign: 'center' }}>
808
+ <Typography variant="body2">Medium</Typography>
809
+ </Box>
810
+ </Resizable>
811
+ </Box>
812
+
813
+ <Box>
814
+ <Typography variant="subtitle2" gutterBottom>
815
+ Large
816
+ </Typography>
817
+ <Resizable variant="both" width={300} height={200}>
818
+ <Box sx={{ p: 2, bgcolor: 'info.50', height: '100%', textAlign: 'center' }}>
819
+ <Typography variant="body1">Large</Typography>
820
+ </Box>
821
+ </Resizable>
822
+ </Box>
823
+ </Box>
824
+ </Box>
825
+ ),
826
+ parameters: {
827
+ docs: {
828
+ description: {
829
+ story: 'Resizable containers in different sizes.',
830
+ },
831
+ },
832
+ },
833
+ };
834
+
835
+ export const AllStates: Story = {
836
+ render: () => (
837
+ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, alignItems: 'center', p: 2 }}>
838
+ <Typography variant="h6">All Resizable States</Typography>
839
+
840
+ <Box sx={{ display: 'flex', gap: 2, flexWrap: 'wrap', justifyContent: 'center' }}>
841
+ <Box>
842
+ <Typography variant="subtitle2" gutterBottom>
843
+ Default
844
+ </Typography>
845
+ <Resizable variant="both" width={150} height={100}>
846
+ <Box sx={{ p: 2, bgcolor: 'grey.100', height: '100%', textAlign: 'center' }}>
847
+ <Typography variant="caption">Default</Typography>
848
+ </Box>
849
+ </Resizable>
850
+ </Box>
851
+
852
+ <Box>
853
+ <Typography variant="subtitle2" gutterBottom>
854
+ Disabled
855
+ </Typography>
856
+ <Resizable variant="both" width={150} height={100} disabled>
857
+ <Box sx={{ p: 2, bgcolor: 'grey.300', height: '100%', textAlign: 'center' }}>
858
+ <Typography variant="caption" color="text.disabled">
859
+ Disabled
860
+ </Typography>
861
+ </Box>
862
+ </Resizable>
863
+ </Box>
864
+
865
+ <Box>
866
+ <Typography variant="subtitle2" gutterBottom>
867
+ With Constraints
868
+ </Typography>
869
+ <Resizable
870
+ variant="both"
871
+ width={150}
872
+ height={100}
873
+ minWidth={100}
874
+ maxWidth={200}
875
+ minHeight={80}
876
+ maxHeight={150}
877
+ >
878
+ <Box sx={{ p: 2, bgcolor: 'warning.50', height: '100%', textAlign: 'center' }}>
879
+ <Typography variant="caption">Constrained</Typography>
880
+ </Box>
881
+ </Resizable>
882
+ </Box>
883
+ </Box>
884
+ </Box>
885
+ ),
886
+ parameters: {
887
+ docs: {
888
+ description: {
889
+ story: 'Resizable containers in different states.',
890
+ },
891
+ },
892
+ },
893
+ };
894
+
895
+ export const InteractiveStates: Story = {
896
+ render: () => {
897
+ const [hoveredId, setHoveredId] = useState<string | null>(null);
898
+ const [activeId, setActiveId] = useState<string | null>(null);
899
+
900
+ return (
901
+ <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3, alignItems: 'center', p: 2 }}>
902
+ <Typography variant="h6">Interactive States</Typography>
903
+
904
+ <Box sx={{ display: 'flex', gap: 2, flexWrap: 'wrap', justifyContent: 'center' }}>
905
+ <Box onMouseEnter={() => setHoveredId('hover')} onMouseLeave={() => setHoveredId(null)}>
906
+ <Typography variant="subtitle2" gutterBottom>
907
+ Hover State
908
+ </Typography>
909
+ <Resizable variant="both" width={150} height={100}>
910
+ <Box
911
+ sx={{
912
+ p: 2,
913
+ bgcolor: hoveredId === 'hover' ? 'primary.100' : 'primary.50',
914
+ height: '100%',
915
+ textAlign: 'center',
916
+ transition: 'background-color 0.3s',
917
+ }}
918
+ >
919
+ <Typography variant="caption">
920
+ {hoveredId === 'hover' ? 'Hovered' : 'Hover me'}
921
+ </Typography>
922
+ </Box>
923
+ </Resizable>
924
+ </Box>
925
+
926
+ <Box onMouseDown={() => setActiveId('active')} onMouseUp={() => setActiveId(null)}>
927
+ <Typography variant="subtitle2" gutterBottom>
928
+ Active State
929
+ </Typography>
930
+ <Resizable variant="both" width={150} height={100}>
931
+ <Box
932
+ sx={{
933
+ p: 2,
934
+ bgcolor: activeId === 'active' ? 'secondary.200' : 'secondary.50',
935
+ height: '100%',
936
+ textAlign: 'center',
937
+ transition: 'background-color 0.3s',
938
+ }}
939
+ >
940
+ <Typography variant="caption">
941
+ {activeId === 'active' ? 'Active' : 'Click me'}
942
+ </Typography>
943
+ </Box>
944
+ </Resizable>
945
+ </Box>
946
+
947
+ <Box>
948
+ <Typography variant="subtitle2" gutterBottom>
949
+ Focus State
950
+ </Typography>
951
+ <Resizable variant="both" width={150} height={100}>
952
+ <Box
953
+ sx={{
954
+ p: 2,
955
+ bgcolor: 'info.50',
956
+ height: '100%',
957
+ textAlign: 'center',
958
+ '&:focus-within': {
959
+ bgcolor: 'info.100',
960
+ },
961
+ }}
962
+ tabIndex={0}
963
+ >
964
+ <Typography variant="caption">Tab to focus</Typography>
965
+ </Box>
966
+ </Resizable>
967
+ </Box>
968
+ </Box>
969
+ </Box>
970
+ );
971
+ },
972
+ parameters: {
973
+ docs: {
974
+ description: {
975
+ story: 'Interactive states demonstration with hover, active, and focus states.',
976
+ },
977
+ },
978
+ },
979
+ };
980
+
981
+ export const Responsive: Story = {
982
+ render: () => (
983
+ <Box sx={{ p: 2 }}>
984
+ <Typography variant="h6" gutterBottom>
985
+ Responsive Resizable
986
+ </Typography>
987
+ <Typography variant="body2" color="text.secondary" paragraph>
988
+ This resizable container adapts to different screen sizes
989
+ </Typography>
990
+
991
+ <Box
992
+ sx={{
993
+ display: 'flex',
994
+ flexDirection: { xs: 'column', sm: 'row' },
995
+ gap: 2,
996
+ alignItems: 'center',
997
+ }}
998
+ >
999
+ <Resizable variant="both" width={300} height={200} minWidth={150} maxWidth={500}>
1000
+ <Box
1001
+ sx={{
1002
+ p: 2,
1003
+ bgcolor: 'primary.50',
1004
+ height: '100%',
1005
+ display: 'flex',
1006
+ flexDirection: 'column',
1007
+ justifyContent: 'center',
1008
+ alignItems: 'center',
1009
+ }}
1010
+ >
1011
+ <Typography variant="h6">Responsive Container</Typography>
1012
+ <Typography variant="body2" color="text.secondary">
1013
+ Adapts to viewport size
1014
+ </Typography>
1015
+ <Typography variant="caption" sx={{ mt: 1 }}>
1016
+ Min: 150px | Max: 500px
1017
+ </Typography>
1018
+ </Box>
1019
+ </Resizable>
1020
+
1021
+ <Box sx={{ flex: 1, p: 2, bgcolor: 'grey.100', borderRadius: 1 }}>
1022
+ <Typography variant="body2">
1023
+ Adjacent content that flows with the resizable container
1024
+ </Typography>
1025
+ </Box>
1026
+ </Box>
1027
+ </Box>
1028
+ ),
1029
+ parameters: {
1030
+ docs: {
1031
+ description: {
1032
+ story: 'Responsive resizable container that adapts to different viewport sizes.',
1033
+ },
1034
+ },
1035
+ viewport: {
1036
+ defaultViewport: 'responsive',
1037
+ },
1038
+ },
1039
+ };