Merge version_2 into main #2

Merged
bender merged 6 commits from version_2 into main 2026-06-11 20:58:16 +00:00
6 changed files with 229 additions and 2 deletions

66
src/app/about/page.tsx Normal file
View File

@@ -0,0 +1,66 @@
"use client";
import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple';
import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
import SplitAbout from '@/components/sections/about/SplitAbout';
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
export default function AboutPage() {
const navItems = [
{ name: "Home", id: "/" },
{ name: "Products", id: "/products" },
{ name: "About Us", id: "/about" },
{ name: "Contact", id: "/contact" },
{ name: "FAQ", id: "/faq" }
];
const footerColumns = [
{ items: [{ label: "Urban Bikes", href: "/products" }, { label: "Mountain Bikes", href: "/products" }, { label: "Folding Bikes", href: "/products" }, { label: "Accessories", href: "/products" }] },
{ items: [{ label: "About Us", href: "/about" }, { label: "Our Story", href: "/about" }, { label: "Careers", href: "#" }, { label: "Blog", href: "#" }] },
{ items: [{ label: "FAQ", href: "/faq" }, { label: "Support", href: "/contact" }, { label: "Warranty", href: "#" }, { label: "Privacy Policy", href: "#" }] }
];
return (
<ThemeProvider
defaultButtonVariant="shift-hover"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="mediumSmall"
sizing="largeSmallSizeMediumTitles"
background="noiseDiagonalGradient"
cardStyle="gradient-radial"
primaryButtonStyle="double-inset"
secondaryButtonStyle="radial-glow"
headingFontWeight="medium"
>
<div id="nav" data-section="nav">
<NavbarStyleApple
brandName="E-Bike Emporium"
navItems={navItems}
/>
</div>
<div id="about-section" data-section="about-section">
<SplitAbout
title="Our Story: Powering Your Journey"
description="At E-Bike Emporium, we believe in a greener, more active future. Since 20XX, we've been dedicated to providing high-quality electric bikes that blend innovative technology with sustainable urban and adventure mobility. Our passion drives us to curate the best e-bikes on the market, ensuring every ride is exhilarating and eco-conscious."
bulletPoints={[
{ title: "Innovation", description: "Leading the charge with cutting-edge e-bike technology." },
{ title: "Sustainability", description: "Committed to eco-friendly transport solutions." },
{ title: "Community", description: "Building a network of passionate riders worldwide." }
]}
imageSrc="http://img.b2bpic.net/free-photo/group-business-people-office_23-2147775510.jpg?_wi=1"
imageAlt="Team working on bikes"
mediaAnimation="slide-up"
imagePosition="right"
textboxLayout="default"
useInvertedBackground={false}
/>
</div>
<div id="footer" data-section="footer">
<FooterLogoEmphasis
logoSrc="http://img.b2bpic.net/free-photo/adorable-illustration-animal-bike_23-2151850288.jpg"
logoAlt="E-Bike Emporium Logo"
logoText="E-Bike Emporium"
columns={footerColumns}
/>
</div>
</ThemeProvider>
);
}

70
src/app/contact/page.tsx Normal file
View File

@@ -0,0 +1,70 @@
"use client";
import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple';
import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
import ContactSplitForm from '@/components/sections/contact/ContactSplitForm';
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
export default function ContactPage() {
const navItems = [
{ name: "Home", id: "/" },
{ name: "Products", id: "/products" },
{ name: "About Us", id: "/about" },
{ name: "Contact", id: "/contact" },
{ name: "FAQ", id: "/faq" }
];
const footerColumns = [
{ items: [{ label: "Urban Bikes", href: "/products" }, { label: "Mountain Bikes", href: "/products" }, { label: "Folding Bikes", href: "/products" }, { label: "Accessories", href: "/products" }] },
{ items: [{ label: "About Us", href: "/about" }, { label: "Our Story", href: "/about" }, { label: "Careers", href: "#" }, { label: "Blog", href: "#" }] },
{ items: [{ label: "FAQ", href: "/faq" }, { label: "Support", href: "/contact" }, { label: "Warranty", href: "#" }, { label: "Privacy Policy", href: "#" }] }
];
return (
<ThemeProvider
defaultButtonVariant="shift-hover"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="mediumSmall"
sizing="largeSmallSizeMediumTitles"
background="noiseDiagonalGradient"
cardStyle="gradient-radial"
primaryButtonStyle="double-inset"
secondaryButtonStyle="radial-glow"
headingFontWeight="medium"
>
<div id="nav" data-section="nav">
<NavbarStyleApple
brandName="E-Bike Emporium"
navItems={navItems}
/>
</div>
<div id="contact-section" data-section="contact-section">
<ContactSplitForm
title="Get In Touch: We're Here to Help"
description="Have questions about our e-bikes, need support, or just want to chat? Fill out the form below and our team will get back to you promptly. We're committed to providing excellent service."
inputs={[
{ name: "name", type: "text", placeholder: "Your Name", required: true },
{ name: "email", type: "email", placeholder: "Your Email", required: true },
{ name: "subject", type: "text", placeholder: "Subject" }
]}
textarea={{
name: "message", placeholder: "Your Message", rows: 5,
required: true
}}
imageSrc="http://img.b2bpic.net/free-photo/view-white-phone-with-map-gps-system_23-2150348705.jpg?_wi=1"
imageAlt="Contact Us"
mediaAnimation="slide-up"
mediaPosition="right"
buttonText="Send Message"
useInvertedBackground={false}
/>
</div>
<div id="footer" data-section="footer">
<FooterLogoEmphasis
logoSrc="http://img.b2bpic.net/free-photo/adorable-illustration-animal-bike_23-2151850288.jpg"
logoAlt="E-Bike Emporium Logo"
logoText="E-Bike Emporium"
columns={footerColumns}
/>
</div>
</ThemeProvider>
);
}

