From a112f5c59a41559a2aa719ffc422248219e259ef Mon Sep 17 00:00:00 2001 From: Jenin Date: Tue, 14 May 2024 06:57:31 +0530 Subject: [PATCH 01/12] fix: issue template updated --- .github/ISSUE_TEMPLATE/feature.md | 60 ------------------- .github/ISSUE_TEMPLATE/feature_form.yml | 78 +++++++++---------------- .github/ISSUE_TEMPLATE/new-feature.yml | 36 ------------ 3 files changed, 28 insertions(+), 146 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/feature.md delete mode 100644 .github/ISSUE_TEMPLATE/new-feature.yml diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md deleted file mode 100644 index c3dd9cfaa..000000000 --- a/.github/ISSUE_TEMPLATE/feature.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -name: Mulearn Frontend -about: MuLearn Community Issues Template -title: "[Mulearn] Button for likes" -labels: MuLearn Community -assignees: '' - ---- - -## Description -[Provide a brief description of the feature, including why it is needed and what it will accomplish. You can skip any of Goals, Expected Outcome, Implementation Details, Mockups / Wireframes if they are irrelevant. Please note that this section of the ticket is suggestive & you can structure it as per your prerogative.] - -## Goals -- [ ] [Goal 1] -- [ ] [Goal 2] -- [ ] [Goal 3] -- [ ] [Goal 4] -- [ ] [Goal 5] - -## Expected Outcome -[Describe in detail what the final product or result should look like and how it should behave.] - -## Acceptance Criteria -- [ ] [Criteria 1] -- [ ] [Criteria 2] -- [ ] [Criteria 3] -- [ ] [Criteria 4] -- [ ] [Criteria 5] - -## Implementation Details -[List any technical details about the proposed implementation, including any specific technologies that will be used.] - -## Mockups / Wireframes -[Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases.] - ---- -[Please note that the below section of the ticket ****has to be in the format as mentioned as it is key to enabling proper listing of the project.**** Please only choose the options mentioned under the headings wherever applicable.] - -### Product Name -[Product Name: For eg: Beckn, Sunbird Obsrv etc] - - -### Project Name -[Project Name: Descriptive of the ticket] - - -### Tech Skills Needed: -[Required technical skills for the project] - -### Mentor(s) -[@Mentor1] [@Mentor2] [@Mentor3] - -### Complexity -Pick one of [High]/[Medium]/[Low] - -### Category -Pick one or more of [CI/CD], [Integrations], [Performance Improvement], [Security], [UI/UX/Design], [Bug], [Feature], [Documentation], [Deployment], [Test], [PoC] - -### Sub Category -Pick one or more of [API], [Database], [Analytics], [Refactoring], [Data Science], [Machine Learning], [Accessibility], [Internationalization], [Localization], [Frontend], [Backend], [Mobile], [SEO], [Configuration], [Deprecation], [Breaking Change], [Maintenance], [Support], [Question], [Technical Debt], [Beginner friendly], [Research], [Reproducible], [Needs Reproduction]. diff --git a/.github/ISSUE_TEMPLATE/feature_form.yml b/.github/ISSUE_TEMPLATE/feature_form.yml index c8deb9e95..e54f19b41 100644 --- a/.github/ISSUE_TEMPLATE/feature_form.yml +++ b/.github/ISSUE_TEMPLATE/feature_form.yml @@ -1,73 +1,50 @@ -name: Mulearn Ticket Form -description: Create a new Ticket for MuLearn Community -title: "[MuLearn Community]: " -labels: ["New Login Page"] +name: Mulearn Feature Request +description: Create a new Feature Request for MuLearn Community +title: "Campus Details - Feature Request" +labels: ["feature"] body: + - type: markdown + attributes: + value: | + Please fill out the sections below to properly describe the new feature you are suggesting. + - type: textarea - id: ticket-description + id: description validations: required: true attributes: - label: Ticket Contents - value: | + label: Description + placeholder: | ## Description - [Provide a brief description of the feature, including why it is needed and what it will accomplish.] + A button in the screen X that allows to do Y - type: textarea - id: ticket-goals + id: goals validations: required: true attributes: label: Goals description: List the goals of the feature. - value: | + placeholder: | ## Goals - - [ ] Goal 1 - - [ ] Goal 2 - - [ ] Goal 3 - - - type: textarea - id: ticket-expected-outcome - attributes: - label: Expected Outcome - description: Describe in detail what the final product or result should look like and how it should behave. - - - type: textarea - id: ticket-acceptance-criteria - attributes: - label: Acceptance Criteria - description: List the acceptance criteria for this feature. + - Goal 1 + - Goal 2 - type: textarea - id: ticket-implementation-details + id: implementation-details validations: required: true attributes: label: Implementation Details description: List any technical details about the proposed implementation, including any specific technologies that will be used. - - - type: textarea - id: ticket-mockups - attributes: - label: Mockups/Wireframes - description: Include links to any visual aids, mockups, wireframes, or diagrams that help illustrate what the final product should look like. This is not always necessary, but can be very helpful in many cases. - - - type: input - id: ticket-product - attributes: - label: Product Name - placeholder: Enter Product Name - validations: - required: true - - - type: input - id: ticket-governance-domain - attributes: - label: Domain - placeholder: Enter Area of Governance + placeholder: | + ## Implementation Details + - Implementation Detail 1 + - Implementation Detail 2 + - also add images is possible - type: dropdown - id: ticket-technical-skills-required + id: skills-required attributes: label: Tech Skills Needed description: Select the technologies needed for this ticket (use Ctrl or Command to select multiple) @@ -180,21 +157,22 @@ body: required: true - type: dropdown - id: ticket-category + id: category attributes: label: Category description: Choose the categories that best describe your ticket multiple: true options: - API - - Analytics - - Accessibility - Backend - Database - Documentation - Delpoyment - Frontend - Testing + - Bot + - UI + - UX - Other validations: required: true diff --git a/.github/ISSUE_TEMPLATE/new-feature.yml b/.github/ISSUE_TEMPLATE/new-feature.yml deleted file mode 100644 index 24ee489d9..000000000 --- a/.github/ISSUE_TEMPLATE/new-feature.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: New feature -description: Suggest or request a new feature -labels: ["enhancement"] -body: - - type: markdown - attributes: - value: | - Please fill out the sections below to properly describe the new feature you are suggesting. - - type: textarea - id: description - attributes: - label: Describe the feature - placeholder: A button in the screen X that allows to do Y - validations: - required: true - - type: textarea - id: rationale - attributes: - label: It should be implemented because - placeholder: It will allow to do Y that is needed for Z - - type: textarea - id: context - attributes: - label: Additional context - placeholder: | - Add any other context or screenshots about the feature request here. - - type: dropdown - id: assign - attributes: - label: "Would you like to work on this issue?" - options: - - "Yes" - - type: markdown - attributes: - value: | - Thanks for your suggestion! Let's see together if it can be implemented. From 25fb1eee7cdae3d5b53fabaa5746d7cb54af13ae Mon Sep 17 00:00:00 2001 From: Jenin Date: Tue, 14 May 2024 07:01:20 +0530 Subject: [PATCH 02/12] chore: update feature_form.yml --- .github/ISSUE_TEMPLATE/feature_form.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/feature_form.yml b/.github/ISSUE_TEMPLATE/feature_form.yml index e54f19b41..0f70b0c1f 100644 --- a/.github/ISSUE_TEMPLATE/feature_form.yml +++ b/.github/ISSUE_TEMPLATE/feature_form.yml @@ -1,6 +1,8 @@ name: Mulearn Feature Request description: Create a new Feature Request for MuLearn Community -title: "Campus Details - Feature Request" +title: + -placeholder: | + What is the name of the new feature you are proposing? labels: ["feature"] body: - type: markdown From c465eabaa63aa074668916cd0d90bc4e87afeb73 Mon Sep 17 00:00:00 2001 From: Jenin Date: Tue, 14 May 2024 07:02:03 +0530 Subject: [PATCH 03/12] chore: update feature_form.yml --- .github/ISSUE_TEMPLATE/feature_form.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_form.yml b/.github/ISSUE_TEMPLATE/feature_form.yml index 0f70b0c1f..c6ee9ce45 100644 --- a/.github/ISSUE_TEMPLATE/feature_form.yml +++ b/.github/ISSUE_TEMPLATE/feature_form.yml @@ -1,8 +1,6 @@ name: Mulearn Feature Request description: Create a new Feature Request for MuLearn Community -title: - -placeholder: | - What is the name of the new feature you are proposing? +title: "" labels: ["feature"] body: - type: markdown From 1307691b7d1fbf409b2fb781b4cad85bb81595d9 Mon Sep 17 00:00:00 2001 From: Jenin Date: Tue, 14 May 2024 07:02:58 +0530 Subject: [PATCH 04/12] chore: update feature_form.yml --- .github/ISSUE_TEMPLATE/feature_form.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/feature_form.yml b/.github/ISSUE_TEMPLATE/feature_form.yml index c6ee9ce45..935c35697 100644 --- a/.github/ISSUE_TEMPLATE/feature_form.yml +++ b/.github/ISSUE_TEMPLATE/feature_form.yml @@ -1,6 +1,6 @@ name: Mulearn Feature Request description: Create a new Feature Request for MuLearn Community -title: "" +title: "Title" labels: ["feature"] body: - type: markdown From d9a904c91f967f1de26b4ded7db6c65946aca20b Mon Sep 17 00:00:00 2001 From: Jenin Date: Tue, 14 May 2024 07:04:21 +0530 Subject: [PATCH 05/12] chore: update feature_form.yml --- .github/ISSUE_TEMPLATE/feature_form.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/feature_form.yml b/.github/ISSUE_TEMPLATE/feature_form.yml index 935c35697..93b50ff41 100644 --- a/.github/ISSUE_TEMPLATE/feature_form.yml +++ b/.github/ISSUE_TEMPLATE/feature_form.yml @@ -140,6 +140,8 @@ body: attributes: label: Mentor(s) description: Please tag relevant mentors for the ticket + placeholder: | + @Jenin82 validations: required: true From 01bbe1623a56ef12a6487890a8254a5a5d9df943 Mon Sep 17 00:00:00 2001 From: Jenin Date: Tue, 14 May 2024 07:05:31 +0530 Subject: [PATCH 06/12] chore: update feature_form.yml --- .github/ISSUE_TEMPLATE/feature_form.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/feature_form.yml b/.github/ISSUE_TEMPLATE/feature_form.yml index 93b50ff41..b8ad92f7e 100644 --- a/.github/ISSUE_TEMPLATE/feature_form.yml +++ b/.github/ISSUE_TEMPLATE/feature_form.yml @@ -1,6 +1,5 @@ name: Mulearn Feature Request description: Create a new Feature Request for MuLearn Community -title: "Title" labels: ["feature"] body: - type: markdown From 3feb6877068be297540c2d0a03ddd4dd6ed95558 Mon Sep 17 00:00:00 2001 From: Jenin Date: Tue, 14 May 2024 07:06:25 +0530 Subject: [PATCH 07/12] chore: update feature_form.yml --- .github/ISSUE_TEMPLATE/feature_form.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/feature_form.yml b/.github/ISSUE_TEMPLATE/feature_form.yml index b8ad92f7e..17a6b7a37 100644 --- a/.github/ISSUE_TEMPLATE/feature_form.yml +++ b/.github/ISSUE_TEMPLATE/feature_form.yml @@ -1,6 +1,6 @@ name: Mulearn Feature Request description: Create a new Feature Request for MuLearn Community -labels: ["feature"] +labels: ["enhancement"] body: - type: markdown attributes: From d4f8955031691abfa2e8665337fe4d2e9fca2f7a Mon Sep 17 00:00:00 2001 From: Jenin Date: Tue, 14 May 2024 07:14:09 +0530 Subject: [PATCH 08/12] chore: update feature_form.yml --- .github/ISSUE_TEMPLATE/feature_form.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_form.yml b/.github/ISSUE_TEMPLATE/feature_form.yml index 17a6b7a37..1caa6b5e4 100644 --- a/.github/ISSUE_TEMPLATE/feature_form.yml +++ b/.github/ISSUE_TEMPLATE/feature_form.yml @@ -14,7 +14,6 @@ body: attributes: label: Description placeholder: | - ## Description A button in the screen X that allows to do Y - type: textarea @@ -25,7 +24,6 @@ body: label: Goals description: List the goals of the feature. placeholder: | - ## Goals - Goal 1 - Goal 2 @@ -37,7 +35,6 @@ body: label: Implementation Details description: List any technical details about the proposed implementation, including any specific technologies that will be used. placeholder: | - ## Implementation Details - Implementation Detail 1 - Implementation Detail 2 - also add images is possible From d1e01ccd6186b659b803bc9d6508cb17d4d335b2 Mon Sep 17 00:00:00 2001 From: karivarkey Date: Sat, 18 May 2024 12:40:58 +0530 Subject: [PATCH 09/12] fix(manageUser): Fixed as issue where editing users required mobile number fixed by removing mobile from UserForm.tsx --- src/modules/Dashboard/modules/ManageUsers/UserForm.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/Dashboard/modules/ManageUsers/UserForm.tsx b/src/modules/Dashboard/modules/ManageUsers/UserForm.tsx index b0cd91b5b..28e333040 100644 --- a/src/modules/Dashboard/modules/ManageUsers/UserForm.tsx +++ b/src/modules/Dashboard/modules/ManageUsers/UserForm.tsx @@ -33,7 +33,7 @@ type InitialLocationData = { state: { label: string; value: string }; district: { label: string; value: string }; } | null; -const requiredFields = ["full_name", "email", "mobile"]; +const requiredFields = ["full_name", "email"]; const UserForm = forwardRef( (props: Props & { closeModal: () => void }, ref: any) => { const [initialData, setInitialData] = From 8fdd4bfb1938c1d48102e314e0a6293b98dfaf04 Mon Sep 17 00:00:00 2001 From: AFarHitman7 Date: Sat, 18 May 2024 18:38:09 +0530 Subject: [PATCH 10/12] feat(donation): added the donation page fix(app): added url for donation page --- src/App.tsx | 12 + src/modules/Public/Donation/assets/LC3.webp | Bin 0 -> 44992 bytes .../Public/Donation/assets/\302\265.webp" | Bin 0 -> 476 bytes .../Donation/assets/\302\265Learn.webp" | Bin 0 -> 2158 bytes .../Donation/components/Footer.module.css | 125 +++++++ .../Public/Donation/components/Footer.tsx | 116 ++++++ .../Donation/components/Navbar.module.css | 39 ++ .../Public/Donation/components/Navbar.tsx | 30 ++ .../Donation/components/RefundText.module.css | 138 +++++++ .../Public/Donation/components/RefundText.tsx | 191 ++++++++++ .../Public/Donation/pages/Donate.module.css | 349 ++++++++++++++++++ src/modules/Public/Donation/pages/Donate.tsx | 197 ++++++++++ src/modules/Public/Donation/pages/Refund.tsx | 21 ++ .../Public/Donation/services/footerData.ts | 32 ++ 14 files changed, 1250 insertions(+) create mode 100644 src/modules/Public/Donation/assets/LC3.webp create mode 100644 "src/modules/Public/Donation/assets/\302\265.webp" create mode 100644 "src/modules/Public/Donation/assets/\302\265Learn.webp" create mode 100644 src/modules/Public/Donation/components/Footer.module.css create mode 100644 src/modules/Public/Donation/components/Footer.tsx create mode 100644 src/modules/Public/Donation/components/Navbar.module.css create mode 100644 src/modules/Public/Donation/components/Navbar.tsx create mode 100644 src/modules/Public/Donation/components/RefundText.module.css create mode 100644 src/modules/Public/Donation/components/RefundText.tsx create mode 100644 src/modules/Public/Donation/pages/Donate.module.css create mode 100644 src/modules/Public/Donation/pages/Donate.tsx create mode 100644 src/modules/Public/Donation/pages/Refund.tsx create mode 100644 src/modules/Public/Donation/services/footerData.ts diff --git a/src/App.tsx b/src/App.tsx index 926761885..db9644c89 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -44,6 +44,10 @@ import DiscordModeration from "./modules/Dashboard/modules/DiscordModeration/Dis import Test from "./modules/Dashboard/modules/Test/Test"; import Analytics from "./modules/Dashboard/modules/UrlShortener/Pages/Analytics"; import Donation from "./modules/Public/Donation/Donation"; +import DonationTest from "./modules/Public/Donation/pages/Donate"; +import Refund from "./modules/Public/Donation/pages/Refund"; + + const Profile = lazy( () => import("./modules/Dashboard/modules/Profile/pages/Profile") ); @@ -266,6 +270,14 @@ function App() { path: "donation", element: }, + { + path: "donation-test", + element: + }, + { + path: "donation/refund", + element: + }, { path: "/", element: , diff --git a/src/modules/Public/Donation/assets/LC3.webp b/src/modules/Public/Donation/assets/LC3.webp new file mode 100644 index 0000000000000000000000000000000000000000..1a7aa49822fa71d8572739978f77972105a06c3c GIT binary patch literal 44992 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 S)^;;5fA|KDJ6ZZAVlV(1Wzqrw literal 0 HcmV?d00001 diff --git "a/src/modules/Public/Donation/assets/\302\265Learn.webp" "b/src/modules/Public/Donation/assets/\302\265Learn.webp" new file mode 100644 index 0000000000000000000000000000000000000000..d180566f7b42f35a58c02ba94c899ed3af236f1b GIT binary patch literal 2158 zcmV-!2$A0NNEO-;^pO*%yTtuACuYZ}2dk(G`kIWWy+O#7*QDYNU@ zRCNzQR#llto=sINy+dLh|K6OaD46rsGF4&V^!?C1&_DN5-tDa3` zWscZ2c868_hlSd2K%(Z>;hv^dBZXd)n$uV|nrl+CT(oQaKK7;2dokEbhJJ|JxzmiI zu_yW-aq3DIU$g6#%gC3;w+p`1xpegEKCre?XB7jA&pBus<`-;NF1^un5$S?9n?IMKcG7mc^jS}LNI7d znnIGH_;Of}5Xe^ugq<)vTaVkRMx)Tl`g~zSAeOEuadj-+*J)h6y)>f+fn4wzm%owr zCdZ4KIjUap_!ZDMExskHT=4M+N`A7%w?)-o1H~wL4~Exf98u@Daa^=Sot~4U>jqsh zI0*II;E>6|QHLc2mls1ZX1%Rttc8$6=b+W9aQ$ZG7{0AzC}{{ZN23_D_zlQv6tU`U zwV@Kk4iyRkHuQNNu%R44a$ou!m^Engs4O9?r6~ZXgs#=nGDM;`)+W~^9(18gl@}ZX zvDz|%dsEfj17c|<-z0ix+7`#NsrQ`F0mY}PC!0s=B}=uCYi-(ndS-{p;=o<~H>4_C zBBJ?dIxJ*S8*%R)s18-$5&{6Gy{Xwezz)?`w>hPCV;#MvE7^kQ1)4f2p4bl$iYNY? z(GLrb3u*^Qt`Trg?N^{h!B?F0faH?R2U81^`cCcVYV_qo59Ba5fF!OhFiH|6l#Oal z7LJLrjFE*GvDKGeRJ32m9*-Mk$}Z#t(>J z*>z@w?o_xwz)c6&j1amq9|WP4xn_hhVJ^plaF_Vlj>^pC*d7Si;%6?*T#n@f?%8*4 z2*0ha48OCU48KPeev>|bmmdE|ntqqC8Tgw6xp%;C@9|RLH<-5V0l&RgP&gnm1ONb# z766?AD(3(;06vX8m`9}}qM`JiEM7&Tnl`kP3uO$zAMg>!u@OU7bHRT>*M-9 zy#KWNoAUtuXz3&71NKYR=lyT&2fD9759{CMJ!8M*`x1Hpe;EIB>B;P4{e%A>q-UrH z|Nl@9tbPCkiv!4SQUQfN`0|1Gad-OmG4`+t`T^t%@gdd4k@U^E~y z(!pYN)2jXlflD=<1y9&BTZ&rF0VPL1pw!teF2_*uto@544r5P35m3)3ro+y$&|Aucgl- ze!D87AvmdD%>hp}>b6S$TX-6MpjN6Sd3;KJ%-)pZRGjw}fPzQ3?Q1be-cK{ZY=X;8 z9=N6*L{~Edsb}v5e{o-sRK)4&+xCf%vvgO+xilystD8l;;lOKg!cD`kD@Zz1UfuIX zO_Dk~Xv@A3iWQ0>G{4%()qe-0;fj|ay{EPEUvg8N8`=f|N=Dh*|MxnwPhKDKB1W_K z-yhU%4N0fY8NN6j40AYTk!$LY#HQ~}oSXDI;aK82* zv?EWz#uqibx#R#NELr5m4v_}eepCE0Q?h7@8vO|ve-Y#ce}U=~Dk&(-=V@-be3|t! z++taV0f3`U#uzl{pri(M)>OrUAV1o!@U|MGmfcP%;$mcgGfXQ{o}En2dB<=YIkMYB zfW<~2%&lW$mJX__CSJ`^jJv_X5vK8?YQ{wCP~FU>zZ`%|8mWKY(S@m91Z_WNSh>~F z`5byYQp65MmfI4zFVKD8(v)SHu`De9ihaMdoGw6lz%l~QsDi!^&CD$vm5yy0^k_fR kogxjV2Cg;e4LWv*OJxRsbOOxSkn#Wk0Ji`D000000Cc?y_W%F@ literal 0 HcmV?d00001 diff --git a/src/modules/Public/Donation/components/Footer.module.css b/src/modules/Public/Donation/components/Footer.module.css new file mode 100644 index 000000000..cdc22543f --- /dev/null +++ b/src/modules/Public/Donation/components/Footer.module.css @@ -0,0 +1,125 @@ +.footer { + padding: 5rem; + background: #e0eeff; + color: #000; +} +.footer > hr { + border: 1px solid #000; + opacity: 0.2; + margin: 5rem 0; +} +.container { + display: flex; + gap: 7rem; +} + +.centerContainer { + justify-content: center; +} + +.footerSection { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.footerLogo { + display: flex; + flex-direction: column; + width: 25%; + padding: 0 2rem; + gap: 2rem; + font-size: 0.8rem; +} + +.footerLogo img { + width: 60%; +} + +.footerLogo p { + text-align: left; +} + +.title { + font-weight: 600; +} +.links { + display: flex; + flex-direction: column; + gap: 1rem; + font-size: 0.8rem; +} +.links > a:hover { + color: #2e85fe; +} +.socialMedia { + display: flex; + gap: 2rem; + font-size: x-large; +} +.legal { + display: flex; + gap: 1.5rem; + font-size: 0.8rem; +} +.copyRight { + font-size: 0.9rem; +} +@media screen and (max-width: 1000px) { + .container { + flex-direction: column; + align-items: center; + gap: 4rem; + } + + .footerLogo { + width: 100%; + max-width: 30rem; + align-items: center; + margin: 3rem; + } + + .footerLogo p { + text-align: center; + } + + .footerSection { + display: none; + } + .footer > hr { + display: none; + } + .socialMedia { + justify-content: center; + } + .legal { + justify-content: center; + flex-direction: column; + align-items: center; + } + .copyRight { + text-align: center; + } +} +@media screen and (max-width: 800px) { + .container { + gap: 2rem; + } + + .footerLogo { + width: 19rem; + } + + .footerLogo p { + display: none; + } +} +@media screen and (max-width: 380px) { + .socialMedia { + font-size: large; + } + + .footerLogo { + width: 15rem; + } +} diff --git a/src/modules/Public/Donation/components/Footer.tsx b/src/modules/Public/Donation/components/Footer.tsx new file mode 100644 index 000000000..6b0c441cf --- /dev/null +++ b/src/modules/Public/Donation/components/Footer.tsx @@ -0,0 +1,116 @@ +import styles from "./Footer.module.css"; +import { footerData } from "../services/footerData"; +import { + RiWhatsappFill, + RiTwitterFill, + RiInstagramFill, + RiLinkedinBoxFill, + RiYoutubeFill, + RiFacebookBoxFill +} from "react-icons/ri"; +export default function Footer() { + return ( + + ); +} diff --git a/src/modules/Public/Donation/components/Navbar.module.css b/src/modules/Public/Donation/components/Navbar.module.css new file mode 100644 index 000000000..9f546d4a9 --- /dev/null +++ b/src/modules/Public/Donation/components/Navbar.module.css @@ -0,0 +1,39 @@ +.LClandingPageNav { + position: absolute; + top: 0; + width: 100%; + z-index: 1; + display: flex; + justify-content: space-between; + padding: 3rem 5rem; +} + +.LClandingPageNav .navLinks, +.LClandingPageNav .navLinks div { + display: flex; + align-items: center; + gap: 2rem; +} + +.LClandingPageNav .navLinks div { + font-weight: 600; + color: #00204c; +} + +.LClandingPageNav .navLinks button { + background: var(--blue); + border-radius: var(--borderRadius); + padding: 0.5rem 1rem; + font-size: 0.8rem; + color: #fff; +} + +@media (width <=820px) { + .LClandingPageNav { + padding: 3rem 2rem; + } + + .LClandingPageNav .navLinks { + display: none; + } +} diff --git a/src/modules/Public/Donation/components/Navbar.tsx b/src/modules/Public/Donation/components/Navbar.tsx new file mode 100644 index 000000000..e90544b5b --- /dev/null +++ b/src/modules/Public/Donation/components/Navbar.tsx @@ -0,0 +1,30 @@ +import styles from "./Navbar.module.css"; +import { Link, useNavigate} from "react-router-dom"; + + +export default function Navbar(){ + const navigate = useNavigate(); + + return( + + ) +} \ No newline at end of file diff --git a/src/modules/Public/Donation/components/RefundText.module.css b/src/modules/Public/Donation/components/RefundText.module.css new file mode 100644 index 000000000..6164d26ec --- /dev/null +++ b/src/modules/Public/Donation/components/RefundText.module.css @@ -0,0 +1,138 @@ +h1, +h2, +h3 { + letter-spacing: -0.01em; + line-height: 1.2; + font-weight: 600; + margin-bottom: 1rem; +} + +.pageTitle { + font-size: 2.5rem; + font-weight: 700; + margin-top: 0; + margin-bottom: 0.75em; +} + +h1 { + font-size: 1.875rem; + margin-top: 1.875rem; +} + +h2 { + font-size: 1.5rem; + margin-top: 1.5rem; +} + +h3 { + font-size: 1.25rem; + margin-top: 1.25rem; +} + +ol, +ul { + margin: 0; + margin-block-start: 0.6em; + margin-block-end: 0.6em; +} + +li > ol:first-child, +li > ul:first-child { + margin-block-start: 0.6em; +} + +ul > li { + list-style: disc; +} + +ul.to-do-list { + padding-inline-start: 0; +} + +ul.to-do-list > li { + list-style: none; +} + +.to-do-children-checked { + text-decoration: line-through; + opacity: 0.375; +} + +ul.toggle > li { + list-style: none; +} + +ul { + padding-inline-start: 1.7em; +} + +ul > li { + padding-left: 0.1em; +} + +ol { + padding-inline-start: 1.6em; +} + +ol > li { + padding-left: 0.2em; +} + +.mono ol { + padding-inline-start: 2em; +} + +.mono ol > li { + text-indent: -0.4em; +} + +.toggle { + padding-inline-start: 0em; + list-style-type: none; +} + +/* Indent toggle children */ +.toggle > li > details { + padding-left: 1.7em; +} + +.toggle > li > details > summary { + margin-left: -1.1em; +} +.pageDescription { + margin-bottom: 2em; +} +.sans { + font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", + Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", + "Segoe UI Symbol"; +} + +@media (width<=550px) { + .pageTitle { + font-size: 1.6rem; + } + + h1 { + font-size: 1.4rem; + margin-top: 1.875rem; + } + + h2 { + font-size: 1.1rem; + margin-top: 1.5rem; + } + + h3 { + font-size: 0.9rem; + margin-top: 1.25rem; + } + + p { + font-size: 0.9rem; + } + + li { + font-size: 0.8rem; + } +} diff --git a/src/modules/Public/Donation/components/RefundText.tsx b/src/modules/Public/Donation/components/RefundText.tsx new file mode 100644 index 000000000..b2d67e428 --- /dev/null +++ b/src/modules/Public/Donation/components/RefundText.tsx @@ -0,0 +1,191 @@ +import styles from "./RefundText.module.css"; + + +export default function RefundPage(){ + return( +
+
+

