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,95 @@
1
+ /** @format */
2
+
3
+ import { Box, Center, Flex, Text } from "@chakra-ui/react";
4
+ import Paragraph from "components/Typography/Paragraph";
5
+ import RadioButton from "components/controls/RadioButton";
6
+ import Colors from "components/styleGuide/Colors";
7
+
8
+ export interface TileProps {
9
+ isSelected?: boolean;
10
+ title: string;
11
+ subText?: string;
12
+ icon?: JSX.Element;
13
+ iconPosition?: "leading" | "trailing" | "top";
14
+ hasRadioButton?: boolean;
15
+ onClick?: () => void;
16
+ }
17
+
18
+ const Tile = ({
19
+ icon,
20
+ iconPosition,
21
+ hasRadioButton,
22
+ isSelected,
23
+ title,
24
+ subText,
25
+ onClick,
26
+ }: TileProps) => {
27
+ return (
28
+ <Flex
29
+ alignItems={"center"}
30
+ cursor={"pointer"}
31
+ outline={isSelected ? "3px solid" : "1px solid"}
32
+ outlineColor={isSelected ? Colors.black300 : Colors.gray50}
33
+ borderRadius="16px"
34
+ boxSizing="border-box"
35
+ py="20px"
36
+ px={iconPosition === "trailing" ? "24px" : "20px"}
37
+ width="100%"
38
+ maxW={"370px"}
39
+ gap={iconPosition === "leading" ? "12px" : "16px"}
40
+ _hover={{
41
+ outline: "3px solid",
42
+ outlineColor: Colors.black300,
43
+ bg: Colors.gray50,
44
+ }}
45
+ onClick={onClick}
46
+ >
47
+ {icon && iconPosition === "leading" && <Box w="28px">{icon}</Box>}
48
+ <Box w="100%">
49
+ {icon && iconPosition === "top" && (
50
+ <Flex alignItems={"center"} w="100%">
51
+ <Center boxSize="28px" mb="12px">
52
+ {icon}
53
+ </Center>
54
+ {hasRadioButton && (
55
+ <Center boxSize="28px" mb="12px" ml="auto">
56
+ <RadioButton
57
+ isChecked={isSelected || false}
58
+ onClick={onClick}
59
+ />
60
+ </Center>
61
+ )}
62
+ </Flex>
63
+ )}
64
+ <Text
65
+ fontFamily={"Degular"}
66
+ fontSize="16px"
67
+ fontWeight={600}
68
+ lineHeight={"20px"}
69
+ letterSpacing={"-0.064px"}
70
+ mb="4px"
71
+ mt="0"
72
+ >
73
+ {title || "Title"}
74
+ </Text>
75
+
76
+ {subText && (
77
+ <Paragraph color={Colors.gray400} size={"xxs"}>
78
+ {subText}
79
+ </Paragraph>
80
+ )}
81
+ </Box>
82
+
83
+ {icon && iconPosition === "trailing" ? (
84
+ <Box w="28px">{icon}</Box>
85
+ ) : (icon && iconPosition === "leading" && hasRadioButton) ||
86
+ (!icon && hasRadioButton) ? (
87
+ <Box w="28px">
88
+ <RadioButton isChecked={isSelected || false} />
89
+ </Box>
90
+ ) : null}
91
+ </Flex>
92
+ );
93
+ };
94
+
95
+ export default Tile;
@@ -0,0 +1,84 @@
1
+ /** @format */
2
+
3
+ import { Text, TextProps } from "@chakra-ui/react";
4
+
5
+ const DisplayVariant = {
6
+ "3xl": {
7
+ fontSize: "72px",
8
+ lineHeight: "96px",
9
+ },
10
+ xxl: {
11
+ fontSize: "64px",
12
+ lineHeight: "88px",
13
+ },
14
+ xl: {
15
+ fontSize: "56px",
16
+ lineHeight: "72px",
17
+ },
18
+ l: {
19
+ fontSize: "48px",
20
+ lineHeight: "64px",
21
+ },
22
+ m: {
23
+ fontSize: "40px",
24
+ lineHeight: "56px",
25
+ },
26
+ };
27
+
28
+ type DefaultType = "3xl" | "xxl" | "xl" | "l" | "m";
29
+
30
+ type ResponsiveType = {
31
+ xl?: DefaultType;
32
+ lg?: DefaultType;
33
+ md?: DefaultType;
34
+ sm?: DefaultType;
35
+ base?: DefaultType;
36
+ };
37
+
38
+ interface IDisplay extends TextProps {
39
+ children: any;
40
+ color?: string;
41
+ size: DefaultType | ResponsiveType;
42
+ }
43
+
44
+ const getResponsiveValues = (size_obj: ResponsiveType, property: any) => {
45
+ const sizes: ResponsiveType = {};
46
+ Object.entries(size_obj).forEach(([key, value]) => {
47
+ // @ts-ignore
48
+ sizes[key] = DisplayVariant[value][property];
49
+ });
50
+ return sizes;
51
+ };
52
+
53
+ const Display = ({ size, color, children, ...props }: IDisplay) => {
54
+ return (
55
+ <Text
56
+ as="h1"
57
+ color={color || "#000000"}
58
+ fontFamily="Degular Display"
59
+ fontSize={
60
+ typeof size === "string"
61
+ ? DisplayVariant[size].fontSize
62
+ : {
63
+ ...getResponsiveValues(size, "fontSize"),
64
+ }
65
+ }
66
+ fontWeight={800}
67
+ fontStyle="normal"
68
+ lineHeight={
69
+ typeof size === "string"
70
+ ? DisplayVariant[size].lineHeight
71
+ : {
72
+ ...getResponsiveValues(size, "lineHeight"),
73
+ }
74
+ }
75
+ letterSpacing="0.3px"
76
+ m="0"
77
+ {...props}
78
+ >
79
+ {children}
80
+ </Text>
81
+ );
82
+ };
83
+
84
+ export default Display;
@@ -0,0 +1,136 @@
1
+ /** @format */
2
+
3
+ import { Text, TextProps } from "@chakra-ui/react";
4
+
5
+ const HeadingVariant = {
6
+ "3xl": {
7
+ fontSize: "72px",
8
+ lineHeight: "96px",
9
+ letterSpacing: "-3px",
10
+ },
11
+ xxl: {
12
+ fontSize: "64px",
13
+ lineHeight: "88px",
14
+ letterSpacing: "-3px",
15
+ },
16
+ xl: {
17
+ fontSize: "56px",
18
+ lineHeight: "72px",
19
+ letterSpacing: "-2px",
20
+ },
21
+ l: {
22
+ fontSize: "48px",
23
+ lineHeight: "64px",
24
+ letterSpacing: "-2px",
25
+ },
26
+ m: {
27
+ fontSize: "40px",
28
+ lineHeight: "56px",
29
+ letterSpacing: "-1.5px",
30
+ },
31
+ s: {
32
+ fontSize: "36px",
33
+ lineHeight: "48px",
34
+ letterSpacing: "-1.5px",
35
+ },
36
+ xs: {
37
+ fontSize: "32px",
38
+ lineHeight: "40px",
39
+ letterSpacing: "-1.5px",
40
+ },
41
+ xxs: {
42
+ fontSize: "28px",
43
+ lineHeight: "40px",
44
+ letterSpacing: "-0.6px",
45
+ },
46
+ "3xs": {
47
+ fontSize: "24px",
48
+ lineHeight: "32px",
49
+ letterSpacing: "-0.6px",
50
+ },
51
+ "4xs": {
52
+ fontSize: "22px",
53
+ lineHeight: "32px",
54
+ letterSpacing: "-0.6px",
55
+ },
56
+ "5xs": {
57
+ fontSize: "20px",
58
+ lineHeight: "24px",
59
+ letterSpacing: "-0.6px",
60
+ },
61
+ };
62
+
63
+ type DefaultType =
64
+ | "3xl"
65
+ | "xxl"
66
+ | "xl"
67
+ | "l"
68
+ | "m"
69
+ | "s"
70
+ | "xs"
71
+ | "xxs"
72
+ | "3xs"
73
+ | "4xs"
74
+ | "5xs";
75
+
76
+ type ResponsiveType = {
77
+ xl?: DefaultType;
78
+ lg?: DefaultType;
79
+ md?: DefaultType;
80
+ sm?: DefaultType;
81
+ base?: DefaultType;
82
+ };
83
+
84
+ interface IHeading extends TextProps {
85
+ children: any;
86
+ color?: string;
87
+ size: DefaultType | ResponsiveType;
88
+ }
89
+
90
+ const getResponsiveValues = (size_obj: ResponsiveType, property: any) => {
91
+ const sizes: ResponsiveType = {};
92
+ Object.entries(size_obj).forEach(([key, value]) => {
93
+ // @ts-ignore
94
+ sizes[key] = HeadingVariant[value][property];
95
+ });
96
+ return sizes;
97
+ };
98
+
99
+ const Heading = ({ size, color, children, ...props }: IHeading) => {
100
+ return (
101
+ <Text
102
+ as="h1"
103
+ color={color || "#000000"}
104
+ fontFamily="Degular"
105
+ fontSize={
106
+ typeof size === "string"
107
+ ? HeadingVariant[size].fontSize
108
+ : {
109
+ ...getResponsiveValues(size, "fontSize"),
110
+ }
111
+ }
112
+ fontWeight={700}
113
+ fontStyle="normal"
114
+ lineHeight={
115
+ typeof size === "string"
116
+ ? HeadingVariant[size].lineHeight
117
+ : {
118
+ ...getResponsiveValues(size, "lineHeight"),
119
+ }
120
+ }
121
+ letterSpacing={
122
+ typeof size === "string"
123
+ ? HeadingVariant[size].letterSpacing
124
+ : {
125
+ ...getResponsiveValues(size, "letterSpacing"),
126
+ }
127
+ }
128
+ m="0"
129
+ {...props}
130
+ >
131
+ {children}
132
+ </Text>
133
+ );
134
+ };
135
+
136
+ export default Heading;
@@ -0,0 +1,105 @@
1
+ /** @format */
2
+
3
+ import { Text, TextProps } from "@chakra-ui/react";
4
+
5
+ const ParagraphVariant = {
6
+ xl: {
7
+ fontSize: "28px",
8
+ lineHeight: "40px",
9
+ letterSpacing: "-0.3px",
10
+ },
11
+ l: {
12
+ fontSize: "24px",
13
+ lineHeight: "32px",
14
+ letterSpacing: "-0.3px",
15
+ },
16
+ m: {
17
+ fontSize: "20px",
18
+ lineHeight: "26px",
19
+ letterSpacing: "-0.2px",
20
+ },
21
+ s: {
22
+ fontSize: "18px",
23
+ lineHeight: "24px",
24
+ letterSpacing: "-0.2px",
25
+ },
26
+ xs: {
27
+ fontSize: "16px",
28
+ lineHeight: "24px",
29
+ letterSpacing: "-0.2px",
30
+ },
31
+ xxs: {
32
+ fontSize: "14px",
33
+ lineHeight: "16px",
34
+ letterSpacing: "-0.2px",
35
+ },
36
+ "3xs": {
37
+ fontSize: "12px",
38
+ lineHeight: "16px",
39
+ letterSpacing: "-0.024px",
40
+ },
41
+ };
42
+
43
+ type DefaultType = "xl" | "l" | "m" | "s" | "xs" | "xxs" | "3xs";
44
+
45
+ type ResponsiveType = {
46
+ xl?: DefaultType;
47
+ lg?: DefaultType;
48
+ md?: DefaultType;
49
+ sm?: DefaultType;
50
+ base?: DefaultType;
51
+ };
52
+
53
+ interface IParagraph extends TextProps {
54
+ children: any;
55
+ color?: string;
56
+ size: DefaultType | ResponsiveType;
57
+ }
58
+
59
+ const getResponsiveValues = (size_obj: ResponsiveType, property: any) => {
60
+ const sizes: ResponsiveType = {};
61
+ Object.entries(size_obj).forEach(([key, value]) => {
62
+ // @ts-ignore
63
+ sizes[key] = ParagraphVariant[value][property];
64
+ });
65
+ return sizes;
66
+ };
67
+
68
+ const Paragraph = ({ size, color, children, ...props }: IParagraph) => {
69
+ return (
70
+ <Text
71
+ as="p"
72
+ color={color || "#000000"}
73
+ fontFamily="Degular"
74
+ fontSize={
75
+ typeof size === "string"
76
+ ? ParagraphVariant[size].fontSize
77
+ : {
78
+ ...getResponsiveValues(size, "fontSize"),
79
+ }
80
+ }
81
+ fontWeight={500}
82
+ fontStyle="normal"
83
+ lineHeight={
84
+ typeof size === "string"
85
+ ? ParagraphVariant[size].lineHeight
86
+ : {
87
+ ...getResponsiveValues(size, "lineHeight"),
88
+ }
89
+ }
90
+ letterSpacing={
91
+ typeof size === "string"
92
+ ? ParagraphVariant[size].letterSpacing
93
+ : {
94
+ ...getResponsiveValues(size, "letterSpacing"),
95
+ }
96
+ }
97
+ m="0"
98
+ {...props}
99
+ >
100
+ {children}
101
+ </Text>
102
+ );
103
+ };
104
+
105
+ export default Paragraph;
@@ -0,0 +1,148 @@
1
+ /** @format */
2
+
3
+ import { Text, TextProps } from "@chakra-ui/react";
4
+
5
+ const SubtitleVariant = {
6
+ "3xl": {
7
+ fontSize: "72px",
8
+ lineHeight: "96px",
9
+ letterSpacing: "-3px",
10
+ },
11
+ xxl: {
12
+ fontSize: "64px",
13
+ lineHeight: "88px",
14
+ letterSpacing: "-3px",
15
+ },
16
+ xl: {
17
+ fontSize: "56px",
18
+ lineHeight: "72px",
19
+ letterSpacing: "-2px",
20
+ },
21
+ l: {
22
+ fontSize: "48px",
23
+ lineHeight: "64px",
24
+ letterSpacing: "-2px",
25
+ },
26
+ m: {
27
+ fontSize: "40px",
28
+ lineHeight: "56px",
29
+ letterSpacing: "-1.5px",
30
+ },
31
+ s: {
32
+ fontSize: "36px",
33
+ lineHeight: "48px",
34
+ letterSpacing: "-1.5px",
35
+ },
36
+ xs: {
37
+ fontSize: "32px",
38
+ lineHeight: "40px",
39
+ letterSpacing: "-1.5px",
40
+ },
41
+ xxs: {
42
+ fontSize: "28px",
43
+ lineHeight: "38px",
44
+ letterSpacing: "-1px",
45
+ },
46
+ "3xs": {
47
+ fontSize: "24px",
48
+ lineHeight: "32px",
49
+ letterSpacing: "-0.6px",
50
+ },
51
+ "4xs": {
52
+ fontSize: "20px",
53
+ lineHeight: "26px",
54
+ letterSpacing: "-0.4px",
55
+ },
56
+ "5xs": {
57
+ fontSize: "18px",
58
+ lineHeight: "24px",
59
+ letterSpacing: "-0.6px",
60
+ },
61
+ "6xs": {
62
+ fontSize: "16px",
63
+ lineHeight: "24px",
64
+ letterSpacing: "-0.4px",
65
+ },
66
+ "7xs": {
67
+ fontSize: "14px",
68
+ lineHeight: "16px",
69
+ letterSpacing: "-0.4px",
70
+ },
71
+ };
72
+
73
+ type DefaultType =
74
+ | "3xl"
75
+ | "xxl"
76
+ | "xl"
77
+ | "l"
78
+ | "m"
79
+ | "s"
80
+ | "xs"
81
+ | "xxs"
82
+ | "3xs"
83
+ | "4xs"
84
+ | "5xs"
85
+ | "6xs"
86
+ | "7xs";
87
+
88
+ type ResponsiveType = {
89
+ xl?: DefaultType;
90
+ lg?: DefaultType;
91
+ md?: DefaultType;
92
+ sm?: DefaultType;
93
+ base?: DefaultType;
94
+ };
95
+
96
+ interface ISubtitle extends TextProps {
97
+ children: any;
98
+ color?: string;
99
+ size: DefaultType | ResponsiveType;
100
+ }
101
+
102
+ const getResponsiveValues = (size_obj: ResponsiveType, property: any) => {
103
+ const sizes: ResponsiveType = {};
104
+ Object.entries(size_obj).forEach(([key, value]) => {
105
+ // @ts-ignore
106
+ sizes[key] = SubtitleVariant[value][property];
107
+ });
108
+ return sizes;
109
+ };
110
+
111
+ const Subtitle = ({ size, color, children, ...props }: ISubtitle) => {
112
+ return (
113
+ <Text
114
+ as="h2"
115
+ color={color || "#000000"}
116
+ fontFamily="Degular"
117
+ fontSize={
118
+ typeof size === "string"
119
+ ? SubtitleVariant[size].fontSize
120
+ : {
121
+ ...getResponsiveValues(size, "fontSize"),
122
+ }
123
+ }
124
+ fontWeight={600}
125
+ fontStyle="normal"
126
+ lineHeight={
127
+ typeof size === "string"
128
+ ? SubtitleVariant[size].lineHeight
129
+ : {
130
+ ...getResponsiveValues(size, "lineHeight"),
131
+ }
132
+ }
133
+ letterSpacing={
134
+ typeof size === "string"
135
+ ? SubtitleVariant[size].letterSpacing
136
+ : {
137
+ ...getResponsiveValues(size, "letterSpacing"),
138
+ }
139
+ }
140
+ m="0"
141
+ {...props}
142
+ >
143
+ {children}
144
+ </Text>
145
+ );
146
+ };
147
+
148
+ export default Subtitle;
@@ -0,0 +1,132 @@
1
+ /** @format */
2
+
3
+ import { Box, Center, Flex, useMediaQuery } from "@chakra-ui/react";
4
+ import { FilePresentIcon, MoreHorizontalIcon, PhotoLibraryIcon } from "icons";
5
+ import Colors from "components/styleGuide/Colors";
6
+ import Button from "components/Button";
7
+ import { ChangeEvent, useRef } from "react";
8
+ import Paragraph from "components/Typography/Paragraph";
9
+ import Subtitle from "components/Typography/Subtitle";
10
+
11
+ export interface IFileUpload {
12
+ file?: File | undefined;
13
+ onHandleChange: (e: ChangeEvent<HTMLInputElement>) => void;
14
+ sizeLimit?: number;
15
+ fileActionPopover?: React.ReactNode;
16
+ accept?: string;
17
+ fileTypeIcon?: JSX.Element;
18
+ headerText?: string;
19
+ subtitleText?: string;
20
+ }
21
+
22
+ const FileUploader = ({
23
+ file,
24
+ onHandleChange,
25
+ sizeLimit = 100,
26
+ fileActionPopover,
27
+ accept,
28
+ fileTypeIcon,
29
+ headerText,
30
+ subtitleText,
31
+ }: IFileUpload) => {
32
+ const fileInputRef = useRef<HTMLInputElement>(null);
33
+ const [isMobile] = useMediaQuery("(max-width: 768px)");
34
+
35
+ const getFileSize = (filesize: number) => {
36
+ const size = filesize / 1000;
37
+ if (size > 1000) {
38
+ return `${(size / 1000).toFixed(2)} MB`;
39
+ } else {
40
+ return `${size.toFixed(2)} KB`;
41
+ }
42
+ };
43
+
44
+ return (
45
+ <>
46
+ {file ? (
47
+ <Box>
48
+ <Flex mt="12px" gap="16px" alignItems={"center"}>
49
+ <Center boxSize={"48px"} bg={Colors.gray50} borderRadius={"6px"}>
50
+ {fileTypeIcon}
51
+ </Center>
52
+ <Box>
53
+ <Paragraph size={"xs"}>{file?.name}</Paragraph>
54
+ <Paragraph size={"xxs"} color={Colors.gray400} mt="4px">
55
+ {getFileSize(file?.size)}
56
+ </Paragraph>
57
+ </Box>
58
+ {fileActionPopover ? (
59
+ <>{fileActionPopover}</>
60
+ ) : (
61
+ <Center ml="auto" boxSize={"24px"} cursor={"pointer"}>
62
+ <MoreHorizontalIcon fontSize={"24px"} />
63
+ </Center>
64
+ )}
65
+ </Flex>
66
+ </Box>
67
+ ) : (
68
+ <Flex
69
+ cursor={"pointer"}
70
+ direction={"column"}
71
+ align={"center"}
72
+ outline={"1px dashed"}
73
+ outlineColor={Colors.gray100}
74
+ borderRadius={"16px"}
75
+ _hover={{
76
+ outline: "3px solid",
77
+ outlineColor: Colors.black300,
78
+ bgColor: Colors.gray50,
79
+ }}
80
+ p="24px"
81
+ w="full"
82
+ onClick={(e) => {
83
+ e.preventDefault();
84
+ fileInputRef.current?.click();
85
+ }}
86
+ >
87
+ <Center boxSize={"40px"}>
88
+ <FilePresentIcon fontSize={"40px"} />
89
+ </Center>
90
+ <Subtitle
91
+ size={isMobile ? "5xs" : "4xs"}
92
+ mt={isMobile ? "12px" : "24px"}
93
+ >
94
+ {headerText ?? "Drop your file here"}
95
+ </Subtitle>
96
+ <Paragraph
97
+ size={isMobile ? "xxs" : "xs"}
98
+ color={Colors.gray400}
99
+ textAlign={"center"}
100
+ m="10px 0 28px 0"
101
+ >
102
+ {subtitleText ?? `${sizeLimit}MB total limit.`}
103
+ </Paragraph>
104
+ <Button
105
+ size="small"
106
+ bg={Colors.white100}
107
+ variant="outline"
108
+ label={
109
+ <Flex align="center" gap="4px">
110
+ <PhotoLibraryIcon />
111
+ <Subtitle size={"6xs"} lineHeight={"20px"}>
112
+ Click to browse
113
+ </Subtitle>
114
+ </Flex>
115
+ }
116
+ />
117
+ </Flex>
118
+ )}
119
+
120
+ <input
121
+ type="file"
122
+ accept={accept ? accept : "*"}
123
+ id="inputFile"
124
+ style={{ display: "none" }}
125
+ ref={fileInputRef}
126
+ onChange={onHandleChange}
127
+ />
128
+ </>
129
+ );
130
+ };
131
+
132
+ export default FileUploader;