Merge version_1 into main #1
475
src/app/page.tsx
475
src/app/page.tsx
@@ -17,354 +17,155 @@ import { Award, Facebook, Instagram, Twitter, Utensils } from "lucide-react";
|
||||
export default function LandingPage() {
|
||||
return (
|
||||
<ThemeProvider
|
||||
defaultButtonVariant="text-shift"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="pill"
|
||||
defaultButtonVariant="text-shift"
|
||||
defaultTextAnimation="entrance-slide"
|
||||
borderRadius="pill"
|
||||
contentWidth="medium"
|
||||
sizing="medium"
|
||||
background="circleGradient"
|
||||
cardStyle="glass-elevated"
|
||||
primaryButtonStyle="gradient"
|
||||
secondaryButtonStyle="glass"
|
||||
headingFontWeight="normal"
|
||||
>
|
||||
<ReactLenis root>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleApple
|
||||
navItems={[
|
||||
{
|
||||
name: "About",
|
||||
id: "about",
|
||||
},
|
||||
{
|
||||
name: "Menu",
|
||||
id: "menu",
|
||||
},
|
||||
{
|
||||
name: "Testimonials",
|
||||
id: "testimonials",
|
||||
},
|
||||
{
|
||||
name: "Contact",
|
||||
id: "contact",
|
||||
},
|
||||
]}
|
||||
brandName="Ziyafat"
|
||||
/>
|
||||
</div>
|
||||
<div id="nav" data-section="nav">
|
||||
<NavbarStyleApple
|
||||
brandName="Ziyafat"
|
||||
navItems={[
|
||||
{ name: "About", id: "about" },
|
||||
{ name: "Menu", id: "menu" },
|
||||
{ name: "Testimonials", id: "testimonials" },
|
||||
{ name: "Contact", id: "contact" },
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="hero" data-section="hero">
|
||||
<HeroBillboardGallery
|
||||
background={{
|
||||
variant: "radial-gradient",
|
||||
}}
|
||||
title="Experience the Art of Ziyafat"
|
||||
description="Where tradition meets modern culinary elegance. Join us for an unforgettable dining experience in the heart of the city."
|
||||
buttons={[
|
||||
{
|
||||
text: "View Menu",
|
||||
href: "#menu",
|
||||
},
|
||||
]}
|
||||
mediaItems={[
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-fish-meal-inside-white-plate-along-with-red-wine-table-food-meal-restaurant_140725-28131.jpg",
|
||||
imageAlt: "Restaurant ambiance",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/front-view-man-holds-plate-with-vegetable-salad-with-red-fish-with-greens_141793-4670.jpg",
|
||||
imageAlt: "Chef plating meal",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-people-sitting-restaurant_23-2149930183.jpg",
|
||||
imageAlt: "Traditional dining area",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-fried-meat-dish-with-glass-wine-table-meat-meal-food_140725-28163.jpg",
|
||||
imageAlt: "Interior setting",
|
||||
},
|
||||
{
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/close-up-chicken-side-dish-with-cucumber-lettuce-bell-pepper-soy-sauce_141793-441.jpg",
|
||||
imageAlt: "Preparation art",
|
||||
},
|
||||
]}
|
||||
mediaAnimation="blur-reveal"
|
||||
/>
|
||||
</div>
|
||||
<div id="hero" data-section="hero">
|
||||
<HeroBillboardGallery
|
||||
background={{ variant: "radial-gradient" }}
|
||||
title="Experience the Art of Ziyafat"
|
||||
description="Where tradition meets modern culinary elegance. Join us for an unforgettable dining experience in the heart of the city."
|
||||
buttons={[{ text: "View Menu", href: "#menu" }]}
|
||||
mediaItems={[
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/top-view-fish-meal-inside-white-plate-along-with-red-wine-table-food-meal-restaurant_140725-28131.jpg", imageAlt: "Restaurant ambiance" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/front-view-man-holds-plate-with-vegetable-salad-with-red-fish-with-greens_141793-4670.jpg", imageAlt: "Chef plating meal" },
|
||||
{ imageSrc: "http://img.b2bpic.net/free-photo/side-view-people-sitting-restaurant_23-2149930183.jpg", imageAlt: "Traditional dining area" }
|
||||
]}
|
||||
mediaAnimation="blur-reveal"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="about" data-section="about">
|
||||
<AboutMetric
|
||||
useInvertedBackground={true}
|
||||
title="Our Culinary Legacy"
|
||||
metrics={[
|
||||
{
|
||||
icon: Award,
|
||||
label: "Years of Tradition",
|
||||
value: "25+",
|
||||
},
|
||||
{
|
||||
icon: Award,
|
||||
label: "Culinary Awards",
|
||||
value: "12",
|
||||
},
|
||||
{
|
||||
icon: Utensils,
|
||||
label: "Unique Recipes",
|
||||
value: "150+",
|
||||
},
|
||||
]}
|
||||
metricsAnimation="slide-up"
|
||||
/>
|
||||
</div>
|
||||
<div id="about" data-section="about">
|
||||
<AboutMetric
|
||||
useInvertedBackground={true}
|
||||
title="Our Culinary Legacy"
|
||||
metrics={[
|
||||
{ icon: Award, label: "Years of Tradition", value: "25+" },
|
||||
{ icon: Award, label: "Culinary Awards", value: "12" },
|
||||
{ icon: Utensils, label: "Unique Recipes", value: "150+" },
|
||||
]}
|
||||
metricsAnimation="slide-up"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="highlights" data-section="highlights">
|
||||
<FeatureCardTwentyThree
|
||||
animationType="slide-up"
|
||||
textboxLayout="split"
|
||||
useInvertedBackground={false}
|
||||
features={[
|
||||
{
|
||||
id: "f1",
|
||||
title: "Farm-to-Table Ingredients",
|
||||
tags: [
|
||||
"Fresh",
|
||||
"Organic",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/colorful-bowl-fresh-seafood-vegetable-ingredients_84443-85743.jpg",
|
||||
},
|
||||
{
|
||||
id: "f2",
|
||||
title: "Artisanal Cocktails",
|
||||
tags: [
|
||||
"Unique",
|
||||
"Craft",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/side-view-mix-detox-water-with-lemon-apples-mint-cucumber-decanters_141793-13016.jpg",
|
||||
},
|
||||
{
|
||||
id: "f3",
|
||||
title: "Private Fine Dining",
|
||||
tags: [
|
||||
"Exclusive",
|
||||
"Quiet",
|
||||
],
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/young-man-embracing-with-happy-woman-restaurant_23-2148016847.jpg",
|
||||
},
|
||||
]}
|
||||
title="Why Ziyafat Stands Out"
|
||||
description="We blend heritage spices with modern techniques to bring you flavors you won't find anywhere else."
|
||||
/>
|
||||
</div>
|
||||
<div id="highlights" data-section="highlights">
|
||||
<FeatureCardTwentyThree
|
||||
animationType="slide-up"
|
||||
textboxLayout="split"
|
||||
useInvertedBackground={false}
|
||||
features={[
|
||||
{ id: "f1", title: "Farm-to-Table Ingredients", tags: ["Fresh", "Organic"], imageSrc: "http://img.b2bpic.net/free-photo/colorful-bowl-fresh-seafood-vegetable-ingredients_84443-85743.jpg" },
|
||||
{ id: "f2", title: "Artisanal Cocktails", tags: ["Unique", "Craft"], imageSrc: "http://img.b2bpic.net/free-photo/side-view-mix-detox-water-with-lemon-apples-mint-cucumber-decanters_141793-13016.jpg" },
|
||||
{ id: "f3", title: "Private Fine Dining", tags: ["Exclusive", "Quiet"], imageSrc: "http://img.b2bpic.net/free-photo/young-man-embracing-with-happy-woman-restaurant_23-2148016847.jpg" }
|
||||
]}
|
||||
title="Why Ziyafat Stands Out"
|
||||
description="We blend heritage spices with modern techniques to bring you flavors you won't find anywhere else."
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="menu" data-section="menu">
|
||||
<ProductCardTwo
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
gridVariant="four-items-2x2-equal-grid"
|
||||
useInvertedBackground={true}
|
||||
products={[
|
||||
{
|
||||
id: "p1",
|
||||
brand: "Appetizer",
|
||||
name: "Stuffed Vine Leaves",
|
||||
price: "$12",
|
||||
rating: 5,
|
||||
reviewCount: "45",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/wooden-board-with-various-cured-meats-olives-bread-rosemary_9975-124484.jpg",
|
||||
},
|
||||
{
|
||||
id: "p2",
|
||||
brand: "Main",
|
||||
name: "Grilled Saffron Chicken",
|
||||
price: "$28",
|
||||
rating: 5,
|
||||
reviewCount: "89",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/piece-roasted-meat-served-with-breaded-squid-ring_651396-1441.jpg",
|
||||
},
|
||||
{
|
||||
id: "p3",
|
||||
brand: "Dessert",
|
||||
name: "Pistachio Baklava",
|
||||
price: "$10",
|
||||
rating: 4,
|
||||
reviewCount: "32",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/homemade-delicious-chocolate-mousse-panna-cotta-with-berries-white-stone-wooden-background-festive-dessert_127032-2668.jpg",
|
||||
},
|
||||
{
|
||||
id: "p4",
|
||||
brand: "Starter",
|
||||
name: "Classic Lentil Soup",
|
||||
price: "$9",
|
||||
rating: 5,
|
||||
reviewCount: "55",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/chicken-with-vegetables-plate-cafe_169016-39450.jpg",
|
||||
},
|
||||
{
|
||||
id: "p5",
|
||||
brand: "Seafood",
|
||||
name: "Spiced Baked Sea Bass",
|
||||
price: "$32",
|
||||
rating: 5,
|
||||
reviewCount: "67",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/vegetarian-vietnamese-spring-rolls-with-spicy-shrimps-prawns-carrot-cucumber-red-cabbage-rice-noodle_2829-18343.jpg",
|
||||
},
|
||||
{
|
||||
id: "p6",
|
||||
brand: "Veggie",
|
||||
name: "Roasted Vegetable Tajine",
|
||||
price: "$22",
|
||||
rating: 4,
|
||||
reviewCount: "41",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/top-view-fresh-chicken-salad-with-seasonings-white-desk-snack-meat-fresh-salad-meal_140725-117940.jpg",
|
||||
},
|
||||
]}
|
||||
title="Signature Menu"
|
||||
description="Discover a selection of our most loved traditional and contemporary dishes."
|
||||
/>
|
||||
</div>
|
||||
<div id="menu" data-section="menu">
|
||||
<ProductCardTwo
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
gridVariant="four-items-2x2-equal-grid"
|
||||
useInvertedBackground={true}
|
||||
products={[
|
||||
{ id: "p1", brand: "Appetizer", name: "Stuffed Vine Leaves", price: "$12", rating: 5, reviewCount: "45", imageSrc: "http://img.b2bpic.net/free-photo/wooden-board-with-various-cured-meats-olives-bread-rosemary_9975-124484.jpg" },
|
||||
{ id: "p2", brand: "Main", name: "Grilled Saffron Chicken", price: "$28", rating: 5, reviewCount: "89", imageSrc: "http://img.b2bpic.net/free-photo/piece-roasted-meat-served-with-breaded-squid-ring_651396-1441.jpg" },
|
||||
{ id: "p3", brand: "Dessert", name: "Pistachio Baklava", price: "$10", rating: 4, reviewCount: "32", imageSrc: "http://img.b2bpic.net/free-photo/homemade-delicious-chocolate-mousse-panna-cotta-with-berries-white-stone-wooden-background-festive-dessert_127032-2668.jpg" }
|
||||
]}
|
||||
title="Signature Menu"
|
||||
description="Discover a selection of our most loved traditional and contemporary dishes."
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="team" data-section="team">
|
||||
<TeamCardTen
|
||||
useInvertedBackground={false}
|
||||
title="Meet Our Artisans"
|
||||
tag="Kitchen Leadership"
|
||||
members={[
|
||||
{
|
||||
id: "m1",
|
||||
name: "Chef Ahmed",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiling-woman-gardening-clothes_23-2148396849.jpg",
|
||||
},
|
||||
{
|
||||
id: "m2",
|
||||
name: "Sarah Jenkins",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/woman-standing-with-arms-crossed-kitchen_107420-12356.jpg",
|
||||
},
|
||||
{
|
||||
id: "m3",
|
||||
name: "Chef Elena",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/portrait-chefs-team-acting-funny-with-knives-restaurant-kitchen-making-joke-about-professional-cuisine-service-cheerful-man-woman-working-gourmet-meal-dish-with-culinary-recipe_482257-43535.jpg",
|
||||
},
|
||||
]}
|
||||
memberVariant="card"
|
||||
membersAnimation="slide-up"
|
||||
/>
|
||||
</div>
|
||||
<div id="team" data-section="team">
|
||||
<TeamCardTen
|
||||
useInvertedBackground={false}
|
||||
title="Meet Our Artisans"
|
||||
tag="Kitchen Leadership"
|
||||
members={[
|
||||
{ id: "m1", name: "Chef Ahmed", imageSrc: "http://img.b2bpic.net/free-photo/portrait-smiling-woman-gardening-clothes_23-2148396849.jpg" },
|
||||
{ id: "m2", name: "Sarah Jenkins", imageSrc: "http://img.b2bpic.net/free-photo/woman-standing-with-arms-crossed-kitchen_107420-12356.jpg" },
|
||||
{ id: "m3", name: "Chef Elena", imageSrc: "http://img.b2bpic.net/free-photo/portrait-chefs-team-acting-funny-with-knives-restaurant-kitchen-making-joke-about-professional-cuisine-service-cheerful-man-woman-working-gourmet-meal-dish-with-culinary-recipe_482257-43535.jpg" }
|
||||
]}
|
||||
memberVariant="card"
|
||||
membersAnimation="slide-up"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<TestimonialCardFive
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={true}
|
||||
testimonials={[
|
||||
{
|
||||
id: "t1",
|
||||
name: "Marcus R.",
|
||||
date: "Oct 2024",
|
||||
title: "Foodie",
|
||||
quote: "An absolute gem! The flavors are authentic and the service was flawless.",
|
||||
avatarSrc: "http://img.b2bpic.net/free-photo/people-technology-leisure-concept_273609-6599.jpg",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/group-young-friends-having-wine-together_23-2148454148.jpg",
|
||||
},
|
||||
{
|
||||
id: "t2",
|
||||
name: "Sophie L.",
|
||||
date: "Sep 2024",
|
||||
title: "Regular",
|
||||
quote: "My favorite spot for special occasions. Highly recommend the saffron chicken.",
|
||||
avatarSrc: "http://img.b2bpic.net/free-photo/portrait-young-female-dentist-dentistry-concept-dental-treatment_169016-67131.jpg",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-couple-having-lunch-luxury-restaurant_23-2150598351.jpg",
|
||||
},
|
||||
{
|
||||
id: "t3",
|
||||
name: "James T.",
|
||||
date: "Aug 2024",
|
||||
title: "Business",
|
||||
quote: "Great atmosphere for meetings and equally good for a nice evening out.",
|
||||
avatarSrc: "http://img.b2bpic.net/free-photo/smiling-young-blonde-superhero-woman-red-cape-wearing-glasses-with-closed-eyes-isolated-white-wall_141793-85636.jpg",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/pasta-with-stuffed-meat-sauce-strawberry-mojito_140725-9921.jpg",
|
||||
},
|
||||
{
|
||||
id: "t4",
|
||||
name: "Linda M.",
|
||||
date: "Aug 2024",
|
||||
title: "Local",
|
||||
quote: "Baklava is to die for. Service is always friendly and inviting.",
|
||||
avatarSrc: "http://img.b2bpic.net/free-photo/woman-smiling_1187-3196.jpg",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/two-senior-female-friends-luxurious-restaurant_23-2150517410.jpg",
|
||||
},
|
||||
{
|
||||
id: "t5",
|
||||
name: "Kevin D.",
|
||||
date: "Jul 2024",
|
||||
title: "Traveler",
|
||||
quote: "Best dining experience during my visit. Truly authentic flavors.",
|
||||
avatarSrc: "http://img.b2bpic.net/free-photo/excited-male-gardener-holding-wearing-gardening-hat-pumpkin_141793-71363.jpg",
|
||||
imageSrc: "http://img.b2bpic.net/free-photo/middle-age-friends-night-having-dinner_23-2149190960.jpg",
|
||||
},
|
||||
]}
|
||||
title="Guest Stories"
|
||||
description="Our customers are our greatest critics and biggest fans."
|
||||
/>
|
||||
</div>
|
||||
<div id="testimonials" data-section="testimonials">
|
||||
<TestimonialCardFive
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={true}
|
||||
title="Guest Stories"
|
||||
description="Our customers are our greatest critics and biggest fans."
|
||||
testimonials={[
|
||||
{ id: "t1", name: "Marcus R.", date: "Oct 2024", title: "Foodie", quote: "An absolute gem!", tag: "Review", avatarSrc: "http://img.b2bpic.net/free-photo/people-technology-leisure-concept_273609-6599.jpg" },
|
||||
{ id: "t2", name: "Sophie L.", date: "Sep 2024", title: "Regular", quote: "Amazing food.", tag: "Review", avatarSrc: "http://img.b2bpic.net/free-photo/portrait-young-female-dentist-dentistry-concept-dental-treatment_169016-67131.jpg" },
|
||||
{ id: "t3", name: "James T.", date: "Aug 2024", title: "Business", quote: "Great meetings.", tag: "Review", avatarSrc: "http://img.b2bpic.net/free-photo/smiling-young-blonde-superhero-woman-red-cape-wearing-glasses-with-closed-eyes-isolated-white-wall_141793-85636.jpg" },
|
||||
{ id: "t4", name: "Linda M.", date: "Aug 2024", title: "Local", quote: "Best baklava.", tag: "Review", avatarSrc: "http://img.b2bpic.net/free-photo/woman-smiling_1187-3196.jpg" },
|
||||
{ id: "t5", name: "Kevin D.", date: "Jul 2024", title: "Traveler", quote: "Great visit.", tag: "Review", avatarSrc: "http://img.b2bpic.net/free-photo/excited-male-gardener-holding-wearing-gardening-hat-pumpkin_141793-71363.jpg" }
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="faq" data-section="faq">
|
||||
<FaqDouble
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
faqs={[
|
||||
{
|
||||
id: "q1",
|
||||
title: "Do you accept reservations?",
|
||||
content: "Yes, we highly recommend booking online for weekends and large groups.",
|
||||
},
|
||||
{
|
||||
id: "q2",
|
||||
title: "Are there vegetarian options?",
|
||||
content: "Absolutely, our menu includes a variety of thoughtfully prepared vegetarian dishes.",
|
||||
},
|
||||
{
|
||||
id: "q3",
|
||||
title: "Do you host private events?",
|
||||
content: "Yes, our private dining room is available for corporate gatherings and celebrations.",
|
||||
},
|
||||
]}
|
||||
title="Frequently Asked"
|
||||
description="Information regarding reservations, menu, and events."
|
||||
faqsAnimation="slide-up"
|
||||
/>
|
||||
</div>
|
||||
<div id="faq" data-section="faq">
|
||||
<FaqDouble
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
faqs={[
|
||||
{ id: "q1", title: "Do you accept reservations?", content: "Yes, we highly recommend booking online." },
|
||||
{ id: "q2", title: "Are there vegetarian options?", content: "Absolutely, our menu includes a variety of thoughtfully prepared vegetarian dishes." },
|
||||
{ id: "q3", title: "Do you host private events?", content: "Yes, our private dining room is available." }
|
||||
]}
|
||||
title="Frequently Asked"
|
||||
description="Information regarding reservations, menu, and events."
|
||||
faqsAnimation="slide-up"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="contact" data-section="contact">
|
||||
<ContactText
|
||||
useInvertedBackground={true}
|
||||
background={{
|
||||
variant: "gradient-bars",
|
||||
}}
|
||||
text="Ready for an exquisite meal? We look forward to hosting you."
|
||||
buttons={[
|
||||
{
|
||||
text: "Book Now",
|
||||
href: "#contact",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<div id="contact" data-section="contact">
|
||||
<ContactText
|
||||
useInvertedBackground={true}
|
||||
background={{ variant: "gradient-bars" }}
|
||||
text="Ready for an exquisite meal? We look forward to hosting you."
|
||||
buttons={[{ text: "Book Now", href: "#contact" }]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterCard
|
||||
logoText="Ziyafat"
|
||||
copyrightText="© 2025 Ziyafat Restaurant"
|
||||
socialLinks={[
|
||||
{
|
||||
icon: Instagram,
|
||||
href: "#",
|
||||
ariaLabel: "Instagram",
|
||||
},
|
||||
{
|
||||
icon: Facebook,
|
||||
href: "#",
|
||||
ariaLabel: "Facebook",
|
||||
},
|
||||
{
|
||||
icon: Twitter,
|
||||
href: "#",
|
||||
ariaLabel: "Twitter",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<div id="footer" data-section="footer">
|
||||
<FooterCard
|
||||
logoText="Ziyafat"
|
||||
copyrightText="© 2025 Ziyafat Restaurant"
|
||||
socialLinks={[
|
||||
{ icon: Instagram, href: "#", ariaLabel: "Instagram" },
|
||||
{ icon: Facebook, href: "#", ariaLabel: "Facebook" },
|
||||
{ icon: Twitter, href: "#", ariaLabel: "Twitter" }
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
</ReactLenis>
|
||||
</ThemeProvider>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user