mainstack-design-system 0.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 (481) hide show
  1. package/.env.sample +1 -0
  2. package/.eslintignore +5 -0
  3. package/.eslintrc.json +96 -0
  4. package/.github/PULL_REQUEST_TEMPLATE.md +15 -0
  5. package/.husky/commit-msg +4 -0
  6. package/.husky/pre-commit +6 -0
  7. package/.prettierignore +7 -0
  8. package/.prettierrc +9 -0
  9. package/.storybook/main.ts +22 -0
  10. package/.storybook/preview.ts +20 -0
  11. package/.vscode/extensions.json +10 -0
  12. package/README.md +139 -0
  13. package/commitlint.config.cjs +1 -0
  14. package/index.html +31 -0
  15. package/package.json +98 -0
  16. package/public/_redirects +1 -0
  17. package/public/manifest.json +15 -0
  18. package/public/robots.txt +3 -0
  19. package/public/vite.svg +1 -0
  20. package/src/app.tsx +25 -0
  21. package/src/assets/fonts/Degular-Medium.woff2 +0 -0
  22. package/src/assets/fonts/Degular-Medium_Italic.woff2 +0 -0
  23. package/src/assets/fonts/Degular-Semibold.woff2 +0 -0
  24. package/src/assets/fonts/Degular-Semibold_Italic.woff2 +0 -0
  25. package/src/assets/fonts/Degular_Display-Bold.woff2 +0 -0
  26. package/src/assets/fonts/Degular_Display-Bold_Italic.woff2 +0 -0
  27. package/src/assets/fonts/Degular_Display-Semibold.woff2 +0 -0
  28. package/src/assets/fonts/Degular_Display-Semibold_Italic.woff2 +0 -0
  29. package/src/assets/fonts/Sohne-Buch.otf +0 -0
  30. package/src/assets/fonts/So/302/246/303/252hne-Buch.otf +0 -0
  31. package/src/assets/fonts/So/302/246/303/252hne-BuchKursiv.otf +0 -0
  32. package/src/assets/fonts/So/302/246/303/252hne-Dreiviertelfett.otf +0 -0
  33. package/src/assets/fonts/So/302/246/303/252hne-DreiviertelfettKursiv.otf +0 -0
  34. package/src/assets/fonts/So/302/246/303/252hne-Extrafett.otf +0 -0
  35. package/src/assets/fonts/So/302/246/303/252hne-Fett.otf +0 -0
  36. package/src/assets/fonts/So/302/246/303/252hne-Halbfett.otf +0 -0
  37. package/src/assets/fonts/So/302/246/303/252hne-HalbfettKursiv.otf +0 -0
  38. package/src/assets/fonts/So/302/246/303/252hne-Kra/302/246/303/252ftig.otf +0 -0
  39. package/src/assets/fonts/So/302/246/303/252hne-Kra/302/246/303/252ftigKursiv.otf +0 -0
  40. package/src/assets/fonts/So/302/246/303/252hne-Leicht.otf +0 -0
  41. package/src/assets/fonts/soehne-buch-kursiv.woff2 +0 -0
  42. package/src/assets/fonts/soehne-buch.woff2 +0 -0
  43. package/src/assets/fonts/soehne-dreiviertelfett-kursiv.woff2 +0 -0
  44. package/src/assets/fonts/soehne-dreiviertelfett.woff2 +0 -0
  45. package/src/assets/fonts/soehne-extrafett.woff2 +0 -0
  46. package/src/assets/fonts/soehne-fett.woff2 +0 -0
  47. package/src/assets/fonts/soehne-halbfett-kursiv.woff2 +0 -0
  48. package/src/assets/fonts/soehne-halbfett.woff2 +0 -0
  49. package/src/assets/fonts/soehne-kraftig-kursiv.woff2 +0 -0
  50. package/src/assets/fonts/soehne-kraftig.woff2 +0 -0
  51. package/src/assets/fonts/soehne-leicht.woff2 +0 -0
  52. package/src/assets/styles/index.css +486 -0
  53. package/src/assets/svgs/check_circle.svg +8 -0
  54. package/src/assets/svgs/close-circle.svg +3 -0
  55. package/src/assets/svgs/error_message_icon.svg +8 -0
  56. package/src/assets/svgs/personal_profile_avatar.svg +13 -0
  57. package/src/assets/svgs/search-normal.svg +4 -0
  58. package/src/assets/svgs/store_avatar.svg +13 -0
  59. package/src/assets/svgs/viewIcon.svg +8 -0
  60. package/src/assets/svgs/viewOffIcon.svg +3 -0
  61. package/src/assets/themes/baseThemes.ts +40 -0
  62. package/src/components/Accordion/index.tsx +111 -0
  63. package/src/components/Avatars/index.tsx +111 -0
  64. package/src/components/Button/IconButton.tsx +119 -0
  65. package/src/components/Button/index.tsx +173 -0
  66. package/src/components/InputFields/Input.tsx +177 -0
  67. package/src/components/InputFields/MarkdownEditor.tsx +246 -0
  68. package/src/components/InputFields/SearchInput.tsx +80 -0
  69. package/src/components/InputFields/SelectInput/CountrySelect.tsx +142 -0
  70. package/src/components/InputFields/SelectInput/PhoneNumberInput.tsx +89 -0
  71. package/src/components/InputFields/SelectInput/SelectInput.tsx +395 -0
  72. package/src/components/InputFields/SelectInput/index.ts +9 -0
  73. package/src/components/InputFields/TextArea.tsx +150 -0
  74. package/src/components/InputFields/UsernameInput.tsx +145 -0
  75. package/src/components/Tiles/index.tsx +95 -0
  76. package/src/components/Typography/Display.tsx +84 -0
  77. package/src/components/Typography/Heading.tsx +136 -0
  78. package/src/components/Typography/Paragraph.tsx +105 -0
  79. package/src/components/Typography/Subtitle.tsx +148 -0
  80. package/src/components/Uploader/FileUploader.tsx +132 -0
  81. package/src/components/Uploader/ImageUploader.tsx +311 -0
  82. package/src/components/controls/Chip.tsx +78 -0
  83. package/src/components/controls/DoubleTab.tsx +80 -0
  84. package/src/components/controls/Pagination.tsx +164 -0
  85. package/src/components/controls/RadioButton.tsx +135 -0
  86. package/src/components/controls/RectangleCheckButton.tsx +106 -0
  87. package/src/components/controls/RoundCheckButton.tsx +106 -0
  88. package/src/components/controls/Stepper.tsx +84 -0
  89. package/src/components/controls/TabMenu.tsx +114 -0
  90. package/src/components/controls/ToggleButton.tsx +123 -0
  91. package/src/components/notifications/Banner.tsx +175 -0
  92. package/src/components/notifications/ClickTooltip.tsx +108 -0
  93. package/src/components/notifications/HoverTooltip.tsx +34 -0
  94. package/src/components/notifications/Snackbar.tsx +138 -0
  95. package/src/components/styleGuide/Colors.tsx +176 -0
  96. package/src/hooks/useImageUpload.ts +78 -0
  97. package/src/icons/AccountBalanceIcon.tsx +35 -0
  98. package/src/icons/AccountBalanceWalletFilledIcon.tsx +35 -0
  99. package/src/icons/AccountBalanceWalletIcon.tsx +35 -0
  100. package/src/icons/AccountCircleFilledIcon.tsx +35 -0
  101. package/src/icons/AccountCircleIcon.tsx +35 -0
  102. package/src/icons/AddAPhotoIcon.tsx +35 -0
  103. package/src/icons/AddBusinessFilledIcon.tsx +35 -0
  104. package/src/icons/AddBusinessIcon.tsx +35 -0
  105. package/src/icons/AddCircleFilledIcon.tsx +35 -0
  106. package/src/icons/AddCircleIcon.tsx +35 -0
  107. package/src/icons/AddIcon.tsx +35 -0
  108. package/src/icons/AddPhotoAlternateIcon.tsx +35 -0
  109. package/src/icons/AddShoppingCartIcon.tsx +35 -0
  110. package/src/icons/AddToSocialsIcon.tsx +48 -0
  111. package/src/icons/AddsClickIcon.tsx +35 -0
  112. package/src/icons/AdminPanelSettingsIcon.tsx +35 -0
  113. package/src/icons/AirplaneModeActiveIcon.tsx +35 -0
  114. package/src/icons/AlarmIcon.tsx +35 -0
  115. package/src/icons/AllInboxIcon.tsx +35 -0
  116. package/src/icons/AnimationIcon.tsx +35 -0
  117. package/src/icons/AppsFilledIcon.tsx +35 -0
  118. package/src/icons/AppsIcon.tsx +35 -0
  119. package/src/icons/ArchiveIcon.tsx +35 -0
  120. package/src/icons/ArrowBackIcon.tsx +35 -0
  121. package/src/icons/ArrowCircleDownFilledIcon.tsx +35 -0
  122. package/src/icons/ArrowCircleUpFilledIcon.tsx +35 -0
  123. package/src/icons/ArrowDropDownIcon.tsx +32 -0
  124. package/src/icons/ArrowDropUpIcon.tsx +37 -0
  125. package/src/icons/ArrowForwardIcon.tsx +35 -0
  126. package/src/icons/ArtTrackIcon.tsx +35 -0
  127. package/src/icons/ArticleFilledIcon.tsx +35 -0
  128. package/src/icons/ArticleIcon.tsx +35 -0
  129. package/src/icons/AttachMoneyIcon.tsx +35 -0
  130. package/src/icons/AttachmentIcon.tsx +35 -0
  131. package/src/icons/AudioFileFilledIcon.tsx +35 -0
  132. package/src/icons/AutoAwesomeMosaicFilledIcon.tsx +35 -0
  133. package/src/icons/AutoAwesomeMosaicIcon.tsx +35 -0
  134. package/src/icons/AutoFixFilledIcon.tsx +35 -0
  135. package/src/icons/AutoFixIcon.tsx +35 -0
  136. package/src/icons/AutoGraphIcon.tsx +35 -0
  137. package/src/icons/AwardStarFilledIcon.tsx +35 -0
  138. package/src/icons/AwardStarIcon.tsx +35 -0
  139. package/src/icons/BarChartFilledIcon.tsx +35 -0
  140. package/src/icons/BlockIcon.tsx +35 -0
  141. package/src/icons/BoltFilledIcon.tsx +35 -0
  142. package/src/icons/BoltIcon.tsx +35 -0
  143. package/src/icons/BookOnlineIcon.tsx +35 -0
  144. package/src/icons/BugReportIcon.tsx +35 -0
  145. package/src/icons/BusinessCenterFilledIcon.tsx +35 -0
  146. package/src/icons/BusinessCenterIcon.tsx +35 -0
  147. package/src/icons/CalendarMonthFilledIcon.tsx +35 -0
  148. package/src/icons/CalendarMonthIcon.tsx +35 -0
  149. package/src/icons/CalendarTodayIcon.tsx +35 -0
  150. package/src/icons/CallMadeIcon.tsx +35 -0
  151. package/src/icons/CallMissedIcon.tsx +35 -0
  152. package/src/icons/CallMissedOutgoingIcon.tsx +35 -0
  153. package/src/icons/CallRecievedIcon.tsx +35 -0
  154. package/src/icons/CampaignFilledIcon.tsx +22 -0
  155. package/src/icons/CampaignIcon.tsx +35 -0
  156. package/src/icons/CancelFilledIcon.tsx +22 -0
  157. package/src/icons/CancelIcon.tsx +22 -0
  158. package/src/icons/CaptivePortalIcon.tsx +35 -0
  159. package/src/icons/CardLayoutIcon.tsx +22 -0
  160. package/src/icons/CasesFilledIcon.tsx +35 -0
  161. package/src/icons/CasesIcon.tsx +35 -0
  162. package/src/icons/CategoryIcon.tsx +35 -0
  163. package/src/icons/ChairIcon.tsx +35 -0
  164. package/src/icons/ChangeCircleIcon.tsx +35 -0
  165. package/src/icons/ChatBubbleFilledIcon.tsx +35 -0
  166. package/src/icons/ChatBubbleIcon.tsx +35 -0
  167. package/src/icons/ChatFilledIcon.tsx +35 -0
  168. package/src/icons/ChatIcon.tsx +35 -0
  169. package/src/icons/CheckCircleFilledIcon.tsx +35 -0
  170. package/src/icons/CheckCircleIcon.tsx +35 -0
  171. package/src/icons/CheckIcon.tsx +35 -0
  172. package/src/icons/ChevronLeftIcon.tsx +43 -0
  173. package/src/icons/ChevronRightIcon.tsx +43 -0
  174. package/src/icons/CloseIcon.tsx +35 -0
  175. package/src/icons/CloudUploadIcon.tsx +35 -0
  176. package/src/icons/CodeIcon.tsx +35 -0
  177. package/src/icons/CoffeeIcon.tsx +35 -0
  178. package/src/icons/CollectionsBookmarkIcon.tsx +35 -0
  179. package/src/icons/ColorPickerIcon.tsx +22 -0
  180. package/src/icons/CommentCircleAltChatMessageIcon.tsx +24 -0
  181. package/src/icons/ConfirmationNumberIcon.tsx +35 -0
  182. package/src/icons/ContactMailFilledIcon.tsx +35 -0
  183. package/src/icons/ContactMailIcon.tsx +35 -0
  184. package/src/icons/ContactPageIcon.tsx +22 -0
  185. package/src/icons/ContactPhoneFilledIcon.tsx +35 -0
  186. package/src/icons/ContactPhoneIcon.tsx +35 -0
  187. package/src/icons/ContactsIcon.tsx +22 -0
  188. package/src/icons/ContentCopyIcon.tsx +35 -0
  189. package/src/icons/CopyIcon.tsx +35 -0
  190. package/src/icons/CreditCardFilledIcon.tsx +35 -0
  191. package/src/icons/CreditCardIcon.tsx +35 -0
  192. package/src/icons/DarkModeIcon.tsx +35 -0
  193. package/src/icons/DashboardFilledIcon.tsx +35 -0
  194. package/src/icons/DashboardIcon.tsx +35 -0
  195. package/src/icons/DatabaseFilledIcon.tsx +35 -0
  196. package/src/icons/DeleteIcon.tsx +35 -0
  197. package/src/icons/DescriptionIcon.tsx +35 -0
  198. package/src/icons/DesktopMacIcon.tsx +35 -0
  199. package/src/icons/DevicesIcon.tsx +35 -0
  200. package/src/icons/DiamondFilledIcon.tsx +35 -0
  201. package/src/icons/DiamondIcon.tsx +35 -0
  202. package/src/icons/DigitalProductsIcon.tsx +58 -0
  203. package/src/icons/DiscountIcon.tsx +24 -0
  204. package/src/icons/Diversity1Icon.tsx +22 -0
  205. package/src/icons/Diversity2Icon.tsx +22 -0
  206. package/src/icons/Diversity3Icon.tsx +22 -0
  207. package/src/icons/DnsIcon.tsx +35 -0
  208. package/src/icons/DoNotDisturbOnFilledIcon.tsx +35 -0
  209. package/src/icons/DoNotDisturbOnIcon.tsx +35 -0
  210. package/src/icons/DomainAddIcon.tsx +35 -0
  211. package/src/icons/DomainIcon.tsx +35 -0
  212. package/src/icons/DomainVerificationIcon.tsx +35 -0
  213. package/src/icons/DownloadIcon.tsx +35 -0
  214. package/src/icons/DraftsIcon.tsx +35 -0
  215. package/src/icons/DragHandleIcon.tsx +35 -0
  216. package/src/icons/DragIndicatorIcon.tsx +35 -0
  217. package/src/icons/EditFilledIcon.tsx +35 -0
  218. package/src/icons/EditIcon.tsx +35 -0
  219. package/src/icons/EmojiEventsFilledIcon.tsx +35 -0
  220. package/src/icons/EmojiEventsIcon.tsx +35 -0
  221. package/src/icons/EmojiFoodBeverageIcon.tsx +35 -0
  222. package/src/icons/EmojiIcon.tsx +35 -0
  223. package/src/icons/EmptyIcon.tsx +22 -0
  224. package/src/icons/ErrorFilledIcon.tsx +35 -0
  225. package/src/icons/ErrorIcon.tsx +35 -0
  226. package/src/icons/EventFilledIcon.tsx +35 -0
  227. package/src/icons/EventIcon.tsx +35 -0
  228. package/src/icons/EventTicketIcon.tsx +54 -0
  229. package/src/icons/ExpandLessIcon.tsx +40 -0
  230. package/src/icons/ExpandMoreIcon.tsx +35 -0
  231. package/src/icons/FastActionPricingIcon.tsx +58 -0
  232. package/src/icons/FeedFilledIcon.tsx +35 -0
  233. package/src/icons/FeedIcon.tsx +35 -0
  234. package/src/icons/FilePresentIcon.tsx +35 -0
  235. package/src/icons/FilterListIcon.tsx +35 -0
  236. package/src/icons/FitbitArrowDownIcon.tsx +35 -0
  237. package/src/icons/FitbitArrowUpwardIcon.tsx +35 -0
  238. package/src/icons/FlagIcon.tsx +35 -0
  239. package/src/icons/FormatAlignCenterIcon.tsx +35 -0
  240. package/src/icons/FormatAlignJustifyIcon.tsx +35 -0
  241. package/src/icons/FormatAlignLeftIcon.tsx +35 -0
  242. package/src/icons/FormatAlignRightIcon.tsx +35 -0
  243. package/src/icons/FormatBoldIcon.tsx +35 -0
  244. package/src/icons/FormatItalicIcon.tsx +35 -0
  245. package/src/icons/FormatListBulletedIcon.tsx +35 -0
  246. package/src/icons/FormatListNumberedIcon.tsx +35 -0
  247. package/src/icons/FormatSizeIcon.tsx +35 -0
  248. package/src/icons/FormatUnderlineIcon.tsx +35 -0
  249. package/src/icons/ForumIcon.tsx +35 -0
  250. package/src/icons/ForwardToInboxIcon.tsx +35 -0
  251. package/src/icons/GalleryThumbnailIcon.tsx +35 -0
  252. package/src/icons/GppBadFilledIcon.tsx +35 -0
  253. package/src/icons/GppBadIcon.tsx +35 -0
  254. package/src/icons/GppMaybeFilledIcon.tsx +35 -0
  255. package/src/icons/GppMaybeIcon.tsx +35 -0
  256. package/src/icons/GridViewIcon.tsx +35 -0
  257. package/src/icons/GroupFilledIcon.tsx +35 -0
  258. package/src/icons/GroupIcon.tsx +35 -0
  259. package/src/icons/HeadphonesIcon.tsx +35 -0
  260. package/src/icons/HomeFilledIcon.tsx +35 -0
  261. package/src/icons/HomeIcon.tsx +35 -0
  262. package/src/icons/HomePinIcon.tsx +35 -0
  263. package/src/icons/HourGlassEmptyIcon.tsx +35 -0
  264. package/src/icons/HubIcon.tsx +22 -0
  265. package/src/icons/InfoFilledIcon.tsx +35 -0
  266. package/src/icons/InfoGradientFilledIcon.tsx +49 -0
  267. package/src/icons/InfoIcon.tsx +35 -0
  268. package/src/icons/InsertChartFilledIcon.tsx +35 -0
  269. package/src/icons/InsertChartIcon.tsx +35 -0
  270. package/src/icons/InventoryIcon.tsx +22 -0
  271. package/src/icons/IosShareIcon.tsx +35 -0
  272. package/src/icons/KeyboardBackspaceIcon.tsx +35 -0
  273. package/src/icons/LanguageIcon.tsx +35 -0
  274. package/src/icons/LibraryMusicIcon.tsx +35 -0
  275. package/src/icons/LinkIcon.tsx +35 -0
  276. package/src/icons/LinkOffIcon.tsx +35 -0
  277. package/src/icons/LocalActivityIcon.tsx +35 -0
  278. package/src/icons/LocalFloristFilledIcon.tsx +35 -0
  279. package/src/icons/LocalFloristIcon.tsx +35 -0
  280. package/src/icons/LocationOnIcon.tsx +35 -0
  281. package/src/icons/LockIcon.tsx +35 -0
  282. package/src/icons/LoginIcon.tsx +35 -0
  283. package/src/icons/LogoutIcon.tsx +43 -0
  284. package/src/icons/MailIcon.tsx +35 -0
  285. package/src/icons/MarkUnreadChatIcon.tsx +35 -0
  286. package/src/icons/MasterClassIcon.tsx +74 -0
  287. package/src/icons/MediaLinkFilledIcon.tsx +35 -0
  288. package/src/icons/MediaLinkIcon.tsx +35 -0
  289. package/src/icons/MenuIcon.tsx +35 -0
  290. package/src/icons/MenuOpenIcon.tsx +35 -0
  291. package/src/icons/MilitaryTechFilledIcon.tsx +35 -0
  292. package/src/icons/MilitaryTechIcon.tsx +35 -0
  293. package/src/icons/MonitoringIcon.tsx +35 -0
  294. package/src/icons/MoreHorizontalIcon.tsx +35 -0
  295. package/src/icons/MoreHorizontalSmallIcon.tsx +35 -0
  296. package/src/icons/MoreVerticalIcon.tsx +35 -0
  297. package/src/icons/NotificationsFilledIcon.tsx +40 -0
  298. package/src/icons/NotificationsIcon.tsx +35 -0
  299. package/src/icons/OpenInNewIcon.tsx +35 -0
  300. package/src/icons/OthersIcon.tsx +58 -0
  301. package/src/icons/PageViewIcon.tsx +35 -0
  302. package/src/icons/PaidIcon.tsx +35 -0
  303. package/src/icons/PaletteFilledIcon.tsx +35 -0
  304. package/src/icons/PaletteIcon.tsx +35 -0
  305. package/src/icons/PauseIcon.tsx +22 -0
  306. package/src/icons/PayInTranchesIcon.tsx +29 -0
  307. package/src/icons/PaymentsFilledIcon.tsx +35 -0
  308. package/src/icons/PaymentsIcon.tsx +35 -0
  309. package/src/icons/PendingActionsIcon.tsx +35 -0
  310. package/src/icons/PermMediaIcon.tsx +35 -0
  311. package/src/icons/PersonAddIcon.tsx +35 -0
  312. package/src/icons/PersonIcon.tsx +35 -0
  313. package/src/icons/PhotoCameraIcon.tsx +35 -0
  314. package/src/icons/PhotoFilledIcon.tsx +35 -0
  315. package/src/icons/PhotoIcon.tsx +35 -0
  316. package/src/icons/PhotoLibraryFilledIcon.tsx +35 -0
  317. package/src/icons/PhotoLibraryIcon.tsx +35 -0
  318. package/src/icons/PictureAsPdfFilledIcon.tsx +35 -0
  319. package/src/icons/PictureAsPdfIcon.tsx +35 -0
  320. package/src/icons/PlayArrowIcon.tsx +32 -0
  321. package/src/icons/PlayCircleFilledIcon.tsx +35 -0
  322. package/src/icons/PlayCircleIcon.tsx +22 -0
  323. package/src/icons/PowerRoundedIcon.tsx +35 -0
  324. package/src/icons/PreviewIcon.tsx +35 -0
  325. package/src/icons/PublicIcon.tsx +22 -0
  326. package/src/icons/PublishIcon.tsx +35 -0
  327. package/src/icons/PushPinFilledIcon.tsx +35 -0
  328. package/src/icons/PushPinIcon.tsx +35 -0
  329. package/src/icons/QrCode2Icon.tsx +35 -0
  330. package/src/icons/RadioButtonCheckedIcon.tsx +35 -0
  331. package/src/icons/RadioButtonUncheckedIcon.tsx +35 -0
  332. package/src/icons/RecieptLongFilledIcon.tsx +35 -0
  333. package/src/icons/RecieptLongIcon.tsx +35 -0
  334. package/src/icons/RecordVoiceOverIcon.tsx +35 -0
  335. package/src/icons/RedeemIcon.tsx +35 -0
  336. package/src/icons/RedoIcon.tsx +35 -0
  337. package/src/icons/RemoveIcon.tsx +32 -0
  338. package/src/icons/RemoveRoadIcon.tsx +35 -0
  339. package/src/icons/ReportFilledIcon.tsx +35 -0
  340. package/src/icons/ReportIcon.tsx +35 -0
  341. package/src/icons/ReviewsIcon.tsx +43 -0
  342. package/src/icons/SavingsFilledIcon.tsx +35 -0
  343. package/src/icons/SavingsIcon.tsx +35 -0
  344. package/src/icons/ScheduleIcon.tsx +35 -0
  345. package/src/icons/ScheduleSendIcon.tsx +35 -0
  346. package/src/icons/SearchNormalIcon.tsx +32 -0
  347. package/src/icons/SellIcon.tsx +35 -0
  348. package/src/icons/SendIcon.tsx +35 -0
  349. package/src/icons/ServicesIcon.tsx +39 -0
  350. package/src/icons/SettingsFilledIcon.tsx +35 -0
  351. package/src/icons/SettingsIcon.tsx +35 -0
  352. package/src/icons/ShareIcon.tsx +35 -0
  353. package/src/icons/ShareWithContactsIcon.tsx +62 -0
  354. package/src/icons/ShareWithSocialsIcon.tsx +64 -0
  355. package/src/icons/ShoppingCartFilledIcon.tsx +35 -0
  356. package/src/icons/ShoppingCartIcon.tsx +35 -0
  357. package/src/icons/ShuffleIcon.tsx +35 -0
  358. package/src/icons/SmartPhoneIcon.tsx +35 -0
  359. package/src/icons/SocialLeaderboardIcon.tsx +35 -0
  360. package/src/icons/StarFilledIcon.tsx +35 -0
  361. package/src/icons/StarHalfIcon.tsx +35 -0
  362. package/src/icons/StarIcon.tsx +35 -0
  363. package/src/icons/StoreFrontFilledIcon.tsx +35 -0
  364. package/src/icons/StoreFrontIcon.tsx +35 -0
  365. package/src/icons/StrikeThroughSIcon.tsx +35 -0
  366. package/src/icons/StyleIcon.tsx +35 -0
  367. package/src/icons/SubscriptionIcon.tsx +46 -0
  368. package/src/icons/SubscriptionsFilledIcon.tsx +35 -0
  369. package/src/icons/SubscriptionsIcon.tsx +35 -0
  370. package/src/icons/SupervisorAccountIcon.tsx +35 -0
  371. package/src/icons/SwitchAccountFilledIcon.tsx +35 -0
  372. package/src/icons/SwitchAccountIcon.tsx +35 -0
  373. package/src/icons/SyncSavedLocallyIcon.tsx +35 -0
  374. package/src/icons/TabletIcon.tsx +35 -0
  375. package/src/icons/ThumbDownFilledIcon.tsx +22 -0
  376. package/src/icons/ThumbDownIcon.tsx +22 -0
  377. package/src/icons/ThumbUpFilledIcon.tsx +22 -0
  378. package/src/icons/ThumbUpIcon.tsx +22 -0
  379. package/src/icons/TocIcon.tsx +35 -0
  380. package/src/icons/TrainingsIcon.tsx +37 -0
  381. package/src/icons/TrashDeleteBinIcon.tsx +36 -0
  382. package/src/icons/TrendingUpIcon.tsx +35 -0
  383. package/src/icons/UndoIcon.tsx +35 -0
  384. package/src/icons/UnfoldMoreIcon.tsx +35 -0
  385. package/src/icons/UploadIcon.tsx +35 -0
  386. package/src/icons/VerifiedIcon.tsx +24 -0
  387. package/src/icons/ViewAgendaIcon.tsx +22 -0
  388. package/src/icons/ViewArrayIcon.tsx +35 -0
  389. package/src/icons/ViewCarouselIcon.tsx +35 -0
  390. package/src/icons/ViewCozyIcon.tsx +22 -0
  391. package/src/icons/ViewModuleIcon.tsx +35 -0
  392. package/src/icons/VisibilityIcon.tsx +35 -0
  393. package/src/icons/VisibilityOffIcon.tsx +35 -0
  394. package/src/icons/VolunteerActivismFilledIcon.tsx +35 -0
  395. package/src/icons/VolunteerActivismIcon.tsx +35 -0
  396. package/src/icons/WBSunnyIcon.tsx +35 -0
  397. package/src/icons/WarningFilledIcon.tsx +35 -0
  398. package/src/icons/WarningIcon.tsx +35 -0
  399. package/src/icons/WebinarsIcon.tsx +57 -0
  400. package/src/icons/WidgetsFilledIcon.tsx +35 -0
  401. package/src/icons/WidgetsIcon.tsx +35 -0
  402. package/src/icons/WorkshopsIcon.tsx +50 -0
  403. package/src/icons/index.ts +305 -0
  404. package/src/pages/Home.tsx +30 -0
  405. package/src/pages/Login.tsx +13 -0
  406. package/src/pages/Page404.tsx +13 -0
  407. package/src/pages/index.tsx +21 -0
  408. package/src/routes/index.tsx +7 -0
  409. package/src/stories/Accordion/Accordion.stories.tsx +100 -0
  410. package/src/stories/Accordion/AccordionWrapper.tsx +16 -0
  411. package/src/stories/Avatars/Avatar.stories.ts +57 -0
  412. package/src/stories/Buttons/Button.stories.tsx +95 -0
  413. package/src/stories/Buttons/IconButton.stories.ts +68 -0
  414. package/src/stories/Buttons/IconButtonWrapper.tsx +14 -0
  415. package/src/stories/Colors.mdx +12 -0
  416. package/src/stories/Configure.mdx +371 -0
  417. package/src/stories/InputFields/InputFields.stories.ts +54 -0
  418. package/src/stories/InputFields/MarkdownEditor.stories.ts +20 -0
  419. package/src/stories/InputFields/SearchInput.stories.ts +22 -0
  420. package/src/stories/InputFields/SearchInput.tsx +19 -0
  421. package/src/stories/InputFields/Select/CountrySelect.stories.tsx +21 -0
  422. package/src/stories/InputFields/Select/CountrySelectWrapper.tsx +25 -0
  423. package/src/stories/InputFields/Select/CreatableSelect.stories.tsx +48 -0
  424. package/src/stories/InputFields/Select/CreatableSelectWrapper.tsx +25 -0
  425. package/src/stories/InputFields/Select/PhoneNumberInput.stories.tsx +33 -0
  426. package/src/stories/InputFields/Select/PhoneNumberInputWrapper.tsx +21 -0
  427. package/src/stories/InputFields/Select/Select.stories.tsx +49 -0
  428. package/src/stories/InputFields/Select/SelectWrapper.tsx +25 -0
  429. package/src/stories/InputFields/TextArea.stories.ts +22 -0
  430. package/src/stories/InputFields/UsernameInput.stories.ts +22 -0
  431. package/src/stories/Tiles/Tile.stories.tsx +71 -0
  432. package/src/stories/Tiles/TileWrapper.tsx +17 -0
  433. package/src/stories/Typography/DisplayText.stories.ts +52 -0
  434. package/src/stories/Typography/HeadingText.stories.ts +86 -0
  435. package/src/stories/Typography/ParagraphText.stories.ts +62 -0
  436. package/src/stories/Typography/SubtitleText.stories.ts +93 -0
  437. package/src/stories/Uploaders/FileUploadWrapper.tsx +25 -0
  438. package/src/stories/Uploaders/FileUploader.stories.tsx +17 -0
  439. package/src/stories/Uploaders/ImageUploadWrapper.tsx +30 -0
  440. package/src/stories/Uploaders/ImageUploader.stories.tsx +19 -0
  441. package/src/stories/assets/accessibility.png +0 -0
  442. package/src/stories/assets/accessibility.svg +5 -0
  443. package/src/stories/assets/addon-library.png +0 -0
  444. package/src/stories/assets/assets.png +0 -0
  445. package/src/stories/assets/context.png +0 -0
  446. package/src/stories/assets/discord.svg +15 -0
  447. package/src/stories/assets/docs.png +0 -0
  448. package/src/stories/assets/figma-plugin.png +0 -0
  449. package/src/stories/assets/github.svg +3 -0
  450. package/src/stories/assets/share.png +0 -0
  451. package/src/stories/assets/styling.png +0 -0
  452. package/src/stories/assets/testing.png +0 -0
  453. package/src/stories/assets/theming.png +0 -0
  454. package/src/stories/assets/tutorials.svg +12 -0
  455. package/src/stories/assets/youtube.svg +4 -0
  456. package/src/stories/colors/index.ts +4 -0
  457. package/src/stories/controls/Chip.stories.ts +42 -0
  458. package/src/stories/controls/DoubleTab.stories.ts +32 -0
  459. package/src/stories/controls/DoubleTabWrapper.tsx +15 -0
  460. package/src/stories/controls/Pagination.stories.ts +21 -0
  461. package/src/stories/controls/PaginationWrapper.tsx +23 -0
  462. package/src/stories/controls/RadioButton.stories.ts +49 -0
  463. package/src/stories/controls/RectangleCheckButton.stories.ts +41 -0
  464. package/src/stories/controls/RoundCheckButton.stories.ts +41 -0
  465. package/src/stories/controls/Stepper.stories.ts +37 -0
  466. package/src/stories/controls/StepperDemoCmp.tsx +37 -0
  467. package/src/stories/controls/TabMenu.stories.ts +33 -0
  468. package/src/stories/controls/TabMenuWrapper.tsx +14 -0
  469. package/src/stories/controls/ToggleButton.stories.ts +41 -0
  470. package/src/stories/icons/Icons.mdx +26 -0
  471. package/src/stories/icons/index.ts +613 -0
  472. package/src/stories/notifications/Banner.stories.ts +88 -0
  473. package/src/stories/notifications/ClickTooltip.stories.ts +21 -0
  474. package/src/stories/notifications/ClickTooltipWrapper.tsx +19 -0
  475. package/src/stories/notifications/HoverTooltip.stories.ts +35 -0
  476. package/src/stories/notifications/HoverTooltipWrapper.tsx +16 -0
  477. package/src/stories/notifications/Snackbar.stories.ts +17 -0
  478. package/src/stories/notifications/SnackbarWrapper.tsx +107 -0
  479. package/src/utils/countries-flag.json +1752 -0
  480. package/tsconfig.json +34 -0
  481. package/vite.config.ts +27 -0