+ Donation Refund Policy +

+

+
+
+

+ At Mulearn Foundation, we are dedicated to maintaining + transparency and integrity in all our interactions, + including donation processing. We deeply value the support + of our donors and are committed to handling all donations + with care and accountability. While we do not typically + offer refunds on donations, we understand that circumstances + may arise where a donor may request a refund. +

+

+ Receipt Issuance and Verification +

+
    +
  1. + Receipts: Upon making a donation, donors will receive a + receipt from Mulearn Foundation acknowledging their + contribution. This receipt serves as proof of donation. +
  2. +
+
    +
  1. + Verification: In the event of a refund request, donors + must provide the receipt received at the time of + donation for verification purposes. +
  2. +
+

+ Refund Eligibility +

+
    +
  1. + Notification Period: Donors seeking a refund must + contact Mulearn Foundation within 7 days of the donation + date to initiate the refund process. Refund requests + made after this period may not be considered. +
  2. +
+
    +
  1. + Valid Reasons: Refunds may be considered under the + following circumstances: +
  2. +
+

+ - Unauthorized transactions or fraudulent activity. +

+

+ - Errors in the donation amount. +

+

+ - Dissatisfaction with the services provided under a + subscription-based donation (see below for + subscription-based donations policy). +

+

+ Subscription-Based Donations +

