@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,265 @@
1
+ import type { Theme} from '@mui/material';
2
+ import { alpha, keyframes,ToggleButton } from '@mui/material';
3
+ import { styled } from '@mui/material/styles';
4
+ import React, { forwardRef } from 'react';
5
+
6
+ import type { ToggleProps } from './Toggle.types';
7
+
8
+ const glowAnimation = keyframes`
9
+ 0% { box-shadow: 0 0 5px currentColor; }
10
+ 50% { box-shadow: 0 0 15px currentColor, 0 0 25px currentColor; }
11
+ 100% { box-shadow: 0 0 5px currentColor; }
12
+ `;
13
+
14
+ // Ripple animation - reserved for future use
15
+ // const rippleAnimation = keyframes`
16
+ // 0% {
17
+ // transform: scale(0);
18
+ // opacity: 1;
19
+ // }
20
+ // 100% {
21
+ // transform: scale(4);
22
+ // opacity: 0;
23
+ // }
24
+ // `;
25
+
26
+ const floatAnimation = keyframes`
27
+ 0%, 100% { transform: translateY(0px); }
28
+ 50% { transform: translateY(-2px); }
29
+ `;
30
+
31
+ const getColorFromTheme = (theme: Theme, color: string) => {
32
+ if (color === 'neutral') {
33
+ return {
34
+ main: theme.palette.grey?.[700] || '#616161',
35
+ dark: theme.palette.grey?.[800] || '#424242',
36
+ light: theme.palette.grey?.[500] || '#9e9e9e',
37
+ contrastText: '#fff',
38
+ };
39
+ }
40
+
41
+ const colorMap: Record<string, typeof theme.palette.primary> = {
42
+ primary: theme.palette.primary,
43
+ secondary: theme.palette.secondary,
44
+ success: theme.palette.success,
45
+ warning: theme.palette.warning,
46
+ danger: theme.palette.error,
47
+ };
48
+
49
+ const palette = colorMap[color] || theme.palette.primary;
50
+
51
+ // Ensure palette has required properties
52
+ return {
53
+ main: palette?.main || theme.palette.primary.main,
54
+ dark: palette?.dark || palette?.main || theme.palette.primary.dark,
55
+ light: palette?.light || palette?.main || theme.palette.primary.light,
56
+ contrastText: palette?.contrastText || '#fff',
57
+ };
58
+ };
59
+
60
+ const StyledToggle = styled(ToggleButton, {
61
+ shouldForwardProp: (prop) =>
62
+ !['customVariant', 'customColor', 'customSize', 'glow', 'glass', 'gradient'].includes(
63
+ prop as string,
64
+ ),
65
+ })<{
66
+ customVariant?: string;
67
+ customColor?: string;
68
+ customSize?: string;
69
+ glow?: boolean;
70
+ glass?: boolean;
71
+ gradient?: boolean;
72
+ }>(({
73
+ theme,
74
+ customVariant,
75
+ customColor = 'primary',
76
+ customSize = 'md',
77
+ glow,
78
+ glass,
79
+ gradient,
80
+ }) => {
81
+ const colorPalette = getColorFromTheme(theme, customColor);
82
+
83
+ const sizeMap = {
84
+ xs: { padding: '4px 8px', fontSize: '0.75rem' },
85
+ sm: { padding: '6px 12px', fontSize: '0.875rem' },
86
+ md: { padding: '8px 16px', fontSize: '1rem' },
87
+ lg: { padding: '10px 20px', fontSize: '1.125rem' },
88
+ xl: { padding: '12px 24px', fontSize: '1.25rem' },
89
+ };
90
+
91
+ const baseStyles = {
92
+ textTransform: 'none' as const,
93
+ fontWeight: 500,
94
+ borderRadius: theme.spacing(1),
95
+ transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',
96
+ border: `2px solid ${alpha(theme.palette.divider, 0.3)}`,
97
+ color: theme.palette.text.primary,
98
+ backgroundColor: 'transparent',
99
+ position: 'relative' as const,
100
+ overflow: 'hidden' as const,
101
+
102
+ '&::before': {
103
+ content: '""',
104
+ position: 'absolute',
105
+ top: '50%',
106
+ left: '50%',
107
+ width: 0,
108
+ height: 0,
109
+ borderRadius: '50%',
110
+ backgroundColor: alpha(colorPalette.main, 0.2),
111
+ transform: 'translate(-50%, -50%)',
112
+ transition: 'width 0.4s, height 0.4s',
113
+ },
114
+
115
+ '&:hover': {
116
+ backgroundColor: alpha(colorPalette.main, 0.08),
117
+ borderColor: colorPalette.main,
118
+ transform: 'translateY(-1px)',
119
+ boxShadow: `0 4px 8px ${alpha(colorPalette.main, 0.15)}`,
120
+ animation: `${floatAnimation} 2s ease-in-out infinite`,
121
+
122
+ '&::before': {
123
+ width: '100%',
124
+ height: '100%',
125
+ },
126
+ },
127
+
128
+ '&:active': {
129
+ transform: 'scale(0.98)',
130
+ },
131
+
132
+ '&.Mui-selected': {
133
+ backgroundColor: colorPalette.main,
134
+ color: colorPalette.contrastText || '#fff',
135
+ borderColor: colorPalette.main,
136
+ boxShadow: `0 2px 8px ${alpha(colorPalette.main, 0.3)}`,
137
+
138
+ '&::after': {
139
+ content: '""',
140
+ position: 'absolute',
141
+ top: 0,
142
+ left: 0,
143
+ right: 0,
144
+ bottom: 0,
145
+ background: `linear-gradient(135deg, transparent, ${alpha('#fff', 0.1)})`,
146
+ pointerEvents: 'none',
147
+ },
148
+
149
+ '&:hover': {
150
+ backgroundColor: colorPalette.dark,
151
+ transform: 'translateY(-2px) scale(1.02)',
152
+ boxShadow: `0 6px 20px ${alpha(colorPalette.main, 0.4)}`,
153
+ },
154
+ },
155
+
156
+ ...sizeMap[customSize as keyof typeof sizeMap],
157
+ };
158
+
159
+ const variantStyles = {
160
+ ...(customVariant === 'outline' && {
161
+ backgroundColor: 'transparent',
162
+ border: `2px solid ${colorPalette.main}`,
163
+ color: colorPalette.main,
164
+
165
+ '&.Mui-selected': {
166
+ backgroundColor: colorPalette.main,
167
+ color: colorPalette.contrastText || '#fff',
168
+ },
169
+ }),
170
+
171
+ ...(customVariant === 'soft' && {
172
+ backgroundColor: alpha(colorPalette.main, 0.1),
173
+ border: 'none',
174
+ color: colorPalette.main,
175
+
176
+ '&.Mui-selected': {
177
+ backgroundColor: alpha(colorPalette.main, 0.2),
178
+ color: colorPalette.main,
179
+ },
180
+ }),
181
+ };
182
+
183
+ const effectStyles = {
184
+ ...(glass && {
185
+ backgroundColor: alpha(theme.palette.background.paper, 0.1),
186
+ backdropFilter: 'blur(20px)',
187
+ border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,
188
+ }),
189
+
190
+ ...(gradient && {
191
+ '&.Mui-selected': {
192
+ background: `linear-gradient(135deg, ${colorPalette.light}, ${colorPalette.main}, ${colorPalette.dark})`,
193
+ backgroundSize: '200% 200%',
194
+ animation: `${floatAnimation} 3s ease-in-out infinite`,
195
+ border: 'none',
196
+
197
+ '&:hover': {
198
+ backgroundPosition: '100% 100%',
199
+ },
200
+ },
201
+ }),
202
+
203
+ ...(glow && {
204
+ '&.Mui-selected': {
205
+ animation: `${glowAnimation} 2s ease-in-out infinite`,
206
+ boxShadow: `0 0 15px ${alpha(colorPalette.main, 0.6)}`,
207
+ },
208
+ }),
209
+ };
210
+
211
+ return {
212
+ ...baseStyles,
213
+ ...variantStyles,
214
+ ...effectStyles,
215
+ };
216
+ });
217
+
218
+ export const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(
219
+ (
220
+ {
221
+ variant = 'default',
222
+ color = 'primary',
223
+ size = 'md',
224
+ icon,
225
+ glow = false,
226
+ glass = false,
227
+ gradient = false,
228
+ dataTestId,
229
+ children,
230
+ ...props
231
+ },
232
+ ref,
233
+ ) => {
234
+ const testIds = {
235
+ container: dataTestId,
236
+ icon: dataTestId ? `${dataTestId}-icon` : undefined,
237
+ };
238
+
239
+ return (
240
+ <StyledToggle
241
+ ref={ref}
242
+ customVariant={variant}
243
+ customColor={color}
244
+ customSize={size}
245
+ glow={glow}
246
+ glass={glass}
247
+ gradient={gradient}
248
+ data-testid={testIds.container}
249
+ {...props}
250
+ >
251
+ {icon && (
252
+ <span
253
+ style={{ marginRight: children ? '8px' : '0' }}
254
+ data-testid={testIds.icon}
255
+ >
256
+ {icon}
257
+ </span>
258
+ )}
259
+ {children}
260
+ </StyledToggle>
261
+ );
262
+ },
263
+ );
264
+
265
+ Toggle.displayName = 'Toggle';
@@ -0,0 +1,79 @@
1
+ import type { ToggleButtonProps } from '@mui/material';
2
+ import type React from 'react';
3
+
4
+ export interface ToggleProps extends Omit<ToggleButtonProps, 'color' | 'size'> {
5
+ /**
6
+ * The variant of the toggle
7
+ */
8
+ variant?: 'default' | 'outline' | 'soft';
9
+
10
+ /**
11
+ * The color theme of the toggle
12
+ */
13
+ color?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'neutral';
14
+
15
+ /**
16
+ * The size of the toggle
17
+ */
18
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
19
+
20
+ /**
21
+ * Icon for the toggle
22
+ */
23
+ icon?: React.ReactNode;
24
+
25
+ /**
26
+ * Whether the toggle should have a glow effect
27
+ */
28
+ glow?: boolean;
29
+
30
+ /**
31
+ * Whether the toggle should have glass morphism effect
32
+ */
33
+ glass?: boolean;
34
+
35
+ /**
36
+ * Whether the toggle should have gradient effects
37
+ */
38
+ gradient?: boolean;
39
+
40
+ /**
41
+ * Whether the toggle is in loading state
42
+ */
43
+ loading?: boolean;
44
+
45
+ /**
46
+ * Whether to show ripple effect
47
+ */
48
+ ripple?: boolean;
49
+
50
+ /**
51
+ * Whether the toggle should have pulse animation
52
+ */
53
+ pulse?: boolean;
54
+
55
+ /**
56
+ * Click handler
57
+ */
58
+ onClick?: (event: React.MouseEvent<HTMLElement>, value: string | number | undefined) => void;
59
+
60
+ /**
61
+ * Focus handler
62
+ */
63
+ onFocus?: React.FocusEventHandler<HTMLButtonElement>;
64
+
65
+ /**
66
+ * Blur handler
67
+ */
68
+ onBlur?: React.FocusEventHandler<HTMLButtonElement>;
69
+
70
+ /**
71
+ * Change handler
72
+ */
73
+ onChange?: (event: React.MouseEvent<HTMLElement>, value: string | number | undefined) => void;
74
+
75
+ /**
76
+ * Test ID for the toggle button (applied via data-testid)
77
+ */
78
+ dataTestId?: string;
79
+ }
@@ -0,0 +1,2 @@
1
+ export { Toggle } from './Toggle';
2
+ export type { ToggleProps } from './Toggle.types';
@@ -0,0 +1,329 @@
1
+ # ToggleGroup Component
2
+
3
+ A flexible toggle button group component that allows single or multiple selection from a set of options. Built on top of MUI's ToggleButtonGroup with enhanced styling and additional features.
4
+
5
+ ## Purpose
6
+
7
+ The ToggleGroup component is ideal for:
8
+
9
+ - Allowing users to select from mutually exclusive options (single selection)
10
+ - Enabling multiple selections from a group of related options
11
+ - Creating tool bars with toggle functionality (text formatting, alignment, etc.)
12
+ - Building interface controls that require on/off states for multiple items
13
+
14
+ ## Features
15
+
16
+ - **Multiple Selection Modes**: Single, multiple, or exclusive selection
17
+ - **Rich Options**: Support for icons, labels, and disabled states
18
+ - **Visual Effects**: Glass morphism, gradient, and glow effects
19
+ - **Responsive Sizing**: Five size variants (xs, sm, md, lg, xl)
20
+ - **Theme Integration**: Six color themes with consistent styling
21
+ - **Accessibility**: Full keyboard navigation and screen reader support
22
+
23
+ ## Props
24
+
25
+ ### Core Props
26
+
27
+ | Prop | Type | Default | Description |
28
+ | --------- | ----------------------------------------------------------------------------- | ----------- | ---------------------------------- |
29
+ | `options` | `ToggleOption[]` | - | Array of toggle options to display |
30
+ | `variant` | `'single' \| 'multiple' \| 'exclusive'` | `'single'` | Selection behavior mode |
31
+ | `color` | `'primary' \| 'secondary' \| 'success' \| 'warning' \| 'danger' \| 'neutral'` | `'primary'` | Color theme |
32
+ | `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | `'md'` | Component size |
33
+
34
+ ### Visual Enhancement Props
35
+
36
+ | Prop | Type | Default | Description |
37
+ | ---------- | --------- | ------- | ----------------------------------- |
38
+ | `glow` | `boolean` | `false` | Adds subtle glow effect |
39
+ | `glass` | `boolean` | `false` | Applies glass morphism styling |
40
+ | `gradient` | `boolean` | `false` | Enables gradient background effects |
41
+
42
+ ### ToggleOption Interface
43
+
44
+ ```typescript
45
+ interface ToggleOption {
46
+ value: string; // Unique identifier for the option
47
+ label: string; // Display text for the option
48
+ icon?: ReactNode; // Optional icon to display
49
+ disabled?: boolean; // Whether the option is disabled
50
+ }
51
+ ```
52
+
53
+ ## Usage Examples
54
+
55
+ ### Basic Usage
56
+
57
+ ```tsx
58
+ import { ToggleGroup } from '@procurement/ui';
59
+
60
+ const alignOptions = [
61
+ { value: 'left', label: 'Left' },
62
+ { value: 'center', label: 'Center' },
63
+ { value: 'right', label: 'Right' },
64
+ ];
65
+
66
+ function BasicExample() {
67
+ const [value, setValue] = useState('');
68
+
69
+ return (
70
+ <ToggleGroup
71
+ options={alignOptions}
72
+ value={value}
73
+ onChange={(event, newValue) => setValue(newValue || '')}
74
+ />
75
+ );
76
+ }
77
+ ```
78
+
79
+ ### Multiple Selection
80
+
81
+ ```tsx
82
+ const formatOptions = [
83
+ { value: 'bold', label: 'Bold', icon: <Bold size={16} /> },
84
+ { value: 'italic', label: 'Italic', icon: <Italic size={16} /> },
85
+ { value: 'underline', label: 'Underline', icon: <Underline size={16} /> },
86
+ ];
87
+
88
+ function MultipleExample() {
89
+ const [values, setValues] = useState(['bold']);
90
+
91
+ return (
92
+ <ToggleGroup
93
+ variant="multiple"
94
+ options={formatOptions}
95
+ value={values}
96
+ onChange={(event, newValues) => setValues(newValues || [])}
97
+ color="secondary"
98
+ />
99
+ );
100
+ }
101
+ ```
102
+
103
+ ### With Visual Effects
104
+
105
+ ```tsx
106
+ function StyledExample() {
107
+ const [theme, setTheme] = useState('light');
108
+
109
+ return (
110
+ <ToggleGroup
111
+ glass
112
+ gradient
113
+ glow
114
+ options={themeOptions}
115
+ value={theme}
116
+ onChange={(event, newTheme) => setTheme(newTheme || 'light')}
117
+ color="success"
118
+ size="lg"
119
+ />
120
+ );
121
+ }
122
+ ```
123
+
124
+ ## Selection Modes
125
+
126
+ ### Single Selection
127
+
128
+ - Default behavior
129
+ - Only one option can be selected at a time
130
+ - Clicking selected option deselects it
131
+ - Value type: `string | null`
132
+
133
+ ### Multiple Selection
134
+
135
+ - Multiple options can be selected simultaneously
136
+ - Clicking toggles individual options on/off
137
+ - Value type: `string[]`
138
+
139
+ ### Exclusive Selection
140
+
141
+ - Exactly one option must always be selected
142
+ - Clicking selected option does not deselect it
143
+ - Useful for required choices like themes or modes
144
+ - Value type: `string`
145
+
146
+ ## Accessibility
147
+
148
+ The ToggleGroup component follows WCAG guidelines:
149
+
150
+ - **Keyboard Navigation**: Full keyboard support with Tab, Space, and Enter keys
151
+ - **Screen Readers**: Proper ARIA attributes for group role and state announcements
152
+ - **Focus Management**: Clear focus indicators and logical tab order
153
+ - **High Contrast**: Respects system high contrast preferences
154
+ - **Touch Targets**: Minimum 44px touch targets for mobile accessibility
155
+
156
+ ## Best Practices
157
+
158
+ 1. **Option Labels**: Use clear, concise labels that describe the action or state
159
+ 2. **Icon Usage**: Combine icons with labels for better usability, use icons alone only for universally recognized actions
160
+ 3. **Group Size**: Limit to 2-8 options for optimal usability
161
+ 4. **Disabled States**: Provide clear visual feedback for disabled options
162
+ 5. **Loading States**: Handle loading scenarios gracefully with appropriate feedback
163
+ 6. **Responsive Design**: Test across different screen sizes and orientations
164
+
165
+ ## Testing
166
+
167
+ The ToggleGroup component includes comprehensive test support with data-testid attributes for reliable automated testing.
168
+
169
+ ### TestId Structure
170
+
171
+ The component uses a consistent pattern for testIds:
172
+
173
+ - **Container**: Uses the `dataTestId` prop value (default: `toggle-group`)
174
+ - **Toggle Items**: Format: `${dataTestId}-item-${option.value}`
175
+
176
+ ### Default TestIds
177
+
178
+ ```tsx
179
+ <ToggleGroup
180
+ options={[
181
+ { value: 'left', label: 'Left' },
182
+ { value: 'center', label: 'Center' },
183
+ { value: 'right', label: 'Right' },
184
+ ]}
185
+ />
186
+ ```
187
+
188
+ Generated testIds:
189
+ - Container: `toggle-group`
190
+ - Items: `toggle-group-item-left`, `toggle-group-item-center`, `toggle-group-item-right`
191
+
192
+ ### Custom TestIds
193
+
194
+ ```tsx
195
+ <ToggleGroup
196
+ options={alignOptions}
197
+ dataTestId="text-alignment"
198
+ />
199
+ ```
200
+
201
+ Generated testIds:
202
+ - Container: `text-alignment`
203
+ - Items: `text-alignment-item-left`, `text-alignment-item-center`, `text-alignment-item-right`
204
+
205
+ ### Testing with React Testing Library
206
+
207
+ ```tsx
208
+ import { render, screen } from '@testing-library/react';
209
+ import userEvent from '@testing-library/user-event';
210
+
211
+ test('should allow selection via testId', async () => {
212
+ const user = userEvent.setup();
213
+ const handleChange = vi.fn();
214
+
215
+ render(
216
+ <ToggleGroup
217
+ options={options}
218
+ onChange={handleChange}
219
+ dataTestId="my-toggle"
220
+ />
221
+ );
222
+
223
+ // Find container
224
+ const container = screen.getByTestId('my-toggle');
225
+ expect(container).toBeInTheDocument();
226
+
227
+ // Find and interact with specific item
228
+ const item = screen.getByTestId('my-toggle-item-left');
229
+ await user.click(item);
230
+
231
+ expect(handleChange).toHaveBeenCalled();
232
+ });
233
+ ```
234
+
235
+ ### Testing with Playwright
236
+
237
+ ```typescript
238
+ test('toggle selection', async ({ page }) => {
239
+ // Navigate to page with toggle group
240
+ await page.goto('/my-page');
241
+
242
+ // Find container
243
+ const toggleGroup = page.getByTestId('toggle-group');
244
+ await expect(toggleGroup).toBeVisible();
245
+
246
+ // Click specific toggle item
247
+ await page.getByTestId('toggle-group-item-center').click();
248
+
249
+ // Verify selection state
250
+ await expect(page.getByTestId('toggle-group-item-center')).toHaveAttribute('aria-pressed', 'true');
251
+ });
252
+ ```
253
+
254
+ ### Testing Multiple States
255
+
256
+ ```tsx
257
+ test('should handle multiple selection mode', async () => {
258
+ const user = userEvent.setup();
259
+
260
+ render(
261
+ <ToggleGroup
262
+ variant="multiple"
263
+ options={formatOptions}
264
+ dataTestId="format-toggle"
265
+ />
266
+ );
267
+
268
+ // Select multiple items
269
+ await user.click(screen.getByTestId('format-toggle-item-bold'));
270
+ await user.click(screen.getByTestId('format-toggle-item-italic'));
271
+
272
+ // Both should be selected
273
+ expect(screen.getByTestId('format-toggle-item-bold')).toHaveAttribute('aria-pressed', 'true');
274
+ expect(screen.getByTestId('format-toggle-item-italic')).toHaveAttribute('aria-pressed', 'true');
275
+ });
276
+ ```
277
+
278
+ ### Testing Disabled States
279
+
280
+ ```tsx
281
+ test('should respect disabled state', async () => {
282
+ const user = userEvent.setup();
283
+
284
+ render(
285
+ <ToggleGroup
286
+ options={[
287
+ { value: 'enabled', label: 'Enabled' },
288
+ { value: 'disabled', label: 'Disabled', disabled: true },
289
+ ]}
290
+ dataTestId="mixed-toggle"
291
+ />
292
+ );
293
+
294
+ const disabledItem = screen.getByTestId('mixed-toggle-item-disabled');
295
+ expect(disabledItem).toBeDisabled();
296
+
297
+ // Attempt to click disabled item
298
+ await user.click(disabledItem);
299
+
300
+ // Should remain unselected
301
+ expect(disabledItem).toHaveAttribute('aria-pressed', 'false');
302
+ });
303
+ ```
304
+
305
+ ### Best Practices for Testing
306
+
307
+ 1. **Use descriptive testIds**: Choose testIds that clearly identify the component's purpose
308
+ 2. **Test user interactions**: Verify click events, keyboard navigation, and state changes
309
+ 3. **Check accessibility**: Ensure proper ARIA attributes are present
310
+ 4. **Test edge cases**: Include tests for disabled states, empty options, and special characters
311
+ 5. **Verify visual states**: Test glass, gradient, and glow effects when applicable
312
+
313
+ ## Common Patterns
314
+
315
+ ### Toolbar Controls
316
+
317
+ Perfect for text editor toolbars, media controls, or any interface requiring multiple toggle states.
318
+
319
+ ### Settings Panels
320
+
321
+ Use exclusive mode for required settings like theme selection or display modes.
322
+
323
+ ### Filtering Interfaces
324
+
325
+ Multiple selection mode works well for filter controls where users can select multiple criteria.
326
+
327
+ ### Form Controls
328
+
329
+ Integration with form libraries for controlled form state management.