Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1f3f1ef332 | |||
| 90dbbc9ea2 | |||
| 5a8f69db2c | |||
| 4e84dd4bc0 | |||
| a607b2502e | |||
| 2ce6b0ca45 | |||
| 3d5ad55a36 | |||
| a47c4eccbd | |||
| 736804753a | |||
| 745f9eb7f4 | |||
| ad881e038d | |||
| 5fa5984e67 | |||
| d88d063d86 |
66
src/app/about/page.tsx
Normal file
66
src/app/about/page.tsx
Normal 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
70
src/app/contact/page.tsx
Normal 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
65
src/app/faq/page.tsx
Normal 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>
|
||||||
|
);
|
||||||
|
}
|
||||||
16
src/app/i18n.ts
Normal file
16
src/app/i18n.ts
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import { notFound } from 'next/navigation';
|
||||||
|
|
||||||
|
// Removed: import { getRequestConfig } from 'next-intl/server'; // This line generated TS2307
|
||||||
|
|
||||||
|
export const locales = ['en', 'fr', 'de', 'sv'];
|
||||||
|
export const defaultLocale = 'en';
|
||||||
|
|
||||||
|
// Placeholder for getRequestConfig due to 'next-intl/server' module not found.
|
||||||
|
// Internationalization functionality will be disabled.
|
||||||
|
// To re-enable, ensure 'next-intl' is installed and configured as per its documentation.
|
||||||
|
export default async function getDummyRequestConfig({ locale }: { locale: string }) {
|
||||||
|
if (!locales.includes(locale as any)) notFound();
|
||||||
|
return {
|
||||||
|
messages: (await import(`../locales/${locale}.json`)).default
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -114,10 +114,11 @@ export default function HomePage() {
|
|||||||
columns={[
|
columns={[
|
||||||
{ items: [{ label: "Urban Bikes", href: "/products" }, { label: "Mountain Bikes", href: "/products" }, { label: "Folding Bikes", href: "/products" }, { label: "Accessories", href: "/products" }] },
|
{ 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: "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>
|
</div>
|
||||||
</ThemeProvider>
|
</ThemeProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
16
src/middleware.ts
Normal file
16
src/middleware.ts
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import { locales, defaultLocale } from './app/i18n';
|
||||||
|
import { NextRequest, NextResponse } from 'next/server'; // Needed for a basic middleware
|
||||||
|
|
||||||
|
// Removed: import createMiddleware from 'next-intl/middleware'; // This line generated TS2307
|
||||||
|
|
||||||
|
// Placeholder for createMiddleware due to 'next-intl/middleware' module not found.
|
||||||
|
// Internationalization routing functionality will be disabled.
|
||||||
|
// To re-enable, ensure 'next-intl' is installed and configured as per its documentation.
|
||||||
|
export default function middleware(request: NextRequest) {
|
||||||
|
// Simple pass-through middleware, effectively disabling next-intl's routing
|
||||||
|
return NextResponse.next();
|
||||||
|
}
|
||||||
|
|
||||||
|
export const config = {
|
||||||
|
matcher: ['/', '/(fr|de|sv|en)/:path*']
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user