+
    +
  1. + Subscription Terms: Mulearn Foundation offers + subscription-based donation options where donors commit + to regular contributions over a specified period. +
  2. +
+
    +
  1. + Cancellation: Donors subscribed to recurring donations + have the option to cancel their subscription at any + time. Upon cancellation, future donations will be + discontinued, but previous donations are generally + non-refundable. +
  2. +
+

+ Refund Process +

+
    +
  1. + Request Submission: Donors must submit their refund + request to Mulearn Foundation via refunds@mulearn.org, + providing details of the donation, the reason for the + refund request, and a copy of the donation receipt. +
  2. +
+
    +
  1. + Review and Approval: Mulearn Foundation will review the + refund request and may require additional information + for verification purposes. Refunds will be approved at + the discretion of the Foundation. +
  2. +
+
    +
  1. + Refund Issuance: Upon approval, refunds will be + processed using the original payment method, unless + otherwise specified by the donor. +
  2. +
+

+ Contact Information +

+

+ For any inquiries or refund requests, please contact us at: +

+

+ Mulearn Foundation +

+

+ GTech Nila Building, +

+

+ Phase 1, Technopark, +

+

+ Karyavattom, Trivandrum +

+

+ Policy Revision +

+

+ Mulearn Foundation reserves the right to modify or update + this donation refund policy at any time without prior + notice. Any revisions will be effective immediately upon + posting on our website or other communication channels. +

