From e752274467264f6757db92bfeb2f247b5cc32d27 Mon Sep 17 00:00:00 2001 From: huzefmd Date: Sun, 13 Jul 2025 21:25:06 +0530 Subject: [PATCH 1/4] added dark mode for course page --- public/images/darklogo.png | Bin 0 -> 37879 bytes src/App.tsx | 10 +- src/components/AnnouncementBanner.tsx | 20 ++- src/components/CourseCard.tsx | 12 +- src/components/Footer.tsx | 18 +- src/components/Header.tsx | 234 +++++++++++++++----------- src/components/ThemeInitializer.tsx | 20 +++ src/index.css | 21 ++- src/pages/HomePage.tsx | 69 ++++---- tailwind.config.js | 79 +++++++-- 10 files changed, 307 insertions(+), 176 deletions(-) create mode 100644 public/images/darklogo.png create mode 100644 src/components/ThemeInitializer.tsx diff --git a/public/images/darklogo.png b/public/images/darklogo.png new file mode 100644 index 0000000000000000000000000000000000000000..9d85defec9d5f06fae46cd27b159fb676284a94a GIT binary patch literal 37879 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 B*Cqe} literal 0 HcmV?d00001 diff --git a/src/App.tsx b/src/App.tsx index b685100..49cc9cb 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -8,6 +8,8 @@ import { Blogs } from './pages/Blogs'; import { BlogPost } from './pages/BlogPost'; import { LinksPage } from './pages/LinksPage'; import * as ga from './utils/analytics'; +import ThemeInitializer from "./components/ThemeInitializer"; + //Google analytics function AnalyticsWrapper({ children }: { children: React.ReactNode }) { @@ -25,15 +27,17 @@ function AnalyticsWrapper({ children }: { children: React.ReactNode }) { function App() { return ( + + } /> } /> } /> } /> - } /> - } /> - } /> + } /> + } /> + } /> } /> diff --git a/src/components/AnnouncementBanner.tsx b/src/components/AnnouncementBanner.tsx index 059f1dd..4c981ae 100644 --- a/src/components/AnnouncementBanner.tsx +++ b/src/components/AnnouncementBanner.tsx @@ -1,9 +1,9 @@ -import React from 'react'; -import announcementsData from '../data/announcements.json'; -import { AnnouncementItem } from '../types'; +import React from "react"; +import announcementsData from "../data/announcements.json"; +import { AnnouncementItem } from "../types"; export function AnnouncementBanner() { - const activeItems = announcementsData.items.filter(item => item.isActive); + const activeItems = announcementsData.items.filter((item) => item.isActive); const [currentIndex, setCurrentIndex] = React.useState(0); const [isVisible, setIsVisible] = React.useState(true); @@ -26,10 +26,14 @@ export function AnnouncementBanner() { const currentItem = activeItems[currentIndex]; return ( -
-
-

{currentItem.content}

+
+
+

{currentItem.content}

); -} \ No newline at end of file +} diff --git a/src/components/CourseCard.tsx b/src/components/CourseCard.tsx index ddb1599..9a59c65 100644 --- a/src/components/CourseCard.tsx +++ b/src/components/CourseCard.tsx @@ -27,7 +27,7 @@ export function CourseCard({ course }: CourseCardProps) { return (
navigate(`/course/${course.id}`)} - className="group cursor-pointer overflow-hidden rounded-xl bg-white/10 backdrop-blur-sm border border-white/20 transition-all duration-300 hover:scale-[1.02] hover:bg-white/20" + className="group cursor-pointer overflow-hidden rounded-xl bg-white/10 backdrop-blur-sm border border-black transition-all duration-300 hover:scale-[1.02] hover:bg-white/20 dark:border-gray-700 hover:shadow-lg hover:shadow-gray-700 " >
- {totalVideos} videos + + {totalVideos} videos +
-

+

{course.title}

-

{course.description}

+

+ {course.description} +

); diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index cff4e9e..a8bfc0c 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -4,17 +4,17 @@ import { FaXTwitter } from "react-icons/fa6"; export function Footer() { return ( -