10 Commits

Author SHA1 Message Date
01be9a77ab Merge version_4 into main
Merge version_4 into main
2026-06-12 23:11:18 +00:00
b80bd9fe6e Update src/app/page.tsx 2026-06-12 23:11:11 +00:00
16b81c76d1 Merge version_4 into main
Merge version_4 into main
2026-06-12 23:10:25 +00:00
b2d953c60f Update src/app/styles/variables.css 2026-06-12 23:10:22 +00:00
ebfbaa59e8 Update src/app/styles/base.css 2026-06-12 23:10:21 +00:00
a5f20558ca Update src/app/page.tsx 2026-06-12 23:10:21 +00:00
82c38a2426 Update src/app/layout.tsx 2026-06-12 23:10:21 +00:00
108548d47d Merge version_3 into main
Merge version_3 into main
2026-06-12 23:00:40 +00:00
012ff3401b Update src/app/page.tsx 2026-06-12 23:00:34 +00:00
f60a83f2ea Merge version_2 into main
Merge version_2 into main
2026-06-12 22:58:23 +00:00
4 changed files with 94 additions and 168 deletions

View File

@@ -11,8 +11,8 @@ import { Nunito_Sans } from "next/font/google";
export const metadata: Metadata = { export const metadata: Metadata = {
title: 'Two Rivers Mall | Shop, Dine, Play in Nairobi', title: 'My Website - Reset',
description: 'Discover Two Rivers Mall, Nairobi\'s premier lifestyle destination with 200+ stores, world-class dining, and thrilling entertainment for families, professionals, and tourists.', description: 'This is a reset website with default content.',
keywords: ["Two Rivers Mall, Nairobi, shopping mall, dining, entertainment, amusement park, family fun, stores, events, lifestyle destination"], keywords: ["Two Rivers Mall, Nairobi, shopping mall, dining, entertainment, amusement park, family fun, stores, events, lifestyle destination"],
openGraph: { openGraph: {
"title": "Two Rivers Mall | Shop, Dine, Play in Nairobi", "title": "Two Rivers Mall | Shop, Dine, Play in Nairobi",
@@ -41,9 +41,9 @@ export const metadata: Metadata = {
}, },
}; };
const nunitoSans = Nunito_Sans({
variable: "--font-nunito-sans", const inter = Inter({
subsets: ["latin"], variable: "--font-inter", subsets: ["latin"],
}); });
export default function RootLayout({ export default function RootLayout({
@@ -54,7 +54,7 @@ export default function RootLayout({
return ( return (
<html lang="en" suppressHydrationWarning> <html lang="en" suppressHydrationWarning>
<ServiceWrapper> <ServiceWrapper>
<body className={`${nunitoSans.variable} antialiased`}> <body className={`${inter.variable} antialiased`}>
<Tag /> <Tag />
{children} {children}
<script <script

View File

@@ -13,7 +13,6 @@ import PricingCardTwo from '@/components/sections/pricing/PricingCardTwo';
import ProductCardOne from '@/components/sections/product/ProductCardOne'; import ProductCardOne from '@/components/sections/product/ProductCardOne';
import SocialProofOne from '@/components/sections/socialProof/SocialProofOne'; import SocialProofOne from '@/components/sections/socialProof/SocialProofOne';
import TestimonialCardSixteen from '@/components/sections/testimonial/TestimonialCardSixteen'; import TestimonialCardSixteen from '@/components/sections/testimonial/TestimonialCardSixteen';
import { Award, Box, Building, Calendar, Facebook, Film, Instagram, ShoppingBag, Sparkles, Star, Twitter } from "lucide-react";
export default function LandingPage() { export default function LandingPage() {
return ( return (
@@ -21,13 +20,13 @@ export default function LandingPage() {
defaultButtonVariant="hover-magnetic" defaultButtonVariant="hover-magnetic"
defaultTextAnimation="entrance-slide" defaultTextAnimation="entrance-slide"
borderRadius="rounded" borderRadius="rounded"
contentWidth="smallMedium" contentWidth="medium"
sizing="largeSizeMediumTitles" sizing="medium"
background="fluid" background="none"
cardStyle="glass-elevated" cardStyle="solid"
primaryButtonStyle="radial-glow" primaryButtonStyle="flat"
secondaryButtonStyle="radial-glow" secondaryButtonStyle="solid"
headingFontWeight="semibold" headingFontWeight="bold"
> >
<ReactLenis root> <ReactLenis root>
<div id="nav" data-section="nav"> <div id="nav" data-section="nav">
@@ -46,56 +45,25 @@ export default function LandingPage() {
{ {
name: "Contact", id: "#contact"}, name: "Contact", id: "#contact"},
]} ]}
brandName="Two Rivers Mall" brandName="My Website"
button={{ button={{ text: "Get Started", href: "#contact" }}
text: "Explore the Directory", href: "#stores"}}
/> />
</div> </div>
<div id="home" data-section="home"> <div id="home" data-section="home">
<HeroSplit <HeroSplit
background={{ background={{
variant: "radial-gradient"}} variant: "plain"}}
imagePosition="right" imagePosition="right"
title="Shop, Dine, Play—All in One Place" title="Welcome to Your New Website"
description="Two Rivers Mall brings together 200 premium stores, world-class dining, and thrilling entertainment under one roof. From family fun to upscale shopping, discover your next favorite destination on Limuru Road." description="Your site has been reset to a clean, default state. Begin customizing to reflect your unique vision."
buttons={[ buttons={[
{ {
text: "Explore the Directory", href: "#stores"}, text: "Discover More", href: "#about"},
]}
imageSrc="https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3F3WGpc9823thxsq5XEkQAL2GLQ/uploaded-1781305073834-zu1nwsn2.png"
imageAlt="Exterior facade of Two Rivers Mall"
mediaAnimation="slide-up"
avatars={[
{
src: "http://img.b2bpic.net/free-photo/close-up-girl-with-shopping-bags_23-2148225670.jpg", alt: "Close up girl with shopping bags "},
{
src: "http://img.b2bpic.net/free-photo/front-view-smiley-woman-posing-with-lots-shopping-bags_23-2148695588.jpg", alt: "Front view of smiley woman posing with lots of shopping bags"},
{
src: "http://img.b2bpic.net/free-photo/girl-posing-with-her-eyes-closed_23-2148225669.jpg", alt: "Girl posing with her eyes closed"},
{
src: "http://img.b2bpic.net/free-photo/front-view-smiley-woman-posing-with-multiple-shopping-bags_23-2148695589.jpg", alt: "Front view of smiley woman posing with multiple shopping bags"},
{
src: "http://img.b2bpic.net/free-photo/smiling-man-with-shopping-bags_329181-5055.jpg", alt: "Smiling man with shopping bags"},
]}
avatarText="Join 1M+ happy visitors annually"
marqueeItems={[
{
type: "text-icon", text: "Latest Fashion", icon: Box,
},
{
type: "text-icon", text: "Gourmet Meals", icon: Building,
},
{
type: "text-icon", text: "Family Fun", icon: Film,
},
{
type: "text-icon", text: "Exciting Events", icon: Calendar,
},
{
type: "text-icon", text: "Shopping Spree", icon: ShoppingBag,
},
]} ]}
imageSrc="https://via.placeholder.com/1200x800?text=Hero+Image"
imageAlt="A generic placeholder hero image"
mediaAnimation="none"
/> />
</div> </div>
@@ -104,9 +72,9 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
heading={[ heading={[
{ {
type: "text", content: "Your Ultimate Lifestyle Destination in Nairobi"}, type: "text", content: "About Our Mission"},
{ {
type: "image", src: "http://img.b2bpic.net/free-photo/blurred-escalator-seen-from_1203-1286.jpg", alt: "Interior view of a modern shopping mall"}, type: "image", src: "https://via.placeholder.com/600x400?text=About+Image", alt: "Placeholder about image"},
]} ]}
buttons={[ buttons={[
{ {
@@ -117,142 +85,110 @@ export default function LandingPage() {
<div id="features" data-section="features"> <div id="features" data-section="features">
<FeatureCardNine <FeatureCardNine
animationType="slide-up" animationType="none"
textboxLayout="default" textboxLayout="default"
useInvertedBackground={true} useInvertedBackground={false}
features={[ features={[
{ {
title: "Diverse Retail Selection", description: "Explore over 200 premium stores, featuring global brands and local favorites across fashion, electronics, home goods, and more.", phoneOne: { title: "Feature One", description: "Brief description of the first key feature.", phoneOne: {
imageSrc: "http://img.b2bpic.net/free-photo/laughing-woman-with-paper-bags_23-2147786761.jpg", imageAlt: "Woman shopping in a clothing store"}, imageSrc: "https://via.placeholder.com/300x600?text=Phone+Screen+1"},
phoneTwo: { phoneTwo: {
imageSrc: "http://img.b2bpic.net/free-photo/connection-digital-touchscreen-screen-retail_1253-540.jpg", imageAlt: "Person using a shopping app on a phone"}, imageSrc: "https://via.placeholder.com/300x600?text=Phone+Screen+2"},
}, },
{ {
title: "World-Class Dining", description: "Savor a culinary journey with a wide array of restaurants, cafes, and eateries offering international and local cuisines for every palate.", phoneOne: { title: "Feature Two", description: "Brief description of the second key feature.", phoneOne: {
imageSrc: "http://img.b2bpic.net/free-photo/dreamy-stylish-girl-with-blonde-hair-pink-lips-sitting-coffee-shop-with-wooden-chairs-table-she-holds-cup-cofee-touches-her-hair_197531-102.jpg", imageAlt: "Friends enjoying a meal at a restaurant"}, imageSrc: "https://via.placeholder.com/300x600?text=Phone+Screen+3"},
phoneTwo: { phoneTwo: {
imageSrc: "http://img.b2bpic.net/free-photo/hostess-arranging-chairs-around-table_23-2147830618.jpg", imageAlt: "Chef preparing food in a modern kitchen"}, imageSrc: "https://via.placeholder.com/300x600?text=Phone+Screen+4"},
},
{
title: "Thrilling Entertainment", description: "Experience endless fun at our amusement park, state-of-the-art cinema, bowling alley, and various family-friendly attractions.", phoneOne: {
imageSrc: "http://img.b2bpic.net/free-photo/excited-young-woman-enjoying-amusement-park_23-2147910306.jpg", imageAlt: "Family enjoying rides at an amusement park"},
phoneTwo: {
imageSrc: "http://img.b2bpic.net/free-photo/smiling-young-couple-wearing-reality-goggles-enjoying-playing-video-game_23-2148048992.jpg", imageAlt: "Group watching a movie in a cinema"},
}, },
]} ]}
showStepNumbers={true} showStepNumbers={false}
title="Experience Unmatched Variety" title="Core Features"
description="Discover a world of choices, from exclusive boutiques to family-friendly fun. Two Rivers Mall offers something for everyone, every day." description="Explore the essential functionalities we offer."
/> />
</div> </div>
<div id="stores" data-section="stores"> <div id="stores" data-section="stores">
<ProductCardOne <ProductCardOne
animationType="slide-up" animationType="none"
textboxLayout="default" textboxLayout="default"
gridVariant="three-columns-all-equal-width" gridVariant="three-columns-all-equal-width"
useInvertedBackground={false} useInvertedBackground={false}
products={[ products={[
{ {
id: "fashion", name: "Fashion & Apparel", price: "200+ Brands", imageSrc: "http://img.b2bpic.net/free-photo/futuristic-store-with-abstract-concept-architecture_23-2150861950.jpg", imageAlt: "Fashion boutique interior"}, id: "p1", name: "Product/Service A", price: "$100", imageSrc: "https://via.placeholder.com/400x300?text=Product+A", imageAlt: "Product A"},
{ {
id: "electronics", name: "Electronics & Gadgets", price: "Latest Tech", imageSrc: "http://img.b2bpic.net/free-photo/side-view-sad-girl-holding-smartphone_23-2149458400.jpg", imageAlt: "Electronics store with gadgets"}, id: "p2", name: "Product/Service B", price: "$200", imageSrc: "https://via.placeholder.com/400x300?text=Product+B", imageAlt: "Product B"},
{ {
id: "home", name: "Home & Living", price: "Stylish Decor", imageSrc: "http://img.b2bpic.net/free-photo/tea-pot_23-2147788596.jpg", imageAlt: "Modern home decor items"}, id: "p3", name: "Product/Service C", price: "$300", imageSrc: "https://via.placeholder.com/400x300?text=Product+C", imageAlt: "Product C"},
{
id: "jewelry", name: "Jewelry & Accessories", price: "Luxury Brands", imageSrc: "http://img.b2bpic.net/free-photo/side-view-silver-bracelets-with-diamonds-black-wall_140725-12838.jpg", imageAlt: "Sparkling jewelry display"},
{
id: "beauty", name: "Beauty & Wellness", price: "Premium Products", imageSrc: "http://img.b2bpic.net/free-photo/zero-waste-beauty-products_23-2149304153.jpg", imageAlt: "Beauty products and cosmetics"},
{
id: "kids", name: "Kids & Toys", price: "Fun for All Ages", imageSrc: "http://img.b2bpic.net/free-photo/mother-daughter-with-shopping-bag-city_1157-21135.jpg", imageAlt: "Colorful kids toy store"},
]} ]}
title="Our Esteemed Stores & Brands" title="Our Products & Services"
description="Browse our extensive directory of over 200 international and local brands, offering everything from fashion to electronics, home goods, and specialty stores." description="Browse our offerings, designed to meet your needs."
/> />
</div> </div>
<div id="entertainment" data-section="entertainment"> <div id="entertainment" data-section="entertainment">
<PricingCardTwo <PricingCardTwo
animationType="slide-up" animationType="none"
textboxLayout="default" textboxLayout="default"
useInvertedBackground={true} useInvertedBackground={false}
plans={[ plans={[
{ {
id: "day-pass", badge: "Popular", badgeIcon: Sparkles, id: "basic", badge: "Basic", price: "$10/mo", subtitle: "Essential features", buttons: [
price: "$25", subtitle: "Amusement Park Day Pass", buttons: [
{ {
text: "Get Day Pass", href: "#"}, text: "Start Free", href: "#"},
], ],
features: [ features: [
"Unlimited rides for one day", "Access to all attractions", "Family-friendly activities"], "Feature 1", "Feature 2"],
}, },
{ {
id: "family-bundle", badge: "Best Value", badgeIcon: Star, id: "pro", badge: "Pro", price: "$30/mo", subtitle: "Advanced capabilities", buttons: [
price: "$80", subtitle: "Family Fun Bundle", buttons: [
{ {
text: "Get Family Bundle", href: "#"}, text: "Get Pro", href: "#"},
], ],
features: [ features: [
"4 Day Passes", "Cinema Tickets (4)", "Bowling Game (1 hour)"], "All Basic features", "Feature 3", "Feature 4"],
},
{
id: "vip-experience", badge: "Premium", badgeIcon: Award,
price: "$150", subtitle: "VIP Entertainment Experience", buttons: [
{
text: "Book VIP", href: "#"},
],
features: [
"All Family Bundle features", "Private Lounge access", "Exclusive event discounts"],
}, },
]} ]}
title="Thrilling Entertainment Packages" title="Flexible Pricing"
description="Dive into excitement with our diverse entertainment options, including the themed amusement park, cinema, and more. Perfect for all ages!" description="Choose a plan that scales with you."
/> />
</div> </div>
<div id="testimonials" data-section="testimonials"> <div id="testimonials" data-section="testimonials">
<TestimonialCardSixteen <TestimonialCardSixteen
animationType="slide-up" animationType="none"
textboxLayout="default" textboxLayout="default"
useInvertedBackground={false} useInvertedBackground={false}
testimonials={[ testimonials={[
{ {
id: "1", name: "Sarah Johnson", role: "Parent", company: "Nairobi Resident", rating: 5, id: "t1", name: "Jane Doe", role: "CEO", company: "Tech Solutions", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/female-model-phone-shopping-bags-park_23-2147645097.jpg", imageAlt: "Happy Sarah Johnson"}, imageSrc: "https://via.placeholder.com/100x100?text=User+1"},
{ {
id: "2", name: "David Kim", role: "Entrepreneur", company: "Local Business Owner", rating: 5, id: "t2", name: "John Smith", role: "Founder", company: "Creative Agency", rating: 4,
imageSrc: "http://img.b2bpic.net/free-photo/young-adults-having-party-home_23-2149215876.jpg", imageAlt: "Satisfied David Kim"}, imageSrc: "https://via.placeholder.com/100x100?text=User+2"},
{
id: "3", name: "Emily Rodriguez", role: "Food Blogger", company: "Foodie Explorer", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/side-view-woman-with-delicious-food_23-2150124824.jpg", imageAlt: "Delighted Emily Rodriguez"},
{
id: "4", name: "Michael Chen", role: "Tourist", company: "Global Traveler", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/stylish-girls-taking-selfie-mall_23-2147669852.jpg", imageAlt: "Impressed Michael Chen"},
{
id: "5", name: "Jessica Lee", role: "Student", company: "University of Nairobi", rating: 5,
imageSrc: "http://img.b2bpic.net/free-photo/front-view-women-holding-paper-wrapped-sandwich_23-2151311183.jpg", imageAlt: "Excited Jessica Lee"},
]} ]}
kpiItems={[ kpiItems={[
{ {
value: "200+", label: "Stores & Eateries"}, value: "99%", label: "Satisfaction"},
{ {
value: "1M+", label: "Annual Visitors"}, value: "50K+", label: "Users"},
{ {
value: "4.8", label: "Average Rating"}, value: "Top", label: "Rated"},
]} ]}
title="Voices of Our Community" title="What Our Users Say"
description="Hear from visitors who have experienced the magic of Two Rivers Mall. Their joy is our greatest reward." description="Real feedback from satisfied customers."
/> />
</div> </div>
<div id="dining" data-section="dining"> <div id="dining" data-section="dining">
<SocialProofOne <SocialProofOne
textboxLayout="default" textboxLayout="default"
useInvertedBackground={true} useInvertedBackground={false}
names={[ names={[
"International Cuisine", "Fine Dining Restaurants", "Casual Cafes", "Fast Food Favorites", "Dessert & Bakeries", "Juice Bars", "Coffee Houses", "African Delicacies"]} "Partner A", "Partner B", "Partner C", "Partner D", "Partner E"]}
title="A Culinary Journey Awaits" title="Trusted Partners"
description="From casual cafes to fine dining restaurants, Two Rivers Mall offers an unparalleled gastronomic experience with diverse cuisines to satisfy every palate." description="Collaborating with industry leaders to bring you the best."
/> />
</div> </div>
@@ -262,31 +198,31 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
faqs={[ faqs={[
{ {
id: "schedule", title: "Where can I find the event schedule?", content: "Our full event calendar, including showtimes, dates, and special promotions, is available on our website and at the customer service desk."}, id: "q1", title: "How do I get started?", content: "Simply sign up and follow the onboarding process."
},
{ {
id: "children-events", title: "Are there special events for children?", content: "Yes, we regularly host a variety of child-friendly events, workshops, and performances designed to entertain and educate younger visitors."}, id: "q2", title: "What are your pricing options?", content: "Check our pricing section for detailed plans."
{ },
id: "booking", title: "How do I book tickets for shows?", content: "Tickets for most shows and events can be purchased directly through our website, at the venue box office, or via our official ticketing partners."},
]} ]}
imageSrc="http://img.b2bpic.net/free-photo/portrait-young-woman-covered-with-holi-powder-looking-away_23-2148129364.jpg" imageSrc="https://via.placeholder.com/800x600?text=FAQ+Image"
imageAlt="People at a lively mall event" imageAlt="A generic placeholder for FAQ section"
mediaAnimation="slide-up" mediaAnimation="none"
mediaPosition="left" mediaPosition="left"
title="Upcoming Events & Information" title="Common Questions"
description="Stay updated on the latest happenings at Two Rivers Mall, from live shows to seasonal festivals and family workshops. Plan your visit around our exciting calendar." description="Find quick answers to your most pressing questions."
faqsAnimation="slide-up" faqsAnimation="none"
/> />
</div> </div>
<div id="contact" data-section="contact"> <div id="contact" data-section="contact">
<ContactCenter <ContactCenter
useInvertedBackground={true} useInvertedBackground={false}
background={{ background={{
variant: "sparkles-gradient"}} variant: "plain"}}
tag="Get in Touch" tag="Contact Us"
title="Plan Your Perfect Visit" title="Get in Touch"
description="Have a question or need assistance? Our team is here to help you make the most of your time at Two Rivers Mall. Reach out today!" description="We'd love to hear from you! Send us a message."
inputPlaceholder="Enter your email" inputPlaceholder="Your Email Address"
buttonText="Send Message" buttonText="Send Message"
termsText="By submitting this form, you agree to our privacy policy and terms of service." termsText="By submitting this form, you agree to our privacy policy and terms of service."
/> />
@@ -294,22 +230,12 @@ export default function LandingPage() {
<div id="footer" data-section="footer"> <div id="footer" data-section="footer">
<FooterCard <FooterCard
logoText="Two Rivers Mall" logoText="My Website"
copyrightText="© 2024 Two Rivers Mall. All rights reserved." copyrightText="© 2025 My Website. All rights reserved."
socialLinks={[ socialLinks={[]}
{
icon: Facebook,
href: "https://facebook.com/TwoRiversMall", ariaLabel: "Facebook"},
{
icon: Instagram,
href: "https://instagram.com/TwoRiversMall", ariaLabel: "Instagram"},
{
icon: Twitter,
href: "https://twitter.com/TwoRiversMall", ariaLabel: "Twitter"},
]}
/> />
</div> </div>
</ReactLenis> </ReactLenis>
</ThemeProvider> </ThemeProvider>
); );
} }

View File

@@ -11,7 +11,7 @@ html {
body { body {
background-color: var(--background); background-color: var(--background);
color: var(--foreground); color: var(--foreground);
font-family: var(--font-nunito-sans), sans-serif; font-family: var(--font-inter), sans-serif;
position: relative; position: relative;
min-height: 100vh; min-height: 100vh;
overscroll-behavior: none; overscroll-behavior: none;
@@ -24,5 +24,5 @@ h3,
h4, h4,
h5, h5,
h6 { h6 {
font-family: var(--font-nunito-sans), sans-serif; font-family: var(--font-inter), sans-serif;
} }

View File

@@ -10,15 +10,15 @@
--accent: #ffffff; --accent: #ffffff;
--background-accent: #ffffff; */ --background-accent: #ffffff; */
--background: #e3deea; --background: #ffffff;
--card: #ffffff; --card: #f9f9f9;
--foreground: #1f2027; --foreground: #000612e6;
--primary-cta: #1f2027; --primary-cta: #15479c;
--primary-cta-text: #e3deea; --primary-cta-text: #e3deea;
--secondary-cta: #ffffff; --secondary-cta: #f9f9f9;
--secondary-cta-text: #1f2027; --secondary-cta-text: #1f2027;
--accent: #627dc6; --accent: #e2e2e2;
--background-accent: #627dc6; --background-accent: #c4c4c4;
/* text sizing - set by ThemeProvider */ /* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem); /* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);