+

+ Last Updated: 15 May 2024 +

+
+
+ ) +}; \ No newline at end of file diff --git a/src/modules/Public/Donation/pages/Donate.module.css b/src/modules/Public/Donation/pages/Donate.module.css new file mode 100644 index 000000000..90fd1c359 --- /dev/null +++ b/src/modules/Public/Donation/pages/Donate.module.css @@ -0,0 +1,349 @@ +.LClandingPage { + position: relative; + overflow-x: hidden; +} + +.joinCircle { + background: var(--blue); + border-radius: var(--borderRadius); + padding: 0.5rem 1rem; + font-size: 0.8rem; + margin-top: 1rem; + width: 6rem; + color: #fff; +} + +.backgroundImage { + top: 0; + position: absolute; + + z-index: -2; +} + +.backgroundImage img { + width: 100vw; + height: 110vh; +} + +.LClandingPageHero { + /* background-image: url(https://i.ibb.co/cCvB4r6/Learning-BG.png); + background-repeat: no-repeat; + background-size: cover; + background-position: center; */ + position: relative; + height: 100vh; + width: 100%; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + text-align: center; + gap: 1rem; + padding-top: 5rem; +} + +.LClandingPageHero span { + display: flex; + align-items: center; + justify-content: center; + gap: 1rem; + font-size: 3.5rem; + color: #000; +} + +.LClandingPageHero span img { + position: relative; + top: 0.75rem; + height: 3rem; +} + +.LClandingPageHero .dash { + position: absolute; + top: -50%; + width: 120%; + height: 100%; + border: 5px solid #accaf6; + border-style: dashed; + border-radius: 45%; +} + +.LClandingPageHero .heroTitle b:nth-child(2) { + font-size: 4rem; + color: var(--blue); + position: relative; + top: -1rem; + background-image: linear-gradient(to right, #ddecff, #eaf3ff); + border-radius: 10%; + height: -1rem; + padding: 0rem 0.5rem; +} + +.LClandingPageHero p { + width: 75%; + font-weight: 600; + font-size: 1.1rem; +} + +.DonationSection { + position: relative; + max-width: 100vw; + display: flex; + justify-content: center; + margin-bottom: 6rem; +} + +.DonationFormElement { + background: #fff; + box-shadow: -1.6px 6.4px 32px 3.2px rgba(0, 0, 0, 0.15); + width: 80%; + top: -25%; + padding: 1.5rem 3rem; + display: flex; + gap: 2rem; +} + +.DetailsContainer { + width: 100%; + display: flex; + flex-direction: column; + padding: 1rem 0; + gap: 0.2rem; +} + +.DetailsContainer h1, +.DonationInputStyles { + margin-bottom: 0.7rem; +} + +.DetailsContainer label { + margin: 0.2rem 0.5rem; +} + +.DetailsContainer h1 { + font-weight: 600; + font-size: 1.7rem; +} + +.DonateButtonContainer { + display: flex; + justify-content: center; + gap: 1rem; +} + +.DonateButtonContainer button { + background-color: #fff; + width: 100%; + color: var(--blue); + border: 2px solid var(--blue); + border-radius: 0.5rem; + padding: 0.9rem 1.4rem; + margin-bottom: 1rem; +} + +.DonateButtonContainer button:hover { + background-color: var(--blue); + color: #fff; +} + +.DonateButtonContainer button.selectedButton { + background-color: var(--blue); + color: #fff; +} + +.DonationInputStyles { + border-radius: 0.4rem; + border: 1.12px solid rgba(45, 191, 252, 0.25); + box-shadow: 0px 1.6px 6.4px 0px rgba(0, 0, 0, 0.1); + padding: 0.4rem 1rem; + width: 100%; +} + +.AmountField { + font-size: 1.8rem; + font-weight: 500; + padding: 0.5rem 1rem; +} + +.CurrencyContainer { + position: relative; +} + +.CurrencyContainer p { + position: absolute; + cursor: default; + font-weight: 200; + color: rgba(0, 0, 0, 0.5); + right: 1rem; + top: 20%; +} + +.TermsContainer { + display: flex; + align-items: center; +} + +.TermsContainer input { + width: 1rem; +} + +.TermsContainer label { + cursor: default; + font-size: 0.7rem; + color: rgba(0, 0, 0, 0.8); +} + +.SubmitButton { + margin-top: 1rem; + font-size: 1.4rem; + width: 60%; + align-self: center; +} + +.SubmitButton button { + padding: 0.7rem 1rem; +} + +/* Refund Page */ + +.refundSection { + display: flex; + margin-top: 30vh; + justify-content: center; + margin-bottom: 5rem; +} + +.textContainer { + width: 95%; + box-shadow: -1.6px 6.4px 32px 3.2px rgba(0, 0, 0, 0.15); + background-color: #fff; + padding: 2rem 10rem; +} + +@media (width<=955px) { + .LClandingPageHero .dash { + top: -46%; + border-radius: 38%; + } + + .textContainer { + padding: 2rem 6rem; + } +} + +@media (width <=820px) { + .LClandingPageHero span { + font-size: 1.7rem; + gap: 0.5rem; + } + + .LClandingPageHero span img { + top: 0.5rem; + height: 2.2rem; + } + + .LClandingPageHero .heroTitle b:nth-child(2) { + font-size: 2.5rem; + top: 0rem; + } + + .LClandingPageHero p { + width: 90%; + font-size: 0.8rem; + } + + .LClandingPageHero button { + padding: 0.5rem 1rem; + } + + .DonationFormElement { + flex-direction: column; + gap: 1rem; + } + + .SubmitButton { + width: 100%; + align-items: center; + } +} + +@media (width<=550px) { + .LClandingPageHero .dash { + top: -48%; + border-radius: 35%; + } + + .LClandingPageHero .heroTitle b:nth-child(2) { + font-size: 1.75rem; + top: 0rem; + } + + .LClandingPageHero span { + font-size: 1.8rem; + gap: 0.7rem; + } + .LClandingPageHero span img { + top: 0.18rem; + height: 1.7rem; + } + + .DonationFormElement { + top: -10%; + width: 96%; + } + + .DonateButtonContainer { + /* flex-direction: column; */ + align-items: center; + gap: 0.3rem; + } + .DonateButtonContainer button { + width: 100%; + padding: 0.4rem 0.8rem; + margin-bottom: 0.6rem; + font-size: 0.8rem; + } + + .CurrencyContainer p, + .DetailsContainer label { + font-size: 0.9rem; + } + + .DonationInputStyles { + font-size: 0.9rem; + padding: 0.6rem 0.9rem; + } + + .DetailsContainer h1 { + font-size: 1.5rem; + } + + .AmountField { + font-size: 1.4rem; + } + + .TermsContainer label { + font-size: 0.6rem; + } + + .SubmitButton { + font-size: 1rem; + } + + .textContainer { + padding: 2rem; + width: 100%; + box-shadow: -1.6px -6.4px 62px 3.2px rgba(0, 0, 0, 0.15); + } +} + +@media (width<=380px) { + .LClandingPageHero .dash { + top: -47%; + border-radius: 35%; + } + + .LClandingPageHero span { + font-size: 1.7rem; + padding: 0; + } +} diff --git a/src/modules/Public/Donation/pages/Donate.tsx b/src/modules/Public/Donation/pages/Donate.tsx new file mode 100644 index 000000000..6f6fe639f --- /dev/null +++ b/src/modules/Public/Donation/pages/Donate.tsx @@ -0,0 +1,197 @@ +import { useEffect, useRef, useState } from "react"; +import styles from "./Donate.module.css"; +import { Form, Link, useNavigate } from "react-router-dom"; +import { submitForm } from "../services/api"; +import MuModal from "@/MuLearnComponents/MuModal/MuModal"; +import Select from "react-select"; +import MuLoader from "@/MuLearnComponents/MuLoader/MuLoader"; +import { MuButton } from "@/MuLearnComponents/MuButtons/MuButton"; +import toast from "react-hot-toast"; +import Modal from "@/MuLearnComponents/Modal/Modal"; +import { style } from "d3"; +import Footer from "../components/Footer"; +import Navbar from "../components/Navbar"; + +interface Option { + value: string; + label: string; +} +const DonationTest = () => { + const [amount, setAmount] = useState(); + const [name, setName] = useState(""); + const [email, setEmail] = useState(""); + const [mobile, setMobile] = useState(); + const [pan, setPan] = useState(""); + + const callRazorpay = () => { + if (!amount || !name || !email || !mobile || !pan) { + toast.error("Please fill all the fields"); + return; + } + + submitForm({ + amount: amount, + name: name, + email: email, + mobile: mobile, + pan: pan + }); + }; + + const navigate = useNavigate(); + const customStyles: any = { + control: (provided: any) => ({ + ...provided, + backgroundColor: "#F3F3F4", + border: "none", + borderRadius: "10px", + fontSize: "12px", + fontWeight: "bold", + color: "#000", + width: "100%", + padding: ".3rem .4rem", + minWidth: "200px" + }), + placeholder: (provided: any) => ({ + ...provided, + color: "#000" + }), + indicatorSeparator: (provided: any) => ({ + ...provided, + display: "none" + }) + }; + + const [counters, setCounters] = useState([0, 0, 0, 0, 0]); // Initialize counters + const durationInSeconds = 3; // Duration in seconds + + const targetRef = useRef(null); // Create a ref + + const isElementInViewport = (el: HTMLElement | null) => { + if (!el) { + return false; + } + const rect = el.getBoundingClientRect(); + return ( + rect.top >= 0 && + rect.left >= 0 && + rect.bottom <= + (window.innerHeight || document.documentElement.clientHeight) && + rect.right <= + (window.innerWidth || document.documentElement.clientWidth) + ); + }; + + return ( +
+ + +
+
textured background
+
+
+ + Donate to{" "} + + + Let's grow together +
+

+ An informal mechanism for bringing together learners who are + interested in the same topic from across different fields + and disciplines. A fantastic way to spend a small amount of + time learning about new things with a group of people with + same interests! +

+
+ +
+
+
callRazorpay()} + > + +
+