@@ -0,0 +1,311 @@
1
+ /** @format */
2
+
3
+ import {
4
+ Box,
5
+ Center,
6
+ Circle,
7
+ Flex,
8
+ Grid,
9
+ GridItem,
10
+ Popover,
11
+ PopoverBody,
12
+ PopoverContent,
13
+ PopoverTrigger,
14
+ SimpleGrid,
15
+ Text,
16
+ useMediaQuery,
17
+ } from "@chakra-ui/react";
18
+ import Button from "components/Button";
19
+ import Paragraph from "components/Typography/Paragraph";
20
+ import Subtitle from "components/Typography/Subtitle";
21
+ import Colors from "components/styleGuide/Colors";
22
+ import {
23
+ AddIcon,
24
+ MoreHorizontalIcon,
25
+ PhotoIcon,
26
+ PhotoLibraryIcon,
27
+ TrashDeleteBinIcon,
28
+ } from "icons";
29
+ import { ChangeEvent, useRef } from "react";
30
+
31
+ export interface IImageUpload {
32
+ onHandleChange: (e: ChangeEvent<HTMLInputElement>) => void;
33
+ imageArray: string[];
34
+ multiple?: boolean;
35
+ coverImageIndex?: number;
36
+ multiImagePopover?: React.ReactNode;
37
+ handleDeleteImage?: (e: any) => void;
38
+ handleChangeCoverImage?: (e: any) => void;
39
+ accept?: string;
40
+ }
41
+
42
+ const ImageUploader = ({
43
+ multiple = false,
44
+ onHandleChange,
45
+ imageArray,
46
+ coverImageIndex,
47
+ handleDeleteImage,
48
+ handleChangeCoverImage,
49
+ multiImagePopover,
50
+ accept,
51
+ ...props
52
+ }: IImageUpload) => {
53
+ const fileInputRef = useRef<HTMLInputElement>(null);
54
+ const [isMobile] = useMediaQuery("(max-width: 767px)");
55
+
56
+ return (
57
+ <>
58
+ <Grid templateColumns={"repeat(5, 1fr)"} gap="16px">
59
+ {imageArray.length > 0 ? (
60
+ <GridItem colSpan={5}>
61
+ <Flex
62
+ bgImage={imageArray[coverImageIndex ?? 0]}
63
+ bgSize={"cover"}
64
+ bgPosition={"center"}
65
+ bgRepeat={"no-repeat"}
66
+ direction={"column"}
67
+ align={"center"}
68
+ justify={"center"}
69
+ outline={"1px solid"}
70
+ outlineColor={Colors.gray100}
71
+ borderRadius={"16px"}
72
+ p="24px"
73
+ aspectRatio={764 / 574}
74
+ position={"relative"}
75
+ {...props}
76
+ >
77
+ {!multiple ? (
78
+ <Flex position={"absolute"} bottom={"24px"} gap="12px">
79
+ <Button
80
+ size="medium"
81
+ bgColor={Colors.white100}
82
+ variant="link"
83
+ textColor={Colors.black300}
84
+ label={
85
+ <Flex align="center" gap="4px">
86
+ <PhotoLibraryIcon />
87
+ <Subtitle size={"6xs"} lineHeight={"20px"}>
88
+ Change image
89
+ </Subtitle>
90
+ </Flex>
91
+ }
92
+ onClick={(e) => {
93
+ e.preventDefault();
94
+ fileInputRef.current?.click();
95
+ }}
96
+ />
97
+ <Button
98
+ size="medium"
99
+ bgColor={Colors.white100}
100
+ variant="link"
101
+ textColor={Colors.black300}
102
+ label={
103
+ <Flex align="center" gap="4px">
104
+ <TrashDeleteBinIcon />
105
+ <Subtitle size={"6xs"} lineHeight={"20px"}>
106
+ Delete image
107
+ </Subtitle>
108
+ </Flex>
109
+ }
110
+ onClick={handleDeleteImage}
111
+ />
112
+ </Flex>
113
+ ) : (
114
+ <Center
115
+ bg={Colors.white100}
116
+ px="12px"
117
+ py="8px"
118
+ borderRadius={"100px"}
119
+ position={"absolute"}
120
+ top={"20px"}
121
+ right={"20px"}
122
+ >
123
+ <Text
124
+ fontFamily={"Degular"}
125
+ fontSize={"14px"}
126
+ fontWeight={600}
127
+ lineHeight={"16px"}
128
+ letterSpacing={"-0.4px"}
129
+ m="0"
130
+ >
131
+ Cover image
132
+ </Text>
133
+ </Center>
134
+ )}
135
+ </Flex>
136
+ </GridItem>
137
+ ) : (
138
+ <GridItem colSpan={5}>
139
+ <Flex
140
+ direction={"column"}
141
+ align={"center"}
142
+ justify={"center"}
143
+ outline={"1px dashed"}
144
+ outlineColor={Colors.gray100}
145
+ borderRadius={"16px"}
146
+ _hover={{
147
+ outline: "3px solid",
148
+ outlineColor: Colors.black300,
149
+ bgColor: Colors.gray50,
150
+ }}
151
+ p={isMobile ? "16px" : "24px"}
152
+ aspectRatio={764 / 574}
153
+ position={"relative"}
154
+ onClick={(e) => {
155
+ e.preventDefault();
156
+ fileInputRef.current?.click();
157
+ }}
158
+ {...props}
159
+ >
160
+ <Center boxSize={isMobile ? "24px" : "40px"}>
161
+ <PhotoLibraryIcon fontSize={isMobile ? "24px" : "40px"} />
162
+ </Center>
163
+ <Subtitle
164
+ size={isMobile ? "5xs" : "4xs"}
165
+ mt={isMobile ? "12px" : "24px"}
166
+ >
167
+ Drop your product images here.
168
+ </Subtitle>
169
+ <Paragraph
170
+ size={isMobile ? "xxs" : "xs"}
171
+ color={Colors.gray400}
172
+ textAlign={"center"}
173
+ mt="10px"
174
+ >
175
+ 1600 *1200 (4:3) recommended, up to 10MB each. You can add up-to
176
+ 5 photos
177
+ </Paragraph>
178
+
179
+ <Box position={"absolute"} bottom={isMobile ? "16px" : "24px"}>
180
+ <Button
181
+ size="small"
182
+ bg={Colors.white100}
183
+ variant="outline"
184
+ label={
185
+ <Flex align="center" gap="4px">
186
+ <PhotoLibraryIcon />
187
+ <Subtitle size={"6xs"} lineHeight={"20px"}>
188
+ Click to browse
189
+ </Subtitle>
190
+ </Flex>
191
+ }
192
+ />
193
+ </Box>
194
+ </Flex>
195
+ </GridItem>
196
+ )}
197
+ </Grid>
198
+ {multiple && (
199
+ <SimpleGrid
200
+ minChildWidth={isMobile ? "100%" : "140px"}
201
+ gap={isMobile ? "8px" : "16px"}
202
+ mt={isMobile ? "8px" : "16px"}
203
+ >
204
+ {[1, 2, 3, 4, 5].map((item, index) => (
205
+ <>
206
+ <Center
207
+ borderRadius={isMobile ? "16px" : "12px"}
208
+ key={index}
209
+ aspectRatio={764 / 574}
210
+ bgImage={imageArray[index]}
211
+ outline={imageArray[index] ? "1px solid" : "1px dashed"}
212
+ outlineColor={Colors.gray50}
213
+ bgSize={"cover"}
214
+ bgPosition={"center"}
215
+ bgRepeat={"no-repeat"}
216
+ position={"relative"}
217
+ _hover={{
218
+ outline: "3px solid",
219
+ outlineColor: imageArray[index]
220
+ ? Colors.white100
221
+ : Colors.black300,
222
+ bgColor: imageArray[index] ? Colors.white100 : Colors.gray50,
223
+ }}
224
+ >
225
+ {imageArray[index] ? (
226
+ <Box position={"absolute"} top={"8px"} right={"8px"}>
227
+ <Popover placement="bottom-end">
228
+ <PopoverTrigger>
229
+ <Circle
230
+ bg={Colors.white100}
231
+ size={isMobile ? "24px" : "32px"}
232
+ cursor={"pointer"}
233
+ >
234
+ <MoreHorizontalIcon />
235
+ </Circle>
236
+ </PopoverTrigger>
237
+ <PopoverContent
238
+ bg={"#fff"}
239
+ borderRadius={"12px"}
240
+ boxShadow={"none"}
241
+ w="fit-content"
242
+ p="8px 12px"
243
+ >
244
+ <PopoverBody p="0">
245
+ <Flex
246
+ cursor={"pointer"}
247
+ alignItems={"center"}
248
+ gap="8px"
249
+ p="14px"
250
+ onClick={() =>
251
+ handleChangeCoverImage &&
252
+ handleChangeCoverImage(index)
253
+ }
254
+ >
255
+ <Center>
256
+ <PhotoIcon fill={"red"} />
257
+ </Center>
258
+ <Subtitle size={"6xs"}>Make cover image</Subtitle>
259
+ </Flex>
260
+ <Flex
261
+ cursor={"pointer"}
262
+ alignItems={"center"}
263
+ gap="8px"
264
+ p="14px"
265
+ onClick={() => {
266
+ if (handleChangeCoverImage && handleDeleteImage) {
267
+ handleChangeCoverImage(0);
268
+ handleDeleteImage(index);
269
+ }
270
+ }}
271
+ >
272
+ <TrashDeleteBinIcon />
273
+ <Subtitle size={"6xs"} color={Colors.red400}>
274
+ Delete image
275
+ </Subtitle>
276
+ </Flex>
277
+ </PopoverBody>
278
+ </PopoverContent>
279
+ </Popover>
280
+ </Box>
281
+ ) : (
282
+ <Center
283
+ cursor={"pointer"}
284
+ onClick={(e) => {
285
+ e.preventDefault();
286
+ fileInputRef.current?.click();
287
+ }}
288
+ >
289
+ <AddIcon fontSize={"24px"} />
290
+ </Center>
291
+ )}
292
+ </Center>
293
+ </>
294
+ ))}
295
+ </SimpleGrid>
296
+ )}
297
+
298
+ <input
299
+ type="file"
300
+ accept={accept || "image/*"}
301
+ multiple={multiple}
302
+ id="inputFile"
303
+ style={{ display: "none" }}
304
+ ref={fileInputRef}
305
+ onChange={onHandleChange}
306
+ />
307
+ </>
308
+ );
309
+ };
310
+
311
+ export default ImageUploader;
@@ -0,0 +1,78 @@
1
+ /** @format */
2
+
3
+ import { Flex, Text, FlexProps } from "@chakra-ui/react";
4
+ import Colors from "components/styleGuide/Colors";
5
+ import RadioButton from "./RadioButton";
6
+ interface Props extends FlexProps {
7
+ isChecked: boolean;
8
+ label: string;
9
+ hasRadio?: boolean;
10
+ }
11
+ const Chip = ({ isChecked, label, hasRadio, ...rest }: Props) => {
12
+ return (
13
+ <Flex
14
+ pl={hasRadio ? "16px" : "16px"}
15
+ py={hasRadio ? "12px" : "16px"}
16
+ pr={hasRadio ? "12px" : "16px"}
17
+ justifyContent={"center"}
18
+ alignItems={"center"}
19
+ borderRadius={"360px"}
20
+ width={"fit-content"}
21
+ minWidth={hasRadio ? "97px" : "67px"}
22
+ height={"48px"}
23
+ cursor={"pointer"}
24
+ bg={Colors.white100}
25
+ boxSizing="border-box"
26
+ position={"relative"}
27
+ _hover={{
28
+ bg: Colors.gray50,
29
+ transition: "border 0.1s ease-in-out, background 0.1s ease-in-out",
30
+ ".radio": {
31
+ bg: isChecked ? "" : Colors.gray50,
32
+ transition: "border 0.1s ease-in-out, background 0.1s ease-in-out",
33
+ },
34
+ _before: {
35
+ border: `3px solid ${Colors.black300}`,
36
+ transition: "border 0.2s ease-in-out, background 0.2s ease-in-out",
37
+ },
38
+ }}
39
+ {...rest}
40
+ _before={{
41
+ content: '""',
42
+ position: "absolute",
43
+ top: 0,
44
+ left: 0,
45
+ right: 0,
46
+ bottom: 0,
47
+ border: isChecked
48
+ ? `3px solid ${Colors.black300}`
49
+ : `1px solid ${Colors.gray50}`,
50
+ borderRadius: "360px",
51
+ }}
52
+ >
53
+ <Flex justifyContent={"space-between"} alignItems={"center"} gap={"10px"}>
54
+ <Text
55
+ color={isChecked ? Colors.black300 : Colors.gray400}
56
+ fontFamily={"Degular"}
57
+ fontSize={"16px"}
58
+ fontWeight={600}
59
+ lineHeight={"16px"}
60
+ letterSpacing={"-0.4px"}
61
+ flex={1}
62
+ margin={0}
63
+ >
64
+ {label}
65
+ </Text>
66
+ {hasRadio && (
67
+ <RadioButton
68
+ isChecked={isChecked}
69
+ isDisabled={!isChecked}
70
+ className="radio"
71
+ />
72
+ )}
73
+ </Flex>
74
+ </Flex>
75
+ );
76
+ };
77
+
78
+ export default Chip;
@@ -0,0 +1,80 @@
1
+ /** @format */
2
+
3
+ import {
4
+ Tabs as DefaultTabs,
5
+ Tab,
6
+ TabList,
7
+ TabPanels,
8
+ TabPanel,
9
+ TabProps,
10
+ } from "@chakra-ui/react";
11
+ import Colors from "components/styleGuide/Colors";
12
+ export interface DoubleTabProps extends TabProps {
13
+ items: {
14
+ name: string;
15
+ element: any;
16
+ }[];
17
+ }
18
+ const DoubleTab = ({ items }: DoubleTabProps) => {
19
+ return (
20
+ <DefaultTabs>
21
+ <TabList
22
+ h={"52px"}
23
+ background={Colors.gray50}
24
+ alignItems="center"
25
+ borderRadius={"100px"}
26
+ p={"4px"}
27
+ borderBottom="unset"
28
+ fontFamily="Degular"
29
+ fontSize={"16px"}
30
+ lineHeight={"18px"}
31
+ gap={"4px"}
32
+ w={["100%", "max-content"]}
33
+ borderColor={Colors.gray50}
34
+ overflowX={["scroll", "auto"]}
35
+ >
36
+ {items.map((item, index) => (
37
+ <Tab
38
+ w="fit-content"
39
+ h="100%"
40
+ display="flex"
41
+ fontFamily={"Degular"}
42
+ fontSize={"16px"}
43
+ justifyContent="center"
44
+ border="none"
45
+ marginBottom="0"
46
+ cursor="pointer"
47
+ fontWeight={600}
48
+ color={Colors.gray400}
49
+ letterSpacing={"-0.4px"}
50
+ lineHeight={"16px"}
51
+ transition={"all ease-in-out .4s"}
52
+ _selected={{
53
+ color: `${Colors.black300} !important`,
54
+ borderColor: "unset !important",
55
+ backgroundColor: Colors.white100,
56
+ borderRadius: "100px",
57
+ transition: "all ease-in-out .4s",
58
+ boxShadow: "0px 1px 2px 0px rgba(86, 97, 107, 0.10)",
59
+ }}
60
+ px={"24px"}
61
+ py={"14px"}
62
+ key={index}
63
+ >
64
+ {item.name}
65
+ </Tab>
66
+ ))}
67
+ </TabList>
68
+
69
+ <TabPanels>
70
+ {items.map((item, index) => (
71
+ <TabPanel padding={"0"} key={index}>
72
+ {item.element}
73
+ </TabPanel>
74
+ ))}
75
+ </TabPanels>
76
+ </DefaultTabs>
77
+ );
78
+ };
79
+
80
+ export default DoubleTab;
@@ -0,0 +1,164 @@
1
+ /** @format */
2
+
3
+ import { Flex, Select, Show } from "@chakra-ui/react";
4
+ import Button from "components/Button";
5
+ import IconButton from "components/Button/IconButton";
6
+ import Colors from "components/styleGuide/Colors";
7
+ import ChevronLeftIcon from "icons/ChevronLeftIcon";
8
+ import ChevronRightIcon from "icons/ChevronRightIcon";
9
+
10
+ export interface PaginationProps {
11
+ limit: number;
12
+ setLimit: any;
13
+ page: number;
14
+ setPage: any;
15
+ total?: number;
16
+ options?: any;
17
+ }
18
+
19
+ const Pagination = ({
20
+ limit,
21
+ setLimit,
22
+ page,
23
+ setPage,
24
+ total = 3,
25
+ options,
26
+ }: PaginationProps) => {
27
+ const totalPages = Math.ceil(total / limit);
28
+
29
+ return (
30
+ <>
31
+ <Flex
32
+ alignItems={"center"}
33
+ justifyContent={{ base: "space-between", md: "flex-end" }}
34
+ columnGap={"12px"}
35
+ width="100%"
36
+ mt={"24px"}
37
+ mb={["55px", 0]}
38
+ border={"none"}
39
+ >
40
+ <Show above="md">
41
+ <Select
42
+ bg={Colors.gray50}
43
+ borderRadius="100px"
44
+ border={"none"}
45
+ _focus={{
46
+ outline: `2px solid ${Colors.gray50}`,
47
+ outlineOffset: "0px",
48
+ bg: Colors.white100,
49
+ }}
50
+ _focusVisible={{
51
+ outline: `2px solid ${Colors.gray50}`,
52
+ outlineOffset: "0px",
53
+ bg: Colors.white100,
54
+ }}
55
+ fontWeight={"600"}
56
+ fontFamily="Degular"
57
+ fontSize={"16px"}
58
+ width="182px"
59
+ height={"40px"}
60
+ onChange={(e) => {
61
+ setLimit(parseInt(e?.target?.value));
62
+ setPage(1);
63
+ }}
64
+ value={limit}
65
+ cursor="pointer"
66
+ >
67
+ {options ?? (
68
+ <>
69
+ <option value={10}>10 items per page</option>
70
+ <option value={20}>20 items per page</option>
71
+ <option value={50}>50 items per page</option>
72
+ <option value={100}>100 items per page</option>
73
+ </>
74
+ )}
75
+ </Select>
76
+ </Show>
77
+
78
+ <Show above="md">
79
+ <Button
80
+ label={"Previous"}
81
+ size="medium"
82
+ variant="tertiary"
83
+ onClick={() => {
84
+ setPage(Math.max(page - 1, 1));
85
+ }}
86
+ isDisabled={page === 1}
87
+ bg={Colors.gray50}
88
+ />
89
+ </Show>
90
+
91
+ <Show below="md">
92
+ <IconButton
93
+ size="medium"
94
+ variant="tertiary"
95
+ onClick={() => setPage(Math.max(page - 1, 1))}
96
+ isDisabled={page === 1}
97
+ >
98
+ <ChevronLeftIcon color={Colors.black300} fontSize={"24px"} />
99
+ </IconButton>
100
+ </Show>
101
+
102
+ <Flex columnGap={"12px"}>
103
+ {Array.from({ length: Math.min(totalPages, 3) })?.map(
104
+ (val, index) => (
105
+ <IconButton
106
+ key={index}
107
+ size="medium"
108
+ boxSize={"40px"}
109
+ variant={
110
+ page ===
111
+ (index === 2
112
+ ? totalPages
113
+ : index === 1 && page > 2
114
+ ? Math.min(page, totalPages - 1)
115
+ : index + 1)
116
+ ? "tertiary"
117
+ : "outline"
118
+ }
119
+ onClick={() =>
120
+ setPage(
121
+ index === 2
122
+ ? totalPages
123
+ : index === 1 && page > 2
124
+ ? Math.min(page, totalPages - 1)
125
+ : index + 1
126
+ )
127
+ }
128
+ >
129
+ {index === 2
130
+ ? totalPages
131
+ : index === 1 && page > 2
132
+ ? Math.min(page, totalPages - 1)
133
+ : index + 1}
134
+ </IconButton>
135
+ )
136
+ )}
137
+ </Flex>
138
+
139
+ <Show above="md">
140
+ <Button
141
+ label={"Next"}
142
+ size="medium"
143
+ variant="tertiary"
144
+ onClick={() => setPage(page + 1)}
145
+ isDisabled={page === totalPages}
146
+ />
147
+ </Show>
148
+
149
+ <Show below="md">
150
+ <IconButton
151
+ size="medium"
152
+ variant="tertiary"
153
+ onClick={() => setPage(page + 1)}
154
+ isDisabled={page === totalPages}
155
+ >
156
+ <ChevronRightIcon color={Colors.black300} fontSize={"24px"} />
157
+ </IconButton>
158
+ </Show>
159
+ </Flex>
160
+ </>
161
+ );
162
+ };
163
+
164
+ export default Pagination;