diff --git a/src/Pages/cake.js b/src/Pages/cake.js
index 8cc9e9f..6f879c6 100644
--- a/src/Pages/cake.js
+++ b/src/Pages/cake.js
@@ -3,9 +3,14 @@ import { useDispatch } from 'react-redux';
import { addToCart, removeFromCart } from '../Store/cartSlice';
import styled from 'styled-components';
import { motion } from 'framer-motion';
+import "@fortawesome/fontawesome-free/css/all.min.css";
const CakeContainer = styled.div`
+
+ padding: 6rem 2rem 4rem 2rem; // Added top padding for navbar
+
padding: 6rem 2rem 4rem 2rem;
+
max-width: 1200px;
margin: 0 auto;
background-color: #fffbeb;
@@ -147,6 +152,8 @@ const SearchButton = styled.button`
cursor: pointer;
transition: background 0.3s ease;
+
+
&:hover {
background: linear-gradient(145deg, #7d5858, #8e6a6a);
}
@@ -156,6 +163,14 @@ function Cake() {
const dispatch = useDispatch();
const [quantities, setQuantities] = useState({});
const [searchQuery, setSearchQuery] = useState('');
+ const [likedProducts, setLikedProducts] = useState({});
+
+ const toggleHeart = (productId) => {
+ setLikedProducts((prevState) => ({
+ ...prevState,
+ [productId]: !prevState[productId],
+ }));
+ };
const handleAddToCart = (product) => {
if (!quantities[product.id]) {
@@ -242,6 +257,15 @@ function Cake() {
return (
+
+
+ Our Cake Selection
+
+
Our Cake Selection
@@ -258,10 +282,29 @@ function Cake() {
+
{filteredProducts.map((product) => (
-
+
+
+
toggleHeart(product.id)}
+ style={{
+ position: 'absolute',
+ top: '10px',
+ right: '10px',
+ cursor: 'pointer',
+ fontSize: '24px',
+ color: likedProducts[product.id] ? 'red' : 'gray',
+ }}
+ >
+
+
+
{product.name}
${product.price.toFixed(2)}
@@ -285,4 +328,5 @@ function Cake() {
);
}
+
export default Cake;
diff --git a/src/Pages/coffee.js b/src/Pages/coffee.js
index 81566c1..3b62449 100644
--- a/src/Pages/coffee.js
+++ b/src/Pages/coffee.js
@@ -3,6 +3,7 @@ import { useDispatch } from 'react-redux';
import { addToCart, removeFromCart } from '../Store/cartSlice';
import styled from 'styled-components';
import { motion } from 'framer-motion';
+import "@fortawesome/fontawesome-free/css/all.min.css";
const CoffeeContainer = styled.div`
padding: 6rem 2rem 4rem 2rem; // Added top padding for navbar
@@ -173,6 +174,14 @@ function Coffee() {
const dispatch = useDispatch();
const [quantities, setQuantities] = useState({});
const [searchQuery, setSearchQuery] = useState('');
+ const [likedProducts, setLikedProducts] = useState({});
+
+ const toggleHeart = (productId) => {
+ setLikedProducts((prevState) => ({
+ ...prevState,
+ [productId]: !prevState[productId],
+ }));
+ };
const handleAddToCart = (product) => {
if (!quantities[product.id]) {
@@ -410,7 +419,26 @@ const filteredProducts = products.filter((product) =>
{filteredProducts.map((product) => (
-
+
+
+
+
toggleHeart(product.id)}
+ style={{
+ position: 'absolute',
+ top: '10px',
+ right: '10px',
+ cursor: 'pointer',
+ fontSize: '24px',
+ color: likedProducts[product.id] ? 'red' : 'gray',
+ }}
+ >
+
+
+
{product.name}
${product.price.toFixed(2)}
@@ -418,7 +446,7 @@ const filteredProducts = products.filter((product) =>
-
+
) : (
handleDecrement(product)}>-
diff --git a/src/Pages/login.js b/src/Pages/login.js
index 4ff9da4..d651251 100644
--- a/src/Pages/login.js
+++ b/src/Pages/login.js
@@ -1,189 +1,71 @@
-import React, { useState } from "react";
-import { useDispatch } from "react-redux";
-import { login } from "../Store/authSlice";
-import styled from "styled-components";
-import { motion } from "framer-motion";
-import { Link, useNavigate } from "react-router-dom";
-const LoginBackGround = styled.section`
- background-image: url('https://img.freepik.com/free-photo/hot-latte-art-coffee-cup-wood-table-coffee-shop_1150-8937.jpg');
- background-size: cover;
- background-position: center;
- height: 100vh;
-`;
-
-const LoginContainer = styled.div`
- display: flex;
- justify-content: center;
- align-items: center;
- height: 100vh;
- padding: 0 1rem;
- backdrop-filter: blur(8px);
- background: rgba(0, 0, 0, 0.6);
-`;
-
-const LoginForm = styled(motion.form)`
- background-color: rgba(255, 255, 255, 0.9);
- padding: 2.5rem;
- border-radius: 12px;
- box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);
- width: 350px;
- max-width: 90%;
- text-align: center;
- opacity: 1;
- transition: opacity 0.6s ease-in-out;
-`;
-
-const Heading = styled.h2`
- margin-bottom: 1.5rem;
- color: #7c2214;
- font-size: 1.8rem;
- font-weight: bold;
-`;
-
-const Input = styled.input`
- width: 100%;
- padding: 0.75rem;
- margin-bottom: 1.2rem;
- border: 1px solid #ddd;
- border-radius: 8px;
- font-size:1rem;
- transition: border-color 0.3s ease,box-shadow 0.3s ease;
-
- &:focus{
- border-color: #7c2214;
- box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;
- outline:none;
- }
-
- &:hover {
- border-color: #aaa;
- }
-
- &::placeholder{
- color:#999;
- }
-`;
-
-const Button = styled(motion.button)`
- width: 100%;
- padding: 0.75rem;
- background-color: #7c2214;
- color: white;
- border: none;
- border-radius: 8px;
- cursor: pointer;
- font-size: 1rem;
- font-weight: bold;
- transition: background 0.3s ease, transform 0.2s ease;
-
- &:hover{
- background-color: #6c1a1a;
- color: white;
- text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.6);
- transform: translateY(-2px);
- }
-
- &:active{
- transform: translateY(0);
- }
-
-`;
-
-const RegisterLink = styled(Link)`
- display: block;
- margin-top: 1rem;
- text-align: center;
- color: #7c2214;
- text-decoration: none;
-`;
-
-const ForgetPasswordLink = styled(Link)`
- display: block;
- margin-top: 0.5rem;
- text-align: center;
- color: #7c2214;
- text-decoration: none;
-`;
-
-const ErrorMessage = styled.div`
- margin-top: 1rem;
- color: red;
- text-align: center;
-`;
-
-function Login() {
- const [username, setUsername] = useState("");
- const [email, setEmail] = useState("");
- const [password, setPassword] = useState("");
- const [error, setError] = useState("");
- const dispatch = useDispatch();
- const navigate = useNavigate();
-
- const handleSubmit = (e) => {
- e.preventDefault();
- const storedUser = JSON.parse(localStorage.getItem("user"));
- if (
- storedUser &&
- storedUser.username === username &&
- storedUser.email === email &&
- storedUser.password === password
- ) {
- dispatch(login({ username, email }));
- navigate("/"); // Redirect to home page
- } else {
- setError("Invalid credentials");
- }
- };
+import React from "react";
+function LoginPage() {
return (
-
-
-
- Login
- setUsername(e.target.value)}
- required
- />
- setEmail(e.target.value)}
- required
- />
- setPassword(e.target.value)}
- required
+
+
+ {/* Left Side: Image */}
+
+
-
- {error &&
{error}}
-
- Don't have an account? Register
-
-
- Forgot Password?
-
-
-
-
+
+ {/* Right Side: Login Form */}
+
+
+ Welcome Back!
+
+
+
+ Don’t have an account?{" "}
+
+ Sign Up
+
+
+
+
+
);
}
-export default Login;
+export default LoginPage;
diff --git a/src/Pages/milkshake.js b/src/Pages/milkshake.js
index cc9c099..2172398 100644
--- a/src/Pages/milkshake.js
+++ b/src/Pages/milkshake.js
@@ -3,6 +3,7 @@ import { useDispatch } from 'react-redux';
import { addToCart, removeFromCart } from '../Store/cartSlice';
import styled from 'styled-components';
import { motion } from 'framer-motion';
+import "@fortawesome/fontawesome-free/css/all.min.css";
const MilkshakeContainer = styled.div`
padding: 6rem 2rem 4rem 2rem; // Added top padding for navbar
@@ -171,10 +172,19 @@ const SearchButton = styled.button`
`;
+
function Milkshake() {
const dispatch = useDispatch();
const [quantities, setQuantities] = useState({});
const [searchQuery, setSearchQuery] = useState('');
+ const [likedProducts, setLikedProducts] = useState({});
+
+ const toggleHeart = (productId) => {
+ setLikedProducts((prevState) => ({
+ ...prevState,
+ [productId]: !prevState[productId],
+ }));
+ };
const handleAddToCart = (product) => {
if (!quantities[product.id]) {
@@ -334,7 +344,26 @@ const filteredProducts = products.filter((product) =>
{filteredProducts.map((product) => (
-
+
+
+
+
toggleHeart(product.id)}
+ style={{
+ position: 'absolute',
+ top: '10px',
+ right: '10px',
+ cursor: 'pointer',
+ fontSize: '24px',
+ color: likedProducts[product.id] ? 'red' : 'gray',
+ }}
+ >
+
+
+
{product.name}
${product.price.toFixed(2)}
@@ -342,7 +371,7 @@ const filteredProducts = products.filter((product) =>
-
+
) : (
handleDecrement(product)}>-
@@ -359,4 +388,5 @@ const filteredProducts = products.filter((product) =>
);
}
+
export default Milkshake;
diff --git a/src/Pages/soup.js b/src/Pages/soup.js
index 7dd3c36..23eaaa1 100644
--- a/src/Pages/soup.js
+++ b/src/Pages/soup.js
@@ -3,6 +3,7 @@ import { useDispatch } from 'react-redux';
import { addToCart, removeFromCart } from '../Store/cartSlice';
import styled from 'styled-components';
import { motion } from 'framer-motion';
+import "@fortawesome/fontawesome-free/css/all.min.css";
const SoupContainer = styled.div`
padding: 6rem 2rem 4rem 2rem; // Added top padding for navbar
@@ -174,6 +175,14 @@ function Soup() {
const dispatch = useDispatch();
const [quantities, setQuantities] = useState({});
const [searchQuery, setSearchQuery] = useState('');
+ const [likedProducts, setLikedProducts] = useState({});
+
+ const toggleHeart = (productId) => {
+ setLikedProducts((prevState) => ({
+ ...prevState,
+ [productId]: !prevState[productId],
+ }));
+ };
const handleAddToCart = (product) => {
if (!quantities[product.id]) {
@@ -296,7 +305,26 @@ const filteredProducts = products.filter((product) =>
{filteredProducts.map((product) => (
-
+
+
+
+
toggleHeart(product.id)}
+ style={{
+ position: 'absolute',
+ top: '10px',
+ right: '10px',
+ cursor: 'pointer',
+ fontSize: '24px',
+ color: likedProducts[product.id] ? 'red' : 'gray',
+ }}
+ >
+
+
+
{product.name}
${product.price.toFixed(2)}
@@ -304,7 +332,7 @@ const filteredProducts = products.filter((product) =>
-
+
) : (
handleDecrement(product)}>-
@@ -321,4 +349,5 @@ const filteredProducts = products.filter((product) =>
);
}
+
export default Soup;
diff --git a/src/componets/FooterImg.png b/src/componets/FooterImg.png
new file mode 100644
index 0000000..2f1e8f4
Binary files /dev/null and b/src/componets/FooterImg.png differ
diff --git a/src/componets/Navbar.js b/src/componets/Navbar.js
index 559fc87..7cf2a05 100644
--- a/src/componets/Navbar.js
+++ b/src/componets/Navbar.js
@@ -150,9 +150,7 @@ const NavLink = styled(motion.div)`
font-size: 1.1rem;
transition: all 0.3s ease;
font-family: "Poppins", sans-serif;
-
- padding: 20px;
-
+padding: 20px;
&:hover {
color: #ffe4b5;
@@ -443,7 +441,7 @@ function Navbar() {
);
}
-
+
if (items.title === "User") {
return (
diff --git a/src/componets/Navitems.js b/src/componets/Navitems.js
index d277fd8..7e1d14e 100644
--- a/src/componets/Navitems.js
+++ b/src/componets/Navitems.js
@@ -1,109 +1,111 @@
+
export const navItems = [
- {
- id: 1,
- title: "Home",
- path: "./",
- cName: "nav-item",
- },
- {
- id: 2,
- title: "About",
- path: "./About",
- cName: "nav-item",
- },
- {
- id: 3,
- title: "Product",
- path: "./product",
- cName: "nav-item",
- },
- {
- id: 4,
- title: "Contact",
- path: "./contact",
- cName: "nav-item",
- },
- {
- id: 5,
- title: "Stories",
- path: "./our-story",
- cName: "nav-item",
- },
- {
- id: 6,
- title: "User",
- path: "./user",
- cName: "nav-item",
- },
-
- ];
-
- export const productDropdown = [
- {
- id: 1,
- title: "Shop",
- path: "./shop",
- cName: "submenu-item",
- },
-
- {
- id: 2,
- title: "Premium Beans",
- path: "./premiumBeans",
- cName: "submenu-item",
- },
-
- {
- id: 3,
- title: "Expert Baristas",
- path: "./expertbaristas",
- cName: "submenu-item",
- },
- ];
-
- export const ourstoryDropdown = [
- {
- id: 1,
- title: "About",
- path: "./about",
- cName: "submenu-item",
- },
- {
- id: 2,
- title: "Testimonials",
- path: "./testimonial",
- cName: "submenu-item",
- },
- ];
-
- export const userLogoutDropdown = [
- {
- id: 1,
- title: "Login",
- path: "./login",
- cName: "submenu-item",
- },
- {
- id: 2,
- title: "Register",
- path: "./register",
- cName: "submenu-item",
- },
- ];
-
- export const userLoginDropdown = [
- {
- id: 1,
- title: "Cart",
- path: "./cart",
- cName: "submenu-item",
- },
-
- {
- id: 2,
- title: "Profile",
- path: "./profile",
- cName: "submenu-item",
- },
-
- ];
\ No newline at end of file
+ {
+ id: 1,
+ title: "Home",
+ path: "./",
+ cName: "nav-item",
+ },
+ {
+ id: 2,
+ title: "About",
+ path: "./About",
+ cName: "nav-item",
+ },
+ {
+ id: 3,
+ title: "Product",
+ path: "./product",
+ cName: "nav-item",
+ },
+ {
+ id: 4,
+ title: "Contact",
+ path: "./contact",
+ cName: "nav-item",
+ },
+ {
+ id: 5,
+ title: "Stories",
+ path: "./our-story",
+ cName: "nav-item",
+ },
+ {
+ id: 6,
+ title: "User",
+ path: "./user",
+ cName: "nav-item",
+ },
+
+];
+
+export const productDropdown = [
+ {
+ id: 1,
+ title: "Shop",
+ path: "./shop",
+ cName: "submenu-item",
+ },
+
+ {
+ id: 2,
+ title: "Premium Beans",
+ path: "./premiumBeans",
+ cName: "submenu-item",
+ },
+
+ {
+ id: 3,
+ title: "Expert Baristas",
+ path: "./expertbaristas",
+ cName: "submenu-item",
+ },
+];
+
+export const ourstoryDropdown = [
+ {
+ id: 1,
+ title: "About",
+ path: "./about",
+ cName: "submenu-item",
+ },
+ {
+ id: 2,
+ title: "Testimonials",
+ path: "./testimonial",
+ cName: "submenu-item",
+ },
+];
+
+export const userLogoutDropdown = [
+ {
+ id: 1,
+ title: "Login",
+ path: "./login",
+ cName: "submenu-item",
+ },
+ {
+ id: 2,
+ title: "Register",
+ path: "./register",
+ cName: "submenu-item",
+ },
+];
+
+export const userLoginDropdown = [
+ {
+ id: 1,
+ title: "Cart",
+ path: "./cart",
+ cName: "submenu-item",
+ },
+
+ {
+ id: 2,
+ title: "Profile",
+ path: "./profile",
+ cName: "submenu-item",
+ },
+
+];
+
diff --git a/src/componets/faq.js b/src/componets/faq.js
index 1a0eae0..38dc287 100644
--- a/src/componets/faq.js
+++ b/src/componets/faq.js
@@ -1,6 +1,7 @@
-import React from 'react';
-import styled from 'styled-components';
-import { motion } from 'framer-motion';
+import React, { useState } from "react";
+import styled from "styled-components";
+import { motion } from "framer-motion";
+import { FaChevronDown, FaChevronUp } from "react-icons/fa"; // Importing arrows from react-icons
const FAQContainer = styled.div`
padding: 6rem 2rem 4rem 2rem;
@@ -15,7 +16,7 @@ const FAQHeading = styled(motion.h1)`
margin-bottom: 2rem;
text-align: center;
color: #78350f;
- font-family: 'Playfair Display', serif;
+ font-family: "Playfair Display", serif;
display: flex;
flex-wrap: wrap;
flex-direction: column;
@@ -54,7 +55,7 @@ const FAQItem = styled(motion.div)`
&:hover {
transform: translateY(-10px);
box-shadow: 0 15px 40px rgba(0, 0, 0, 0.2);
- background-color:rgb(241, 224, 198)/* Coffee color */
+ background-color: rgb(241, 224, 198); /* Coffee color */
}
`;
@@ -62,22 +63,44 @@ const Question = styled(motion.h3)`
font-size: 1.5rem;
margin-bottom: 1rem;
color: #78350f;
- font-family: 'Playfair Display', serif;
+ font-family: "Playfair Display", serif;
cursor: pointer;
font-weight: 550;
+ display: flex;
+ align-items: center; /* Aligns text and arrow horizontally */
+ justify-content: space-between; /* Distributes space between question text and arrow */
+ width: 100%; /* Ensure the question occupies full width */
`;
const Answer = styled(motion.p)`
font-size: 1.1rem;
color: #6b4423;
line-height: 1.6;
- font-family: 'Poppins', sans-serif;
+ font-family: "Poppins", sans-serif;
max-height: 0;
overflow: hidden;
transition: max-height 0.4s ease-out;
`;
+const ArrowIcon = styled.div`
+ font-size: 2rem; /* Ensures arrow is large enough */
+ transition: transform 1s ease;
+ transform: ${({ isOpen }) => (isOpen ? "rotate(180deg)" : "rotate(180deg)")};
+ margin-left: 1rem;
+ display: inline-block;
+ vertical-align: middle;
+`;
+
function FAQ() {
+ const [isOpen, setIsOpen] = useState({}); // state to track which FAQ is open
+
+ const toggleAnswer = (index) => {
+ setIsOpen((prevState) => ({
+ ...prevState,
+ [index]: !prevState[index],
+ }));
+ };
+
return (
- {
- const answer = document.getElementById('answer1');
- if (answer.style.maxHeight) {
- answer.style.maxHeight = null;
- } else {
- answer.style.maxHeight = answer.scrollHeight + 'px';
- }
- }}
- >
-
- How do I place an order?
-
-
- To place an order, browse our collection and click the 'Add to Cart' button. When you're ready, proceed to checkout.
-
-
- {
- const answer = document.getElementById('answer2');
- if (answer.style.maxHeight) {
- answer.style.maxHeight = null;
- } else {
- answer.style.maxHeight = answer.scrollHeight + 'px';
- }
- }}
- >
-
- Can I modify my order after placing it?
-
-
- Unfortunately, once an order is placed, it cannot be modified. However, you can cancel it and place a new one if needed.
-
-
- {
- const answer = document.getElementById('answer3');
- if (answer.style.maxHeight) {
- answer.style.maxHeight = null;
- } else {
- answer.style.maxHeight = answer.scrollHeight + 'px';
- }
- }}
- >
- (
+ toggleAnswer(index)}
>
- What payment methods do you accept?
-
-
- We accept various payment methods including credit cards, PayPal, and bank transfers.
-
-
- {
- const answer = document.getElementById('answer4');
- if (answer.style.maxHeight) {
- answer.style.maxHeight = null;
- } else {
- answer.style.maxHeight = answer.scrollHeight + 'px';
- }
- }}
- >
-
- How can I track my order?
-
-
- After your order is shipped, you will receive a tracking number via email to monitor your shipment.
-
-
+
+ {index === 1 && "How do I place an order?"}
+ {index === 2 && "Can I modify my order after placing it?"}
+ {index === 3 && "What payment methods do you accept?"}
+ {index === 4 && "How can I track my order?"}
+
+ {isOpen[index] ? : }
+
+
+
+ {index === 1 &&
+ 'To place an order, browse our collection and click the "Add to Cart" button. When you\'re ready, proceed to checkout.'}
+ {index === 2 &&
+ "Unfortunately, once an order is placed, it cannot be modified. However, you can cancel it and place a new one if needed."}
+ {index === 3 &&
+ "We accept various payment methods including credit cards, PayPal, and bank transfers."}
+ {index === 4 &&
+ "After your order is shipped, you will receive a tracking number via email to monitor your shipment."}
+
+
+ ))}
);
}
-export default FAQ;
\ No newline at end of file
+export default FAQ;
diff --git a/src/componets/footer.js b/src/componets/footer.js
index d7db706..0142a65 100644
--- a/src/componets/footer.js
+++ b/src/componets/footer.js
@@ -1,13 +1,16 @@
-import React from 'react';
-import styled from 'styled-components';
-import { motion } from 'framer-motion';
-import { Link } from 'react-router-dom';
+import React from "react";
+import styled from "styled-components";
+import { motion } from "framer-motion";
+import { Link } from "react-router-dom";
+import FooterImg from './FooterImg.png';
-// Styled components for the footer (unchanged)
+// Styled components for the footer
const FooterContainer = styled.footer`
- background-color: #78350f;
- color: #fffbeb;
- padding: 2rem 3rem 2rem;
+ background: linear-gradient(90deg, rgba(148, 93, 56, 1), rgba(56, 39, 16, 1));
+-webkit-background: linear-gradient(90deg, rgba(148, 93, 56, 1), rgba(56, 39, 16, 1));
+-moz-background: linear-gradient(90deg, rgba(148, 93, 56, 1), rgba(56, 39, 16, 1));
+ color: #fffbeb;
+ padding: 1.5rem 2rem;
text-align: center;
position: relative;
bottom: 0;
@@ -20,7 +23,7 @@ const FooterContent = styled.div`
margin: 0 auto;
p {
- margin: 0.5rem 0;
+ margin: 0.2rem 0;
font-size: 1rem;
line-height: 1.5rem;
@@ -37,10 +40,19 @@ const FooterContent = styled.div`
const InfoSection = styled.div`
display: flex;
- justify-content: space-between;
- margin-top: 1.3rem;
- margin-bottom: 1.3rem;
-
+ justify-content:space-between;
+ align-items:center;
+ margin: 2rem 0;
+ text-align: left;
+ .infoimg
+ {
+ height:20rem;
+ padding-right:1rem;
+ }
+ .info-wrapper
+ {
+ display:flex;
+ }
@media (max-width: 768px) {
flex-direction: column;
gap: 1.5rem;
@@ -54,39 +66,30 @@ const InfoColumn = styled.div`
h3 {
font-size: 1.2rem;
margin-bottom: 1rem;
+ color: #ffd6a5;
}
p,
a {
font-size: 0.9rem;
- color: rgb(255, 255, 255);
+ color: #fffbeb;
text-decoration: none;
- display: block;
margin-bottom: 0.5rem;
+ display: block;
}
a:hover {
- color: #fbbf24;
- }
-
- @media (max-width: 768px) {
- h3 {
- font-size: 1.2rem;
- margin-bottom: 0rem;
- }
-
- p {
- font-size: 1rem;
- margin: 0rem;
- }
+ color: #fbbf24;
+
+ text-decoration: underline;
}
-`;
+`
const SocialIcons = styled.div`
display: flex;
justify-content: center;
gap: 1rem;
- margin-top: 1rem;
+ margin-top: 1.5rem;
@media (max-width: 768px) {
gap: 1.2rem;
@@ -95,15 +98,36 @@ const SocialIcons = styled.div`
const SocialIcon = styled(motion.a)`
color: #fffbeb;
- font-size: 1.5rem;
+ font-size: 1.8rem;
text-decoration: none;
padding: 0.5rem;
border-radius: 50%;
- transition: color 0.3s ease;
+
+ transition: color 0.3s ease, transform 0.3s ease;
&:hover {
- color: #fbbf24;
transform: scale(1.2);
+ transition: all 0.3s ease;
+
+ &:hover {
+ color: #fbbf24;
+
+ }
+
+ &[href*="facebook.com"]:hover {
+ color: #3b5998; /* Facebook Blue */
+ }
+
+ &[href*="twitter.com"]:hover {
+ color: #1da1f2; /* Twitter Blue */
+ }
+
+ &[href*="instagram.com"]:hover {
+ color: #e4405f; /* Instagram Pink */
+ }
+
+ &[href*="linkedin.com"]:hover {
+ color: #0077b5; /* LinkedIn Blue */
}
@media (max-width: 768px) {
@@ -111,6 +135,17 @@ const SocialIcon = styled(motion.a)`
}
`;
+
+
+const Divider = styled.hr`
+ border: none;
+ height: 2px;
+ background: #ffd6a5;
+ margin: 2rem auto;
+ width: 60%;
+`;
+
+
function Footer() {
return (
@@ -123,19 +158,22 @@ function Footer() {
rel="noopener noreferrer"
whileHover={{ scale: 1.2 }}
aria-label="Facebook"
- role="link"
>
-
+ {/* Facebook icon */}
- {/* Updated Twitter icon */}
+
+ {/* Updated Twitter icon */}
+
+ {/* LinkedIn icon */}
+
-
+ {/* Instagram icon */}
- {/* LinkedIn icon */}
+ {/* GitHub icon */}
+ {/* Divider */}
+
+
{/* Informational Sections */}
-
+
+
+
About Us
- Founded in 2010, MsCafe is dedicated to serving the finest coffee with passion and
- expertise. We source our beans from sustainable farms across the globe.
+ Founded in 2010, MsCafe is dedicated to serving the finest coffee
+ with passion and expertise. We source our beans from sustainable
+ farms across the globe.
@@ -177,26 +220,31 @@ function Footer() {
Testimonial
Contributors
-
Contact Us
Email: contact@mscafe.com
Phone: (123) 456-7890
-
Location
123 Coffee St, Bean Town, USA
-
+
View on Map
+
+
+ {/* Footer Text */}
© {new Date().getFullYear()} MsCafe. All rights reserved.
- Made with ♥ by Mscoder
+ Made with ♥ by MsCoder
);