From caaba151c992a5f9a472135e5217ff6f3913e149 Mon Sep 17 00:00:00 2001 From: Zorawar Purohit <42845567+engagepy@users.noreply.github.com> Date: Fri, 20 Sep 2024 02:17:26 +0530 Subject: [PATCH 1/9] Counters Added For Community Attraction --- frontend/src/components/DataCard/datacard.tsx | 91 +++++++++++++++++++ .../sections/WhatIsDjango/WhatIsDjango.tsx | 4 +- 2 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 frontend/src/components/DataCard/datacard.tsx diff --git a/frontend/src/components/DataCard/datacard.tsx b/frontend/src/components/DataCard/datacard.tsx new file mode 100644 index 00000000..bde03247 --- /dev/null +++ b/frontend/src/components/DataCard/datacard.tsx @@ -0,0 +1,91 @@ +import React, { useState, useEffect } from "react"; +import { useInView } from "react-intersection-observer"; +import { FaCity, FaGithub } from "react-icons/fa"; +import { FaUsers } from "react-icons/fa"; +import { RiLandscapeFill } from "react-icons/ri"; + +// Define props type for StatCard component +interface StatCardProps { + title: string; + subText: string; + startCount: number; + count: number; + icon: React.ReactNode; +} + +function DataCard() { + return ( +
+ } + /> + } + /> + } + /> +
+ ); +} + +// Define StatCard component with props typed +const StatCard: React.FC = ({ title, subText, count, startCount, icon }) => { + const [number, setNumber] = useState(startCount); + const { ref, inView } = useInView({ + threshold: 0.4, + }); + const intervalTime = count === 31818 ? 1 : 100; + + useEffect(() => { + let start = startCount; + const interval = setInterval(() => { + if (start <= count) { + setNumber(start); + start += 1; + } else { + clearInterval(interval); + } + }, intervalTime); + return () => { + clearInterval(interval); + }; + }, [inView, startCount, count, intervalTime]); + + return ( +
+
+ {icon} +
+
+ + {count === 50 ? "" : ""} + {inView ? number : 0}+ + + + {title === count ? " " : title} + +
+ {subText} +
+
+
+ ); +}; + +export default DataCard; \ No newline at end of file diff --git a/frontend/src/sections/WhatIsDjango/WhatIsDjango.tsx b/frontend/src/sections/WhatIsDjango/WhatIsDjango.tsx index 6c8b4400..1c98c4a8 100644 --- a/frontend/src/sections/WhatIsDjango/WhatIsDjango.tsx +++ b/frontend/src/sections/WhatIsDjango/WhatIsDjango.tsx @@ -3,6 +3,7 @@ import Image from 'next/image' import { Button } from '@components' import useWidth from '@/hooks/useWidth' +import DataCard from '@/components/DataCard/datacard' const WhatIsDjango = () => { const width = useWidth() @@ -70,8 +71,9 @@ const WhatIsDjango = () => { + ) } -export default WhatIsDjango +export default WhatIsDjango \ No newline at end of file From 33c2c079444c8c865afc3c10aef3d60529317893 Mon Sep 17 00:00:00 2001 From: Zorawar Purohit <42845567+engagepy@users.noreply.github.com> Date: Fri, 20 Sep 2024 09:40:11 +0530 Subject: [PATCH 2/9] Update frontend/src/components/DataCard/datacard.tsx Co-authored-by: Saurabh Sharma --- frontend/src/components/DataCard/datacard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/DataCard/datacard.tsx b/frontend/src/components/DataCard/datacard.tsx index bde03247..0067faca 100644 --- a/frontend/src/components/DataCard/datacard.tsx +++ b/frontend/src/components/DataCard/datacard.tsx @@ -13,7 +13,7 @@ interface StatCardProps { icon: React.ReactNode; } -function DataCard() { +const DataCard = () => { return (
Date: Fri, 20 Sep 2024 09:46:19 +0530 Subject: [PATCH 3/9] changed incorporated --- frontend/package-lock.json | 255 +++++++++--------- frontend/package.json | 1 + frontend/src/components/DataCard/datacard.tsx | 8 +- 3 files changed, 140 insertions(+), 124 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 184f8bb1..0a5b8f02 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -26,6 +26,7 @@ "react-faq-component": "^1.3.4", "react-hook-form": "^7.52.2", "react-icons": "^5.2.1", + "react-intersection-observer": "^9.13.1", "sanitize-html": "^2.13.0", "tailwind-merge": "^2.3.0", "tailwindcss-animate": "^1.0.7", @@ -288,126 +289,6 @@ "node": ">= 10" } }, - "node_modules/@next/swc-darwin-x64": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz", - "integrity": "sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz", - "integrity": "sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz", - "integrity": "sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz", - "integrity": "sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz", - "integrity": "sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz", - "integrity": "sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz", - "integrity": "sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz", - "integrity": "sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4705,6 +4586,20 @@ "react": "*" } }, + "node_modules/react-intersection-observer": { + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.13.1.tgz", + "integrity": "sha512-tSzDaTy0qwNPLJHg8XZhlyHTgGW6drFKTtvjdL+p6um12rcnp8Z5XstE+QNBJ7c64n5o0Lj4ilUleA41bmDoMw==", + "peerDependencies": { + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -5960,6 +5855,126 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz", + "integrity": "sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz", + "integrity": "sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz", + "integrity": "sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz", + "integrity": "sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz", + "integrity": "sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz", + "integrity": "sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz", + "integrity": "sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz", + "integrity": "sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } } } } diff --git a/frontend/package.json b/frontend/package.json index 49aecb04..3975cb02 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -27,6 +27,7 @@ "react-faq-component": "^1.3.4", "react-hook-form": "^7.52.2", "react-icons": "^5.2.1", + "react-intersection-observer": "^9.13.1", "sanitize-html": "^2.13.0", "tailwind-merge": "^2.3.0", "tailwindcss-animate": "^1.0.7", diff --git a/frontend/src/components/DataCard/datacard.tsx b/frontend/src/components/DataCard/datacard.tsx index 0067faca..6393e96b 100644 --- a/frontend/src/components/DataCard/datacard.tsx +++ b/frontend/src/components/DataCard/datacard.tsx @@ -2,7 +2,7 @@ import React, { useState, useEffect } from "react"; import { useInView } from "react-intersection-observer"; import { FaCity, FaGithub } from "react-icons/fa"; import { FaUsers } from "react-icons/fa"; -import { RiLandscapeFill } from "react-icons/ri"; + // Define props type for StatCard component interface StatCardProps { @@ -17,10 +17,10 @@ const DataCard = () => { return (
} /> = ({ title, subText, count, startCount, {inView ? number : 0}+ - {title === count ? " " : title} + {title}
{subText} From ca565b1aafd35f14214f95406e5c3a7b83b35629 Mon Sep 17 00:00:00 2001 From: Zorawar Purohit <42845567+engagepy@users.noreply.github.com> Date: Fri, 20 Sep 2024 11:14:06 +0530 Subject: [PATCH 4/9] changesto datacard export incorporated --- frontend/src/components/DataCard/datacard.tsx | 3 +-- frontend/src/components/DataCard/index.ts | 3 +++ frontend/src/components/index.ts | 1 + frontend/src/sections/WhatIsDjango/WhatIsDjango.tsx | 4 ++-- 4 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 frontend/src/components/DataCard/index.ts diff --git a/frontend/src/components/DataCard/datacard.tsx b/frontend/src/components/DataCard/datacard.tsx index 6393e96b..1c348570 100644 --- a/frontend/src/components/DataCard/datacard.tsx +++ b/frontend/src/components/DataCard/datacard.tsx @@ -13,7 +13,7 @@ interface StatCardProps { icon: React.ReactNode; } -const DataCard = () => { +export const DataCard = () => { return (
= ({ title, subText, count, startCount, ); }; -export default DataCard; \ No newline at end of file diff --git a/frontend/src/components/DataCard/index.ts b/frontend/src/components/DataCard/index.ts new file mode 100644 index 00000000..289f75ed --- /dev/null +++ b/frontend/src/components/DataCard/index.ts @@ -0,0 +1,3 @@ +export * from './DataCard'; + + diff --git a/frontend/src/components/index.ts b/frontend/src/components/index.ts index ae004655..3a0a76ff 100644 --- a/frontend/src/components/index.ts +++ b/frontend/src/components/index.ts @@ -7,3 +7,4 @@ export * from './TextArea' export * from './Drawer' export * from './RadioGroup' export * from './Carousel' +export * from './DataCard' diff --git a/frontend/src/sections/WhatIsDjango/WhatIsDjango.tsx b/frontend/src/sections/WhatIsDjango/WhatIsDjango.tsx index 1c98c4a8..b5f07aed 100644 --- a/frontend/src/sections/WhatIsDjango/WhatIsDjango.tsx +++ b/frontend/src/sections/WhatIsDjango/WhatIsDjango.tsx @@ -1,9 +1,9 @@ 'use client' import Image from 'next/image' -import { Button } from '@components' +import { Button, DataCard } from '@components' import useWidth from '@/hooks/useWidth' -import DataCard from '@/components/DataCard/datacard' + const WhatIsDjango = () => { const width = useWidth() From c0af9e3735cd4d7d36febe3c4583441d2adcd849 Mon Sep 17 00:00:00 2001 From: Zorawar Purohit <42845567+engagepy@users.noreply.github.com> Date: Fri, 20 Sep 2024 11:18:04 +0530 Subject: [PATCH 5/9] use client added to modal --- frontend/src/components/DataCard/datacard.tsx | 5 +---- frontend/src/components/Modal/modal.tsx | 8 +++----- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/DataCard/datacard.tsx b/frontend/src/components/DataCard/datacard.tsx index 1c348570..10d10151 100644 --- a/frontend/src/components/DataCard/datacard.tsx +++ b/frontend/src/components/DataCard/datacard.tsx @@ -1,7 +1,4 @@ -import React, { useState, useEffect } from "react"; -import { useInView } from "react-intersection-observer"; -import { FaCity, FaGithub } from "react-icons/fa"; -import { FaUsers } from "react-icons/fa"; +"use client" // Define props type for StatCard component diff --git a/frontend/src/components/Modal/modal.tsx b/frontend/src/components/Modal/modal.tsx index 25dbe50b..46e85ee7 100644 --- a/frontend/src/components/Modal/modal.tsx +++ b/frontend/src/components/Modal/modal.tsx @@ -7,6 +7,7 @@ import { fetchData } from '@utils'; import { API_ENDPOINTS, SUBSCRIBER_FORM_SCHEMA } from '@constants'; import { yupResolver } from '@hookform/resolvers/yup'; import { enqueueSnackbar } from 'notistack'; +import { Button } from '../Button'; interface ModalProps { onClose: () => void; @@ -86,12 +87,9 @@ const Modal: React.FC = ({ onClose }) => {
{/* Submit Button */} - +
From 4b220c8c077016dbb13c823c0dc040c5e699c26b Mon Sep 17 00:00:00 2001 From: Zorawar Purohit <42845567+engagepy@users.noreply.github.com> Date: Fri, 20 Sep 2024 11:20:32 +0530 Subject: [PATCH 6/9] subTitle: string modded --- frontend/src/components/DataCard/datacard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/DataCard/datacard.tsx b/frontend/src/components/DataCard/datacard.tsx index 10d10151..77c7824e 100644 --- a/frontend/src/components/DataCard/datacard.tsx +++ b/frontend/src/components/DataCard/datacard.tsx @@ -4,7 +4,7 @@ // Define props type for StatCard component interface StatCardProps { title: string; - subText: string; + subTitle: string; startCount: number; count: number; icon: React.ReactNode; From 7c215d7e5edf584d636da765aa81d6f4f61b7971 Mon Sep 17 00:00:00 2001 From: Zorawar Purohit <42845567+engagepy@users.noreply.github.com> Date: Fri, 20 Sep 2024 11:21:15 +0530 Subject: [PATCH 7/9] subtext retained --- frontend/src/components/DataCard/datacard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/DataCard/datacard.tsx b/frontend/src/components/DataCard/datacard.tsx index 77c7824e..10d10151 100644 --- a/frontend/src/components/DataCard/datacard.tsx +++ b/frontend/src/components/DataCard/datacard.tsx @@ -4,7 +4,7 @@ // Define props type for StatCard component interface StatCardProps { title: string; - subTitle: string; + subText: string; startCount: number; count: number; icon: React.ReactNode; From 773790342970837d5cde12d307c16dfc6c68f5bd Mon Sep 17 00:00:00 2001 From: Zorawar Purohit <42845567+engagepy@users.noreply.github.com> Date: Fri, 20 Sep 2024 12:09:50 +0530 Subject: [PATCH 8/9] modal toggle updated --- frontend/src/sections/Hero/Hero.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/frontend/src/sections/Hero/Hero.tsx b/frontend/src/sections/Hero/Hero.tsx index 02813360..0e4811d2 100644 --- a/frontend/src/sections/Hero/Hero.tsx +++ b/frontend/src/sections/Hero/Hero.tsx @@ -8,9 +8,7 @@ import Modal from '@/components/Modal/modal' const HeroSection = () => { const [isModalOpen, setIsModalOpen] = useState(false) - const toggleModal = () => { - setIsModalOpen(!isModalOpen) - } + const toggleModal = () => setIsModalOpen((prevState) => !prevState); return (
From 27026be72c58a93333994dfa361a39456962f1f0 Mon Sep 17 00:00:00 2001 From: Zorawar Purohit <42845567+engagepy@users.noreply.github.com> Date: Fri, 20 Sep 2024 12:36:53 +0530 Subject: [PATCH 9/9] import fixed for subscriber form --- frontend/src/components/Modal/modal.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/Modal/modal.tsx b/frontend/src/components/Modal/modal.tsx index 46e85ee7..e8eb413e 100644 --- a/frontend/src/components/Modal/modal.tsx +++ b/frontend/src/components/Modal/modal.tsx @@ -2,12 +2,12 @@ import React from 'react'; import { MdOutlineEmail } from 'react-icons/md'; import { FaRegUser } from 'react-icons/fa'; import { SubmitHandler, useForm } from 'react-hook-form'; -import { SubscriberForm } from './LatestUpdate.types'; +import { SubscriberForm } from '@/sections/Latestupdate/LatestUpdate.types'; import { fetchData } from '@utils'; import { API_ENDPOINTS, SUBSCRIBER_FORM_SCHEMA } from '@constants'; import { yupResolver } from '@hookform/resolvers/yup'; import { enqueueSnackbar } from 'notistack'; -import { Button } from '../Button'; +import { Button } from '../Button'; interface ModalProps { onClose: () => void;