@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,93 @@
1
+ import type { CSSProperties,ReactNode } from 'react';
2
+
3
+ export interface SheetProps {
4
+ open?: boolean;
5
+ onOpenChange?: (open: boolean) => void;
6
+ children?: ReactNode;
7
+ title?: string;
8
+ description?: string;
9
+ position?: 'top' | 'bottom' | 'left' | 'right';
10
+ variant?: 'default' | 'glass' | 'gradient' | 'elevated' | 'minimal' | 'draggable';
11
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
12
+ color?: 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info';
13
+ glow?: boolean;
14
+ pulse?: boolean;
15
+ glass?: boolean;
16
+ gradient?: boolean;
17
+ ripple?: boolean;
18
+ loading?: boolean;
19
+ disabled?: boolean;
20
+ className?: string;
21
+ style?: CSSProperties;
22
+ showOverlay?: boolean;
23
+ closeOnOverlayClick?: boolean;
24
+ closeOnEscape?: boolean;
25
+ showCloseButton?: boolean;
26
+ showHandle?: boolean;
27
+ swipeable?: boolean;
28
+ snapPoints?: number[];
29
+ defaultSnapPoint?: number;
30
+ onSnapPointChange?: (snapPoint: number) => void;
31
+ minSnapPoint?: number;
32
+ maxSnapPoint?: number;
33
+ velocityThreshold?: number;
34
+ dragResistance?: number;
35
+ animationConfig?: {
36
+ tension?: number;
37
+ friction?: number;
38
+ velocity?: number;
39
+ };
40
+ onClick?: () => void;
41
+ onFocus?: () => void;
42
+ onBlur?: () => void;
43
+ onClose?: () => void;
44
+ onOpen?: () => void;
45
+ onDragStart?: () => void;
46
+ onDragEnd?: (snapPoint: number) => void;
47
+ footer?: ReactNode;
48
+ header?: ReactNode;
49
+ persistent?: boolean;
50
+ fullHeight?: boolean;
51
+ rounded?: boolean;
52
+ elevation?: number;
53
+ dataTestId?: string;
54
+ }
55
+
56
+ export interface SheetHeaderProps {
57
+ title?: string;
58
+ description?: string;
59
+ showCloseButton?: boolean;
60
+ onClose?: () => void;
61
+ showHandle?: boolean;
62
+ isDraggable?: boolean;
63
+ onDragStart?: (e: React.MouseEvent | React.TouchEvent) => void;
64
+ className?: string;
65
+ style?: CSSProperties;
66
+ children?: ReactNode;
67
+ dataTestId?: string;
68
+ }
69
+
70
+ export interface SheetContentProps {
71
+ children?: ReactNode;
72
+ className?: string;
73
+ style?: CSSProperties;
74
+ padded?: boolean;
75
+ dataTestId?: string;
76
+ }
77
+
78
+ export interface SheetFooterProps {
79
+ children?: ReactNode;
80
+ className?: string;
81
+ style?: CSSProperties;
82
+ sticky?: boolean;
83
+ divider?: boolean;
84
+ dataTestId?: string;
85
+ }
86
+
87
+ export interface SheetOverlayProps {
88
+ open?: boolean;
89
+ onClick?: () => void;
90
+ className?: string;
91
+ style?: CSSProperties;
92
+ blur?: boolean;
93
+ }
@@ -0,0 +1,8 @@
1
+ export { Sheet, SheetContent, SheetFooter, SheetHeader, SheetOverlay } from './Sheet';
2
+ export type {
3
+ SheetContentProps,
4
+ SheetFooterProps,
5
+ SheetHeaderProps,
6
+ SheetOverlayProps,
7
+ SheetProps,
8
+ } from './Sheet.types';
@@ -0,0 +1,542 @@
1
+ # Stepper Component
2
+
3
+ **Purpose:** Visual step progress for multi-step flows (linear or non-linear), with vertical/horizontal orientations.
4
+
5
+ ```ts
6
+ interface Step {
7
+ id: string;
8
+ label: string;
9
+ description?: string;
10
+ optional?: boolean;
11
+ disabled?: boolean;
12
+ }
13
+
14
+ interface StepperProps {
15
+ steps: Step[];
16
+ activeId: string; // current step id
17
+ completed?: Set<string>; // completed step ids
18
+ orientation?: 'horizontal' | 'vertical';
19
+ variant?: 'linear' | 'non-linear';
20
+ onStepChange?: (id: string) => void; // click/keyboard nav
21
+ clickable?: boolean; // allow jumping (non-linear)
22
+ renderConnector?: (
23
+ from: Step,
24
+ to: Step,
25
+ state: { completed: boolean; active: boolean },
26
+ ) => React.ReactNode;
27
+ className?: string;
28
+ }
29
+ ```
30
+
31
+ **Features**
32
+
33
+ - Numbered dots or checkmarks; connectors showing progress.
34
+ - Optional descriptions and “optional” flag per step.
35
+ - Linear mode restricts forward navigation until prior steps complete.
36
+
37
+ **A11y**
38
+
39
+ - Render as an ordered list `<ol>`; set `aria-current="step"` on active.
40
+ - If steps are interactive, each step is a `<button>` or link within the list item.
41
+
42
+ **Stories / Tests**
43
+
44
+ - Horizontal/Vertical; Linear vs Non-linear (clickable); With optional steps; Disabled steps; Keyboard nav.
45
+
46
+ ## Testing
47
+
48
+ ### Test IDs
49
+
50
+ #### Container Elements
51
+
52
+ ##### `stepper-container`
53
+ - **Element:** Main Stepper container
54
+ - **Location:** Root ordered list element that wraps all stepper items
55
+ - **Usage:** Query the main container to verify Stepper is rendered
56
+ ```typescript
57
+ const container = await canvas.findByTestId('stepper-container');
58
+ expect(container).toBeInTheDocument();
59
+ ```
60
+
61
+ ##### `stepper-step-${index}`
62
+ - **Element:** Individual stepper step container
63
+ - **Location:** Each step's container (one per step item)
64
+ - **Index:** Zero-based index (0, 1, 2, ...)
65
+ - **Usage:** Query specific step by index
66
+ ```typescript
67
+ // Get first step
68
+ const firstStep = await canvas.findByTestId('stepper-step-0');
69
+ expect(firstStep).toBeInTheDocument();
70
+
71
+ // Get all steps
72
+ const allSteps = await canvas.findAllByTestId(/stepper-step-\d+/);
73
+ expect(allSteps).toHaveLength(expectedCount);
74
+ ```
75
+
76
+ #### Step Content Elements
77
+
78
+ ##### `stepper-step-content-${index}`
79
+ - **Element:** Step content wrapper containing icon and label
80
+ - **Location:** Box wrapping the icon and label for each step
81
+ - **Index:** Zero-based index matching parent step
82
+ - **Usage:** Query step content area
83
+ ```typescript
84
+ const stepContent = await canvas.findByTestId('stepper-step-content-0');
85
+ expect(stepContent).toBeInTheDocument();
86
+ ```
87
+
88
+ ##### `stepper-step-icon-${index}`
89
+ - **Element:** Step icon/number button
90
+ - **Location:** The circular button displaying step number or checkmark
91
+ - **Index:** Zero-based index matching parent step
92
+ - **Usage:** Query step icons, verify completion status
93
+ ```typescript
94
+ const stepIcon = await canvas.findByTestId('stepper-step-icon-0');
95
+ expect(stepIcon).toBeInTheDocument();
96
+
97
+ // Check if step is completed (has checkmark)
98
+ const checkIcon = within(stepIcon).queryByTestId('CheckCircleIcon');
99
+ expect(checkIcon).toBeInTheDocument();
100
+ ```
101
+
102
+ ##### `stepper-step-label-${index}`
103
+ - **Element:** Step label text container
104
+ - **Location:** Box containing step title and optional description
105
+ - **Index:** Zero-based index matching parent step
106
+ - **Usage:** Query step labels, verify text content
107
+ ```typescript
108
+ const stepLabel = await canvas.findByTestId('stepper-step-label-0');
109
+ expect(stepLabel).toHaveTextContent('Personal Information');
110
+ ```
111
+
112
+ ##### `stepper-connector-${index}`
113
+ - **Element:** Connector line between steps
114
+ - **Location:** Line connecting current step to next step
115
+ - **Index:** Zero-based index of the step BEFORE the connector
116
+ - **Usage:** Query connectors, verify completion state
117
+ ```typescript
118
+ // Get connector after first step
119
+ const connector = await canvas.findByTestId('stepper-connector-0');
120
+ expect(connector).toBeInTheDocument();
121
+
122
+ // Note: Last step has no connector
123
+ const allConnectors = await canvas.findAllByTestId(/stepper-connector-\d+/);
124
+ expect(allConnectors).toHaveLength(steps.length - 1);
125
+ ```
126
+
127
+ #### State Indicator Classes
128
+
129
+ ##### `stepper-step-active`
130
+ - **Element:** CSS class added to active step
131
+ - **Location:** Applied to step container (`stepper-step-${index}`)
132
+ - **Usage:** Identify which step is currently active
133
+ ```typescript
134
+ const activeStep = canvasElement.querySelector('.stepper-step-active');
135
+ expect(activeStep).toBeInTheDocument();
136
+ expect(activeStep).toHaveAttribute('data-testid', 'stepper-step-1');
137
+ ```
138
+
139
+ ##### `stepper-step-completed`
140
+ - **Element:** CSS class added to completed steps
141
+ - **Location:** Applied to step container (`stepper-step-${index}`)
142
+ - **Usage:** Identify which steps are completed
143
+ ```typescript
144
+ const completedSteps = canvasElement.querySelectorAll('.stepper-step-completed');
145
+ expect(completedSteps).toHaveLength(expectedCompletedCount);
146
+ ```
147
+
148
+ ##### `stepper-step-optional`
149
+ - **Element:** CSS class added to optional steps
150
+ - **Location:** Applied to step container (`stepper-step-${index}`)
151
+ - **Usage:** Identify optional steps
152
+ ```typescript
153
+ const optionalSteps = canvasElement.querySelectorAll('.stepper-step-optional');
154
+ expect(optionalSteps).toHaveLength(expectedOptionalCount);
155
+ ```
156
+
157
+ ### Test Patterns
158
+
159
+ #### Wait for Stepper to Render
160
+ ```typescript
161
+ import { waitFor, within } from 'storybook/test';
162
+
163
+ // Wait for container
164
+ const container = await canvas.findByTestId('stepper-container');
165
+
166
+ // Wait for all steps to render
167
+ await waitFor(async () => {
168
+ const steps = await canvas.findAllByTestId(/stepper-step-\d+/);
169
+ expect(steps).toHaveLength(expectedStepCount);
170
+ }, { timeout: 3000 });
171
+ ```
172
+
173
+ #### Verify Step States
174
+ ```typescript
175
+ // Get all steps
176
+ const steps = await canvas.findAllByTestId(/stepper-step-\d+/);
177
+
178
+ // Check active step
179
+ const activeStep = steps.find(step => step.classList.contains('stepper-step-active'));
180
+ expect(activeStep).toBeDefined();
181
+
182
+ // Check completed steps
183
+ const completedSteps = steps.filter(step => step.classList.contains('stepper-step-completed'));
184
+ expect(completedSteps).toHaveLength(expectedCompletedCount);
185
+
186
+ // Check optional steps
187
+ const optionalSteps = steps.filter(step => step.classList.contains('stepper-step-optional'));
188
+ expect(optionalSteps).toHaveLength(expectedOptionalCount);
189
+ ```
190
+
191
+ #### Test Step Icons
192
+ ```typescript
193
+ // Get all step icons
194
+ const icons = await canvas.findAllByTestId(/stepper-step-icon-\d+/);
195
+
196
+ for (let i = 0; i < icons.length; i++) {
197
+ const icon = icons[i];
198
+
199
+ // Check if completed (has checkmark)
200
+ const checkIcon = within(icon).queryByTestId('CheckCircleIcon');
201
+
202
+ if (completedStepIds.includes(steps[i].id)) {
203
+ expect(checkIcon).toBeInTheDocument();
204
+ } else {
205
+ // Should show number
206
+ expect(icon).toHaveTextContent(String(i + 1));
207
+ }
208
+ }
209
+ ```
210
+
211
+ #### Test Connectors
212
+ ```typescript
213
+ // Verify connector count (always steps.length - 1)
214
+ const connectors = await canvas.findAllByTestId(/stepper-connector-\d+/);
215
+ expect(connectors).toHaveLength(steps.length - 1);
216
+
217
+ // Check connector completion state
218
+ for (let i = 0; i < connectors.length; i++) {
219
+ const connector = connectors[i];
220
+ const step = steps[i];
221
+
222
+ // If step is completed, connector should have completed style
223
+ if (completedStepIds.includes(step.id)) {
224
+ const style = window.getComputedStyle(connector);
225
+ expect(style.backgroundColor).toContain('primary.main');
226
+ }
227
+ }
228
+ ```
229
+
230
+ #### Check Horizontal vs Vertical Orientation
231
+ ```typescript
232
+ const container = await canvas.findByTestId('stepper-container');
233
+ const style = window.getComputedStyle(container);
234
+
235
+ // Verify orientation
236
+ if (orientation === 'horizontal') {
237
+ expect(style.flexDirection).toBe('row');
238
+ } else {
239
+ expect(style.flexDirection).toBe('column');
240
+ }
241
+ ```
242
+
243
+ #### Test Step Navigation (Clickable)
244
+ ```typescript
245
+ // Get all step icons (buttons)
246
+ const stepIcons = await canvas.findAllByTestId(/stepper-step-icon-\d+/);
247
+
248
+ // Click on step 2
249
+ await userEvent.click(stepIcons[1]);
250
+
251
+ // Verify callback was called
252
+ expect(args.onStepChange).toHaveBeenCalledWith(steps[1].id);
253
+
254
+ // Verify active state changed
255
+ await waitFor(() => {
256
+ const activeStep = canvasElement.querySelector('.stepper-step-active');
257
+ expect(activeStep).toHaveAttribute('data-testid', 'stepper-step-1');
258
+ });
259
+ ```
260
+
261
+ ### Props That Affect Test Behavior
262
+
263
+ #### `variant`
264
+ - **Values:** `'linear' | 'non-linear'`
265
+ - **Impact:**
266
+ - `linear`: Only forward navigation allowed
267
+ - `non-linear`: Can jump to any step
268
+ - **Test Tip:** Test clicking behavior differs based on variant
269
+
270
+ #### `orientation`
271
+ - **Values:** `'horizontal' | 'vertical'`
272
+ - **Impact:** Changes container and step layout direction
273
+ - **Test Tip:** Verify `flexDirection` in computed styles
274
+
275
+ #### `clickable`
276
+ - **Values:** `boolean`
277
+ - **Impact:** Enables/disables step clicking
278
+ - **Default:** `true` for non-linear, `false` for linear
279
+ - **Test Tip:** Verify pointer events and cursor styles
280
+
281
+ #### `completed`
282
+ - **Values:** `Set<string>` of step IDs
283
+ - **Impact:** Determines which steps show checkmark and completion styling
284
+ - **Test Tip:** Use `.stepper-step-completed` class to verify
285
+
286
+ #### `activeId`
287
+ - **Values:** `string` (step ID)
288
+ - **Impact:** Determines which step is currently active
289
+ - **Test Tip:** Use `.stepper-step-active` class to verify
290
+
291
+ ### Common Test Scenarios
292
+
293
+ #### 1. Basic Rendering Test
294
+ ```typescript
295
+ play: async ({ canvasElement }) => {
296
+ const canvas = within(canvasElement);
297
+
298
+ // Wait for stepper to render
299
+ const container = await canvas.findByTestId('stepper-container');
300
+ expect(container).toBeInTheDocument();
301
+
302
+ // Verify correct number of steps
303
+ const steps = await canvas.findAllByTestId(/stepper-step-\d+/);
304
+ expect(steps).toHaveLength(expectedCount);
305
+
306
+ // Verify connectors (always n-1)
307
+ const connectors = await canvas.findAllByTestId(/stepper-connector-\d+/);
308
+ expect(connectors).toHaveLength(expectedCount - 1);
309
+ }
310
+ ```
311
+
312
+ #### 2. Active Step Test
313
+ ```typescript
314
+ play: async ({ canvasElement }) => {
315
+ const canvas = within(canvasElement);
316
+
317
+ // Wait for container
318
+ await canvas.findByTestId('stepper-container');
319
+
320
+ // Find active step
321
+ const activeStep = canvasElement.querySelector('.stepper-step-active');
322
+ expect(activeStep).toBeDefined();
323
+
324
+ // Verify it's the correct step
325
+ const activeStepId = args.activeId;
326
+ const expectedIndex = steps.findIndex(s => s.id === activeStepId);
327
+ expect(activeStep).toHaveAttribute('data-testid', `stepper-step-${expectedIndex}`);
328
+ }
329
+ ```
330
+
331
+ #### 3. Completion State Test
332
+ ```typescript
333
+ play: async ({ canvasElement, args }) => {
334
+ const canvas = within(canvasElement);
335
+
336
+ // Wait for container
337
+ await canvas.findByTestId('stepper-container');
338
+
339
+ // Get completed steps
340
+ const completedSteps = canvasElement.querySelectorAll('.stepper-step-completed');
341
+ expect(completedSteps).toHaveLength(args.completed.size);
342
+
343
+ // Verify each completed step has checkmark
344
+ for (const step of completedSteps) {
345
+ const testId = step.getAttribute('data-testid');
346
+ const index = testId?.match(/stepper-step-(\d+)/)?.[1];
347
+ const icon = await canvas.findByTestId(`stepper-step-icon-${index}`);
348
+
349
+ // Should contain CheckCircle icon
350
+ const checkIcon = within(icon).queryByTestId('CheckCircleIcon');
351
+ expect(checkIcon).toBeInTheDocument();
352
+ }
353
+ }
354
+ ```
355
+
356
+ #### 4. Optional Steps Test
357
+ ```typescript
358
+ play: async ({ canvasElement }) => {
359
+ const canvas = within(canvasElement);
360
+
361
+ // Wait for container
362
+ await canvas.findByTestId('stepper-container');
363
+
364
+ // Get optional steps
365
+ const optionalSteps = canvasElement.querySelectorAll('.stepper-step-optional');
366
+
367
+ // Verify each shows "(optional)" text
368
+ for (const step of optionalSteps) {
369
+ const testId = step.getAttribute('data-testid');
370
+ const index = testId?.match(/stepper-step-(\d+)/)?.[1];
371
+ const label = await canvas.findByTestId(`stepper-step-label-${index}`);
372
+
373
+ expect(label).toHaveTextContent('(optional)');
374
+ }
375
+ }
376
+ ```
377
+
378
+ #### 5. Navigation Test (Non-Linear)
379
+ ```typescript
380
+ play: async ({ canvasElement, args }) => {
381
+ const canvas = within(canvasElement);
382
+
383
+ // Wait for container
384
+ await canvas.findByTestId('stepper-container');
385
+
386
+ // Get step icons
387
+ const icons = await canvas.findAllByTestId(/stepper-step-icon-\d+/);
388
+
389
+ // Click on third step
390
+ await userEvent.click(icons[2]);
391
+
392
+ // Verify callback
393
+ expect(args.onStepChange).toHaveBeenCalledWith(steps[2].id);
394
+
395
+ // Wait for active state to update
396
+ await waitFor(() => {
397
+ const activeStep = canvasElement.querySelector('.stepper-step-active');
398
+ expect(activeStep).toHaveAttribute('data-testid', 'stepper-step-2');
399
+ }, { timeout: 1000 });
400
+ }
401
+ ```
402
+
403
+ #### 6. Disabled Step Test
404
+ ```typescript
405
+ play: async ({ canvasElement }) => {
406
+ const canvas = within(canvasElement);
407
+
408
+ // Wait for container
409
+ await canvas.findByTestId('stepper-container');
410
+
411
+ // Find disabled step
412
+ const disabledStepIndex = steps.findIndex(s => s.disabled);
413
+ const icon = await canvas.findByTestId(`stepper-step-icon-${disabledStepIndex}`);
414
+
415
+ // Should be disabled
416
+ expect(icon).toBeDisabled();
417
+
418
+ // Click should not work
419
+ await userEvent.click(icon);
420
+ expect(args.onStepChange).not.toHaveBeenCalled();
421
+ }
422
+ ```
423
+
424
+ #### 7. Orientation Test
425
+ ```typescript
426
+ play: async ({ canvasElement, args }) => {
427
+ const canvas = within(canvasElement);
428
+
429
+ const container = await canvas.findByTestId('stepper-container');
430
+ const style = window.getComputedStyle(container);
431
+
432
+ if (args.orientation === 'horizontal') {
433
+ expect(style.flexDirection).toBe('row');
434
+ } else {
435
+ expect(style.flexDirection).toBe('column');
436
+ }
437
+ }
438
+ ```
439
+
440
+ #### 8. Custom Connector Test
441
+ ```typescript
442
+ play: async ({ canvasElement, args }) => {
443
+ const canvas = within(canvasElement);
444
+
445
+ // Wait for container
446
+ await canvas.findByTestId('stepper-container');
447
+
448
+ if (args.renderConnector) {
449
+ // Custom connectors won't have testId
450
+ // Verify default connectors are not present
451
+ const defaultConnectors = canvas.queryAllByTestId(/stepper-connector-\d+/);
452
+ expect(defaultConnectors).toHaveLength(0);
453
+ } else {
454
+ // Should have default connectors
455
+ const connectors = await canvas.findAllByTestId(/stepper-connector-\d+/);
456
+ expect(connectors).toHaveLength(steps.length - 1);
457
+ }
458
+ }
459
+ ```
460
+
461
+ ### Troubleshooting
462
+
463
+ #### Issue: "Unable to find element with testId X"
464
+
465
+ **Solution:** Always use `await` with `findByTestId`:
466
+ ```typescript
467
+ // Wrong - synchronous
468
+ const element = canvas.getByTestId('stepper-container');
469
+
470
+ // Correct - asynchronous
471
+ const element = await canvas.findByTestId('stepper-container');
472
+ ```
473
+
474
+ #### Issue: Wrong number of connectors
475
+
476
+ **Solution:** Remember connectors = steps - 1 (no connector after last step):
477
+ ```typescript
478
+ const connectors = await canvas.findAllByTestId(/stepper-connector-\d+/);
479
+ expect(connectors).toHaveLength(steps.length - 1); // Not steps.length
480
+ ```
481
+
482
+ #### Issue: Can't find active/completed step by class
483
+
484
+ **Solution:** Use vanilla DOM query, not Testing Library for class queries:
485
+ ```typescript
486
+ // Wrong - Testing Library doesn't have good class support
487
+ const activeStep = canvas.getByClassName('stepper-step-active');
488
+
489
+ // Correct - use vanilla querySelector
490
+ const activeStep = canvasElement.querySelector('.stepper-step-active');
491
+ ```
492
+
493
+ #### Issue: Custom connector not found
494
+
495
+ **Solution:** Custom connectors bypass default connectors, won't have testIds:
496
+ ```typescript
497
+ if (args.renderConnector) {
498
+ // Don't look for default testIds
499
+ // Inspect custom rendered content instead
500
+ const customElements = canvasElement.querySelectorAll('[role="connector"]');
501
+ expect(customElements).toHaveLength(steps.length - 1);
502
+ }
503
+ ```
504
+
505
+ #### Issue: Test fails when checking icon content
506
+
507
+ **Solution:** Completed steps show CheckCircle, others show number:
508
+ ```typescript
509
+ const icon = await canvas.findByTestId('stepper-step-icon-0');
510
+
511
+ if (isCompleted) {
512
+ // Look for MUI icon
513
+ const checkIcon = within(icon).queryByTestId('CheckCircleIcon');
514
+ expect(checkIcon).toBeInTheDocument();
515
+ } else {
516
+ // Look for number text
517
+ expect(icon).toHaveTextContent('1'); // index + 1
518
+ }
519
+ ```
520
+
521
+ ### Best Practices
522
+
523
+ 1. **Always use async/await** with testId queries in Storybook tests
524
+ 2. **Use regex patterns** for multiple steps: `/stepper-step-\d+/`
525
+ 3. **Remember connector count** is always `steps.length - 1`
526
+ 4. **Scope queries** with `within()` when looking inside step containers
527
+ 5. **Use vanilla DOM** for class-based queries (`.stepper-step-active`)
528
+ 6. **Check both icon types**: CheckCircle for completed, number for others
529
+ 7. **Test clickable behavior**: Verify based on `variant` and `clickable` props
530
+
531
+ ### Index Reference
532
+
533
+ All index-based testIds use **zero-based indexing**:
534
+ - Step 1 (first) → `stepper-step-0`
535
+ - Step 2 (second) → `stepper-step-1`
536
+ - Step 3 (third) → `stepper-step-2`
537
+ - etc.
538
+
539
+ Same for all child elements:
540
+ - `stepper-step-icon-0`, `stepper-step-icon-1`, ...
541
+ - `stepper-step-label-0`, `stepper-step-label-1`, ...
542
+ - `stepper-connector-0`, `stepper-connector-1`, ... (no connector for last step)