categoried new secton updated
BIN
public/images/home/Categories/appetizers.webp
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
public/images/home/Categories/dessert.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/home/Categories/doner.webp
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
public/images/home/Categories/drinks.webp
Normal file
|
After Width: | Height: | Size: 8.7 KiB |
BIN
public/images/home/Categories/kebabs.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/home/Categories/pides.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/home/Categories/platter.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/home/Categories/salads.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/home/Categories/sides.webp
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
public/images/home/Categories/speciality.webp
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/images/home/Categories/wraps.webp
Normal file
|
After Width: | Height: | Size: 11 KiB |
@ -1,6 +1,7 @@
|
||||
import Hero from "@/components/Hero/Hero";
|
||||
import PopularDishes from "@/components/PopularDishes/PopularDishes";
|
||||
import About from "@/components/About/About";
|
||||
import Categories from "@/components/Categories/Categories";
|
||||
import Menu from "@/components/Menu/Menu";
|
||||
import Gallery from "@/components/Gallery/Gallery";
|
||||
import Testimonials from "@/components/Testimonials/Testimonials";
|
||||
@ -21,6 +22,7 @@ export default function Home() {
|
||||
<Hero />
|
||||
<PopularDishes />
|
||||
<About />
|
||||
<Categories/>
|
||||
<Menu />
|
||||
<Gallery />
|
||||
<Testimonials />
|
||||
|
||||
195
src/components/Categories/Categories.module.css
Normal file
@ -0,0 +1,195 @@
|
||||
.categoriesSection {
|
||||
text-align: center;
|
||||
background-color: #000000;
|
||||
background-image: url(/images/about-us/guest-bg.webp);
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
padding: 80px 10px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.sectionHeading {
|
||||
padding: 0px 20px 40px;
|
||||
max-width: 900px;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.smallHeading {
|
||||
font-size: var(--small-text-size);
|
||||
color: var(--color-paragraph);
|
||||
font-family: var(--font-lato);
|
||||
font-weight: 600;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.mainHeading {
|
||||
font-family: var(--font-playfair);
|
||||
font-size: var(--main-heading-size);
|
||||
color: #f5e6d3;
|
||||
line-height: 1.3;
|
||||
font-weight: 700;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.description {
|
||||
font-size: var(--body-size);
|
||||
color: var(--color-paragraph);
|
||||
line-height: 1.8;
|
||||
font-family: var(--font-lato);
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.categoriesGrid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||
gap: 3rem;
|
||||
padding: 0 2rem;
|
||||
max-width: 1400px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.categoryCard {
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
transition: all 0.4s ease;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.categoryCard:hover {
|
||||
transform: translateY(-10px);
|
||||
}
|
||||
|
||||
.imageContainer {
|
||||
position: relative;
|
||||
width: 180px;
|
||||
height: 180px;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
margin-bottom: 1.5rem;
|
||||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
|
||||
transition: all 0.4s ease;
|
||||
}
|
||||
|
||||
.categoryCard:hover .imageContainer {
|
||||
box-shadow: 0 15px 50px rgba(196, 156, 92, 0.6);
|
||||
}
|
||||
|
||||
.imageWrapper {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.categoryImage {
|
||||
object-fit: cover;
|
||||
transition: transform 0.6s ease;
|
||||
}
|
||||
|
||||
.categoryCard:hover .categoryImage {
|
||||
transform: scale(1.15);
|
||||
}
|
||||
|
||||
.overlay {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.categoryContent {
|
||||
width: 100%;
|
||||
transition: transform 0.4s ease;
|
||||
}
|
||||
|
||||
.categoryCard:hover .categoryContent {
|
||||
transform: translateY(-5px);
|
||||
}
|
||||
|
||||
.categoryName {
|
||||
font-family: var(--font-playfair);
|
||||
font-size: 1.4rem;
|
||||
color: #f5e6d3;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
margin: 0 0 1rem 0;
|
||||
letter-spacing: 1px;
|
||||
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
.decorativeLine {
|
||||
width: 60px;
|
||||
height: 3px;
|
||||
background: linear-gradient(90deg, #c49c5c 0%, transparent 100%);
|
||||
margin: 0 auto;
|
||||
transition: width 0.4s ease;
|
||||
}
|
||||
|
||||
.categoryCard:hover .decorativeLine {
|
||||
width: 100px;
|
||||
background: linear-gradient(90deg, #c49c5c 0%, #b07c4b 100%);
|
||||
}
|
||||
|
||||
/* Responsive Design */
|
||||
@media (max-width: 1200px) {
|
||||
.categoriesGrid {
|
||||
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
||||
gap: 2.5rem;
|
||||
}
|
||||
|
||||
.imageContainer {
|
||||
width: 160px;
|
||||
height: 160px;
|
||||
}
|
||||
|
||||
.categoryName {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.categoriesSection {
|
||||
padding: 60px 10px;
|
||||
}
|
||||
|
||||
.categoriesGrid {
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 20px;
|
||||
padding: 0 1rem;
|
||||
}
|
||||
|
||||
.imageContainer {
|
||||
width: 140px;
|
||||
height: 140px;
|
||||
}
|
||||
|
||||
.categoryName {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.categoriesSection {
|
||||
padding: 50px 10px;
|
||||
}
|
||||
|
||||
.categoriesGrid {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 1.5rem;
|
||||
}
|
||||
|
||||
.imageContainer {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
}
|
||||
|
||||
.categoryName {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
.sectionHeading {
|
||||
padding: 0px 15px 30px;
|
||||
}
|
||||
}
|
||||
111
src/components/Categories/Categories.tsx
Normal file
@ -0,0 +1,111 @@
|
||||
'use client';
|
||||
|
||||
import Image from "next/image";
|
||||
import { motion } from "framer-motion";
|
||||
import styles from "@/components/Categories/Categories.module.css";
|
||||
import { menuData } from "@/utils/constant";
|
||||
|
||||
export default function Categories() {
|
||||
// Map categories with representative food images
|
||||
const categoryImages: { [key: string]: string } = {
|
||||
'Kebabs': '/images/home/categories/kebabs.webp',
|
||||
'Doner': '/images/home/categories/doner.webp',
|
||||
'Pides': '/images/home/categories/pides.webp',
|
||||
'Sandwiches & Wraps': '/images/home/categories/wraps.webp',
|
||||
'Special Mix Platters': '/images/home/categories/platter.webp',
|
||||
'Specialty Dishes': '/images/home/categories/speciality.webp',
|
||||
'Appetizers': '/images/home/categories/appetizers.webp',
|
||||
'Sides': '/images/home/categories/sides.webp',
|
||||
'Salads': '/images/home/categories/salads.webp',
|
||||
'Drinks': '/images/home/categories/drinks.webp',
|
||||
'Desserts': '/images/home/categories/dessert.webp'
|
||||
};
|
||||
|
||||
// Extract unique categories from menuData with custom images
|
||||
const categories = menuData.map(section => ({
|
||||
name: section.category,
|
||||
image: categoryImages[section.category] || section.image
|
||||
}));
|
||||
|
||||
// Animation variants
|
||||
const containerVariants = {
|
||||
hidden: { opacity: 0 },
|
||||
visible: {
|
||||
opacity: 1,
|
||||
transition: {
|
||||
staggerChildren: 0.15,
|
||||
delayChildren: 0.2
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const cardVariants = {
|
||||
hidden: { opacity: 0, y: 50, scale: 0.9 },
|
||||
visible: {
|
||||
opacity: 1,
|
||||
y: 0,
|
||||
scale: 1,
|
||||
transition: {
|
||||
duration: 0.6,
|
||||
ease: "easeOut" as const
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<section className={styles.categoriesSection}>
|
||||
{/* Heading Section */}
|
||||
<section className={styles.sectionHeading}>
|
||||
<div
|
||||
className={styles.smallHeading}
|
||||
style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', gap: '10px' }}
|
||||
>
|
||||
<Image src="/images/dinner.png" alt="Categories Decorative Dinner Icon" width={24} height={24} />
|
||||
<span>DISCOVER</span>
|
||||
<Image src="/images/eat.png" alt="Categories Decorative Cutlery Icon" width={24} height={24} />
|
||||
</div>
|
||||
<h2 className={styles.mainHeading}>Our Menu Categories</h2>
|
||||
<p className={styles.description}>
|
||||
Explore our authentic Turkish culinary offerings, featuring everything from charcoal-grilled kebabs and flavorful mezzes to hearty mains and handcrafted desserts. Each category celebrates the rich traditions and vibrant tastes of Anatolia.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
{/* Categories Grid */}
|
||||
<motion.div
|
||||
className={styles.categoriesGrid}
|
||||
initial="hidden"
|
||||
whileInView="visible"
|
||||
viewport={{ once: true, amount: 0.2 }}
|
||||
variants={containerVariants}
|
||||
>
|
||||
{categories.map((category, index) => (
|
||||
<motion.div
|
||||
key={index}
|
||||
className={styles.categoryCard}
|
||||
variants={cardVariants}
|
||||
whileHover={{
|
||||
y: -10,
|
||||
transition: { duration: 0.3 }
|
||||
}}
|
||||
>
|
||||
<div className={styles.imageContainer}>
|
||||
<div className={styles.imageWrapper}>
|
||||
<Image
|
||||
src={category.image}
|
||||
alt={`${category.name} Category`}
|
||||
fill
|
||||
className={styles.categoryImage}
|
||||
/>
|
||||
</div>
|
||||
<div className={styles.overlay}></div>
|
||||
</div>
|
||||
<div className={styles.categoryContent}>
|
||||
<h3 className={styles.categoryName}>{category.name}</h3>
|
||||
<div className={styles.decorativeLine}></div>
|
||||
</div>
|
||||
</motion.div>
|
||||
))}
|
||||
</motion.div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||