@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,254 @@
1
+ import { ContentCopy as ContentCopyIcon } from '@mui/icons-material';
2
+ import { Box, Stack } from '@mui/material';
3
+ import type { Meta, StoryObj } from '@storybook/react-vite';
4
+
5
+ import { Button } from '../../form/Button/Button';
6
+ import { Chip } from '../Chip/Chip';
7
+ import { DescriptionItem } from './DescriptionItem';
8
+
9
+ const meta: Meta<typeof DescriptionItem> = {
10
+ title: 'DataDisplay/DescriptionItem',
11
+ component: DescriptionItem,
12
+ parameters: {
13
+ layout: 'centered',
14
+ },
15
+ tags: ['autodocs', 'component:DescriptionItem'],
16
+ argTypes: {
17
+ label: {
18
+ control: 'text',
19
+ description: 'The label text to display',
20
+ },
21
+ value: {
22
+ control: 'text',
23
+ description: 'The value to display - can be text, number, or any React node',
24
+ },
25
+ orientation: {
26
+ control: 'radio',
27
+ options: ['vertical', 'horizontal'],
28
+ description: 'Layout orientation',
29
+ },
30
+ },
31
+ };
32
+
33
+ export default meta;
34
+ type Story = StoryObj<typeof meta>;
35
+
36
+ export const Default: Story = {
37
+ args: {
38
+ label: 'Incident ID',
39
+ value: 'INC-12345',
40
+ },
41
+ };
42
+
43
+ export const WithNumber: Story = {
44
+ args: {
45
+ label: 'Services Affected',
46
+ value: 42,
47
+ },
48
+ };
49
+
50
+ export const WithLongText: Story = {
51
+ args: {
52
+ label: 'Description',
53
+ value: 'This is a longer description that demonstrates how the component handles multiple lines of text content.',
54
+ },
55
+ };
56
+
57
+ export const WithCustomContent: Story = {
58
+ render: () => (
59
+ <DescriptionItem
60
+ label="Status"
61
+ value={<Chip label="Active" color="success" size="small" />}
62
+ />
63
+ ),
64
+ };
65
+
66
+ export const HorizontalOrientation: Story = {
67
+ render: () => (
68
+ <Stack spacing={2} sx={{ width: 400 }}>
69
+ <DescriptionItem label="Name" value="John Doe" orientation="horizontal" />
70
+ <DescriptionItem label="Email" value="john.doe@example.com" orientation="horizontal" />
71
+ <DescriptionItem label="Status" value={<Chip label="Active" color="success" size="small" />} orientation="horizontal" />
72
+ <DescriptionItem label="Role" value="Administrator" orientation="horizontal" />
73
+ </Stack>
74
+ ),
75
+ };
76
+
77
+ export const VerticalOrientation: Story = {
78
+ render: () => (
79
+ <Stack spacing={3} sx={{ width: 300 }}>
80
+ <DescriptionItem label="Name" value="John Doe" orientation="vertical" />
81
+ <DescriptionItem label="Email" value="john.doe@example.com" orientation="vertical" />
82
+ <DescriptionItem label="Status" value={<Chip label="Active" color="success" size="small" />} orientation="vertical" />
83
+ <DescriptionItem label="Role" value="Administrator" orientation="vertical" />
84
+ </Stack>
85
+ ),
86
+ };
87
+
88
+ export const WithCopyableValue: Story = {
89
+ render: () => (
90
+ <DescriptionItem
91
+ label="Incident ID"
92
+ value={
93
+ <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>
94
+ <span style={{ fontWeight: 600, fontSize: '0.875rem' }}>INC-12345</span>
95
+ <Button
96
+ variant="ghost"
97
+ size="sm"
98
+ onClick={() => navigator.clipboard.writeText('INC-12345')}
99
+ sx={{ minWidth: 'auto', padding: 0.25 }}
100
+ aria-label="Copy incident ID"
101
+ >
102
+ <ContentCopyIcon sx={{ fontSize: 16 }} />
103
+ </Button>
104
+ </Box>
105
+ }
106
+ />
107
+ ),
108
+ };
109
+
110
+ export const GridLayout: Story = {
111
+ render: () => (
112
+ <Box
113
+ sx={{
114
+ display: 'grid',
115
+ gridTemplateColumns: 'repeat(4, 1fr)',
116
+ gap: 3,
117
+ width: 800,
118
+ }}
119
+ >
120
+ <DescriptionItem label="Incident ID" value="INC-12345" />
121
+ <DescriptionItem label="Started" value="2 hours ago" />
122
+ <DescriptionItem label="Duration" value="Ongoing" />
123
+ <DescriptionItem label="Services Affected" value={5} />
124
+ </Box>
125
+ ),
126
+ };
127
+
128
+ export const VerticalStack: Story = {
129
+ render: () => (
130
+ <Stack spacing={3} sx={{ width: 300 }}>
131
+ <DescriptionItem label="Name" value="John Doe" />
132
+ <DescriptionItem label="Email" value="john.doe@example.com" />
133
+ <DescriptionItem label="Department" value="Engineering" />
134
+ <DescriptionItem
135
+ label="Role"
136
+ value={<Chip label="Admin" color="primary" size="small" />}
137
+ />
138
+ </Stack>
139
+ ),
140
+ };
141
+
142
+ export const ResponsiveGrid: Story = {
143
+ render: () => (
144
+ <Box
145
+ sx={{
146
+ display: 'grid',
147
+ gridTemplateColumns: { xs: '1fr', sm: 'repeat(2, 1fr)', md: 'repeat(4, 1fr)' },
148
+ gap: 3,
149
+ maxWidth: 900,
150
+ }}
151
+ >
152
+ <DescriptionItem label="Order ID" value="ORD-2024-001" />
153
+ <DescriptionItem label="Customer" value="Acme Corp" />
154
+ <DescriptionItem label="Total Amount" value="$1,234.56" />
155
+ <DescriptionItem label="Status" value={<Chip label="Completed" color="success" size="small" />} />
156
+ <DescriptionItem label="Order Date" value="Jan 15, 2024" />
157
+ <DescriptionItem label="Shipping Method" value="Express" />
158
+ <DescriptionItem label="Items" value={3} />
159
+ <DescriptionItem label="Payment Method" value="Credit Card" />
160
+ </Box>
161
+ ),
162
+ };
163
+
164
+ export const WithEmptyValue: Story = {
165
+ render: () => (
166
+ <Stack spacing={3} sx={{ width: 300 }}>
167
+ <DescriptionItem label="Optional Field" value="N/A" />
168
+ <DescriptionItem label="No Value" value="-" />
169
+ <DescriptionItem label="Empty" value="" />
170
+ </Stack>
171
+ ),
172
+ };
173
+
174
+ export const MixedOrientations: Story = {
175
+ render: () => (
176
+ <Box sx={{ width: 600 }}>
177
+ <Stack spacing={3}>
178
+ <Box>
179
+ <h3>Vertical Layout (Default)</h3>
180
+ <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 3, mt: 2 }}>
181
+ <DescriptionItem label="Name" value="John Doe" />
182
+ <DescriptionItem label="Age" value={32} />
183
+ <DescriptionItem label="City" value="San Francisco" />
184
+ </Box>
185
+ </Box>
186
+
187
+ <Box>
188
+ <h3>Horizontal Layout</h3>
189
+ <Stack spacing={2} sx={{ mt: 2 }}>
190
+ <DescriptionItem label="Name" value="John Doe" orientation="horizontal" />
191
+ <DescriptionItem label="Age" value={32} orientation="horizontal" />
192
+ <DescriptionItem label="City" value="San Francisco" orientation="horizontal" />
193
+ </Stack>
194
+ </Box>
195
+ </Stack>
196
+ </Box>
197
+ ),
198
+ };
199
+
200
+ export const AllVariations: Story = {
201
+ render: () => (
202
+ <Stack spacing={4} sx={{ width: 800 }}>
203
+ <Box>
204
+ <h3>Text Values (Vertical)</h3>
205
+ <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 3, mt: 2 }}>
206
+ <DescriptionItem label="Short Text" value="Value" />
207
+ <DescriptionItem label="Medium Text" value="This is a medium length value" />
208
+ <DescriptionItem label="Long Text" value="This is a much longer text value that will wrap to multiple lines" />
209
+ </Box>
210
+ </Box>
211
+
212
+ <Box>
213
+ <h3>Text Values (Horizontal)</h3>
214
+ <Stack spacing={2} sx={{ mt: 2 }}>
215
+ <DescriptionItem label="Short Text" value="Value" orientation="horizontal" />
216
+ <DescriptionItem label="Medium Text" value="This is a medium length value" orientation="horizontal" />
217
+ <DescriptionItem label="Long Text" value="This is a much longer text value that will wrap to multiple lines" orientation="horizontal" />
218
+ </Stack>
219
+ </Box>
220
+
221
+ <Box>
222
+ <h3>Number Values</h3>
223
+ <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 3, mt: 2 }}>
224
+ <DescriptionItem label="Integer" value={42} />
225
+ <DescriptionItem label="Decimal" value={3.14159} />
226
+ <DescriptionItem label="Large Number" value={1234567890} />
227
+ </Box>
228
+ </Box>
229
+
230
+ <Box>
231
+ <h3>Custom Components</h3>
232
+ <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 3, mt: 2 }}>
233
+ <DescriptionItem
234
+ label="With Chip"
235
+ value={<Chip label="Active" color="success" size="small" />}
236
+ />
237
+ <DescriptionItem
238
+ label="With Button"
239
+ value={<Button size="xs" variant="outline">Action</Button>}
240
+ />
241
+ <DescriptionItem
242
+ label="Multiple Elements"
243
+ value={
244
+ <Box sx={{ display: 'flex', gap: 0.5 }}>
245
+ <Chip label="Tag 1" size="small" />
246
+ <Chip label="Tag 2" size="small" />
247
+ </Box>
248
+ }
249
+ />
250
+ </Box>
251
+ </Box>
252
+ </Stack>
253
+ ),
254
+ };
@@ -0,0 +1,100 @@
1
+ import { Box } from '@mui/material';
2
+ import type { ReactNode } from 'react';
3
+
4
+ import { Text } from '../../typography/Text/Text';
5
+
6
+ export interface DescriptionItemProps {
7
+ /**
8
+ * The label text to display
9
+ */
10
+ label: string;
11
+
12
+ /**
13
+ * The value to display - can be text, number, or any React node
14
+ */
15
+ value: ReactNode;
16
+
17
+ /**
18
+ * Layout orientation
19
+ * - `vertical`: Label above value (default)
20
+ * - `horizontal`: Label and value side by side
21
+ */
22
+ orientation?: 'vertical' | 'horizontal';
23
+
24
+ /**
25
+ * Optional CSS class name
26
+ */
27
+ className?: string;
28
+
29
+ /**
30
+ * Test ID for testing purposes
31
+ */
32
+ 'data-testid'?: string;
33
+ }
34
+
35
+ /**
36
+ * DescriptionItem - A label-value pair component for displaying read-only information
37
+ *
38
+ * Used for displaying structured metadata, properties, or descriptive information
39
+ * in a consistent vertical layout with a label above the value.
40
+ *
41
+ * @example
42
+ * ```tsx
43
+ * <DescriptionItem
44
+ * label="Incident ID"
45
+ * value="INC-12345"
46
+ * />
47
+ * ```
48
+ *
49
+ * @example
50
+ * ```tsx
51
+ * <DescriptionItem
52
+ * label="Status"
53
+ * value={<Chip label="Active" color="success" />}
54
+ * />
55
+ * ```
56
+ */
57
+ export const DescriptionItem: React.FC<DescriptionItemProps> = ({
58
+ label,
59
+ value,
60
+ orientation = 'vertical',
61
+ className,
62
+ 'data-testid': dataTestId,
63
+ }) => (
64
+ <Box
65
+ className={className}
66
+ sx={{
67
+ display: 'flex',
68
+ flexDirection: orientation === 'vertical' ? 'column' : 'row',
69
+ alignItems: orientation === 'horizontal' ? 'center' : 'flex-start',
70
+ gap: orientation === 'horizontal' ? 1 : 0,
71
+ }}
72
+ data-testid={dataTestId || 'description-item'}
73
+ >
74
+ <Text
75
+ variant="caption"
76
+ size="xs"
77
+ color="secondary"
78
+ style={{
79
+ textTransform: 'uppercase',
80
+ marginBottom: orientation === 'vertical' ? '0.25rem' : 0,
81
+ minWidth: orientation === 'horizontal' ? 'fit-content' : undefined,
82
+ flexShrink: orientation === 'horizontal' ? 0 : undefined,
83
+ }}
84
+ data-testid={dataTestId ? `${dataTestId}-label` : 'description-item-label'}
85
+ >
86
+ {label}
87
+ </Text>
88
+ <Box data-testid={dataTestId ? `${dataTestId}-value` : 'description-item-value'}>
89
+ {typeof value === 'string' || typeof value === 'number' ? (
90
+ <Text variant="body" size="sm" weight="semibold">
91
+ {value}
92
+ </Text>
93
+ ) : (
94
+ value
95
+ )}
96
+ </Box>
97
+ </Box>
98
+ );
99
+
100
+ DescriptionItem.displayName = 'DescriptionItem';
@@ -0,0 +1 @@
1
+ export type { DescriptionItemProps } from './DescriptionItem';
@@ -0,0 +1,2 @@
1
+ export { DescriptionItem } from './DescriptionItem';
2
+ export type { DescriptionItemProps } from './DescriptionItem.types';
@@ -0,0 +1,265 @@
1
+ # EmptyState Component
2
+
3
+ **Purpose:** Friendly placeholder for "no data / no results / error" with illustration and actions.
4
+
5
+ ```ts
6
+ interface EmptyStateProps {
7
+ variant?: 'default' | 'illustrated' | 'minimal' | 'action';
8
+ title: string;
9
+ description?: string;
10
+ illustration?: React.ReactNode; // SVG/Lottie/etc
11
+ primaryAction?: { label: string; onClick: () => void };
12
+ secondaryAction?: { label: string; onClick: () => void };
13
+ helpLink?: { label: string; href: string; external?: boolean };
14
+ className?: string;
15
+ dataTestId?: string;
16
+ }
17
+ ```
18
+
19
+ **Features**
20
+
21
+ - Clear title + optional description and help link.
22
+ - Optional illustration area sized responsively.
23
+ - Action variant surfaces primary/secondary CTAs.
24
+
25
+ **A11y**
26
+
27
+ - Wrap in `role="region"` with `aria-labelledby` to the title id.
28
+ - Provide `alt` text for non-decorative illustrations.
29
+
30
+ **Stories / Tests**
31
+
32
+ - No Results; No Permissions; Network Error; With Actions; Illustrated vs Minimal.
33
+
34
+ ## Testing
35
+
36
+ ### Test IDs
37
+
38
+ All test IDs follow a hierarchical pattern. If `dataTestId` prop is provided, it becomes the prefix for all child test IDs. Otherwise, default IDs are used.
39
+
40
+ | Element | Default Test ID | With Custom dataTestId |
41
+ |---------|----------------|----------------------|
42
+ | Container | `empty-state` | `{dataTestId}` |
43
+ | Icon/Illustration | `empty-state-icon` | `{dataTestId}-icon` |
44
+ | Title | `empty-state-title` | `{dataTestId}-title` |
45
+ | Description | `empty-state-description` | `{dataTestId}-description` |
46
+ | Primary Action Button | `empty-state-primary-action` | `{dataTestId}-primary-action` |
47
+ | Secondary Action Button | `empty-state-secondary-action` | `{dataTestId}-secondary-action` |
48
+ | Help Link | `empty-state-help-link` | `{dataTestId}-help-link` |
49
+
50
+ ### Testing Best Practices
51
+
52
+ #### 1. **Structural Testing**
53
+ ```typescript
54
+ // Verify component renders with required elements
55
+ const container = screen.getByTestId('empty-state');
56
+ expect(container).toBeInTheDocument();
57
+
58
+ const title = screen.getByTestId('empty-state-title');
59
+ expect(title).toHaveTextContent('No Results Found');
60
+ ```
61
+
62
+ #### 2. **Conditional Rendering**
63
+ ```typescript
64
+ // Test with description
65
+ const description = screen.queryByTestId('empty-state-description');
66
+ expect(description).toBeInTheDocument();
67
+
68
+ // Test without description
69
+ const noDescription = screen.queryByTestId('empty-state-description');
70
+ expect(noDescription).not.toBeInTheDocument();
71
+ ```
72
+
73
+ #### 3. **Action Button Testing**
74
+ ```typescript
75
+ const primaryButton = screen.getByTestId('empty-state-primary-action');
76
+ await userEvent.click(primaryButton);
77
+ expect(mockOnClick).toHaveBeenCalledTimes(1);
78
+ ```
79
+
80
+ #### 4. **Custom Test IDs**
81
+ ```typescript
82
+ // Use custom dataTestId for multiple instances
83
+ <EmptyState
84
+ dataTestId="search-empty"
85
+ title="No Results"
86
+ />
87
+
88
+ const searchEmpty = screen.getByTestId('search-empty');
89
+ const searchTitle = screen.getByTestId('search-empty-title');
90
+ ```
91
+
92
+ ### Common Test Scenarios
93
+
94
+ #### Scenario 1: No Results State
95
+ ```typescript
96
+ it('should display no results state with illustration', () => {
97
+ render(
98
+ <EmptyState
99
+ variant="illustrated"
100
+ title="No Results Found"
101
+ description="Try adjusting your search criteria"
102
+ illustration={<SearchIcon />}
103
+ dataTestId="no-results"
104
+ />
105
+ );
106
+
107
+ expect(screen.getByTestId('no-results-title')).toHaveTextContent('No Results Found');
108
+ expect(screen.getByTestId('no-results-description')).toHaveTextContent('Try adjusting your search criteria');
109
+ expect(screen.getByTestId('no-results-icon')).toBeInTheDocument();
110
+ });
111
+ ```
112
+
113
+ #### Scenario 2: Error State with Action
114
+ ```typescript
115
+ it('should display error state with retry action', async () => {
116
+ const handleRetry = vi.fn();
117
+
118
+ render(
119
+ <EmptyState
120
+ title="Something went wrong"
121
+ description="We couldn't load your data"
122
+ primaryAction={{ label: 'Retry', onClick: handleRetry }}
123
+ dataTestId="error-state"
124
+ />
125
+ );
126
+
127
+ const retryButton = screen.getByTestId('error-state-primary-action');
128
+ expect(retryButton).toHaveTextContent('Retry');
129
+
130
+ await userEvent.click(retryButton);
131
+ expect(handleRetry).toHaveBeenCalledTimes(1);
132
+ });
133
+ ```
134
+
135
+ #### Scenario 3: Permission Denied with Help Link
136
+ ```typescript
137
+ it('should display permission denied with help link', () => {
138
+ render(
139
+ <EmptyState
140
+ title="Access Denied"
141
+ description="You don't have permission to view this content"
142
+ helpLink={{
143
+ label: 'Request Access',
144
+ href: '/request-access',
145
+ external: false
146
+ }}
147
+ dataTestId="access-denied"
148
+ />
149
+ );
150
+
151
+ const helpLink = screen.getByTestId('access-denied-help-link');
152
+ expect(helpLink).toHaveAttribute('href', '/request-access');
153
+ expect(helpLink).not.toHaveAttribute('target', '_blank');
154
+ });
155
+ ```
156
+
157
+ #### Scenario 4: Empty State with Multiple Actions
158
+ ```typescript
159
+ it('should display both primary and secondary actions', async () => {
160
+ const handleCreate = vi.fn();
161
+ const handleImport = vi.fn();
162
+
163
+ render(
164
+ <EmptyState
165
+ variant="action"
166
+ title="No Items Yet"
167
+ description="Get started by creating or importing items"
168
+ primaryAction={{ label: 'Create New', onClick: handleCreate }}
169
+ secondaryAction={{ label: 'Import', onClick: handleImport }}
170
+ dataTestId="no-items"
171
+ />
172
+ );
173
+
174
+ const createButton = screen.getByTestId('no-items-primary-action');
175
+ const importButton = screen.getByTestId('no-items-secondary-action');
176
+
177
+ await userEvent.click(createButton);
178
+ expect(handleCreate).toHaveBeenCalledTimes(1);
179
+
180
+ await userEvent.click(importButton);
181
+ expect(handleImport).toHaveBeenCalledTimes(1);
182
+ });
183
+ ```
184
+
185
+ #### Scenario 5: External Help Link
186
+ ```typescript
187
+ it('should open external help link in new tab', () => {
188
+ render(
189
+ <EmptyState
190
+ title="Need Help?"
191
+ helpLink={{
192
+ label: 'View Documentation',
193
+ href: 'https://docs.example.com',
194
+ external: true
195
+ }}
196
+ dataTestId="help-state"
197
+ />
198
+ );
199
+
200
+ const link = screen.getByTestId('help-state-help-link');
201
+ expect(link).toHaveAttribute('href', 'https://docs.example.com');
202
+ expect(link).toHaveAttribute('target', '_blank');
203
+ expect(link).toHaveAttribute('rel', 'noopener noreferrer');
204
+ expect(link).toHaveTextContent('View Documentation ↗');
205
+ });
206
+ ```
207
+
208
+ #### Scenario 6: Minimal Variant (No Icon)
209
+ ```typescript
210
+ it('should not display icon in minimal variant', () => {
211
+ render(
212
+ <EmptyState
213
+ variant="minimal"
214
+ title="Nothing Here"
215
+ illustration={<Icon />}
216
+ dataTestId="minimal-state"
217
+ />
218
+ );
219
+
220
+ const icon = screen.queryByTestId('minimal-state-icon');
221
+ expect(icon).toHaveStyle({ display: 'none' });
222
+ });
223
+ ```
224
+
225
+ ### Accessibility Testing
226
+
227
+ #### 1. **Semantic Structure**
228
+ ```typescript
229
+ it('should have proper ARIA attributes', () => {
230
+ render(<EmptyState title="No Data" dataTestId="a11y-test" />);
231
+
232
+ const container = screen.getByTestId('a11y-test');
233
+ expect(container).toHaveAttribute('role', 'region');
234
+ expect(container).toHaveAttribute('aria-labelledby');
235
+ });
236
+ ```
237
+
238
+ #### 2. **Keyboard Navigation**
239
+ ```typescript
240
+ it('should support keyboard navigation for actions', async () => {
241
+ const handleAction = vi.fn();
242
+
243
+ render(
244
+ <EmptyState
245
+ title="Empty"
246
+ primaryAction={{ label: 'Action', onClick: handleAction }}
247
+ dataTestId="keyboard-test"
248
+ />
249
+ );
250
+
251
+ const button = screen.getByTestId('keyboard-test-primary-action');
252
+ button.focus();
253
+
254
+ await userEvent.keyboard('{Enter}');
255
+ expect(handleAction).toHaveBeenCalledTimes(1);
256
+ });
257
+ ```
258
+
259
+ ### Integration Testing Tips
260
+
261
+ 1. **Multiple Instances**: Use unique `dataTestId` props when rendering multiple EmptyState components
262
+ 2. **Conditional Rendering**: Always use `queryByTestId` for elements that may not be present
263
+ 3. **User Interactions**: Use `@testing-library/user-event` for realistic user interactions
264
+ 4. **Async Actions**: Properly await user events and action callbacks
265
+ 5. **Snapshot Testing**: Consider snapshots for different variants to catch unintended visual changes