@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,239 @@
1
+ import {
2
+ alpha,
3
+ type CSSObject,
4
+ FormControl,
5
+ FormHelperText,
6
+ InputLabel,
7
+ keyframes,
8
+ MenuItem,
9
+ Select as MuiSelect,
10
+ styled,
11
+ type Theme,
12
+ } from '@mui/material';
13
+ import React from 'react';
14
+
15
+ import type { SelectProps } from './Select.types';
16
+
17
+ // Define pulse animation
18
+ const pulseAnimation = keyframes`
19
+ 0% {
20
+ box-shadow: 0 0 0 0 currentColor;
21
+ opacity: 1;
22
+ }
23
+ 70% {
24
+ box-shadow: 0 0 0 10px currentColor;
25
+ opacity: 0;
26
+ }
27
+ 100% {
28
+ box-shadow: 0 0 0 0 currentColor;
29
+ opacity: 0;
30
+ }
31
+ `;
32
+
33
+ /** Glow ring on the outlined input, keyed off the `glow` prop. */
34
+ const glowStyles = (theme: Theme): CSSObject => ({
35
+ '& .MuiOutlinedInput-root': {
36
+ boxShadow: `0 0 15px ${alpha(theme.palette.primary.main, 0.3)}`,
37
+ '&.Mui-focused': {
38
+ boxShadow: `0 0 20px ${alpha(theme.palette.primary.main, 0.5)}`,
39
+ },
40
+ },
41
+ });
42
+
43
+ /** Pulsing halo behind the control, keyed off the `pulse` prop. */
44
+ const pulseStyles = (theme: Theme): CSSObject => ({
45
+ '&::after': {
46
+ content: '""',
47
+ position: 'absolute',
48
+ top: '50%',
49
+ left: '0',
50
+ right: '0',
51
+ height: '56px',
52
+ transform: 'translateY(-50%)',
53
+ borderRadius: theme.spacing(0.5),
54
+ backgroundColor: theme.palette.primary.main,
55
+ opacity: 0.3,
56
+ animation: `${pulseAnimation} 2s infinite`,
57
+ pointerEvents: 'none',
58
+ zIndex: -1,
59
+ },
60
+ });
61
+
62
+ /** `glass` variant: translucent, blurred background. */
63
+ const glassVariant = (theme: Theme): CSSObject => ({
64
+ backgroundColor: alpha(theme.palette.background.paper, 0.1),
65
+ backdropFilter: 'blur(20px)',
66
+ border: `1px solid ${alpha(theme.palette.divider, 0.2)}`,
67
+ '& fieldset': { border: 'none' },
68
+ '&:hover': {
69
+ backgroundColor: alpha(theme.palette.background.paper, 0.15),
70
+ borderColor: alpha(theme.palette.primary.main, 0.3),
71
+ },
72
+ '&.Mui-focused': {
73
+ backgroundColor: alpha(theme.palette.background.paper, 0.2),
74
+ borderColor: theme.palette.primary.main,
75
+ boxShadow: `0 0 0 2px ${alpha(theme.palette.primary.main, 0.1)}`,
76
+ },
77
+ });
78
+
79
+ /** `gradient` variant: gradient fill with a masked gradient border. */
80
+ const gradientVariant = (theme: Theme): CSSObject => ({
81
+ background: `linear-gradient(135deg, ${alpha(theme.palette.primary.main, 0.1)}, ${alpha(theme.palette.secondary.main, 0.1)})`,
82
+ border: `2px solid transparent`,
83
+ backgroundOrigin: 'border-box',
84
+ backgroundClip: 'padding-box, border-box',
85
+ position: 'relative',
86
+ '& fieldset': { border: 'none' },
87
+ '&::before': {
88
+ content: '""',
89
+ position: 'absolute',
90
+ top: 0,
91
+ left: 0,
92
+ right: 0,
93
+ bottom: 0,
94
+ borderRadius: 'inherit',
95
+ background: `linear-gradient(135deg, ${theme.palette.primary.main}, ${theme.palette.secondary.main})`,
96
+ mask: 'linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)',
97
+ maskComposite: 'exclude',
98
+ padding: '2px',
99
+ zIndex: -1,
100
+ },
101
+ '&:hover': {
102
+ background: `linear-gradient(135deg, ${alpha(theme.palette.primary.main, 0.15)}, ${alpha(theme.palette.secondary.main, 0.15)})`,
103
+ },
104
+ '&.Mui-focused': {
105
+ background: `linear-gradient(135deg, ${alpha(theme.palette.primary.main, 0.2)}, ${alpha(theme.palette.secondary.main, 0.2)})`,
106
+ '&::before': {
107
+ background: `linear-gradient(135deg, ${theme.palette.primary.dark}, ${theme.palette.secondary.dark})`,
108
+ },
109
+ },
110
+ });
111
+
112
+ /** `default` variant: standard outlined borders with hover/focus/error states. */
113
+ const defaultVariant = (theme: Theme): CSSObject => ({
114
+ '& fieldset': { borderColor: alpha(theme.palette.divider, 0.23) },
115
+ '&:hover fieldset': { borderColor: theme.palette.primary.main },
116
+ '&.Mui-focused fieldset': { borderColor: theme.palette.primary.main, borderWidth: 2 },
117
+ '&.Mui-error fieldset': { borderColor: theme.palette.error.main },
118
+ });
119
+
120
+ /** Pick the variant style block for the outlined input. */
121
+ const variantStyles = (theme: Theme, variant: SelectProps['variant']): CSSObject => {
122
+ if (variant === 'glass') return glassVariant(theme);
123
+ if (variant === 'gradient') return gradientVariant(theme);
124
+ return defaultVariant(theme);
125
+ };
126
+
127
+ const StyledFormControl = styled(FormControl, {
128
+ shouldForwardProp: (prop) => prop !== 'customVariant' && prop !== 'glow' && prop !== 'pulse',
129
+ })<{
130
+ customVariant?: SelectProps['variant'];
131
+ glow?: boolean;
132
+ pulse?: boolean;
133
+ }>(({ theme, customVariant, glow, pulse }) => ({
134
+ position: 'relative',
135
+ ...(glow ? glowStyles(theme) : {}),
136
+ ...(pulse ? pulseStyles(theme) : {}),
137
+ '& .MuiOutlinedInput-root': {
138
+ transition: 'all 0.3s ease',
139
+ ...variantStyles(theme, customVariant),
140
+ },
141
+ }));
142
+
143
+ /**
144
+ * Build the placeholder item plus one MenuItem per option. Returns a flat ARRAY
145
+ * (not a Fragment): MUI `Select` enumerates its children with `React.Children`,
146
+ * which does not descend into Fragments — a Fragment would hide every option.
147
+ */
148
+ function renderMenuItems(
149
+ options: SelectProps['options'],
150
+ placeholder: string | undefined,
151
+ dataTestId: string | undefined,
152
+ ): React.ReactNode[] {
153
+ const optionTestId = (value: string | number): string =>
154
+ dataTestId ? `${dataTestId}-option-${value}` : `option-${value}`;
155
+ const items = options.map((option) => (
156
+ <MenuItem
157
+ key={option.value}
158
+ value={option.value}
159
+ disabled={option.disabled}
160
+ data-testid={optionTestId(option.value)}
161
+ >
162
+ {option.label}
163
+ </MenuItem>
164
+ ));
165
+ if (placeholder) {
166
+ items.unshift(
167
+ <MenuItem key="__placeholder__" value="" disabled>
168
+ {placeholder}
169
+ </MenuItem>,
170
+ );
171
+ }
172
+ return items;
173
+ }
174
+
175
+ export const Select = React.forwardRef<HTMLDivElement, SelectProps>(
176
+ (
177
+ {
178
+ // `variant`/`size`/`glow`/`pulse` intentionally have no defaults: undefined
179
+ // resolves to the default variant, MUI's medium size, and no glow/pulse —
180
+ // keeping this render function under the complexity budget.
181
+ variant,
182
+ options,
183
+ label,
184
+ helperText,
185
+ fullWidth = true,
186
+ size,
187
+ error,
188
+ placeholder,
189
+ glow,
190
+ pulse,
191
+ 'data-testid': dataTestId,
192
+ value,
193
+ ...props
194
+ },
195
+ ref,
196
+ ) => {
197
+ const labelId = React.useId();
198
+ const helperTextId = React.useId();
199
+ const selectId = React.useId();
200
+
201
+ return (
202
+ <StyledFormControl
203
+ fullWidth={fullWidth}
204
+ size={size}
205
+ error={error}
206
+ customVariant={variant}
207
+ glow={glow}
208
+ pulse={pulse}
209
+ ref={ref}
210
+ data-testid={dataTestId}
211
+ >
212
+ {label && (
213
+ <InputLabel id={labelId} htmlFor={selectId}>
214
+ {label}
215
+ </InputLabel>
216
+ )}
217
+ <MuiSelect
218
+ id={selectId}
219
+ labelId={label ? labelId : undefined}
220
+ label={label}
221
+ displayEmpty={Boolean(placeholder)}
222
+ aria-describedby={helperText ? helperTextId : undefined}
223
+ data-testid={dataTestId ? `${dataTestId}-select` : 'select'}
224
+ value={value ?? ''}
225
+ {...props}
226
+ >
227
+ {renderMenuItems(options, placeholder, dataTestId)}
228
+ </MuiSelect>
229
+ {helperText && (
230
+ <FormHelperText id={helperTextId} error={error}>
231
+ {helperText}
232
+ </FormHelperText>
233
+ )}
234
+ </StyledFormControl>
235
+ );
236
+ },
237
+ );
238
+
239
+ Select.displayName = 'Select';
@@ -0,0 +1,57 @@
1
+ import type { SelectProps as MuiSelectProps } from '@mui/material';
2
+
3
+ export type SelectVariant = 'default' | 'glass' | 'gradient';
4
+
5
+ export interface SelectOption {
6
+ value: string | number;
7
+ label: string;
8
+ disabled?: boolean;
9
+ }
10
+
11
+ export interface SelectProps extends Omit<MuiSelectProps, 'variant'> {
12
+ /**
13
+ * Visual variant of the select component
14
+ * @default 'default'
15
+ */
16
+ variant?: SelectVariant;
17
+ /**
18
+ * Array of options to display in the select
19
+ */
20
+ options: SelectOption[];
21
+ /**
22
+ * Label for the select field
23
+ */
24
+ label?: string;
25
+ /**
26
+ * Helper text to display below the select
27
+ */
28
+ helperText?: string;
29
+ /**
30
+ * Whether the select should take full width
31
+ * @default true
32
+ */
33
+ fullWidth?: boolean;
34
+ /**
35
+ * Size of the select component
36
+ * @default 'medium'
37
+ */
38
+ size?: 'small' | 'medium';
39
+ /**
40
+ * Placeholder text when no option is selected
41
+ */
42
+ placeholder?: string;
43
+ /**
44
+ * Whether to show a glow effect
45
+ * @default false
46
+ */
47
+ glow?: boolean;
48
+ /**
49
+ * Whether to show a pulse animation
50
+ * @default false
51
+ */
52
+ pulse?: boolean;
53
+ /**
54
+ * Test ID for testing purposes
55
+ */
56
+ 'data-testid'?: string;
57
+ }
@@ -0,0 +1,2 @@
1
+ export { Select } from './Select';
2
+ export type { SelectOption, SelectProps, SelectVariant } from './Select.types';
@@ -0,0 +1,326 @@
1
+ # Slider Component
2
+
3
+ ## Overview
4
+
5
+ The Slider component allows users to select values from a continuous or discrete range by dragging a thumb along a track. It's built on top of MUI's Slider with enhanced theming, glow effects, and comprehensive accessibility features.
6
+
7
+ ## Usage
8
+
9
+ ```tsx
10
+ import { Slider } from '@/components/form/Slider';
11
+
12
+ // Basic usage
13
+ <Slider value={50} onChange={(e, value) => setValue(value)} />
14
+
15
+ // Range slider
16
+ <Slider value={[20, 60]} onChange={(e, value) => setRange(value)} />
17
+
18
+ // With marks
19
+ <Slider value={30} marks step={10} min={0} max={100} />
20
+
21
+ // Vertical orientation
22
+ <Slider value={50} orientation="vertical" />
23
+
24
+ // With glow effect
25
+ <Slider value={75} enableGlow />
26
+ ```
27
+
28
+ ## Props
29
+
30
+ | Prop | Type | Default | Description |
31
+ | ----------------- | ----------------------------------------------------------------------- | ------------ | -------------------------------- |
32
+ | value | number \| number[] | - | Current value or range |
33
+ | onChange | (event, value) => void | - | Callback when value changes |
34
+ | min | number | 0 | Minimum value |
35
+ | max | number | 100 | Maximum value |
36
+ | step | number | 1 | Step increment |
37
+ | marks | boolean \| Mark[] | false | Show tick marks |
38
+ | disabled | boolean | false | Disable slider interaction |
39
+ | orientation | 'horizontal' \| 'vertical' | 'horizontal' | Slider orientation |
40
+ | valueLabelDisplay | 'on' \| 'auto' \| 'off' | 'off' | When to display value label |
41
+ | valueLabelFormat | string \| func | - | Format value label |
42
+ | getAriaLabel | (index) => string | - | Aria label for thumbs |
43
+ | getAriaValueText | (value, index) => string | - | Aria value text |
44
+ | color | 'primary' \| 'secondary' \| 'error' \| 'warning' \| 'info' \| 'success' | 'primary' | Theme color |
45
+ | size | 'small' \| 'medium' | 'medium' | Component size |
46
+ | track | 'normal' \| 'inverted' \| false | 'normal' | Track display mode |
47
+ | disableSwap | boolean | false | Disable thumb swap in range mode |
48
+ | enableGlow | boolean | false | Enable glow effect |
49
+ | sx | SxProps | - | Custom MUI styles |
50
+
51
+ ## Features
52
+
53
+ ### Value Selection
54
+
55
+ - Single value selection with draggable thumb
56
+ - Range selection with two thumbs
57
+ - Precise value control with step increments
58
+ - Click-to-position on track
59
+
60
+ ### Keyboard Navigation
61
+
62
+ - **Arrow Keys**: Increase/decrease by step
63
+ - **Page Up/Down**: Large increment/decrement
64
+ - **Home/End**: Jump to min/max
65
+ - **Tab**: Navigate between thumbs in range mode
66
+
67
+ ### Accessibility
68
+
69
+ - ARIA attributes for screen readers
70
+ - Keyboard-only navigation support
71
+ - Focus indicators
72
+ - Value announcements
73
+ - Custom labels and descriptions
74
+
75
+ ### Visual Features
76
+
77
+ - Multiple color themes
78
+ - Size variants
79
+ - Glow effects for enhanced visibility
80
+ - Value labels with custom formatting
81
+ - Tick marks with labels
82
+ - Vertical and horizontal orientations
83
+
84
+ ## Examples
85
+
86
+ ### Basic Slider
87
+
88
+ ```tsx
89
+ <Slider value={value} onChange={(e, v) => setValue(v)} min={0} max={100} />
90
+ ```
91
+
92
+ ### Range Slider
93
+
94
+ ```tsx
95
+ <Slider value={[20, 80]} onChange={(e, v) => setRange(v)} min={0} max={100} />
96
+ ```
97
+
98
+ ### With Custom Marks
99
+
100
+ ```tsx
101
+ const marks = [
102
+ { value: 0, label: '0°C' },
103
+ { value: 20, label: '20°C' },
104
+ { value: 37, label: '37°C' },
105
+ { value: 100, label: '100°C' },
106
+ ];
107
+
108
+ <Slider value={value} marks={marks} step={null} valueLabelDisplay="auto" />;
109
+ ```
110
+
111
+ ### Vertical Slider
112
+
113
+ ```tsx
114
+ <Slider value={value} orientation="vertical" sx={{ height: 300 }} />
115
+ ```
116
+
117
+ ### With Glow Effect
118
+
119
+ ```tsx
120
+ <Slider value={value} enableGlow color="primary" />
121
+ ```
122
+
123
+ ### Custom Value Label
124
+
125
+ ```tsx
126
+ <Slider value={value} valueLabelDisplay="on" valueLabelFormat={(v) => `${v}%`} />
127
+ ```
128
+
129
+ ## Styling
130
+
131
+ The component accepts MUI's `sx` prop for custom styling:
132
+
133
+ ```tsx
134
+ <Slider
135
+ sx={{
136
+ '& .MuiSlider-track': {
137
+ border: 'none',
138
+ },
139
+ '& .MuiSlider-thumb': {
140
+ width: 24,
141
+ height: 24,
142
+ backgroundColor: '#fff',
143
+ '&:before': {
144
+ boxShadow: '0 4px 8px rgba(0,0,0,0.4)',
145
+ },
146
+ },
147
+ }}
148
+ />
149
+ ```
150
+
151
+ ## Best Practices
152
+
153
+ 1. **Provide Labels**: Always include aria-label or aria-labelledby for accessibility
154
+ 2. **Value Feedback**: Show current value through labels or separate display
155
+ 3. **Appropriate Steps**: Choose step values that make sense for your use case
156
+ 4. **Range Validation**: Ensure min/max values are appropriate
157
+ 5. **Keyboard Support**: Test keyboard navigation thoroughly
158
+ 6. **Mobile Touch**: Ensure thumb is large enough for touch interaction
159
+ 7. **Color Contrast**: Maintain sufficient contrast for visibility
160
+
161
+ ## Accessibility
162
+
163
+ The Slider component follows WAI-ARIA authoring practices:
164
+
165
+ - Uses `role="slider"` for single value
166
+ - Provides `aria-valuenow`, `aria-valuemin`, `aria-valuemax`
167
+ - Supports `aria-label` and `aria-labelledby`
168
+ - Full keyboard navigation support
169
+ - Focus management for range sliders
170
+ - Screen reader announcements for value changes
171
+
172
+ ## Performance Considerations
173
+
174
+ - The component is optimized for smooth dragging
175
+ - Uses React.memo to prevent unnecessary re-renders
176
+ - Debounced value updates available through controlled mode
177
+ - Efficient event handling for mouse and touch events
178
+
179
+ ## Testing
180
+
181
+ The Slider component supports comprehensive testing through the `dataTestId` prop. When provided, it automatically generates test identifiers for all interactive elements.
182
+
183
+ ### Test ID Structure
184
+
185
+ When you pass `dataTestId="my-slider"`, the following test IDs are generated:
186
+
187
+ | Element | Test ID | Description |
188
+ | --- | --- | --- |
189
+ | Root Container | `my-slider` | Main wrapper containing the entire slider |
190
+ | Slider Component | `my-slider-slider` | The MUI Slider component itself |
191
+ | Track | `my-slider-track` | The filled track showing current value |
192
+ | Thumb | `my-slider-thumb` | The draggable thumb control |
193
+ | Label | `my-slider-label` | The label text (if label prop is provided) |
194
+ | Value Label | `my-slider-value-label` | The displayed value (if showValue is enabled) |
195
+
196
+ ### Testing Examples
197
+
198
+ #### Basic Component Testing
199
+
200
+ ```tsx
201
+ import { render, screen } from '@testing-library/react';
202
+ import { Slider } from '@/components/form/Slider';
203
+
204
+ test('renders slider with testId', () => {
205
+ render(
206
+ <Slider
207
+ dataTestId="volume-slider"
208
+ label="Volume"
209
+ showValue
210
+ value={50}
211
+ onChange={() => {}}
212
+ />
213
+ );
214
+
215
+ expect(screen.getByTestId('volume-slider')).toBeInTheDocument();
216
+ expect(screen.getByTestId('volume-slider-label')).toHaveTextContent('Volume');
217
+ expect(screen.getByTestId('volume-slider-slider')).toBeInTheDocument();
218
+ expect(screen.getByTestId('volume-slider-track')).toBeInTheDocument();
219
+ expect(screen.getByTestId('volume-slider-thumb')).toBeInTheDocument();
220
+ });
221
+ ```
222
+
223
+ #### Testing Slider Interaction
224
+
225
+ ```tsx
226
+ import { render, screen } from '@testing-library/react';
227
+ import userEvent from '@testing-library/user-event';
228
+ import { Slider } from '@/components/form/Slider';
229
+
230
+ test('interacts with slider', async () => {
231
+ const handleChange = jest.fn();
232
+
233
+ render(
234
+ <Slider
235
+ dataTestId="brightness-slider"
236
+ value={50}
237
+ onChange={handleChange}
238
+ />
239
+ );
240
+
241
+ const thumb = screen.getByTestId('brightness-slider-thumb');
242
+ await userEvent.hover(thumb);
243
+
244
+ // Verify thumb is accessible
245
+ expect(thumb).toBeInTheDocument();
246
+ });
247
+ ```
248
+
249
+ #### Testing Range Slider
250
+
251
+ ```tsx
252
+ test('renders range slider with testIds', () => {
253
+ render(
254
+ <Slider
255
+ dataTestId="price-range"
256
+ label="Price Range"
257
+ showValue
258
+ value={[20, 80]}
259
+ onChange={() => {}}
260
+ unit="$"
261
+ />
262
+ );
263
+
264
+ const valueLabel = screen.getByTestId('price-range-value-label');
265
+ expect(valueLabel).toHaveTextContent('20$ - 80$');
266
+ });
267
+ ```
268
+
269
+ #### Testing in Forms
270
+
271
+ ```tsx
272
+ test('slider works in form context', async () => {
273
+ const onSubmit = jest.fn();
274
+
275
+ render(
276
+ <form onSubmit={onSubmit}>
277
+ <Slider
278
+ dataTestId="form-slider"
279
+ label="Settings"
280
+ value={75}
281
+ onChange={() => {}}
282
+ />
283
+ <button type="submit">Submit</button>
284
+ </form>
285
+ );
286
+
287
+ const slider = screen.getByTestId('form-slider-slider');
288
+ expect(slider).toBeInTheDocument();
289
+
290
+ await userEvent.click(screen.getByText('Submit'));
291
+ expect(onSubmit).toHaveBeenCalled();
292
+ });
293
+ ```
294
+
295
+ ### Accessibility Testing
296
+
297
+ The slider component includes proper ARIA attributes that work seamlessly with testing:
298
+
299
+ ```tsx
300
+ test('slider has correct accessibility attributes', () => {
301
+ render(
302
+ <Slider
303
+ dataTestId="a11y-slider"
304
+ value={60}
305
+ min={0}
306
+ max={100}
307
+ aria-label="Volume control"
308
+ />
309
+ );
310
+
311
+ const slider = screen.getByRole('slider');
312
+ expect(slider).toHaveAttribute('aria-valuenow', '60');
313
+ expect(slider).toHaveAttribute('aria-valuemin', '0');
314
+ expect(slider).toHaveAttribute('aria-valuemax', '100');
315
+ expect(slider).toHaveAttribute('aria-label', 'Volume control');
316
+ });
317
+ ```
318
+
319
+ ### Best Practices for Testing
320
+
321
+ 1. **Always use dataTestId**: Makes tests more maintainable and readable
322
+ 2. **Test user interactions**: Focus on how users interact with the slider
323
+ 3. **Verify accessibility**: Ensure ARIA attributes are present and correct
324
+ 4. **Test edge cases**: Min/max values, disabled states, range sliders
325
+ 5. **Test visual states**: Different sizes, colors, and variants
326
+ 6. **Integration testing**: Test slider within forms and complex UIs