diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index e7dd85fe..af5377c2 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -10,15 +10,16 @@
"dependencies": {
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
- "@mui/material": "^7.3.2",
- "axios": "^1.11.0",
+ "@mui/material": "^7.3.4",
+ "aos": "^2.3.4",
+ "axios": "^1.12.2",
"gsap": "^3.13.0",
"html2pdf.js": "^0.10.3",
"leaflet": "^1.9.4",
"lucide-react": "^0.525.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
- "react-hot-toast": "^2.5.2",
+ "react-hot-toast": "^2.6.0",
"react-icons": "^5.5.0",
"react-leaflet": "^4.2.1",
"react-router-dom": "^6.30.1",
@@ -29,6 +30,7 @@
},
"devDependencies": {
"@eslint/js": "^9.9.0",
+ "@types/aos": "^3.0.7",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"@vitejs/plugin-react": "^4.7.0",
@@ -1142,9 +1144,9 @@
}
},
"node_modules/@mui/core-downloads-tracker": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.2.tgz",
- "integrity": "sha512-AOyfHjyDKVPGJJFtxOlept3EYEdLoar/RvssBTWVAvDJGIE676dLi2oT/Kx+FoVXFoA/JdV7DEMq/BVWV3KHRw==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.4.tgz",
+ "integrity": "sha512-BIktMapG3r4iXwIhYNpvk97ZfYWTreBBQTWjQKbNbzI64+ULHfYavQEX2w99aSWHS58DvXESWIgbD9adKcUOBw==",
"license": "MIT",
"funding": {
"type": "opencollective",
@@ -1152,16 +1154,16 @@
}
},
"node_modules/@mui/material": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.2.tgz",
- "integrity": "sha512-qXvbnawQhqUVfH1LMgMaiytP+ZpGoYhnGl7yYq2x57GYzcFL/iPzSZ3L30tlbwEjSVKNYcbiKO8tANR1tadjUg==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.4.tgz",
+ "integrity": "sha512-gEQL9pbJZZHT7lYJBKQCS723v1MGys2IFc94COXbUIyCTWa+qC77a7hUax4Yjd5ggEm35dk4AyYABpKKWC4MLw==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.28.3",
- "@mui/core-downloads-tracker": "^7.3.2",
- "@mui/system": "^7.3.2",
- "@mui/types": "^7.4.6",
- "@mui/utils": "^7.3.2",
+ "@babel/runtime": "^7.28.4",
+ "@mui/core-downloads-tracker": "^7.3.4",
+ "@mui/system": "^7.3.3",
+ "@mui/types": "^7.4.7",
+ "@mui/utils": "^7.3.3",
"@popperjs/core": "^2.11.8",
"@types/react-transition-group": "^4.4.12",
"clsx": "^2.1.1",
@@ -1180,7 +1182,7 @@
"peerDependencies": {
"@emotion/react": "^11.5.0",
"@emotion/styled": "^11.3.0",
- "@mui/material-pigment-css": "^7.3.2",
+ "@mui/material-pigment-css": "^7.3.3",
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -1201,13 +1203,13 @@
}
},
"node_modules/@mui/private-theming": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.3.2.tgz",
- "integrity": "sha512-ha7mFoOyZGJr75xeiO9lugS3joRROjc8tG1u4P50dH0KR7bwhHznVMcYg7MouochUy0OxooJm/OOSpJ7gKcMvg==",
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.3.3.tgz",
+ "integrity": "sha512-OJM+9nj5JIyPUvsZ5ZjaeC9PfktmK+W5YaVLToLR8L0lB/DGmv1gcKE43ssNLSvpoW71Hct0necfade6+kW3zQ==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.28.3",
- "@mui/utils": "^7.3.2",
+ "@babel/runtime": "^7.28.4",
+ "@mui/utils": "^7.3.3",
"prop-types": "^15.8.1"
},
"engines": {
@@ -1228,12 +1230,12 @@
}
},
"node_modules/@mui/styled-engine": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.3.2.tgz",
- "integrity": "sha512-PkJzW+mTaek4e0nPYZ6qLnW5RGa0KN+eRTf5FA2nc7cFZTeM+qebmGibaTLrgQBy3UpcpemaqfzToBNkzuxqew==",
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.3.3.tgz",
+ "integrity": "sha512-CmFxvRJIBCEaWdilhXMw/5wFJ1+FT9f3xt+m2pPXhHPeVIbBg9MnMvNSJjdALvnQJMPw8jLhrUtXmN7QAZV2fw==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.28.3",
+ "@babel/runtime": "^7.28.4",
"@emotion/cache": "^11.14.0",
"@emotion/serialize": "^1.3.3",
"@emotion/sheet": "^1.4.0",
@@ -1262,16 +1264,16 @@
}
},
"node_modules/@mui/system": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.3.2.tgz",
- "integrity": "sha512-9d8JEvZW+H6cVkaZ+FK56R53vkJe3HsTpcjMUtH8v1xK6Y1TjzHdZ7Jck02mGXJsE6MQGWVs3ogRHTQmS9Q/rA==",
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.3.3.tgz",
+ "integrity": "sha512-Lqq3emZr5IzRLKaHPuMaLBDVaGvxoh6z7HMWd1RPKawBM5uMRaQ4ImsmmgXWtwJdfZux5eugfDhXJUo2mliS8Q==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.28.3",
- "@mui/private-theming": "^7.3.2",
- "@mui/styled-engine": "^7.3.2",
- "@mui/types": "^7.4.6",
- "@mui/utils": "^7.3.2",
+ "@babel/runtime": "^7.28.4",
+ "@mui/private-theming": "^7.3.3",
+ "@mui/styled-engine": "^7.3.3",
+ "@mui/types": "^7.4.7",
+ "@mui/utils": "^7.3.3",
"clsx": "^2.1.1",
"csstype": "^3.1.3",
"prop-types": "^15.8.1"
@@ -1302,12 +1304,12 @@
}
},
"node_modules/@mui/types": {
- "version": "7.4.6",
- "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.6.tgz",
- "integrity": "sha512-NVBbIw+4CDMMppNamVxyTccNv0WxtDb7motWDlMeSC8Oy95saj1TIZMGynPpFLePt3yOD8TskzumeqORCgRGWw==",
+ "version": "7.4.7",
+ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.7.tgz",
+ "integrity": "sha512-8vVje9rdEr1rY8oIkYgP+Su5Kwl6ik7O3jQ0wl78JGSmiZhRHV+vkjooGdKD8pbtZbutXFVTWQYshu2b3sG9zw==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.28.3"
+ "@babel/runtime": "^7.28.4"
},
"peerDependencies": {
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -1319,13 +1321,13 @@
}
},
"node_modules/@mui/utils": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.3.2.tgz",
- "integrity": "sha512-4DMWQGenOdLnM3y/SdFQFwKsCLM+mqxzvoWp9+x2XdEzXapkznauHLiXtSohHs/mc0+5/9UACt1GdugCX2te5g==",
+ "version": "7.3.3",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.3.3.tgz",
+ "integrity": "sha512-kwNAUh7bLZ7mRz9JZ+6qfRnnxbE4Zuc+RzXnhSpRSxjTlSTj7b4JxRLXpG+MVtPVtqks5k/XC8No1Vs3x4Z2gg==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.28.3",
- "@mui/types": "^7.4.6",
+ "@babel/runtime": "^7.28.4",
+ "@mui/types": "^7.4.7",
"@types/prop-types": "^15.7.15",
"clsx": "^2.1.1",
"prop-types": "^15.8.1",
@@ -1658,6 +1660,13 @@
"win32"
]
},
+ "node_modules/@types/aos": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@types/aos/-/aos-3.0.7.tgz",
+ "integrity": "sha512-sEhyFqvKauUJZDbvAB3Pggynrq6g+2PS4XB3tmUr+mDL1gfDJnwslUC4QQ7/l8UD+LWpr3RxZVR/rHoZrLqZVg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/babel__core": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
@@ -1854,6 +1863,17 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/aos": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/aos/-/aos-2.3.4.tgz",
+ "integrity": "sha512-zh/ahtR2yME4I51z8IttIt4lC1Nw0ktsFtmeDzID1m9naJnWXhCoARaCgNOGXb5CLy3zm+wqmRAEgMYB5E2HUw==",
+ "license": "MIT",
+ "dependencies": {
+ "classlist-polyfill": "^1.0.3",
+ "lodash.debounce": "^4.0.6",
+ "lodash.throttle": "^4.0.1"
+ }
+ },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -2244,6 +2264,12 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
+ "node_modules/classlist-polyfill": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz",
+ "integrity": "sha512-GzIjNdcEtH4ieA2S8NmrSxv7DfEV5fmixQeyTmqmRmRJPGpRBaSnA2a0VrCjyT8iW8JjEdMbKzDotAJf+ajgaQ==",
+ "license": "Unlicense"
+ },
"node_modules/clsx": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
@@ -4136,6 +4162,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "license": "MIT"
+ },
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -4143,6 +4175,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/lodash.throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+ "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
+ "license": "MIT"
+ },
"node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -4669,9 +4707,9 @@
}
},
"node_modules/react-is": {
- "version": "19.1.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.1.tgz",
- "integrity": "sha512-tr41fA15Vn8p4X9ntI+yCyeGSf1TlYaY5vlTZfQmeLBrFo3psOPX6HhTDnFNL9uj3EhP0KAQ80cugCl4b4BERA==",
+ "version": "19.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.0.tgz",
+ "integrity": "sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==",
"license": "MIT"
},
"node_modules/react-leaflet": {
diff --git a/frontend/package.json b/frontend/package.json
index 712d2504..a78bb813 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -12,15 +12,16 @@
"dependencies": {
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
- "@mui/material": "^7.3.2",
- "axios": "^1.11.0",
+ "@mui/material": "^7.3.4",
+ "aos": "^2.3.4",
+ "axios": "^1.12.2",
"gsap": "^3.13.0",
"html2pdf.js": "^0.10.3",
"leaflet": "^1.9.4",
"lucide-react": "^0.525.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
- "react-hot-toast": "^2.5.2",
+ "react-hot-toast": "^2.6.0",
"react-icons": "^5.5.0",
"react-leaflet": "^4.2.1",
"react-router-dom": "^6.30.1",
@@ -31,6 +32,7 @@
},
"devDependencies": {
"@eslint/js": "^9.9.0",
+ "@types/aos": "^3.0.7",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"@vitejs/plugin-react": "^4.7.0",
diff --git a/frontend/public/Images/about-chef.jpg b/frontend/public/Images/about-chef.jpg
new file mode 100644
index 00000000..f2a5944b
Binary files /dev/null and b/frontend/public/Images/about-chef.jpg differ
diff --git a/frontend/public/Images/hero-dark.jpg b/frontend/public/Images/hero-dark.jpg
new file mode 100644
index 00000000..ae5b9fe1
Binary files /dev/null and b/frontend/public/Images/hero-dark.jpg differ
diff --git a/frontend/public/Images/hero-light.jpg b/frontend/public/Images/hero-light.jpg
new file mode 100644
index 00000000..0a80abc9
Binary files /dev/null and b/frontend/public/Images/hero-light.jpg differ
diff --git a/frontend/src/components/Aboutus/AboutUs.css b/frontend/src/components/Aboutus/AboutUs.css
index eaffaff0..f060bdef 100644
--- a/frontend/src/components/Aboutus/AboutUs.css
+++ b/frontend/src/components/Aboutus/AboutUs.css
@@ -1,266 +1,195 @@
-/* Base container */
-.about-container {
- max-width: 1200px;
- margin: 0 auto;
- padding: 20px;
- font-family: 'Segoe UI', 'Roboto', sans-serif;
- min-height: 100vh;
- transition: background 0.3s, color 0.3s;
-}
-
-/* Light Theme */
-.about-container.light {
- background-color: #ffffff;
- color: #333;
-}
+/* FONT - Make sure Poppins is imported in your main index.html or CSS */
+@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap');
-/* Dark Theme */
-.about-container.dark {
- background-color: #121212;
- color: #e0e0e0;
+/* BASE STYLING */
+.about-us-page {
+ font-family: 'Poppins', sans-serif;
+ overflow-x: hidden;
}
-/* Hero Section */
-.hero-section {
- text-align: center;
- padding: 60px 20px;
- border-radius: 20px;
- margin-bottom: 40px;
- color: white;
- box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4);
- background: linear-gradient(135deg, #efae4e 0%, #e78207 100%);
+.about-us-page.light {
+ --bg-color: #f4f7fc;
+ --text-color: #1a202c;
+ --card-bg: rgba(255, 255, 255, 0.8);
+ --border-color: rgba(0, 0, 0, 0.05);
+ --accent-color: #2563eb;
+ --hero-image: url('/images/hero-light.jpg');
}
-.about-container.dark .hero-section {
- background: linear-gradient(135deg, #ff8c00 0%, #cc5500 100%);
+.about-us-page.dark {
+ --bg-color: #0f172a; /* Deep navy blue */
+ --text-color: #e2e8f0;
+ --card-bg: rgba(26, 32, 44, 0.6); /* Translucent dark card */
+ --border-color: rgba(255, 255, 255, 0.1);
+ --accent-color: #38bdf8; /* Vibrant sky blue */
+ --hero-image: url('/images/hero-dark.jpg');
}
-.about-title {
- font-size: 3rem;
- font-weight: 700;
- margin-bottom: 20px;
- text-shadow: 2px 2px 6px rgba(0, 0, 0, 0.6);
- min-height: 90px;
+/* Apply background to the body for a seamless feel */
+body {
+ background-color: var(--bg-color);
}
-.subtitle {
- font-size: 1.2rem;
- opacity: 0.9;
- max-width: 600px;
- margin: 0 auto;
- color: rgb(244, 231, 134);
+/* HERO SECTION */
+.about-hero {
+ height: 90vh;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ text-align: center;
+ color: #fff;
+ padding: 0 20px;
+ position: relative;
+ background-image: var(--hero-image);
+ background-size: cover;
+ background-position: center;
+ background-attachment: fixed; /* Parallax effect */
}
-/* Marquee */
-.marquee {
- overflow: hidden;
- white-space: nowrap;
- background: linear-gradient(90deg, #ff6b6b, #ffa726, #66bb6a, #42a5f5);
- padding: 15px 0;
- margin-bottom: 40px;
- border-radius: 10px;
- box-shadow: 0 8px 25px rgba(0, 0, 0, 0.2);
+.about-hero::before { /* Dark overlay for text contrast */
+ content: '';
+ position: absolute;
+ top: 0; left: 0;
+ width: 100%; height: 100%;
+ background: linear-gradient(to top, var(--bg-color) 0%, rgba(0,0,0,0.6) 100%);
}
-.marquee-text {
- display: inline-block;
- animation: marquee 20s linear infinite;
- font-weight: bold;
- font-size: 1.1rem;
- color: white;
- text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.7);
+.hero-content {
+ position: relative;
+ z-index: 1;
}
-@keyframes marquee {
- 0% {
- transform: translateX(100%);
- }
-
- 100% {
- transform: translateX(-100%);
- }
+.main-slogan {
+ font-size: clamp(2.5rem, 5vw, 4.5rem);
+ font-weight: 700;
+ margin: 0;
+ letter-spacing: -1px;
}
-/* Sections */
-.section {
- padding: 40px;
- border-radius: 15px;
- margin-bottom: 30px;
- transition: background 0.3s, border 0.3s;
- display: flex;
- flex-direction: column;
+.main-slogan .highlight {
+ color: var(--accent-color);
}
-
-#about-description{
- margin-left: 2rem;
-}
-.about-container.light .section {
- background: #ffffff;
- border: 1px solid #ddd;
- box-shadow: 0 10px 30px rgba(108, 107, 107, 0.08);
+.subtitle {
+ font-size: clamp(1rem, 2vw, 1.25rem);
+ color: #cbd5e1;
+ margin-top: 1rem;
+ max-width: 600px;
}
-.about-container.dark .section {
- background: #1e1e1e;
- border: 1px solid #444;
- box-shadow: 0 10px 30px rgba(0, 0, 0, 0.6);
+/* MAIN CONTENT - Overlapping Design */
+.main-content-wrapper {
+ background-color: var(--bg-color);
+ color: var(--text-color);
+ padding: 5rem 2rem;
+ margin-top: -10vh; /* Pulls content up over the hero image */
+ position: relative;
+ z-index: 2;
+ border-top-left-radius: 40px;
+ border-top-right-radius: 40px;
}
.section-title {
- font-size: 2.2rem;
- margin-bottom: 20px;
- font-weight: 600;
- position: relative;
- padding-bottom: 10px;
- text-align: center;
- color:#274C77;
-}
-
-.section-title::after {
- content: '';
- position: absolute;
- bottom: 0;
- left: 0;
- width: 50px;
- height: 3px;
- background: linear-gradient(90deg, #667eea, #764ba2);
- border-radius: 2px;
+ font-size: 2.5rem;
+ font-weight: 700;
+ text-align: center;
+ margin-bottom: 3rem;
+ color: var(--text-color);
}
-.about-text {
- font-size: 1.1rem;
- line-height: 1.8;
- text-align: justify;
- max-width: 800px;
+/* ABOUT SECTION (Two Columns) */
+.about-section {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ align-items: center;
+ gap: 3rem;
+ max-width: 1100px;
+ margin: 0 auto 6rem auto;
}
-p.about-text {
- margin: 0;
+.image-column img {
+ width: 100%;
+ border-radius: 20px;
+ box-shadow: 0 20px 40px rgba(0,0,0,0.2);
}
-/* Categories */
-.categories-list {
- display: flex;
- flex-wrap: wrap;
- justify-content: center;
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
- gap: 20px;
- margin-top: 30px;
+.text-column p {
+ font-size: 1.1rem;
+ line-height: 1.8;
+ color: #94a3b8;
}
-.category-card {
- padding: 30px 20px;
- border-radius: 15px;
- font-weight: 600;
- text-align: center;
- transition: all 0.3s ease;
- cursor: pointer;
- font-size: 1.1rem;
- box-shadow: 0 8px 25px rgba(0, 0, 0, 0.25);
- text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
- /* keeps readable over gradients */
+/* CATEGORIES - Glassmorphism Effect */
+.categories-section {
+ max-width: 1100px;
+ margin: 0 auto 6rem auto;
}
-.about-container.light .category-card {
- color: #222;
- /* dark text for light theme */
+.categories-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
+ gap: 1.5rem;
}
-.about-container.dark .category-card {
- color: #fff;
- /* white text for dark theme */
+.category-card {
+ background: var(--card-bg);
+ border: 1px solid var(--border-color);
+ border-radius: 15px;
+ padding: 1.5rem;
+ text-align: center;
+ backdrop-filter: blur(10px);
+ -webkit-backdrop-filter: blur(10px);
+ transition: transform 0.3s ease, background 0.3s ease;
+ cursor: pointer;
}
.category-card:hover {
- transform: translateY(-8px);
- box-shadow: 0 15px 35px rgba(0, 0, 0, 0.35);
+ transform: translateY(-10px);
+ background: rgba(56, 189, 248, 0.1);
+ border-color: var(--accent-color);
}
-/* Flow Diagram */
-.flow-diagram {
- display: flex;
- align-items: center;
- justify-content: center;
- flex-wrap: wrap;
- gap: 15px;
- padding: 20px;
-}
-
-.flow-step {
- padding: 20px 30px;
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
- color: white;
- border-radius: 50px;
- text-align: center;
- font-weight: 600;
- box-shadow: 0 8px 20px rgba(102, 126, 234, 0.3);
- transition: transform 0.3s ease;
- min-width: 140px;
-}
-
-.flow-step:hover {
- transform: scale(1.05);
+.category-icon {
+ font-size: 2.5rem;
+ display: block;
+ margin-bottom: 0.5rem;
}
-.flow-arrow {
- font-size: 2rem;
- font-weight: bold;
- color: #667eea;
+.category-name {
+ font-weight: 600;
}
-
-/* Payment Section */
-.payment-section {
- text-align: center;
+/* HOW IT WORKS */
+.how-it-works-section {
+ max-width: 1200px;
+ margin: 0 auto;
}
-
-.payment-text {
- margin: 0 auto !important;
- font-size: 1.2rem;
- padding: 20px;
- border-radius: 15px;
- border: 2px dashed #667eea;
+.steps-container {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
+ align-items: start;
+ text-align: center;
+ gap: 2rem;
}
-.about-container.light .payment-text {
- background: #f8f9fa;
- color: #555;
+.step-card { padding: 1rem; }
+.step-icon {
+ font-size: 2.5rem;
+ color: var(--accent-color);
+ margin-bottom: 1rem;
}
+.step-title { font-size: 1.2rem; font-weight: 600; margin-bottom: 0.5rem; }
+.step-description { font-size: 0.9rem; color: #94a3b8; }
+.step-arrow { display: none; }
-.about-container.dark .payment-text {
- background: #2c2c2c;
- color: #ddd;
+/* RESPONSIVE DESIGN */
+@media (min-width: 992px) {
+ .steps-container { grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr; }
+ .step-arrow { display: flex; align-items: center; height: 100%; font-size: 1.5rem; color: var(--border-color); padding-top: 3rem;}
}
-/* Responsive */
@media (max-width: 768px) {
- .about-title {
- font-size: 2rem;
- }
-
- .flow-diagram {
- display: block;
- }
-
- .flow-arrow {
- rotate: 90deg;
- display: flex;
- justify-content: center;
- }
-
- .section {
- padding: 25px;
- }
-
- .section-title::after {
- left: 50%;
- transform: translateX(-50%);
- }
-
- .categories-list {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
- }
+ .main-content-wrapper { padding: 3rem 1rem; }
+ .about-section { grid-template-columns: 1fr; }
}
\ No newline at end of file
diff --git a/frontend/src/components/Aboutus/Aboutus.jsx b/frontend/src/components/Aboutus/Aboutus.jsx
index 19ea1555..36340713 100644
--- a/frontend/src/components/Aboutus/Aboutus.jsx
+++ b/frontend/src/components/Aboutus/Aboutus.jsx
@@ -1,95 +1,95 @@
-import React, { useEffect, useState, useContext } from "react";
+import React, { useEffect, useContext } from "react";
+import AOS from "aos";
import "./AboutUs.css";
import { ThemeContext } from "../context/ThemeContext";
const AboutUs = () => {
- const slogan = "Delicious Food Delivered Fresh To Your Door!";
- const [text, setText] = useState("");
- const { theme } = useContext(ThemeContext); // ✅ use theme from context
+ const { theme } = useContext(ThemeContext);
- useEffect(() => {
- let index = 0;
- const interval = setInterval(() => {
- setText(slogan.slice(0, index + 1));
- index++;
- if (index === slogan.length) clearInterval(interval);
- }, 100);
- return () => clearInterval(interval);
- }, []);
+ useEffect(() => {
+ AOS.init({
+ duration: 800,
+ once: true,
+ });
+ }, []);
- return (
-
- {/* Hero Section */}
-
- {text}
-
- Experience the finest cuisine with our premium food delivery service
-
-
+ const categories = [
+ { name: "Vegetarian", icon: "🥗" },
+ { name: "Non-Veg", icon: "🍖" },
+ { name: "Italian", icon: "🍝" },
+ { name: "Chinese", icon: "🥟" },
+ { name: "Desserts", icon: "🍰" },
+ { name: "Main Course", icon: "🍽️" },
+ ];
+
+ const howItWorks = [
+ { icon: "fas fa-mobile-alt", title: "Browse", description: "Explore our diverse menu." },
+ { icon: "fas fa-cart-plus", title: "Order", description: "Add favorites to your cart." },
+ { icon: "fas fa-credit-card", title: "Pay", description: "Securely pay through multiple options." },
+ { icon: "fas fa-shipping-fast", title: "Enjoy", description: "Get it delivered fresh and fast." },
+ ];
- {/* Marquee */}
-
-
- 🚚 Fast Delivery Guaranteed! |
- 💯 100% Satisfaction Promise! |
- 🍴 Fresh & Hygienic Ingredients! |
- 👨🍳 Authentic Recipes & Expert Chefs! |
- 🛡️ Safe & Secure Packaging! |
- ⭐ Rated #1 by Our Happy Customers!
-
-
+ return (
+
+ {/* Hero Section */}
+
- {/* About Us */}
-
- About Foodies
-
- At Foodies, we serve the best Veg, Non-Veg, Italian, Chinese, Desserts, and Main Courses.
- Our focus is on taste, quality, and hygiene. We're passionate about bringing
- you exceptional dining experiences right to your doorstep. Enjoy your favorite meals via our
- intuitive app or website, crafted with love and delivered with care.
-
-
+ {/* Main Content Body */}
+
+ {/* About Section */}
+
+
+

+
+
+
Our Passion for Perfection
+
+ At Foodies, we believe food is an experience. We combine authentic recipes, the freshest ingredients, and a passion for cooking to create unforgettable meals. Our mission is to deliver not just food, but happiness.
+
+
+
- {/* Categories */}
-
- Explore Our Categories
-
-
🥗 Vegetarian
-
🍖 Non-Vegetarian
-
🍝 Italian Cuisine
-
🥟 Chinese Delights
-
🍰 Sweet Desserts
-
🍽️ Main Courses
-
-
+ {/* Categories Section */}
+
+ Endless Flavors to Explore
+
+ {categories.map((cat) => (
+
+ {cat.icon}
+ {cat.name}
+
+ ))}
+
+
- {/* Flow */}
-
- How Ordering Works
-
-
📱 Browse Menu
-
→
-
🛒 Add to Cart
-
→
-
✅ Checkout
-
→
-
💳 Payment
-
→
-
🚚 Delivery
+ {/* How It Works Section */}
+
+ Simple Steps to Deliciousness
+
+ {howItWorks.map((step, index) => (
+
+
+
+
{step.title}
+
{step.description}
+
+ {index < howItWorks.length - 1 &&
}
+
+ ))}
+
+
+
-
-
- {/* Payment */}
-
- Payment Methods
-
- 💳 Credit & Debit Cards |
- 📱 Digital Wallets |
- 💵 Cash on Delivery
-
-
-
- );
+ );
};
export default AboutUs;
\ No newline at end of file
diff --git a/frontend/src/components/Footer/Footer.jsx b/frontend/src/components/Footer/Footer.jsx
index e714816b..c5637bb7 100644
--- a/frontend/src/components/Footer/Footer.jsx
+++ b/frontend/src/components/Footer/Footer.jsx
@@ -15,6 +15,7 @@ import LinkedInIcon from '../Icons/LinkedInIcon';
import GithubIcon from '../Icons/GithubIcon';
import FooterLogo from './FooterLogo';
import NewsletterSubscription from '../NewsletterSubscription/NewsletterSubscription';
+import QRCodeDownload from "./QRCodeDownload";
const Footer = () => {
return (
@@ -25,6 +26,7 @@ const Footer = () => {
{/*

*/}
+
Enjoy delicious food from your favorite restaurants.
Fast delivery, easy to use, and always satisfying.
diff --git a/frontend/src/components/Footer/QRCodeDownload.jsx b/frontend/src/components/Footer/QRCodeDownload.jsx
new file mode 100644
index 00000000..2fbce1a4
--- /dev/null
+++ b/frontend/src/components/Footer/QRCodeDownload.jsx
@@ -0,0 +1,20 @@
+import React from "react";
+import { QRCodeCanvas } from "qrcode.react";
+
+const QRCodeDownload = () => {
+ return (
+
+
📲 Scan to Download
+
+
+ );
+};
+
+export default QRCodeDownload;
diff --git a/package-lock.json b/package-lock.json
index 66b9ac53..2538a493 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,6 +6,7 @@
"": {
"dependencies": {
"html2pdf.js": "^0.10.3",
+ "qrcode.react": "^4.2.0",
"react-icons": "^5.5.0",
"react-to-print": "^3.1.1",
"vite": "7.1.1"
@@ -997,6 +998,15 @@
"node": "^10 || ^12 || >=14"
}
},
+ "node_modules/qrcode.react": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-4.2.0.tgz",
+ "integrity": "sha512-QpgqWi8rD9DsS9EP3z7BT+5lY5SFhsqGjpgW5DY/i3mK4M9DTBNz3ErMi8BWYEfI3L0d8GIbGmcdFAS1uIRGjA==",
+ "license": "ISC",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/raf": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
diff --git a/package.json b/package.json
index 817c429f..ff32521c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,7 @@
{
"dependencies": {
"html2pdf.js": "^0.10.3",
+ "qrcode.react": "^4.2.0",
"react-icons": "^5.5.0",
"react-to-print": "^3.1.1",
"vite": "7.1.1"