diff --git a/src/Images/Cloud.jpg b/src/Images/Cloud.jpg new file mode 100644 index 0000000..a200be7 Binary files /dev/null and b/src/Images/Cloud.jpg differ diff --git a/src/Images/Corona.jpg b/src/Images/Corona.jpg new file mode 100644 index 0000000..195ac8e Binary files /dev/null and b/src/Images/Corona.jpg differ diff --git a/src/Images/Cryptocurrency.jpg b/src/Images/Cryptocurrency.jpg new file mode 100644 index 0000000..aa46f67 Binary files /dev/null and b/src/Images/Cryptocurrency.jpg differ diff --git a/src/Images/Flowers.jpg b/src/Images/Flowers.jpg new file mode 100644 index 0000000..5253cbd Binary files /dev/null and b/src/Images/Flowers.jpg differ diff --git a/src/Images/Food.jpg b/src/Images/Food.jpg new file mode 100644 index 0000000..b45c058 Binary files /dev/null and b/src/Images/Food.jpg differ diff --git a/src/Images/Movie.jpg b/src/Images/Movie.jpg new file mode 100644 index 0000000..4e091e1 Binary files /dev/null and b/src/Images/Movie.jpg differ diff --git a/src/Images/Pets.jpg b/src/Images/Pets.jpg new file mode 100644 index 0000000..6876004 Binary files /dev/null and b/src/Images/Pets.jpg differ diff --git a/src/Images/Quiz.jpg b/src/Images/Quiz.jpg new file mode 100644 index 0000000..95e65d3 Binary files /dev/null and b/src/Images/Quiz.jpg differ diff --git a/src/Images/Space.jpg b/src/Images/Space.jpg new file mode 100644 index 0000000..f4631d2 Binary files /dev/null and b/src/Images/Space.jpg differ diff --git a/src/components/HeroSection.jsx b/src/components/HeroSection.jsx new file mode 100644 index 0000000..f1be622 --- /dev/null +++ b/src/components/HeroSection.jsx @@ -0,0 +1,21 @@ + +import React from 'react'; + + +const HeroSection = ({ image, title, subtitle }) => { + return ( +
+
+
+

{title}

+ {subtitle &&

{subtitle}

} +
+
+
+ ); +}; + +export default HeroSection; diff --git a/src/pages/Covid.jsx b/src/pages/Covid.jsx index f4959d4..59695c1 100644 --- a/src/pages/Covid.jsx +++ b/src/pages/Covid.jsx @@ -22,6 +22,8 @@ import Loading from '../components/Loading.jsx'; import ErrorMessage from '../components/ErrorMessage.jsx'; import Card from '../components/Card.jsx'; import CountryTrendChart from '../components/CountryTrendChart.jsx'; +import HeroSection from '../components/HeroSection'; +import Corona from '../Images/Corona.jpg'; export default function Covid() { const [summary, setSummary] = useState(null); @@ -69,7 +71,17 @@ export default function Covid() { ); return ( +
+ + COVID-19 Tracker + + } + subtitle="Stay informed with the latest COVID-19 stats worldwide." +/>

COVID-19 Tracker

diff --git a/src/pages/Movies.jsx b/src/pages/Movies.jsx index b50eaba..2cf8715 100644 --- a/src/pages/Movies.jsx +++ b/src/pages/Movies.jsx @@ -21,6 +21,8 @@ import { useEffect, useState } from 'react'; import Loading from '../components/Loading.jsx'; import ErrorMessage from '../components/ErrorMessage.jsx'; import Card from '../components/Card.jsx'; +import HeroSection from '../components/HeroSection'; +import Cinema from '../Images/Movie.jpg'; export default function Movies() { const [films, setFilms] = useState([]); @@ -44,6 +46,15 @@ export default function Movies() { return (
+ + Lights, Camera, Binge! + + } + subtitle="Dive deep into storytelling, performances, and the art of filmmaking." + />

Studio Ghibli Films

setFilter(e.target.value)} placeholder="Filter by director or year" /> {loading && } diff --git a/src/pages/Pets.jsx b/src/pages/Pets.jsx index 18ecbfe..8c5d745 100644 --- a/src/pages/Pets.jsx +++ b/src/pages/Pets.jsx @@ -1,5 +1,7 @@ import { useEffect, useState } from "react"; import { Heart, X, Download, ExternalLink, RefreshCw } from "lucide-react"; +import HeroSection from '../components/HeroSection'; +import Animals from '../Images/Pets.jpg'; export default function Pets() { const [dog, setDog] = useState(null); @@ -592,7 +594,15 @@ export default function Pets() { } `} - + + Paws, Love, Repeat + + } + subtitle="Because every pet deserves a life full of love and tail wags." + />
diff --git a/src/pages/Recipes.jsx b/src/pages/Recipes.jsx index ee8d5a1..9b352c1 100644 --- a/src/pages/Recipes.jsx +++ b/src/pages/Recipes.jsx @@ -21,6 +21,8 @@ import { useEffect, useState } from 'react'; import Loading from '../components/Loading.jsx'; import ErrorMessage from '../components/ErrorMessage.jsx'; import Card from '../components/Card.jsx'; +import HeroSection from '../components/HeroSection'; +import Food from '../Images/Food.jpg'; export default function Recipes() { const [ingredient, setIngredient] = useState('chicken'); @@ -53,6 +55,15 @@ export default function Recipes() { return (
+ + Delicious Made Simple + + } + subtitle="Wholesome recipes with heart, made easy for every home cook" + />

Recipe Finder

{ e.preventDefault(); search(); }} className="inline-form"> setIngredient(e.target.value)} placeholder="Ingredient" /> diff --git a/src/pages/Space.jsx b/src/pages/Space.jsx index 77f93db..c2e1195 100644 --- a/src/pages/Space.jsx +++ b/src/pages/Space.jsx @@ -23,6 +23,8 @@ import ErrorMessage from '../components/ErrorMessage.jsx'; import Card from '../components/Card.jsx'; import IssMap from '../components/IssMap.jsx'; import DashboardControls from "../components/DashboardControls.jsx"; +import HeroSection from '../components/HeroSection'; +import SpaceImg from '../Images/Space.jpg'; export default function Space({ theme = 'light' }) { @@ -91,6 +93,16 @@ useEffect(() => { const borderColor = isDark ? '#334155' : '#e2e8f0'; return ( + <> + + Orbiting Earth, Sharing Stories + + } + subtitle="Track the International Space Station and dive into the lives of its courageous crew" +/>
{

+ ); } \ No newline at end of file diff --git a/src/pages/Trivia.jsx b/src/pages/Trivia.jsx index 1a7fa08..084a78e 100644 --- a/src/pages/Trivia.jsx +++ b/src/pages/Trivia.jsx @@ -21,6 +21,8 @@ import { useEffect, useState } from 'react'; import Loading from '../components/Loading.jsx'; import ErrorMessage from '../components/ErrorMessage.jsx'; import Card from '../components/Card.jsx'; +import HeroSection from '../components/HeroSection'; +import Quiz from '../Images/Quiz.jpg'; export default function Trivia() { const [questions, setQuestions] = useState([]); @@ -88,6 +90,16 @@ export default function Trivia() { const allAnswered = answeredCount === totalQuestions && totalQuestions > 0; return ( + <> + + Think Fast, Learn Faster + + } + subtitle="A trivia playground for curious minds, quick thinkers, and casual know-it-alls" +/>

Trivia Quiz

@@ -265,6 +277,7 @@ export default function Trivia() {
)}
+ ); } diff --git a/src/pages/Weather.jsx b/src/pages/Weather.jsx index f2b1929..7c46851 100644 --- a/src/pages/Weather.jsx +++ b/src/pages/Weather.jsx @@ -26,6 +26,8 @@ import Loading from "../components/Loading.jsx"; import ErrorMessage from "../components/ErrorMessage.jsx"; import Card from "../components/Card.jsx"; import Skeleton from "../components/Skeleton.jsx"; +import HeroSection from '../components/HeroSection'; +import Cloud from '../Images/Cloud.jpg'; import { getWeatherData, clearWeatherCache, @@ -154,6 +156,15 @@ export default function Weather() { if (variant === "cloud") { return ( <> + + Weather Wonders + + } + subtitle="Stay ahead of the weather with real-time updates and accurate forecasts tailored just for you" +/>
diff --git a/src/styles.css b/src/styles.css index 488079f..fdc0b62 100644 --- a/src/styles.css +++ b/src/styles.css @@ -755,4 +755,63 @@ blockquote { .pagination button:disabled { background-color: #ccc; cursor: not-allowed; -} \ No newline at end of file +} + + +.hero-section { + position: relative; + height: 54vh; + background-size: cover; + background-position: center; + display: flex; + align-items: center; + justify-content: center; + color: white; +} + +.hero-overlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + justify-content: center; +} + +.hero-content { + text-align: center; + z-index: 1; + padding: 0 20px; +} + +.hero-title { + font-size: 3rem; + margin-bottom: 0.5rem; +} + +.hero-subtitle { + font-size: 1.5rem; + color: #fafafa; + font-style: italic; +} +@media (max-width: 768px) { + .hero-title { + font-size: 2.2rem; + } + .hero-subtitle { + font-size: 1.2rem; + } +} + +@media (max-width: 480px) { + .hero-title { + font-size: 1.8rem; + } + .hero-subtitle { + font-size: 1rem; + } +} +}