@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,136 @@
1
+ import { Box, Stack, styled } from '@mui/material';
2
+ import React from 'react';
3
+
4
+ import type {
5
+ FormControlProps,
6
+ FormFieldProps,
7
+ FormLabelProps,
8
+ FormMessageProps,
9
+ FormProps,
10
+ } from './Form.types';
11
+
12
+ const StyledForm = styled('form', {
13
+ shouldForwardProp: (prop) => prop !== 'variant',
14
+ })<{ variant?: FormProps['variant'] }>(({ theme, variant }) => ({
15
+ width: '100%',
16
+ ...(variant === 'inline' && {
17
+ display: 'flex',
18
+ gap: theme.spacing(2),
19
+ alignItems: 'flex-start',
20
+ }),
21
+ }));
22
+
23
+ const spacingMap = {
24
+ xs: 1,
25
+ sm: 2,
26
+ md: 3,
27
+ lg: 4,
28
+ xl: 5,
29
+ };
30
+
31
+ const maxWidthMap = {
32
+ sm: '600px',
33
+ md: '900px',
34
+ lg: '1200px',
35
+ xl: '1536px',
36
+ full: '100%',
37
+ };
38
+
39
+ export const Form = React.forwardRef<HTMLFormElement, FormProps>(
40
+ ({ variant = 'vertical', maxWidth = 'full', spacing = 'md', children, dataTestId, ...props }, ref) => (
41
+ <StyledForm ref={ref} variant={variant} role="form" data-testid={dataTestId} {...props}>
42
+ <Box sx={{ maxWidth: maxWidthMap[maxWidth], width: '100%' }}>
43
+ {variant === 'inline' ? (
44
+ children
45
+ ) : (
46
+ <Stack spacing={spacingMap[spacing]}>{children}</Stack>
47
+ )}
48
+ </Box>
49
+ </StyledForm>
50
+ ),
51
+ );
52
+
53
+ Form.displayName = 'Form';
54
+
55
+ const StyledFormField = styled(Box, {
56
+ shouldForwardProp: (prop) => prop !== 'variant',
57
+ })<{ variant?: 'vertical' | 'horizontal' }>(
58
+ ({ theme, variant }) => ({
59
+ display: variant === 'horizontal' ? 'grid' : 'flex',
60
+ flexDirection: variant === 'horizontal' ? undefined : 'column',
61
+ gridTemplateColumns: variant === 'horizontal' ? '200px 1fr' : undefined,
62
+ gap: theme.spacing(1),
63
+ alignItems: variant === 'horizontal' ? 'center' : undefined,
64
+ }),
65
+ );
66
+
67
+ export const FormField: React.FC<FormFieldProps> = ({
68
+ name,
69
+ label,
70
+ required,
71
+ error,
72
+ helperText,
73
+ children,
74
+ dataTestId,
75
+ }) => (
76
+ <StyledFormField data-testid={dataTestId}>
77
+ {label && (
78
+ <FormLabel required={required} error={!!error} htmlFor={name} dataTestId={dataTestId ? `${dataTestId}-label` : undefined}>
79
+ {label}
80
+ </FormLabel>
81
+ )}
82
+ <FormControl fullWidth dataTestId={dataTestId ? `${dataTestId}-control` : undefined}>
83
+ {children}
84
+ {(error || helperText) && <FormMessage error={!!error} dataTestId={dataTestId ? `${dataTestId}-message` : undefined}>{error || helperText}</FormMessage>}
85
+ </FormControl>
86
+ </StyledFormField>
87
+ );
88
+
89
+ const StyledFormLabel = styled('label', {
90
+ shouldForwardProp: (prop) => prop !== 'error',
91
+ })<{ error?: boolean }>(({ theme, error }) => ({
92
+ fontSize: '0.875rem',
93
+ fontWeight: 500,
94
+ color: error ? theme.palette.error.main : theme.palette.text.primary,
95
+ marginBottom: theme.spacing(0.5),
96
+ display: 'block',
97
+ '&::after': {
98
+ content: '" *"',
99
+ color: theme.palette.error.main,
100
+ display: 'var(--required-display, none)',
101
+ },
102
+ }));
103
+
104
+ export const FormLabel: React.FC<FormLabelProps> = ({ required, error, children, htmlFor, dataTestId }) => (
105
+ <StyledFormLabel
106
+ error={error}
107
+ htmlFor={htmlFor}
108
+ data-testid={dataTestId}
109
+ style={{ '--required-display': required ? 'inline' : 'none' } as React.CSSProperties}
110
+ >
111
+ {children}
112
+ </StyledFormLabel>
113
+ );
114
+
115
+ const StyledFormControl = styled(Box, {
116
+ shouldForwardProp: (prop) => prop !== 'fullWidth',
117
+ })<{ fullWidth?: boolean }>(({ fullWidth }) => ({
118
+ width: fullWidth ? '100%' : 'auto',
119
+ position: 'relative',
120
+ }));
121
+
122
+ export const FormControl: React.FC<FormControlProps> = ({ fullWidth = true, children, dataTestId }) =>
123
+ // Don't pass error prop to the DOM element
124
+ <StyledFormControl fullWidth={fullWidth} data-testid={dataTestId}>{children}</StyledFormControl>
125
+ ;
126
+
127
+ const StyledFormMessage = styled('span', {
128
+ shouldForwardProp: (prop) => prop !== 'error',
129
+ })<{ error?: boolean }>(({ theme, error }) => ({
130
+ fontSize: '0.75rem',
131
+ marginTop: theme.spacing(0.5),
132
+ color: error ? theme.palette.error.main : theme.palette.text.secondary,
133
+ display: 'block',
134
+ }));
135
+
136
+ export const FormMessage: React.FC<FormMessageProps> = ({ error, children, dataTestId }) => <StyledFormMessage error={error} data-testid={dataTestId}>{children}</StyledFormMessage>;
@@ -0,0 +1,42 @@
1
+ import type { FormHTMLAttributes } from 'react';
2
+
3
+ export type FormVariant = 'vertical' | 'horizontal' | 'inline' | 'stepped';
4
+
5
+ export interface FormProps extends FormHTMLAttributes<HTMLFormElement> {
6
+ variant?: FormVariant;
7
+ maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
8
+ spacing?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
9
+ children: React.ReactNode;
10
+ dataTestId?: string;
11
+ }
12
+
13
+ export interface FormFieldProps {
14
+ name: string;
15
+ label?: string;
16
+ required?: boolean;
17
+ error?: string;
18
+ helperText?: string;
19
+ children: React.ReactNode;
20
+ dataTestId?: string;
21
+ }
22
+
23
+ export interface FormLabelProps {
24
+ required?: boolean;
25
+ error?: boolean;
26
+ children: React.ReactNode;
27
+ htmlFor?: string;
28
+ dataTestId?: string;
29
+ }
30
+
31
+ export interface FormControlProps {
32
+ error?: boolean;
33
+ fullWidth?: boolean;
34
+ children: React.ReactNode;
35
+ dataTestId?: string;
36
+ }
37
+
38
+ export interface FormMessageProps {
39
+ error?: boolean;
40
+ children: React.ReactNode;
41
+ dataTestId?: string;
42
+ }
@@ -0,0 +1,8 @@
1
+ export { Form, FormControl, FormField, FormLabel, FormMessage } from './Form';
2
+ export type {
3
+ FormControlProps,
4
+ FormFieldProps,
5
+ FormLabelProps,
6
+ FormMessageProps,
7
+ FormProps,
8
+ } from './Form.types';
@@ -0,0 +1,252 @@
1
+ # Input Component
2
+
3
+ ## Purpose
4
+ The Input component provides a flexible text input field with comprehensive validation, styling options, and accessibility features. It supports various input types, states, and integration with form libraries.
5
+
6
+ ## Features
7
+ - Multiple visual variants (outlined, filled, glass, underline, gradient)
8
+ - Three size options (sm, md, lg)
9
+ - Support for different input types (text, email, password, number, tel, url)
10
+ - Loading states with spinner indicator
11
+ - Error states with helper text
12
+ - Floating label animations
13
+ - Visual effects (glow, pulse)
14
+ - Start and end adornments for icons
15
+ - Full keyboard navigation support
16
+ - Screen reader compatibility
17
+ - Responsive design
18
+
19
+ ## Props Documentation
20
+
21
+ ### Core Props
22
+ - `variant`: Visual variant of the input ('outlined' | 'filled' | 'glass' | 'underline' | 'gradient')
23
+ - `size`: Size of the input ('sm' | 'md' | 'lg')
24
+ - `label`: Label text for the input
25
+ - `placeholder`: Placeholder text
26
+ - `value`: Controlled input value
27
+ - `defaultValue`: Uncontrolled default value
28
+ - `onChange`: Change event handler
29
+
30
+ ### State Props
31
+ - `disabled`: Disables the input
32
+ - `readOnly`: Makes input read-only
33
+ - `required`: Marks input as required
34
+ - `error`: Error state flag
35
+ - `helperText`: Helper or error text displayed below input
36
+ - `loading`: Shows loading spinner and disables input
37
+
38
+ ### Visual Props
39
+ - `fullWidth`: Makes input take full container width (default: true)
40
+ - `floating`: Enables floating label animation
41
+ - `glow`: Adds glow effect on focus
42
+ - `pulse`: Adds pulse animation
43
+
44
+ ### Adornment Props
45
+ - `startAdornment`: Content to display at the start of the input
46
+ - `endAdornment`: Content to display at the end of the input
47
+
48
+ ## Usage Examples
49
+
50
+ ### Basic Input
51
+ ```tsx
52
+ <Input
53
+ label="Name"
54
+ placeholder="Enter your name"
55
+ onChange={(e) => console.log(e.target.value)}
56
+ />
57
+ ```
58
+
59
+ ### With Validation
60
+ ```tsx
61
+ <Input
62
+ label="Email"
63
+ type="email"
64
+ error={!isValidEmail}
65
+ helperText={!isValidEmail ? "Please enter a valid email" : ""}
66
+ required
67
+ />
68
+ ```
69
+
70
+ ### With Icons
71
+ ```tsx
72
+ <Input
73
+ label="Search"
74
+ placeholder="Search..."
75
+ startAdornment={<SearchIcon />}
76
+ endAdornment={
77
+ <IconButton onClick={handleClear}>
78
+ <ClearIcon />
79
+ </IconButton>
80
+ }
81
+ />
82
+ ```
83
+
84
+ ### Password Input with Toggle
85
+ ```tsx
86
+ <Input
87
+ label="Password"
88
+ type={showPassword ? 'text' : 'password'}
89
+ startAdornment={<LockIcon />}
90
+ endAdornment={
91
+ <IconButton onClick={() => setShowPassword(!showPassword)}>
92
+ {showPassword ? <VisibilityOff /> : <Visibility />}
93
+ </IconButton>
94
+ }
95
+ />
96
+ ```
97
+
98
+ ### Glass Morphism Style
99
+ ```tsx
100
+ <Input
101
+ variant="glass"
102
+ label="Glass Input"
103
+ glow
104
+ floating
105
+ placeholder="Modern glass effect"
106
+ />
107
+ ```
108
+
109
+ ### Loading State
110
+ ```tsx
111
+ <Input
112
+ label="Processing"
113
+ loading
114
+ placeholder="Please wait..."
115
+ />
116
+ ```
117
+
118
+ ## Accessibility
119
+
120
+ ### ARIA Attributes
121
+ - Proper label association with `aria-label` or `aria-labelledby`
122
+ - `aria-invalid` for error states
123
+ - `aria-required` for required fields
124
+ - `aria-describedby` for helper text association
125
+
126
+ ### Keyboard Navigation
127
+ - Tab/Shift+Tab for focus navigation
128
+ - Standard text editing keyboard shortcuts
129
+ - Enter key support for form submission
130
+
131
+ ### Screen Reader Support
132
+ - Clear label announcements
133
+ - Error state announcements
134
+ - Helper text announcements
135
+ - Loading state announcements
136
+
137
+ ## Best Practices
138
+
139
+ 1. **Always provide labels**: Use the `label` prop for accessibility
140
+ 2. **Error handling**: Provide clear error messages in `helperText`
141
+ 3. **Loading states**: Use `loading` prop during async operations
142
+ 4. **Icon usage**: Use meaningful icons that enhance UX
143
+ 5. **Validation**: Validate on blur rather than on every keystroke
144
+ 6. **Required fields**: Mark required fields clearly
145
+ 7. **Placeholder text**: Use placeholders as hints, not labels
146
+ 8. **Size consistency**: Use consistent sizes across forms
147
+
148
+ ## Performance Considerations
149
+
150
+ - The component uses React.forwardRef for proper ref forwarding
151
+ - Styled components are memoized to prevent unnecessary re-renders
152
+ - Event handlers are optimized to prevent excessive updates
153
+ - Loading state properly disables interactions
154
+
155
+ ## Browser Support
156
+ - All modern browsers (Chrome, Firefox, Safari, Edge)
157
+ - Mobile browsers (iOS Safari, Chrome Mobile)
158
+ - Responsive design for all screen sizes
159
+ - Touch-friendly interaction areas
160
+
161
+ ## Testing
162
+
163
+ ### Test IDs
164
+
165
+ The Input component includes `data-testid` attributes for reliable testing:
166
+
167
+ | Test ID | Element | Description |
168
+ |---------|---------|-------------|
169
+ | `{dataTestId}` | Input field | The actual input element (passed via inputProps) |
170
+
171
+ **Note:** The `data-testid` is applied to the `<input>` element itself, not the TextField wrapper. When querying, use `findByTestId` to target the input element directly.
172
+
173
+ ### Testing Best Practices
174
+
175
+ **Wait for Input to Render:**
176
+ ```typescript
177
+ const input = await canvas.findByTestId('email-input');
178
+ expect(input).toBeInTheDocument();
179
+ ```
180
+
181
+ **Test User Input:**
182
+ ```typescript
183
+ const input = await canvas.findByTestId('name-input');
184
+ await userEvent.type(input, 'John Doe');
185
+ expect(input).toHaveValue('John Doe');
186
+ ```
187
+
188
+ **Test Disabled State:**
189
+ ```typescript
190
+ const input = await canvas.findByTestId('disabled-input');
191
+ expect(input).toBeDisabled();
192
+ ```
193
+
194
+ **Test Loading State:**
195
+ ```typescript
196
+ // Input is disabled when loading
197
+ const loadingInput = await canvas.findByTestId('loading-input');
198
+ expect(loadingInput).toBeDisabled();
199
+
200
+ // Loading spinner appears
201
+ const spinner = canvasElement.querySelector('.MuiCircularProgress-root');
202
+ expect(spinner).toBeInTheDocument();
203
+ ```
204
+
205
+ **Test Error State:**
206
+ ```typescript
207
+ const input = await canvas.findByTestId('error-input');
208
+ const container = input.closest('.MuiFormControl-root');
209
+
210
+ // Check error styling
211
+ expect(container?.querySelector('.Mui-error')).toBeInTheDocument();
212
+
213
+ // Verify helper text
214
+ const helperText = container?.querySelector('.MuiFormHelperText-root');
215
+ expect(helperText).toHaveTextContent('Error message');
216
+ ```
217
+
218
+ **Test with Adornments:**
219
+ ```typescript
220
+ // Input with start/end adornments
221
+ const input = await canvas.findByTestId('search-input');
222
+ const container = input.closest('.MuiFormControl-root');
223
+
224
+ const startAdornment = container?.querySelector('.MuiInputAdornment-positionStart');
225
+ const endAdornment = container?.querySelector('.MuiInputAdornment-positionEnd');
226
+
227
+ expect(startAdornment).toBeInTheDocument();
228
+ expect(endAdornment).toBeInTheDocument();
229
+ ```
230
+
231
+ **Test Form Integration:**
232
+ ```typescript
233
+ const input = await canvas.findByTestId('form-input');
234
+ await userEvent.type(input, 'test@example.com');
235
+ await userEvent.keyboard('{Enter}');
236
+ expect(onSubmit).toHaveBeenCalled();
237
+ ```
238
+
239
+ ### Common Test Scenarios
240
+
241
+ 1. **Basic Rendering** - Verify input renders with label and placeholder
242
+ 2. **User Input** - Test typing and value changes
243
+ 3. **Variants** - Test outlined, filled, glass, underline, gradient styles
244
+ 4. **Sizes** - Test sm, md, lg sizing
245
+ 5. **States** - Test disabled, error, loading, readonly states
246
+ 6. **Adornments** - Test start/end icons and buttons
247
+ 7. **Validation** - Test error states and helper text
248
+ 8. **Floating Labels** - Test label animation on focus/blur
249
+ 9. **Visual Effects** - Test glow and pulse animations
250
+ 10. **Keyboard Navigation** - Test Tab navigation and Enter key
251
+ 11. **Accessibility** - Verify ARIA attributes and screen reader support
252
+ 12. **Form Integration** - Test with form libraries like React Hook Form
@@ -0,0 +1,256 @@
1
+ import { Email, Lock, Search, Visibility, VisibilityOff } from '@mui/icons-material';
2
+ import { IconButton } from '@mui/material';
3
+ import type { Meta, StoryObj } from '@storybook/react-vite';
4
+ import { useState } from 'react';
5
+
6
+ import { Input } from './Input';
7
+
8
+ const meta: Meta<typeof Input> = {
9
+ title: 'Form/Input',
10
+ component: Input,
11
+ parameters: {
12
+ layout: 'centered',
13
+ },
14
+ tags: ['autodocs', 'component:Input'],
15
+ argTypes: {
16
+ variant: {
17
+ control: { type: 'select' },
18
+ options: ['outlined', 'filled', 'glass', 'underline', 'gradient'],
19
+ },
20
+ size: {
21
+ control: { type: 'select' },
22
+ options: ['sm', 'md', 'lg'],
23
+ },
24
+ type: {
25
+ control: { type: 'select' },
26
+ options: ['text', 'email', 'password', 'number', 'tel', 'url'],
27
+ },
28
+ },
29
+ };
30
+
31
+ export default meta;
32
+ type Story = StoryObj<typeof meta>;
33
+
34
+ export const Default: Story = {
35
+ args: {
36
+ placeholder: 'Enter text...',
37
+ },
38
+ };
39
+
40
+ export const WithLabel: Story = {
41
+ args: {
42
+ label: 'Full Name',
43
+ placeholder: 'John Doe',
44
+ },
45
+ };
46
+
47
+ // Required story export: AllVariants
48
+ export const AllVariants: Story = {
49
+ render: () => (
50
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '16px', width: '300px' }}>
51
+ <Input variant="outlined" label="Outlined" placeholder="Outlined input" />
52
+ <Input variant="filled" label="Filled" placeholder="Filled input" />
53
+ <Input variant="glass" label="Glass" placeholder="Glass morphism input" />
54
+ <Input variant="underline" label="Underline" placeholder="Underline input" />
55
+ <Input variant="gradient" label="Gradient" placeholder="Gradient border input" />
56
+ </div>
57
+ ),
58
+ };
59
+
60
+ // Backward compatibility alias
61
+ export const Variants = AllVariants;
62
+
63
+ // Required story export: AllSizes
64
+ export const AllSizes: Story = {
65
+ render: () => (
66
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '16px', width: '300px' }}>
67
+ <Input size="sm" label="Small" placeholder="Small input" />
68
+ <Input size="md" label="Medium" placeholder="Medium input" />
69
+ <Input size="lg" label="Large" placeholder="Large input" />
70
+ </div>
71
+ ),
72
+ };
73
+
74
+ // Backward compatibility alias
75
+ export const Sizes = AllSizes;
76
+
77
+ export const WithAdornments: Story = {
78
+ render: () => (
79
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '16px', width: '300px' }}>
80
+ <Input label="Search" placeholder="Search..." startAdornment={<Search />} />
81
+ <Input label="Email" type="email" placeholder="john@example.com" startAdornment={<Email />} />
82
+ <PasswordInput />
83
+ </div>
84
+ ),
85
+ };
86
+
87
+ // Password input with visibility toggle
88
+ function PasswordInput() {
89
+ const [showPassword, setShowPassword] = useState(false);
90
+
91
+ return (
92
+ <Input
93
+ label="Password"
94
+ type={showPassword ? 'text' : 'password'}
95
+ placeholder="Enter password"
96
+ startAdornment={<Lock />}
97
+ endAdornment={
98
+ <IconButton onClick={() => setShowPassword(!showPassword)} edge="end">
99
+ {showPassword ? <VisibilityOff /> : <Visibility />}
100
+ </IconButton>
101
+ }
102
+ />
103
+ );
104
+ }
105
+
106
+ export const FloatingLabels: Story = {
107
+ render: () => (
108
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '16px', width: '300px' }}>
109
+ <Input floating label="Floating Label" placeholder="Type here..." />
110
+ <Input floating variant="glass" label="Glass with Float" />
111
+ <Input floating variant="filled" label="Filled with Float" />
112
+ </div>
113
+ ),
114
+ };
115
+
116
+ export const ErrorStates: Story = {
117
+ render: () => (
118
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '16px', width: '300px' }}>
119
+ <Input
120
+ label="Email"
121
+ error
122
+ helperText="Please enter a valid email address"
123
+ defaultValue="invalid-email"
124
+ />
125
+ <Input variant="glass" label="Required Field" error helperText="This field is required" />
126
+ </div>
127
+ ),
128
+ };
129
+
130
+ // Enhanced Visual Effects Stories
131
+ export const VisualEffects: Story = {
132
+ render: () => (
133
+ <div
134
+ style={{
135
+ display: 'flex',
136
+ flexDirection: 'column',
137
+ gap: '24px',
138
+ width: '300px',
139
+ backgroundColor: '#f5f5f5',
140
+ padding: '24px',
141
+ borderRadius: '8px',
142
+ }}
143
+ >
144
+ <Input variant="glass" label="Glow Effect" placeholder="Focus me!" glow />
145
+ <Input variant="outlined" label="Pulse Animation" placeholder="Watch me pulse" pulse />
146
+ <Input variant="gradient" label="Loading State" placeholder="Processing..." loading />
147
+ <Input variant="glass" label="Combined Effects" placeholder="Glow + Float" glow floating />
148
+ </div>
149
+ ),
150
+ };
151
+
152
+ // Required story export: AllStates
153
+ export const AllStates: Story = {
154
+ render: () => (
155
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '16px', width: '300px' }}>
156
+ <Input label="Default State" placeholder="Type here..." />
157
+ <Input label="Focused State" placeholder="Focus me" autoFocus />
158
+ <Input label="Hover State" placeholder="Hover over me" />
159
+ <Input label="Disabled State" placeholder="Cannot type" disabled />
160
+ <Input label="Readonly State" placeholder="Read only" value="Cannot change this" readOnly />
161
+ <Input
162
+ label="Error State"
163
+ placeholder="Has error"
164
+ error
165
+ helperText="This field has an error"
166
+ />
167
+ <Input label="Required Field" placeholder="This is required" required />
168
+ <Input label="Loading State" placeholder="Loading..." loading />
169
+ </div>
170
+ ),
171
+ };
172
+
173
+ // Backward compatibility alias
174
+ export const InteractiveStates = AllStates;
175
+
176
+ // Different Input Types
177
+ export const InputTypes: Story = {
178
+ render: () => (
179
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '16px', width: '300px' }}>
180
+ <Input type="text" label="Text Input" placeholder="Enter text" />
181
+ <Input type="email" label="Email Input" placeholder="email@example.com" />
182
+ <Input type="password" label="Password Input" placeholder="Enter password" />
183
+ <Input type="number" label="Number Input" placeholder="123" />
184
+ <Input type="tel" label="Phone Input" placeholder="+1 (555) 123-4567" />
185
+ <Input type="url" label="URL Input" placeholder="https://example.com" />
186
+ </div>
187
+ ),
188
+ };
189
+
190
+ // Edge Cases
191
+ export const EdgeCases: Story = {
192
+ render: () => (
193
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '16px', width: '300px' }}>
194
+ <Input
195
+ label="Long Text Overflow"
196
+ defaultValue="This is a very long text that should show how the input handles overflow and long content gracefully"
197
+ />
198
+ <Input label="Empty with Floating" floating placeholder="Floating label behavior" />
199
+ <Input label="No Full Width" fullWidth={false} placeholder="Not full width" />
200
+ <Input
201
+ variant="glass"
202
+ label="Glass + All Props"
203
+ placeholder="Kitchen sink example"
204
+ glow
205
+ pulse
206
+ floating
207
+ helperText="This has all visual effects enabled"
208
+ />
209
+ </div>
210
+ ),
211
+ };
212
+
213
+ // Required story export: Responsive
214
+ export const Responsive: Story = {
215
+ render: () => (
216
+ <div
217
+ style={{
218
+ display: 'grid',
219
+ gridTemplateColumns: 'repeat(auto-fit, minmax(250px, 1fr))',
220
+ gap: '16px',
221
+ }}
222
+ >
223
+ <Input variant="outlined" label="Responsive 1" placeholder="Resize window" />
224
+ <Input variant="glass" label="Responsive 2" placeholder="Watch layout" />
225
+ <Input variant="gradient" label="Responsive 3" placeholder="Adapt to screen" />
226
+ </div>
227
+ ),
228
+ parameters: {
229
+ viewport: {
230
+ viewports: {
231
+ mobile: { name: 'Mobile', styles: { width: '375px', height: '667px' } },
232
+ tablet: { name: 'Tablet', styles: { width: '768px', height: '1024px' } },
233
+ desktop: { name: 'Desktop', styles: { width: '1200px', height: '800px' } },
234
+ },
235
+ },
236
+ },
237
+ };
238
+
239
+ // Backward compatibility alias
240
+ export const ResponsiveDemo = Responsive;
241
+
242
+ export const Playground: Story = {
243
+ args: {
244
+ variant: 'outlined',
245
+ size: 'md',
246
+ label: 'Playground Input',
247
+ placeholder: 'Type something...',
248
+ fullWidth: true,
249
+ floating: false,
250
+ glow: false,
251
+ pulse: false,
252
+ loading: false,
253
+ error: false,
254
+ helperText: 'This is helper text',
255
+ },
256
+ };