From 3f03f52260b8d8fad2ac0d304e735ce8f7328235 Mon Sep 17 00:00:00 2001 From: Dewank Rastogi <68022840+dewank07@users.noreply.github.com> Date: Sat, 21 Jun 2025 22:43:12 +0530 Subject: [PATCH] =?UTF-8?q?Revert=20"ELX=20|=20feat:=20=20dashboards=20(fr?= =?UTF-8?q?ontend),=20Ench:=20performance=20improvements,=20r=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit a1e8e22dcbbf144426a2ab7289a5fa53df131d7e. --- .prettierignore | 7 - .prettierrc | 7 - .vscode/settings.json | 3 +- CONTRIBUTING.md | 95 - app/dashboard/admin/page.tsx | 254 - .../components/ManagementSection.tsx | 58 - app/dashboard/components/Modal.tsx | 52 - app/dashboard/components/QuickStats.tsx | 65 - app/dashboard/components/RecentActivity.tsx | 39 - app/dashboard/components/StatsCards.tsx | 32 - app/dashboard/components/WelcomeCard.tsx | 20 - app/dashboard/components/WelcomeSection.tsx | 22 - app/dashboard/page.tsx | 62 - app/dashboard/styles/index.ts | 60 - app/dashboard/types/index.ts | 54 - app/layout.tsx | 35 +- app/page.tsx | 31 +- app/provider.tsx | 4 +- components/Approach.tsx | 197 + components/BackDrop/BackDrop.tsx | 25 - components/ChapterSection.tsx | 37 +- components/EventsCard.tsx | 55 +- components/Experience.tsx | 57 + components/Footer.tsx | 48 +- components/GlobeSection.tsx | 48 + components/Grid.tsx | 146 + components/Hero.tsx | 20 +- components/MagicButton.tsx | 12 +- components/MentorCard.tsx | 91 +- components/MinFooter.tsx | 38 - components/PageHeading.tsx | 8 +- components/Testimonials.tsx | 54 +- components/magicui/animated-shiny-text.tsx | 9 +- components/magicui/grid-pattern.tsx | 70 - components/magicui/sparkles-text.tsx | 1 - components/magicui/typing-animation.tsx | 1 - components/ui/3d-card.tsx | 132 +- components/ui/BentoGrid.tsx | 186 + components/ui/CanvasRevealEffect.tsx | 308 + components/ui/FloatingNavbar.tsx | 240 +- components/ui/Globe.tsx | 283 + components/ui/GradientBg.tsx | 1 - components/ui/GridGlobe.tsx | 435 + components/ui/HoverBorder.tsx | 1 - components/ui/InfiniteCards.tsx | 1 - components/ui/MobileNavModal.tsx | 148 - components/ui/SearchBar.tsx | 90 +- components/ui/TextGenerateEffect.tsx | 21 +- components/ui/toaster.tsx | 12 +- components/ui/wobble-card.tsx | 75 + constants/constants.ts | 178 +- constants/sampleArcs.ts | 364 + data/confetti.json | 1 + data/fetchServerData.ts | 13 - data/globe.json | 12794 ++++++++++++++++ data/index.ts | 269 + hooks/useDailyDsaQuestion.tsx | 1 + hooks/useEventApi.tsx | 362 +- hooks/useIsMobile.tsx | 37 - image-1.png | Bin 0 -> 1597698 bytes image-2.png | Bin 0 -> 1965394 bytes image.png | Bin 0 -> 1600868 bytes layouts/ClientAppLayout.tsx | 46 + .../ClientWrapperLayout.tsx | 55 - layouts/EventsPageLayout.tsx | 19 +- layouts/GetInTouchLayout.tsx | 20 +- layouts/MentorPageLayout.tsx | 29 +- layouts/NotesPageLayout.tsx | 20 +- layouts/TestimonialsPageLayout.tsx | 36 +- .../Client/ClientWrapperLayout.tsx | 18 - .../Server/ServerWrapperLayout.tsx | 32 - next.config.mjs | 2 +- package-lock.json | 9128 ++++++----- package.json | 15 +- public/DSA.png | Bin 0 -> 251497 bytes public/DSA.webp | Bin 36872 -> 0 bytes public/Elixir-logo.png | Bin 0 -> 1452473 bytes public/Elixir-logo.webp | Bin 213366 -> 0 bytes public/HomeScreen.png | Bin 0 -> 1190152 bytes public/HomeScreen.webp | Bin 120600 -> 0 bytes public/b1.svg | 9 + public/b4.svg | 17 + public/b5.svg | 9 + public/bg.png | Bin 0 -> 84996 bytes public/bg.webp | Bin 12520 -> 0 bytes public/c.svg | 17 + public/ccThumbnail.png | Bin 0 -> 191800 bytes public/ccThumbnail.webp | Bin 11356 -> 0 bytes public/cloud.svg | 6 + public/cloudName.svg | 13 + public/confetti.gif | Bin 0 -> 19197 bytes public/dock.svg | 3 + public/dockerName.svg | 9 + public/exp1.svg | 71 + public/exp2.svg | 64 + public/exp3.svg | 9 + public/exp4.svg | 54 + public/gdscThumbnail.png | Bin 0 -> 135457 bytes public/gdscThumbnail.webp | Bin 14302 -> 0 bytes public/gfgThumbnail.png | Bin 0 -> 223406 bytes public/gfgThumbnail.webp | Bin 11778 -> 0 bytes public/grid.svg | 9 + public/gsap.svg | 9 + public/host.svg | 3 + public/hostName.svg | 11 + public/jsm-logo.png | Bin 0 -> 1452473 bytes public/jsm-logo.webp | Bin 331976 -> 0 bytes public/p1.svg | 9 + public/p2.svg | 9 + public/p3.svg | 9 + public/p4.svg | 9 + public/profile.svg | 9 + public/re.svg | 6 + public/s.svg | 3 + public/stream.svg | 10 + public/streamName.svg | 3 + public/tail.svg | 3 + public/three.svg | 37 + public/ts.svg | 11 + public/wha.svg | 3 + store/slices/appDataSlice.ts | 24 - store/store.ts | 18 +- tsconfig.json | 38 +- 123 files changed, 21421 insertions(+), 6282 deletions(-) delete mode 100644 .prettierignore delete mode 100644 .prettierrc delete mode 100644 CONTRIBUTING.md delete mode 100644 app/dashboard/admin/page.tsx delete mode 100644 app/dashboard/components/ManagementSection.tsx delete mode 100644 app/dashboard/components/Modal.tsx delete mode 100644 app/dashboard/components/QuickStats.tsx delete mode 100644 app/dashboard/components/RecentActivity.tsx delete mode 100644 app/dashboard/components/StatsCards.tsx delete mode 100644 app/dashboard/components/WelcomeCard.tsx delete mode 100644 app/dashboard/components/WelcomeSection.tsx delete mode 100644 app/dashboard/page.tsx delete mode 100644 app/dashboard/styles/index.ts delete mode 100644 app/dashboard/types/index.ts create mode 100644 components/Approach.tsx delete mode 100644 components/BackDrop/BackDrop.tsx create mode 100644 components/Experience.tsx create mode 100644 components/GlobeSection.tsx create mode 100644 components/Grid.tsx delete mode 100644 components/MinFooter.tsx delete mode 100644 components/magicui/grid-pattern.tsx create mode 100644 components/ui/BentoGrid.tsx create mode 100644 components/ui/CanvasRevealEffect.tsx create mode 100644 components/ui/Globe.tsx create mode 100644 components/ui/GridGlobe.tsx delete mode 100644 components/ui/MobileNavModal.tsx create mode 100644 components/ui/wobble-card.tsx create mode 100644 constants/sampleArcs.ts create mode 100644 data/confetti.json delete mode 100644 data/fetchServerData.ts create mode 100644 data/globe.json create mode 100644 data/index.ts delete mode 100644 hooks/useIsMobile.tsx create mode 100644 image-1.png create mode 100644 image-2.png create mode 100644 image.png create mode 100644 layouts/ClientAppLayout.tsx delete mode 100644 layouts/ClientWrapperLayout/ClientWrapperLayout.tsx delete mode 100644 layouts/WrapperLayout/Client/ClientWrapperLayout.tsx delete mode 100644 layouts/WrapperLayout/Server/ServerWrapperLayout.tsx create mode 100644 public/DSA.png delete mode 100644 public/DSA.webp create mode 100644 public/Elixir-logo.png delete mode 100644 public/Elixir-logo.webp create mode 100644 public/HomeScreen.png delete mode 100644 public/HomeScreen.webp create mode 100644 public/b1.svg create mode 100644 public/b4.svg create mode 100644 public/b5.svg create mode 100644 public/bg.png delete mode 100644 public/bg.webp create mode 100644 public/c.svg create mode 100644 public/ccThumbnail.png delete mode 100644 public/ccThumbnail.webp create mode 100644 public/cloud.svg create mode 100644 public/cloudName.svg create mode 100644 public/confetti.gif create mode 100644 public/dock.svg create mode 100644 public/dockerName.svg create mode 100644 public/exp1.svg create mode 100644 public/exp2.svg create mode 100644 public/exp3.svg create mode 100644 public/exp4.svg create mode 100644 public/gdscThumbnail.png delete mode 100644 public/gdscThumbnail.webp create mode 100644 public/gfgThumbnail.png delete mode 100644 public/gfgThumbnail.webp create mode 100644 public/grid.svg create mode 100644 public/gsap.svg create mode 100644 public/host.svg create mode 100644 public/hostName.svg create mode 100644 public/jsm-logo.png delete mode 100644 public/jsm-logo.webp create mode 100644 public/p1.svg create mode 100644 public/p2.svg create mode 100644 public/p3.svg create mode 100644 public/p4.svg create mode 100644 public/profile.svg create mode 100644 public/re.svg create mode 100644 public/s.svg create mode 100644 public/stream.svg create mode 100644 public/streamName.svg create mode 100644 public/tail.svg create mode 100644 public/three.svg create mode 100644 public/ts.svg create mode 100644 public/wha.svg delete mode 100644 store/slices/appDataSlice.ts diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 7a282ac..0000000 --- a/.prettierignore +++ /dev/null @@ -1,7 +0,0 @@ -/.vscode -/node_modules -./dist - -*.env -.env -.env.* \ No newline at end of file diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index b4f6bfd..0000000 --- a/.prettierrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "singleQuote": false, - "bracketSpacing": true, - "tabWidth": 2, - "trailingComma": "es5", - "semi": true -} diff --git a/.vscode/settings.json b/.vscode/settings.json index 83fed32..15f41e9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,6 +10,5 @@ "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" }, - "editor.wordWrap": "on", - "postman.settings.dotenv-detection-notification-visibility": false + "editor.wordWrap": "on" } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index f7b9c59..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,95 +0,0 @@ -# Contributing Guidelines - -Thank you for your interest in contributing to this project! We welcome contributions from the community. Please read the following guidelines to help us maintain a high standard and streamline the contribution process. - -## How to Contribute - -1. **Fork the Repository** - - - Click the 'Fork' button at the top right of this repository page to create your own copy. - -2. **Clone Your Fork** - - - Clone your forked repository to your local machine: - ```bash - git clone https://github.com//ElixirV3.git - cd ElixirV3 - ``` - -3. **Create a New Branch** - - - Create a branch for your feature or bugfix: - ```bash - git checkout -b - ``` - -4. **Make Your Changes** - - - Make your changes or additions. Please ensure your code follows the existing style and conventions. - -5. **Test Your Changes** - - - Run the application and ensure your changes work as expected and do not break existing functionality. - -6. **Commit Your Changes** - - - Use clear and descriptive commit messages. Follow the commit message format below. - -7. **Push to Your Fork** - - - Push your branch to your forked repository: - ```bash - git push origin - ``` - -8. **Open a Pull Request** - - Go to the original repository and open a pull request. Provide a clear description of your changes and reference any related issues. - -## Commit Message Format - -``` - | (): -``` - -### Examples - -``` -GFG | feat(event): new card designs -GFG | fix(event): api request improve -GFG | chore(event): title copy change -GFG | refactor(event): mentor's search logic - -ELX | feat(event): new card designs -GDG | fix(event): api request improve -CC | chore(event): title copy change -``` - -- ``: Team code. If you are a member of one of the Elixir clubs, use your club's code: - - - `GFG` for GeeksforGeeks ABESEC - - `GDG` for Google Developer Group ABESEC - - `CC` for CodeChef ABESEC - - `ELX` for external contributers - -- ``: Type of change (feat, fix, chore, refactor, etc.) -- ``: Area affected (e.g., event) -- ``: Short summary of the change - -## Code Style & Standards - -- Follow the existing code style and formatting. -- Write clear, concise, and well-documented code. -- Add comments where necessary, especially for complex logic. -- Write tests for new features or bug fixes if applicable. - -## Community Standards - -- Be respectful and inclusive in all interactions. -- Provide constructive feedback in code reviews. -- Report issues or bugs using the issue tracker. - -## Need Help? - -If you have any questions or need guidance, feel free to open an issue or reach out to the maintainers. - -Thank you for contributing! diff --git a/app/dashboard/admin/page.tsx b/app/dashboard/admin/page.tsx deleted file mode 100644 index 93d8ea4..0000000 --- a/app/dashboard/admin/page.tsx +++ /dev/null @@ -1,254 +0,0 @@ -"use client"; -import { useState } from "react"; -import { AnimatePresence } from "framer-motion"; -import WelcomeSection from "../components/WelcomeSection"; -import ManagementSection from "../components/ManagementSection"; -import Modal from "../components/Modal"; -import StatsCards from "../components/StatsCards"; -import { ColorScheme } from "../types"; - -// Mock Data -const mockStudents = [ - { - id: 1, - name: "Vaibhav Tripathi", - email: "vxtr@abes.ac.in", - role: "Student", - joinDate: "2024-01-15", - }, - { - id: 2, - name: "Akash Chaudhary", - email: "akash@abes.ac.in", - role: "Student", - joinDate: "2024-02-01", - }, - { - id: 3, - name: "Shreyash Singh", - email: "shreyash@abes.ac.in", - role: "Club Head", - joinDate: "2024-01-20", - }, -]; - -const mockMentors = [ - { - id: 1, - name: "Dewank Rastogi", - expertise: "Frontend", - achievements: "3+ years experience", - status: "Active", - }, - { - id: 2, - name: "Rudraksh Tyagi", - expertise: "Open Source", - achievements: "LFX", - status: "Active", - }, - { - id: 3, - name: "Vandit Singh", - expertise: "DevOps", - achievements: "Google Summer of Code", - status: "Active", - }, -]; - -const mockEvents = [ - { - id: 1, - name: "Binary Vault", - club: "GFG_ABESEC", - date: "2024-03-15", - participants: 450, - }, - { - id: 2, - name: "Hackhaven", - club: "GDG_ABESEC", - date: "2024-03-20", - participants: 320, - }, - { - id: 3, - name: "Some Event", - club: "CodeChef_ABESEC", - date: "2024-03-25", - participants: 280, - }, -]; - -const mockBlogs = [ - { - id: 1, - title: "Future of AI", - author: "Priya Kumari", - status: "Pending", - date: "2024-03-10", - }, - { - id: 2, - title: "Web Development Trends", - author: "Radhika Chauhan", - status: "Approved", - date: "2024-03-08", - }, - { - id: 3, - title: "Cloud Computing Basics", - author: "Granth Agarwal", - status: "Pending", - date: "2024-03-09", - }, -]; - -const AdminDashboard = () => { - const [activeModal, setActiveModal] = useState(null); - const [selectedItem, setSelectedItem] = useState(null); - - const openModal = (modalType: string, item?: any) => { - setActiveModal(modalType); - if (item) setSelectedItem(item); - }; - - const closeModal = () => { - setActiveModal(null); - setSelectedItem(null); - }; - - const adminStats = [ - { - heading: "1.2k", - subheading: "Total Students", - description: "+120 this month", - colorScheme: "purple" as ColorScheme, - }, - { - heading: "45", - subheading: "Upcoming Events", - description: "Next: 3 days", - colorScheme: "blue" as ColorScheme, - }, - { - heading: "8", - subheading: "Blog Submissions", - description: "3 pending approval", - colorScheme: "green" as ColorScheme, - }, - { - heading: "24", - subheading: "Mentors", - description: "5 new additions", - colorScheme: "orange" as ColorScheme, - }, - ]; - - const renderModalContent = () => { - if (!selectedItem) return null; - return ( -
- - - {Object.entries(selectedItem).map(([key, value]) => ( - - - - - ))} - -
- {key} - {String(value)}
-
- ); - }; - - return ( - <> -
- - -
- {adminStats.map((stat, idx) => ( - - ))} -
- -
- row.name }, - { header: "Role", accessor: (row) => row.role }, - { header: "Join Date", accessor: (row) => row.joinDate }, - ]} - onViewAll={() => openModal("students")} - onRowClick={(item) => openModal("Student Details", item)} - /> - - row.name }, - { header: "Expertise", accessor: (row) => row.expertise }, - { header: "Status", accessor: (row) => row.status }, - ]} - onViewAll={() => openModal("mentors")} - onRowClick={(item) => openModal("Mentor Details", item)} - /> - - row.name }, - { header: "Club", accessor: (row) => row.club }, - { header: "Date", accessor: (row) => row.date }, - ]} - onViewAll={() => openModal("events")} - onRowClick={(item) => openModal("Event Details", item)} - /> - - row.title }, - { header: "Author", accessor: (row) => row.author }, - { header: "Status", accessor: (row) => row.status }, - ]} - onViewAll={() => openModal("blogs")} - onRowClick={(item) => openModal("Blog Details", item)} - /> -
-
- - - {activeModal && ( - - {renderModalContent()} - - )} - - - ); -}; - -export default AdminDashboard; diff --git a/app/dashboard/components/ManagementSection.tsx b/app/dashboard/components/ManagementSection.tsx deleted file mode 100644 index 0d92b04..0000000 --- a/app/dashboard/components/ManagementSection.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { ManagementSectionProps, Column } from "../types"; -import { managementStyles } from "../styles"; - -interface ExtendedManagementSectionProps extends ManagementSectionProps { - onRowClick?: (row: any) => void; -} - -const ManagementSection: React.FC = ({ - title, - columns, - data = [], - onViewAll, - className = "", - onRowClick, -}) => { - return ( -
-
-

{title}

- {onViewAll && ( - - )} -
-
- - - - {columns.map((column: Column, index: number) => ( - - ))} - - - - {data.map((row, rowIndex) => ( - onRowClick(row) : undefined} - > - {columns.map((column: Column, colIndex: number) => ( - - ))} - - ))} - -
- {column.header} -
- {column.accessor(row)} -
-
-
- ); -}; - -export default ManagementSection; diff --git a/app/dashboard/components/Modal.tsx b/app/dashboard/components/Modal.tsx deleted file mode 100644 index f07cdc6..0000000 --- a/app/dashboard/components/Modal.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { useEffect } from "react"; -import { ModalProps } from "../types"; -import { modalStyles } from "../styles"; -import { motion, AnimatePresence } from "framer-motion"; - -const Modal: React.FC = ({ - isOpen, - onClose, - title, - children, - className = "", -}) => { - useEffect(() => { - const handleEscapeKey = (event: KeyboardEvent) => { - if (event.key === "Escape" && isOpen) { - onClose(); - } - }; - - document.addEventListener("keydown", handleEscapeKey); - return () => { - document.removeEventListener("keydown", handleEscapeKey); - }; - }, [isOpen, onClose]); - - return ( - - {isOpen && ( -
- e.stopPropagation()} - > -
-

{title}

- -
-
{children}
-
-
- )} -
- ); -}; - -export default Modal; diff --git a/app/dashboard/components/QuickStats.tsx b/app/dashboard/components/QuickStats.tsx deleted file mode 100644 index fb4d649..0000000 --- a/app/dashboard/components/QuickStats.tsx +++ /dev/null @@ -1,65 +0,0 @@ -type StatColorScheme = "purple" | "blue" | "green" | "orange"; - -interface StatItem { - value: string; - label: string; - subtext: string; - colorScheme: StatColorScheme; -} - -interface QuickStatsProps { - stats: StatItem[]; -} - -const colorSchemes = { - purple: { - gradient: "from-purple to-blue-500", - hover: "hover:border-purple/50", - subtext: "text-purple", - }, - blue: { - gradient: "from-blue-400 to-cyan-400", - hover: "hover:border-blue-400/50", - subtext: "text-blue-400", - }, - green: { - gradient: "from-green-400 to-emerald-400", - hover: "hover:border-green-400/50", - subtext: "text-green-400", - }, - orange: { - gradient: "from-orange-400 to-red-400", - hover: "hover:border-orange-400/50", - subtext: "text-orange-400", - }, -}; - -const QuickStats: React.FC = ({ stats }) => { - return ( -
- {stats.map((stat, index) => { - const colors = colorSchemes[stat.colorScheme]; - return ( -
-
- - {stat.value} - - {stat.label} - - {stat.subtext} - -
-
- ); - })} -
- ); -}; - -export default QuickStats; diff --git a/app/dashboard/components/RecentActivity.tsx b/app/dashboard/components/RecentActivity.tsx deleted file mode 100644 index 4ab0f6b..0000000 --- a/app/dashboard/components/RecentActivity.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { ActivityItem } from "../types"; -import { baseCardStyles } from "../styles"; - -interface RecentActivityProps { - heading: string; - activities: ActivityItem[]; - className?: string; -} - -const RecentActivity: React.FC = ({ - heading, - activities, - className = "", -}) => { - return ( -
-

{heading}

-
- {activities.map((activity, index) => ( -
-
- {activity.icon} -
-
-

{activity.title}

-

{activity.description}

-

{activity.time}

-
-
- ))} -
-
- ); -}; - -export default RecentActivity; diff --git a/app/dashboard/components/StatsCards.tsx b/app/dashboard/components/StatsCards.tsx deleted file mode 100644 index ce6a00f..0000000 --- a/app/dashboard/components/StatsCards.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { StatCardProps } from "../types"; -import { colorSchemes, baseCardStyles } from "../styles"; - -const StatsCards: React.FC = ({ - heading, - subheading, - description, - colorScheme, - className = "", -}) => { - const colors = colorSchemes[colorScheme]; - - return ( -
-
- - {heading} - - {subheading} - - {description} - -
-
- ); -}; - -export default StatsCards; diff --git a/app/dashboard/components/WelcomeCard.tsx b/app/dashboard/components/WelcomeCard.tsx deleted file mode 100644 index 49f0c20..0000000 --- a/app/dashboard/components/WelcomeCard.tsx +++ /dev/null @@ -1,20 +0,0 @@ -const WelcomeCard = ({ name }: { name: string }) => { - return ( - <> -
-
-
-

- Welcome back, {name}! -

-

- Here's what's happening today. -

-
-
-
- - ); -}; - -export default WelcomeCard; diff --git a/app/dashboard/components/WelcomeSection.tsx b/app/dashboard/components/WelcomeSection.tsx deleted file mode 100644 index a648aec..0000000 --- a/app/dashboard/components/WelcomeSection.tsx +++ /dev/null @@ -1,22 +0,0 @@ -interface WelcomeSectionProps { - title: string; - description: string; -} - -const WelcomeSection: React.FC = ({ - title, - description, -}) => { - return ( -
-
-
-

{title}

-

{description}

-
-
-
- ); -}; - -export default WelcomeSection; diff --git a/app/dashboard/page.tsx b/app/dashboard/page.tsx deleted file mode 100644 index aabe112..0000000 --- a/app/dashboard/page.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import StatsCards from "./components/StatsCards"; -import WelcomeCard from "./components/WelcomeCard"; -import RecentActivity from "./components/RecentActivity"; - -const Dashboard = () => { - const recentActivities = [ - { - icon: 📝, - iconBg: "bg-green-400/20", - title: "Added a new note", - description: "Next.js Tips", - time: "2 hours ago", - }, - { - icon: 🎉, - iconBg: "bg-blue-400/20", - title: "Attended Event", - description: "Elixir Community Meetup", - time: "Yesterday", - }, - { - icon: 📝, - iconBg: "bg-purple/20", - title: "Created a new project", - description: "", - time: "2 days ago", - }, - ]; - - return ( - <> -
- -
- - - -
- - - -
- - ); -}; - -export default Dashboard; diff --git a/app/dashboard/styles/index.ts b/app/dashboard/styles/index.ts deleted file mode 100644 index 453e6d5..0000000 --- a/app/dashboard/styles/index.ts +++ /dev/null @@ -1,60 +0,0 @@ -export const colorSchemes = { - purple: { - gradient: "from-purple to-blue-500", - hover: "hover:border-purple/50", - text: "text-purple", - bg: "bg-purple/20", - }, - blue: { - gradient: "from-blue-400 to-cyan-400", - hover: "hover:border-blue-400/50", - text: "text-blue-400", - bg: "bg-blue-400/20", - }, - green: { - gradient: "from-green-400 to-emerald-400", - hover: "hover:border-green-400/50", - text: "text-green-400", - bg: "bg-green-400/20", - }, - orange: { - gradient: "from-orange-400 to-red-400", - hover: "hover:border-orange-400/50", - text: "text-orange-400", - bg: "bg-orange-400/20", - }, -}; - -export const baseCardStyles = { - container: - "rounded-xl p-6 bg-[rgba(17,25,40,0.75)] backdrop-blur-md border border-white/10 shadow transition-all duration-300", - heading: "text-4xl font-bold bg-clip-text text-transparent", - subheading: "text-white/80 mt-2 block", - description: "text-sm mt-1 block", -}; - -export const managementStyles = { - container: - "rounded-2xl p-6 bg-[rgba(17,25,40,0.80)] backdrop-blur-lg border border-white/10 shadow", - header: "flex justify-between items-center mb-6", - title: "text-xl font-semibold text-white", - viewAll: "text-sm text-blue-400 hover:text-blue-300 transition-colors", - table: { - container: "overflow-x-auto", - table: "w-full", - header: "text-left text-white/60 text-sm", - headerCell: "pb-4", - row: "cursor-pointer hover:bg-white/5 transition-colors", - cell: "py-3 text-white", - }, -}; - -export const modalStyles = { - overlay: - "fixed inset-0 bg-black/50 backdrop-blur-sm z-50 flex items-center justify-center", - container: - "bg-[rgba(17,25,40,0.95)] border border-white/10 rounded-2xl p-6 w-full max-w-2xl mx-4", - header: "flex justify-between items-center mb-4", - title: "text-xl font-semibold text-white", - closeButton: "text-white/60 text-3xl hover:text-white", -}; diff --git a/app/dashboard/types/index.ts b/app/dashboard/types/index.ts deleted file mode 100644 index fd7891e..0000000 --- a/app/dashboard/types/index.ts +++ /dev/null @@ -1,54 +0,0 @@ -export type ColorScheme = "purple" | "blue" | "green" | "orange"; - -export interface BaseCardProps { - className?: string; - children: React.ReactNode; -} - -export interface StatCardProps { - heading: string; - subheading: string; - description: string; - colorScheme: ColorScheme; - className?: string; -} - -export interface ActivityItem { - icon: React.ReactNode; - iconBg: string; - title: string; - description: string; - time: string; -} - -export interface ManagementItem { - id: number; - [key: string]: any; -} - -export interface Column { - header: string; - accessor: (row: any) => React.ReactNode; -} - -export interface ManagementSectionProps { - title: string; - columns: Column[]; - data: any[]; - onViewAll?: () => void; - className?: string; -} - -export interface ModalProps { - isOpen: boolean; - onClose: () => void; - title: string; - children: React.ReactNode; - className?: string; -} - -export interface WelcomeSectionProps { - title: string; - description: string; - className?: string; -} diff --git a/app/layout.tsx b/app/layout.tsx index bbec3f7..43542c1 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,19 +1,12 @@ import type { Metadata } from "next"; -import { DM_Sans } from "next/font/google"; +import { Inter } from "next/font/google"; import "./globals.css"; +import ClientAppLayout from "@/layouts/ClientAppLayout"; import { ThemeProvider } from "./provider"; import { Toaster } from "@/components/ui/toaster"; -import dynamic from "next/dynamic"; -const ServerWrapperLayout = dynamic( - () => import("@/layouts/WrapperLayout/Server/ServerWrapperLayout"), - { - ssr: true, - } -); - -const dmSans = DM_Sans({ subsets: ["latin"] }); +const inter = Inter({ subsets: ["latin"] }); export const metadata: Metadata = { title: { @@ -31,24 +24,20 @@ export default function RootLayout({ children: React.ReactNode; }>) { return ( - + - - + + - + - - + + - {children} + {children} diff --git a/app/page.tsx b/app/page.tsx index 61c31c6..92eae56 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,28 +1,29 @@ +"use client"; import Hero from "@/components/Hero"; +import Grid from "@/components/Grid"; import Testimonials from "@/components/Testimonials"; import ChapterSection from "@/components/ChapterSection"; +import { GlobeSection } from "@/components/GlobeSection"; import Image from "next/image"; -import HeroLogo from "@/public/Elixir-logo.webp"; +import { motion } from "framer-motion"; +import LogoHero from "@/public/Elixir-logo.png"; +import useEventApi from "@/hooks/useEventApi"; + +const Home = () => { + useEventApi(); -async function Home() { return ( -
-
- Elixir Logo -
+
+ + tect + + +
); -} +}; export default Home; diff --git a/app/provider.tsx b/app/provider.tsx index 7ff3288..b0ff266 100644 --- a/app/provider.tsx +++ b/app/provider.tsx @@ -2,8 +2,8 @@ import * as React from "react"; import { ThemeProvider as NextThemesProvider } from "next-themes"; -import { type PropsWithChildren } from "react"; +import { type ThemeProviderProps } from "next-themes/dist/types"; -export function ThemeProvider({ children, ...props }: PropsWithChildren) { +export function ThemeProvider({ children, ...props }: ThemeProviderProps) { return {children}; } diff --git a/components/Approach.tsx b/components/Approach.tsx new file mode 100644 index 0000000..bdd4208 --- /dev/null +++ b/components/Approach.tsx @@ -0,0 +1,197 @@ +import React from "react"; +import { AnimatePresence, motion } from "framer-motion"; + +import { CanvasRevealEffect } from "./ui/CanvasRevealEffect"; + +const Approach = () => { + return ( +
+

+ Our Core +

+ {/* remove bg-white dark:bg-black */} +
+ {/* add des prop */} + } + des="We'll collaborate to map out your website's goals, target audience, + and key functionalities. We'll discuss things like site structure, + navigation, and content requirements." + > + rounded-3xl overflow-hidden + containerClassName='bg-emerald-900 rounded-3xl overflow-hidden' + /> + + } + des='Once we agree on the plan, I cue my lofi playlist and dive into + coding. From initial sketches to polished code, I keep you updated + every step of the way.' + > + + {/* Radial gradient for the cute fade */} + {/* remove this one */} + {/*
*/} + + } + des="This is where the magic happens! Based on the approved design, + I'll translate everything into functional code, building your website + from the ground up." + > + + +
+
+ ); +}; + +export default Approach; + +const Card = ({ + title, + icon, + children, + // add this one for the desc + des, +}: { + title: string; + icon: React.ReactNode; + children?: React.ReactNode; + des: string; +}) => { + const [hovered, setHovered] = React.useState(false); + return ( +
setHovered(true)} + onMouseLeave={() => setHovered(false)} + // change h-[30rem] to h-[35rem], add rounded-3xl + className='border border-black/[0.2] group/canvas-card flex items-center justify-center + dark:border-white/[0.2] max-w-sm w-full mx-auto p-4 relative lg:h-[35rem] rounded-3xl ' + style={{ + // add these two + // you can generate the color from here https://cssgradient.io/ + background: "rgb(4,7,29)", + backgroundColor: "linear-gradient(90deg, rgba(4,7,29,1) 0%, rgba(12,14,35,1) 100%)", + }} + > + {/* change to h-10 w-10 , add opacity-30 */} + + + + + + + {hovered && ( + + {children} + + )} + + +
+
+ {icon} +
+

+ {title} +

+ {/* add this one for the description */} +

+ {des} +

+
+
+ ); +}; +// add order prop for the Phase number change +const AceternityIcon = ({ order }: { order: string }) => { + return ( +
+ {/* this btn is from https://ui.aceternity.com/components/tailwindcss-buttons border magic */} + {/* change rounded-lg, text-purple px-5 py-2 */} + {/* remove focus:outline-none focus:ring-2 focus:ring-slate-400 focus:ring-offset-2 focus:ring-offset-slate-50 cuz we don't need to focus */} + {/* remove text-sm font-medium h-12 , add font-bold text-2xl */} + +
+ // remove the svg and add the button + // + // + // + ); +}; + +export const Icon = ({ className, ...rest }: any) => { + return ( + + + + ); +}; diff --git a/components/BackDrop/BackDrop.tsx b/components/BackDrop/BackDrop.tsx deleted file mode 100644 index 821c494..0000000 --- a/components/BackDrop/BackDrop.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { cn } from "@/lib/utils"; -import { GridPattern } from "../magicui/grid-pattern"; -import { Spotlight } from "../ui/Spotlight"; - -export default function BackDrop() { - return ( - <> - - - - - - - ); -} diff --git a/components/ChapterSection.tsx b/components/ChapterSection.tsx index d5af852..de199ad 100644 --- a/components/ChapterSection.tsx +++ b/components/ChapterSection.tsx @@ -1,49 +1,42 @@ "use client"; -import { Chapters } from "@/constants/constants"; +import { Chapters } from "@/data"; import { PinContainer } from "./ui/Pin"; import Image from "next/image"; import Link from "next/link"; const ChapterSection = () => { return ( -
-

- Our Core Societies +
+

+ Our Core Societies

-
+
{Chapters.map((item, idx) => ( -
- +
+
-

- {item.title} -

-
- {item.des} +

{item.title}

+
+ {item.des}
-
+
tect
+
))} diff --git a/components/EventsCard.tsx b/components/EventsCard.tsx index 6a66b6c..64598f4 100644 --- a/components/EventsCard.tsx +++ b/components/EventsCard.tsx @@ -31,68 +31,57 @@ export default function EventsCard({ formLink, }: EventsCardProps): JSX.Element { return ( - - -
- + + +
+ {title} {/* Event organizing club logo */} - -
- +
+ {clubName}
- + {eventName} {description} -
-
-
+
+
+

{String(deadline)}

{isOver(deadline) ? null : ( - + Register diff --git a/components/Experience.tsx b/components/Experience.tsx new file mode 100644 index 0000000..58ecb93 --- /dev/null +++ b/components/Experience.tsx @@ -0,0 +1,57 @@ +import React from "react"; + +import { workExperience } from "@/data"; +import { Button } from "./ui/MovingBorders"; +import Image from "next/image"; + +const Experience = () => { + return ( +
+

+ My work experience +

+ +
+ {workExperience.map((card) => ( + + ))} +
+
+ ); +}; + +export default Experience; diff --git a/components/Footer.tsx b/components/Footer.tsx index 06a79e0..2ac4626 100644 --- a/components/Footer.tsx +++ b/components/Footer.tsx @@ -1,30 +1,56 @@ import { FaLocationArrow } from "react-icons/fa6"; -import { socialMedia } from "@/constants/constants"; + +import { socialMedia } from "@/data"; import MagicButton from "./MagicButton"; import Image from "next/image"; -import MinFooter from "./MinFooter"; const Footer = () => { return ( -