@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,633 @@
1
+ # AddressAutocomplete Component
2
+
3
+ A sophisticated address input component with Google Maps integration for autocomplete functionality. Provides structured address data with coordinates and supports different visual variants.
4
+
5
+ ## Features
6
+
7
+ - **Google Maps Integration**: Real-time address suggestions via Google Places API
8
+ - **Glass Morphism Effect**: Beautiful glass variant with blur and transparency
9
+ - **Current Location Support**: Optional button to use device's current location
10
+ - **Geographic Restrictions**: Limit results to specific countries or place types
11
+ - **Structured Data**: Returns complete address details including coordinates
12
+ - **Accessible**: Full keyboard navigation and screen reader support
13
+ - **Responsive**: Adapts to different screen sizes
14
+ - **Multiple Variants**: Glass, outlined, and filled styles
15
+
16
+ ## Usage
17
+
18
+ ```tsx
19
+ import { AddressAutocomplete } from '@procurement/ui';
20
+
21
+ function AddressForm() {
22
+ const handleAddressSelect = (address: AddressDetails) => {
23
+ console.log('Selected:', address);
24
+ // address contains: formatted, street, city, state, country, postalCode, coordinates
25
+ };
26
+
27
+ return (
28
+ <AddressAutocomplete
29
+ variant="outlined"
30
+ label="Delivery Address"
31
+ placeholder="Enter your address..."
32
+ googleMapsApiKey="your-api-key"
33
+ onSelect={handleAddressSelect}
34
+ getCurrentLocation
35
+ helperText="We'll deliver to this address"
36
+ />
37
+ );
38
+ }
39
+ ```
40
+
41
+ ## Props
42
+
43
+ | Prop | Type | Default | Description |
44
+ | ------------------- | ------------------------------------------- | ------------ | ----------------------------------------------------- |
45
+ | `variant` | `'glass' \| 'outlined' \| 'filled'` | `'outlined'` | Visual style variant |
46
+ | `label` | `string` | - | Input field label |
47
+ | `placeholder` | `string` | - | Placeholder text |
48
+ | `icon` | `ReactNode` | - | Custom icon for the input |
49
+ | `onSelect` | `(address: AddressDetails) => void` | **Required** | Callback when address is selected |
50
+ | `googleMapsApiKey` | `string` | **Required** | Google Maps API key |
51
+ | `floating` | `boolean` | `false` | Use floating label style |
52
+ | `restrictions` | `{ country?: string[], types?: string[] }` | - | Geographic/type restrictions |
53
+ | `error` | `boolean` | `false` | Show error state |
54
+ | `helperText` | `string` | - | Helper text below input |
55
+ | `disabled` | `boolean` | `false` | Disable the input |
56
+ | `required` | `boolean` | `false` | Mark as required field |
57
+ | `fullWidth` | `boolean` | `false` | Take full container width |
58
+ | `defaultValue` | `string` | - | Initial input value |
59
+ | `getCurrentLocation`| `boolean` | `false` | Show current location button |
60
+
61
+ ## AddressDetails Type
62
+
63
+ ```typescript
64
+ interface AddressDetails {
65
+ formatted: string; // Full formatted address
66
+ street: string; // Street name and number
67
+ city: string; // City name
68
+ state: string; // State/Province
69
+ country: string; // Country name
70
+ postalCode: string; // ZIP/Postal code
71
+ coordinates: {
72
+ lat: number; // Latitude
73
+ lng: number; // Longitude
74
+ };
75
+ }
76
+ ```
77
+
78
+ ## Examples
79
+
80
+ ### Basic Usage
81
+
82
+ ```tsx
83
+ <AddressAutocomplete
84
+ label="Address"
85
+ placeholder="Enter address..."
86
+ googleMapsApiKey="your-key"
87
+ onSelect={(address) => console.log(address)}
88
+ />
89
+ ```
90
+
91
+ ### Glass Variant with Current Location
92
+
93
+ ```tsx
94
+ <AddressAutocomplete
95
+ variant="glass"
96
+ label="Location"
97
+ getCurrentLocation
98
+ googleMapsApiKey="your-key"
99
+ onSelect={handleSelect}
100
+ />
101
+ ```
102
+
103
+ ### Restricted to US Addresses
104
+
105
+ ```tsx
106
+ <AddressAutocomplete
107
+ label="US Address"
108
+ restrictions={{ country: ['us'] }}
109
+ googleMapsApiKey="your-key"
110
+ onSelect={handleSelect}
111
+ helperText="Only US addresses allowed"
112
+ />
113
+ ```
114
+
115
+ ### Business Locations Only
116
+
117
+ ```tsx
118
+ <AddressAutocomplete
119
+ label="Business Location"
120
+ icon={<BusinessIcon />}
121
+ restrictions={{ types: ['establishment'] }}
122
+ googleMapsApiKey="your-key"
123
+ onSelect={handleSelect}
124
+ />
125
+ ```
126
+
127
+ ### With Form Validation
128
+
129
+ ```tsx
130
+ <AddressAutocomplete
131
+ label="Required Address"
132
+ required
133
+ error={hasError}
134
+ helperText={errorMessage}
135
+ googleMapsApiKey="your-key"
136
+ onSelect={handleSelect}
137
+ />
138
+ ```
139
+
140
+ ## Accessibility
141
+
142
+ - Full keyboard navigation support
143
+ - Proper ARIA labels and roles
144
+ - Screen reader announcements for suggestions
145
+ - Focus management for dropdown
146
+ - Support for Tab, Arrow keys, Enter, and Escape
147
+
148
+ ## Best Practices
149
+
150
+ 1. **API Key Security**: Store Google Maps API key in environment variables
151
+ 2. **Error Handling**: Implement proper error handling for API failures
152
+ 3. **Loading States**: Show loading indicator while fetching suggestions
153
+ 4. **Validation**: Validate selected address before form submission
154
+ 5. **Restrictions**: Use geographic restrictions to improve relevance
155
+ 6. **Debouncing**: Component internally debounces API calls
156
+
157
+ ## Notes
158
+
159
+ - Requires valid Google Maps API key with Places API enabled
160
+ - Component handles API rate limiting internally
161
+ - Suggestions are debounced to minimize API calls
162
+ - Supports both residential and commercial addresses
163
+ - Coordinates are provided for mapping integrations
164
+
165
+ ## Testing
166
+
167
+ This section describes all `data-testid` attributes available in the AddressAutocomplete component for testing purposes.
168
+
169
+ ### Test IDs
170
+
171
+ #### Container Elements
172
+
173
+ ##### `address-autocomplete-container`
174
+ - **Element:** Main AddressAutocomplete container
175
+ - **Location:** Root Box element that wraps the entire component
176
+ - **Usage:** Query the main container to verify AddressAutocomplete is rendered
177
+ ```typescript
178
+ const container = await canvas.findByTestId('address-autocomplete-container');
179
+ expect(container).toBeInTheDocument();
180
+ ```
181
+
182
+ ##### `address-suggestions-dropdown`
183
+ - **Element:** Dropdown/popover containing address suggestions
184
+ - **Location:** Paper component that wraps all suggestion items
185
+ - **Usage:** Query the suggestions dropdown to verify it's visible when searching
186
+ ```typescript
187
+ const dropdown = await canvas.findByTestId('address-suggestions-dropdown');
188
+ expect(dropdown).toBeInTheDocument();
189
+ ```
190
+
191
+ #### Input Elements
192
+
193
+ ##### `address-input`
194
+ - **Element:** Main text input field for address entry
195
+ - **Location:** Input element within the TextField/Autocomplete
196
+ - **Usage:** Query input to type addresses and trigger suggestions
197
+ ```typescript
198
+ const input = await canvas.findByTestId('address-input');
199
+ await userEvent.type(input, '123 Main Street');
200
+ expect(input).toHaveValue('123 Main Street');
201
+ ```
202
+
203
+ #### Suggestion Elements
204
+
205
+ ##### `address-suggestion-${index}`
206
+ - **Element:** Individual suggestion item in dropdown
207
+ - **Location:** Each `<li>` element in the suggestions list
208
+ - **Usage:** Query specific suggestion by index to interact with it
209
+ ```typescript
210
+ // Get first suggestion
211
+ const firstSuggestion = await canvas.findByTestId('address-suggestion-0');
212
+ await userEvent.click(firstSuggestion);
213
+
214
+ // Get all suggestions
215
+ const suggestions = await canvas.findAllByTestId(/address-suggestion-/);
216
+ expect(suggestions).toHaveLength(5);
217
+ ```
218
+
219
+ ##### `address-selected`
220
+ - **Element:** Selected/displayed address text container
221
+ - **Location:** AddressText component within each suggestion item
222
+ - **Usage:** Query to verify address formatting and content
223
+ ```typescript
224
+ const addressText = await canvas.findByTestId('address-selected');
225
+ expect(addressText).toBeInTheDocument();
226
+ ```
227
+
228
+ #### Loading & Action Elements
229
+
230
+ ##### `address-loading`
231
+ - **Element:** Loading spinner indicator
232
+ - **Location:** CircularProgress component shown during API requests
233
+ - **Usage:** Query to verify loading state during address search
234
+ ```typescript
235
+ // Check if loading indicator appears
236
+ const loading = canvas.queryByTestId('address-loading');
237
+ if (loading) {
238
+ expect(loading).toBeInTheDocument();
239
+ }
240
+ ```
241
+
242
+ ##### `address-current-location-button`
243
+ - **Element:** Current location button (when enabled)
244
+ - **Location:** IconButton in the input's end adornment
245
+ - **Usage:** Query and click to trigger geolocation functionality
246
+ ```typescript
247
+ const locationButton = await canvas.findByTestId('address-current-location-button');
248
+ await userEvent.click(locationButton);
249
+ ```
250
+
251
+ ### Test Patterns
252
+
253
+ #### Wait for Component to Render
254
+ ```typescript
255
+ import { waitFor, within } from 'storybook/test';
256
+
257
+ // Wait for container
258
+ const container = await canvas.findByTestId('address-autocomplete-container');
259
+
260
+ // Wait for input to be ready
261
+ const input = await canvas.findByTestId('address-input');
262
+ expect(input).toBeEnabled();
263
+ ```
264
+
265
+ #### Type and Trigger Suggestions
266
+ ```typescript
267
+ const input = await canvas.findByTestId('address-input');
268
+
269
+ // Type to trigger autocomplete (minimum 3 characters)
270
+ await userEvent.type(input, '123 main');
271
+
272
+ // Wait for suggestions to appear
273
+ await waitFor(async () => {
274
+ const dropdown = await canvas.findByTestId('address-suggestions-dropdown');
275
+ expect(dropdown).toBeInTheDocument();
276
+ }, { timeout: 2000 });
277
+
278
+ // Get all suggestions
279
+ const suggestions = await canvas.findAllByTestId(/address-suggestion-/);
280
+ expect(suggestions.length).toBeGreaterThan(0);
281
+ ```
282
+
283
+ #### Select an Address
284
+ ```typescript
285
+ const input = await canvas.findByTestId('address-input');
286
+ await userEvent.type(input, 'main street');
287
+
288
+ // Wait for suggestions
289
+ await waitFor(async () => {
290
+ const suggestions = await canvas.findAllByTestId(/address-suggestion-/);
291
+ expect(suggestions.length).toBeGreaterThan(0);
292
+ }, { timeout: 2000 });
293
+
294
+ // Click first suggestion
295
+ const firstSuggestion = await canvas.findByTestId('address-suggestion-0');
296
+ await userEvent.click(firstSuggestion);
297
+
298
+ // Verify callback was called
299
+ expect(args.onSelect).toHaveBeenCalledWith(
300
+ expect.objectContaining({
301
+ formatted: expect.any(String),
302
+ street: expect.any(String),
303
+ coordinates: expect.objectContaining({
304
+ lat: expect.any(Number),
305
+ lng: expect.any(Number),
306
+ }),
307
+ })
308
+ );
309
+ ```
310
+
311
+ #### Test Loading State
312
+ ```typescript
313
+ const input = await canvas.findByTestId('address-input');
314
+ await userEvent.type(input, '123');
315
+
316
+ // Check for loading indicator
317
+ await waitFor(() => {
318
+ const loading = canvas.queryByTestId('address-loading');
319
+ expect(loading).toBeInTheDocument();
320
+ }, { timeout: 1000 });
321
+ ```
322
+
323
+ #### Use Current Location Feature
324
+ ```typescript
325
+ // Verify button is present when getCurrentLocation=true
326
+ const locationButton = await canvas.findByTestId('address-current-location-button');
327
+ expect(locationButton).toBeInTheDocument();
328
+
329
+ // Click to trigger geolocation
330
+ await userEvent.click(locationButton);
331
+
332
+ // Wait for location to be retrieved and address populated
333
+ await waitFor(() => {
334
+ const input = canvas.getByTestId('address-input');
335
+ expect(input.value).not.toBe('');
336
+ }, { timeout: 3000 });
337
+ ```
338
+
339
+ ### Props That Affect Test Behavior
340
+
341
+ #### `googleMapsApiKey`
342
+ - **Values:** `string` (use `'demo-key'` or `'test-key'` for mock data)
343
+ - **Impact:**
344
+ - Real API key: Uses Google Places API
345
+ - `'demo-key'` or `'test-key'`: Uses mock address data
346
+ - **Test Tip:** Always use demo/test keys in Storybook tests
347
+
348
+ #### `getCurrentLocation`
349
+ - **Values:** `boolean`
350
+ - **Impact:** Shows/hides current location button
351
+ - **Test Tip:** Use `findByTestId('address-current-location-button')` when true
352
+
353
+ #### `loading`
354
+ - **Values:** `boolean` (internal state)
355
+ - **Impact:** Shows loading spinner during API requests
356
+ - **Test Tip:** Mock delays may cause intermittent loading states
357
+
358
+ #### `disabled`
359
+ - **Values:** `boolean`
360
+ - **Impact:** Disables input and all interactions
361
+ - **Test Tip:** Check `input.disabled` property
362
+
363
+ #### `error`
364
+ - **Values:** `boolean`
365
+ - **Impact:** Shows error state styling on input
366
+ - **Test Tip:** Verify visual error state
367
+
368
+ #### `variant`
369
+ - **Values:** `'outlined' | 'filled' | 'standard' | 'glass'`
370
+ - **Impact:** Changes TextField styling
371
+ - **Test Tip:** `'glass'` variant applies special backdrop blur effects
372
+
373
+ ### Common Test Scenarios
374
+
375
+ #### 1. Basic Rendering Test
376
+ ```typescript
377
+ play: async ({ canvasElement }) => {
378
+ const canvas = within(canvasElement);
379
+
380
+ // Wait for component to render
381
+ const container = await canvas.findByTestId('address-autocomplete-container');
382
+ expect(container).toBeInTheDocument();
383
+
384
+ // Verify input is present
385
+ const input = await canvas.findByTestId('address-input');
386
+ expect(input).toBeInTheDocument();
387
+ }
388
+ ```
389
+
390
+ #### 2. Autocomplete Suggestions Test
391
+ ```typescript
392
+ play: async ({ canvasElement }) => {
393
+ const canvas = within(canvasElement);
394
+
395
+ const input = await canvas.findByTestId('address-input');
396
+
397
+ // Type to trigger suggestions
398
+ await userEvent.type(input, '123 main');
399
+
400
+ // Wait for suggestions dropdown
401
+ await waitFor(async () => {
402
+ const dropdown = await canvas.findByTestId('address-suggestions-dropdown');
403
+ expect(dropdown).toBeInTheDocument();
404
+ }, { timeout: 2000 });
405
+
406
+ // Verify suggestions are present
407
+ const suggestions = await canvas.findAllByTestId(/address-suggestion-/);
408
+ expect(suggestions.length).toBeGreaterThan(0);
409
+ }
410
+ ```
411
+
412
+ #### 3. Address Selection Test
413
+ ```typescript
414
+ play: async ({ canvasElement, args }) => {
415
+ const canvas = within(canvasElement);
416
+
417
+ const input = await canvas.findByTestId('address-input');
418
+ await userEvent.type(input, 'pine');
419
+
420
+ // Wait for suggestions
421
+ await waitFor(async () => {
422
+ const suggestions = await canvas.findAllByTestId(/address-suggestion-/);
423
+ expect(suggestions.length).toBeGreaterThan(0);
424
+ }, { timeout: 2000 });
425
+
426
+ // Click first suggestion
427
+ const firstSuggestion = await canvas.findByTestId('address-suggestion-0');
428
+ await userEvent.click(firstSuggestion);
429
+
430
+ // Verify onSelect callback
431
+ await waitFor(() => {
432
+ expect(args.onSelect).toHaveBeenCalledWith(
433
+ expect.objectContaining({
434
+ formatted: expect.stringContaining('Pine'),
435
+ coordinates: expect.any(Object),
436
+ })
437
+ );
438
+ });
439
+ }
440
+ ```
441
+
442
+ #### 4. Loading State Test
443
+ ```typescript
444
+ play: async ({ canvasElement }) => {
445
+ const canvas = within(canvasElement);
446
+
447
+ const input = await canvas.findByTestId('address-input');
448
+ await userEvent.type(input, '123');
449
+
450
+ // Verify loading indicator appears
451
+ await waitFor(() => {
452
+ const loading = canvas.queryByTestId('address-loading');
453
+ expect(loading).toBeInTheDocument();
454
+ }, { timeout: 1000 });
455
+ }
456
+ ```
457
+
458
+ #### 5. Current Location Test
459
+ ```typescript
460
+ play: async ({ canvasElement, args }) => {
461
+ const canvas = within(canvasElement);
462
+
463
+ // Find and click current location button
464
+ const locationButton = await canvas.findByTestId('address-current-location-button');
465
+ await userEvent.click(locationButton);
466
+
467
+ // Wait for location to be retrieved (mock)
468
+ await waitFor(() => {
469
+ expect(args.onSelect).toHaveBeenCalledWith(
470
+ expect.objectContaining({
471
+ formatted: expect.any(String),
472
+ coordinates: expect.objectContaining({
473
+ lat: expect.any(Number),
474
+ lng: expect.any(Number),
475
+ }),
476
+ })
477
+ );
478
+ }, { timeout: 2000 });
479
+
480
+ // Verify input was populated
481
+ const input = await canvas.findByTestId('address-input');
482
+ expect(input.value).not.toBe('');
483
+ }
484
+ ```
485
+
486
+ #### 6. Keyboard Navigation Test
487
+ ```typescript
488
+ play: async ({ canvasElement }) => {
489
+ const canvas = within(canvasElement);
490
+
491
+ const input = await canvas.findByTestId('address-input');
492
+ input.focus();
493
+
494
+ await userEvent.type(input, 'main');
495
+
496
+ // Wait for suggestions
497
+ await waitFor(async () => {
498
+ const suggestions = await canvas.findAllByTestId(/address-suggestion-/);
499
+ expect(suggestions.length).toBeGreaterThan(0);
500
+ }, { timeout: 2000 });
501
+
502
+ // Navigate with arrow keys
503
+ await userEvent.keyboard('{ArrowDown}');
504
+ await userEvent.keyboard('{ArrowDown}');
505
+ await userEvent.keyboard('{Enter}');
506
+
507
+ // Verify selection
508
+ await waitFor(() => {
509
+ expect(input.value).not.toBe('main');
510
+ });
511
+ }
512
+ ```
513
+
514
+ #### 7. Edge Cases Test
515
+ ```typescript
516
+ play: async ({ canvasElement }) => {
517
+ const canvas = within(canvasElement);
518
+
519
+ const input = await canvas.findByTestId('address-input');
520
+
521
+ // Test minimum characters (should not trigger suggestions)
522
+ await userEvent.type(input, 'ab');
523
+
524
+ // Wait briefly
525
+ await new Promise(resolve => setTimeout(resolve, 500));
526
+
527
+ // Suggestions should not appear
528
+ const dropdown = canvas.queryByTestId('address-suggestions-dropdown');
529
+ expect(dropdown).not.toBeInTheDocument();
530
+
531
+ // Test with enough characters
532
+ await userEvent.clear(input);
533
+ await userEvent.type(input, 'main street');
534
+
535
+ // Now suggestions should appear
536
+ await waitFor(async () => {
537
+ const suggestions = await canvas.findAllByTestId(/address-suggestion-/);
538
+ expect(suggestions.length).toBeGreaterThan(0);
539
+ }, { timeout: 2000 });
540
+ }
541
+ ```
542
+
543
+ ### Troubleshooting
544
+
545
+ #### Issue: "Unable to find element with testId address-input"
546
+
547
+ **Solution:** Always use `await` with `findByTestId`:
548
+ ```typescript
549
+ // Wrong - synchronous
550
+ const input = canvas.getByTestId('address-input');
551
+
552
+ // Correct - asynchronous
553
+ const input = await canvas.findByTestId('address-input');
554
+ ```
555
+
556
+ #### Issue: Suggestions dropdown not appearing
557
+
558
+ **Solution:** Ensure you type at least 3 characters and wait for debounce:
559
+ ```typescript
560
+ const input = await canvas.findByTestId('address-input');
561
+ await userEvent.type(input, '123 main'); // At least 3 chars
562
+
563
+ // Wait with timeout for suggestions
564
+ await waitFor(async () => {
565
+ const dropdown = await canvas.findByTestId('address-suggestions-dropdown');
566
+ expect(dropdown).toBeInTheDocument();
567
+ }, { timeout: 2000 });
568
+ ```
569
+
570
+ #### Issue: Test fails intermittently with loading state
571
+
572
+ **Solution:** Account for async nature of suggestions:
573
+ ```typescript
574
+ // Use waitFor with proper timeout
575
+ await waitFor(async () => {
576
+ const suggestions = await canvas.findAllByTestId(/address-suggestion-/);
577
+ expect(suggestions.length).toBeGreaterThan(0);
578
+ }, { timeout: 3000 });
579
+ ```
580
+
581
+ #### Issue: Can't find current location button
582
+
583
+ **Solution:** Button only appears when `getCurrentLocation=true`:
584
+ ```typescript
585
+ // Check if prop is enabled
586
+ if (args.getCurrentLocation) {
587
+ const locationButton = await canvas.findByTestId('address-current-location-button');
588
+ expect(locationButton).toBeInTheDocument();
589
+ } else {
590
+ const locationButton = canvas.queryByTestId('address-current-location-button');
591
+ expect(locationButton).not.toBeInTheDocument();
592
+ }
593
+ ```
594
+
595
+ #### Issue: Suggestion click not registering
596
+
597
+ **Solution:** Ensure suggestions are fully loaded before clicking:
598
+ ```typescript
599
+ await userEvent.type(input, 'main');
600
+
601
+ // Wait for specific suggestion to appear
602
+ const firstSuggestion = await canvas.findByTestId('address-suggestion-0');
603
+ expect(firstSuggestion).toBeInTheDocument();
604
+
605
+ // Then click
606
+ await userEvent.click(firstSuggestion);
607
+ ```
608
+
609
+ ### Best Practices
610
+
611
+ 1. **Always use async/await** with testId queries in Storybook tests
612
+ 2. **Use `waitFor`** when waiting for suggestions to appear (debounced)
613
+ 3. **Type at least 3 characters** to trigger autocomplete suggestions
614
+ 4. **Use regex patterns** for dynamic testIds: `/address-suggestion-/`
615
+ 5. **Add timeouts** for async operations: `{ timeout: 2000 }`
616
+ 6. **Use mock data** in tests by passing `googleMapsApiKey='demo-key'`
617
+ 7. **Check conditional elements** like current location button based on props
618
+
619
+ ### Mock Data Behavior
620
+
621
+ When using `googleMapsApiKey='demo-key'` or `'test-key'`, the component uses mock data:
622
+ - Mock addresses include common US cities (San Francisco, New York, Los Angeles, Chicago, Austin)
623
+ - Search is performed against mock dataset
624
+ - Simulates realistic API delays (150-350ms)
625
+ - Returns full address details with coordinates
626
+ - Current location returns first mock address
627
+
628
+ ### Related Components
629
+
630
+ - **Autocomplete (MUI):** Base autocomplete functionality
631
+ - **TextField:** Input field rendering
632
+ - **Paper:** Dropdown container for suggestions
633
+ - **IconButton:** Current location button