Details

+ + setName(e.target.value)} + required + /> + + setEmail(e.target.value)} + required + /> + + setMobile(Number(e.target.value))} + required + /> + + setPan(e.target.value)} + required + /> +
+ +
+

Donate

+ +
+ +

{"INR"}

+ setAmount(Number(e.target.value))} + required + /> +
+ +
+ + +
+
+ +
+
+
+
+ +
+
+ ); +}; + +export default DonationTest; diff --git a/src/modules/Public/Donation/pages/Refund.tsx b/src/modules/Public/Donation/pages/Refund.tsx new file mode 100644 index 000000000..27d2e64c8 --- /dev/null +++ b/src/modules/Public/Donation/pages/Refund.tsx @@ -0,0 +1,21 @@ +import styles from "./Donate.module.css"; +import Footer from "../components/Footer"; +import Navbar from "../components/Navbar"; +import RefundPage from "../components/RefundText"; + +const Refund = () => { + return( +
+ +
textured background
+
+
+ +
+
+
+
+ ) +}; + +export default Refund \ No newline at end of file diff --git a/src/modules/Public/Donation/services/footerData.ts b/src/modules/Public/Donation/services/footerData.ts new file mode 100644 index 000000000..ac786c993 --- /dev/null +++ b/src/modules/Public/Donation/services/footerData.ts @@ -0,0 +1,32 @@ +export const footerData = [ + { + name: "Connect", + links: [ + { + name: "About", + url: "https://mulearn.org/" + }, + { + name: "Mentors", + url: "https://learn.mulearn.org/mentors" + }, + { + name: "Careers", + url: "https://mulearn.org/careers" + } + ] + }, + { + name: "Legal", + links: [ + { + name: "Terms and Conditions", + url: "https://mulearn.org/termsandconditions" + }, + { + name: "Privacy Policy", + url: "https://mulearn.org/privacypolicy" + } + ] + } +]; From 18087e5b71610052b67d9b6c038be204d9d8300f Mon Sep 17 00:00:00 2001 From: AFarHitman7 Date: Sun, 19 May 2024 13:24:20 +0530 Subject: [PATCH 11/12] fix(donation): fixed build issue --- .../Public/Donation/components/RefundText.tsx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/modules/Public/Donation/components/RefundText.tsx b/src/modules/Public/Donation/components/RefundText.tsx index b2d67e428..393252393 100644 --- a/src/modules/Public/Donation/components/RefundText.tsx +++ b/src/modules/Public/Donation/components/RefundText.tsx @@ -27,7 +27,7 @@ export default function RefundPage(){ type="1" id="4a16632e-f9d0-4c76-bee2-3700f3ef72e2" className={styles.numberedList} - start="1" + start={1} >
  • Receipts: Upon making a donation, donors will receive a @@ -39,7 +39,7 @@ export default function RefundPage(){ type="1" id="1c216c4e-0d03-4e5b-a51b-0fe82ff174ec" className={styles.numberedList} - start="2" + start={2} >
  • Verification: In the event of a refund request, donors @@ -54,7 +54,7 @@ export default function RefundPage(){ type="1" id="0c814ce7-97f9-45d2-a3f6-3dd047f12826" className={styles.numberedList} - start="1" + start={1} >
  • Notification Period: Donors seeking a refund must @@ -67,7 +67,7 @@ export default function RefundPage(){ type="1" id="100e4008-cf49-4892-9fee-6b8b27577952" className={styles.numberedList} - start="2" + start={2} >
  • Valid Reasons: Refunds may be considered under the @@ -92,7 +92,7 @@ export default function RefundPage(){ type="1" id="63c461df-ebde-4bb9-9031-68185b880873" className={styles.numberedList} - start="1" + start={1} >
  • Subscription Terms: Mulearn Foundation offers @@ -104,7 +104,7 @@ export default function RefundPage(){ type="1" id="bd007a54-78a8-4cc5-90e5-b7a9258df731" className={styles.numberedList} - start="2" + start={2} >
  • Cancellation: Donors subscribed to recurring donations @@ -121,7 +121,7 @@ export default function RefundPage(){ type="1" id="2eba47cf-c08c-4125-9c6f-97c1f313e772" className={styles.numberedList} - start="1" + start={1} >
  • Request Submission: Donors must submit their refund @@ -134,7 +134,7 @@ export default function RefundPage(){ type="1" id="a05170c6-aa28-4c1d-bf9f-408d4a92d091" className={styles.numberedList} - start="2" + start={2} >
  • Review and Approval: Mulearn Foundation will review the @@ -147,7 +147,7 @@ export default function RefundPage(){ type="1" id="fc7c02c9-b5a0-45ba-a7b5-fdda9cc84b3d" className={styles.numberedList} - start="3" + start={3} >
  • Refund Issuance: Upon approval, refunds will be From 7092765a8d9ae123f2753e223ede1ca11641ba56 Mon Sep 17 00:00:00 2001 From: Arjun C Vinod Date: Sun, 19 May 2024 16:58:21 +0530 Subject: [PATCH 12/12] fix(wadhwani): fixed toast issue and loader added --- package-lock.json | 4 ++-- src/modules/Dashboard/modules/Wadhwani/index.tsx | 7 ++++++- src/modules/Dashboard/modules/Wadhwani/services/api.ts | 9 +++++++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index a69d89f04..ccb8b324c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mulearnfrontend", - "version": "0.0.0", + "version": "0.0.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "mulearnfrontend", - "version": "0.0.0", + "version": "0.0.4", "dependencies": { "@chakra-ui/react": "^2.6.1", "@emotion/react": "^11.10.6", diff --git a/src/modules/Dashboard/modules/Wadhwani/index.tsx b/src/modules/Dashboard/modules/Wadhwani/index.tsx index 4a4784d63..7196b6d71 100644 --- a/src/modules/Dashboard/modules/Wadhwani/index.tsx +++ b/src/modules/Dashboard/modules/Wadhwani/index.tsx @@ -6,10 +6,13 @@ import { } from "./services/api"; import toast from "react-hot-toast"; import styles from "./index.module.css"; +import MuLoader from "@/MuLearnComponents/MuLoader/MuLoader"; + const Wadhwani = () => { const [data, setData] = useState([]); const [clientToken, setClientToken] = useState(""); + const [isLoading,setIsLoading]=useState(true) useEffect(() => { fetchData(); @@ -29,6 +32,7 @@ const Wadhwani = () => { } else if (courses) { setData(courses); } + setIsLoading(false) } }; @@ -48,7 +52,8 @@ const Wadhwani = () => {

    Wadhwani Foundation Courses

    - {data.map(course => ( + {isLoading?: + data.map(course => (
    { try { const response = await privateGateway.post( @@ -47,6 +47,7 @@ export const getWadhwaniCourseLink = async ( clientToken: string, courseId: string ) => { + const toastId=toast.loading("Fetching course link...") try { const response = await privateGateway.post( dashboardRoutes.getWadhwaniCourseLink, @@ -61,12 +62,16 @@ export const getWadhwaniCourseLink = async ( const message: wadhwaniCourseRedirectResponse = response?.data?.response; if (message.data?.error?.code) { return { response: null, error: message.data.error.description }; + }else{ + toast.success("Course link opened successfully!",{id:toastId}) } return { response: message, error: null }; - } catch (err: unknown) { + } catch (err: unknown) { + toast.error("Please try again later.",{id:toastId}) const error = err as AxiosError; if (error?.response) { throw error; + } else { return { response: null, error: error.message }; }