65
src/app/faq/page.tsx Normal file
View File

@@ -0,0 +1,65 @@
"use client";
import NavbarStyleApple from '@/components/navbar/NavbarStyleApple/NavbarStyleApple';
import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
import FaqDouble from '@/components/sections/faq/FaqDouble';
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
export default function FAQPage() {
const navItems = [
{ name: "Home", id: "/" },
{ name: "Products", id: "/products" },
{ name: "About Us", id: "/about" },
{ name: "Contact", id: "/contact" },
{ name: "FAQ", id: "/faq" }
];
const footerColumns = [
{ items: [{ label: "Urban Bikes", href: "/products" }, { label: "Mountain Bikes", href: "/products" }, { label: "Folding Bikes", href: "/products" }, { label: "Accessories", href: "/products" }] },
{ items: [{ label: "About Us", href: "/about" }, { label: "Our Story", href: "/about" }, { label: "Careers", href: "#" }, { label: "Blog", href: "#" }] },
{ items: [{ label: "FAQ", href: "/faq" }, { label: "Support", href: "/contact" }, { label: "Warranty", href: "#" }, { label: "Privacy Policy", href: "#" }] }
];
return (
<ThemeProvider
defaultButtonVariant="shift-hover"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="mediumSmall"
sizing="largeSmallSizeMediumTitles"
background="noiseDiagonalGradient"
cardStyle="gradient-radial"
primaryButtonStyle="double-inset"
secondaryButtonStyle="radial-glow"
headingFontWeight="medium"
>
<div id="nav" data-section="nav">
<NavbarStyleApple
brandName="E-Bike Emporium"
navItems={navItems}
/>
</div>
<div id="faq-section" data-section="faq-section">
<FaqDouble
title="Frequently Asked Questions"
description="Find quick answers to the most common questions about our electric bikes, orders, and services."
faqs={[
{ id: "q1", title: "What is the range of your e-bikes?", content: "Our e-bikes typically offer a range of 40-80 miles on a single charge, depending on the model, terrain, and rider weight." },
{ id: "q2", title: "Do you offer international shipping?", content: "Currently, we ship within the United States and Canada. We are working to expand our international shipping options soon." },
{ id: "q3", title: "What is your return policy?", content: "We offer a 30-day return policy for unused e-bikes in their original packaging. Please see our full returns page for details." },
{ id: "q4", title: "How long does assembly take?", content: "Most of our e-bikes arrive 80% assembled. Final assembly usually takes about 30-60 minutes with basic tools and our detailed instructions." },
{ id: "q5", title: "What kind of warranty do you provide?", content: "All our e-bikes come with a 2-year warranty on the frame, motor, and battery, and a 1-year warranty on other components." }
]}
faqsAnimation="slide-up"
textboxLayout="default"
useInvertedBackground={false}
/>
</div>
<div id="footer" data-section="footer">
<FooterLogoEmphasis
logoSrc="http://img.b2bpic.net/free-photo/adorable-illustration-animal-bike_23-2151850288.jpg"
logoAlt="E-Bike Emporium Logo"
logoText="E-Bike Emporium"
columns={footerColumns}
/>
</div>
</ThemeProvider>
);
}

13
src/app/i18n.ts Normal file
View File

@@ -0,0 +1,13 @@
import { notFound } from 'next/navigation';
import { getRequestConfig } from 'next-intl/server';
export const locales = ['en', 'fr', 'de', 'sv'];
export const defaultLocale = 'en';
export default getRequestConfig(async ({ locale }) => {
if (!locales.includes(locale as any)) notFound();
return {
messages: (await import(`../locales/${locale}.json`)).default
};
});

View File

@@ -114,10 +114,11 @@ export default function HomePage() {
columns={[
{ items: [{ label: "Urban Bikes", href: "/products" }, { label: "Mountain Bikes", href: "/products" }, { label: "Folding Bikes", href: "/products" }, { label: "Accessories", href: "/products" }] },
{ items: [{ label: "About Us", href: "/about" }, { label: "Our Story", href: "/about" }, { label: "Careers", href: "#" }, { label: "Blog", href: "#" }] },
{ items: [{ label: "FAQ", href: "/contact" }, { label: "Support", href: "/contact" }, { label: "Warranty", href: "#" }, { label: "Privacy Policy", href: "#" }] }
{ items: [{ label: "FAQ", href: "/contact" }, { label: "Support", href: "/contact" }, { label: "Warranty", href: "#" }, { label: "Privacy Policy", href: "#" }] },
{ items: [{ label: "English", href: "/en" }, { label: "Español", href: "/es" }, { label: "Français", href: "/fr" }] }
]}
/>
</div>
</ThemeProvider>
);
}
}

12
src/middleware.ts Normal file
View File

@@ -0,0 +1,12 @@
import createMiddleware from 'next-intl/middleware';
import { locales, defaultLocale } from './i18n';
export default createMiddleware({
locales,
defaultLocale,
localePrefix: 'as-needed'
});
export const config = {
matcher: ['/', '/(fr|de|sv|en)/:path*']
};