7 Commits

Author SHA1 Message Date
7aa86191a1 Merge version_2 into main
Merge version_2 into main
2026-05-17 11:14:24 +00:00
0a61e71409 Update theme fonts 2026-05-17 11:14:21 +00:00
ea27464c03 Update theme fonts 2026-05-17 11:14:21 +00:00
c2983a0618 Merge version_2 into main
Merge version_2 into main
2026-05-17 11:11:56 +00:00
a9c6f48872 Update src/app/styles/variables.css 2026-05-17 11:11:53 +00:00
f05d4205cb Update src/app/styles/base.css 2026-05-17 11:11:52 +00:00
abcdefc7aa Update src/app/page.tsx 2026-05-17 11:11:52 +00:00
4 changed files with 65 additions and 212 deletions

View File

@@ -7,6 +7,7 @@ import { ServiceWrapper } from "@/components/ServiceWrapper";
import Tag from "@/tag/Tag"; import Tag from "@/tag/Tag";
import { getVisualEditScript } from "@/utils/visual-edit-script"; import { getVisualEditScript } from "@/utils/visual-edit-script";
import { Open_Sans } from "next/font/google"; import { Open_Sans } from "next/font/google";
import { Libre_Baskerville } from "next/font/google";
@@ -22,14 +23,16 @@ export const metadata: Metadata = {
}, },
}; };
const libreBaskerville = Libre_Baskerville({
variable: "--font-libre-baskerville",
subsets: ["latin"],
weight: ["400", "700"],
});
const inter = Inter({ const inter = Inter({
variable: "--font-inter", variable: "--font-inter",
subsets: ["latin"], subsets: ["latin"],
}); });
const openSans = Open_Sans({
variable: "--font-open-sans",
subsets: ["latin"],
});
export default function RootLayout({ export default function RootLayout({
children, children,
@@ -39,7 +42,7 @@ export default function RootLayout({
return ( return (
<html lang="en" suppressHydrationWarning> <html lang="en" suppressHydrationWarning>
<ServiceWrapper> <ServiceWrapper>
<body className={`${inter.variable} ${openSans.variable} antialiased`}> <body className={`${libreBaskerville.variable} ${inter.variable} antialiased`}>
<Tag /> <Tag />
{children} {children}
<script <script

View File

@@ -10,7 +10,7 @@ import MetricCardOne from '@/components/sections/metrics/MetricCardOne';
import MetricSplitMediaAbout from '@/components/sections/about/MetricSplitMediaAbout'; import MetricSplitMediaAbout from '@/components/sections/about/MetricSplitMediaAbout';
import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay'; import NavbarLayoutFloatingOverlay from '@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay';
import PricingCardNine from '@/components/sections/pricing/PricingCardNine'; import PricingCardNine from '@/components/sections/pricing/PricingCardNine';
import ProductCardTwo from '@/components/sections/product/ProductCardTwo'; import ProductCardThree from '@/components/sections/product/ProductCardThree';
import TestimonialCardTen from '@/components/sections/testimonial/TestimonialCardTen'; import TestimonialCardTen from '@/components/sections/testimonial/TestimonialCardTen';
import { Award, Shield, Star } from "lucide-react"; import { Award, Shield, Star } from "lucide-react";
@@ -33,25 +33,15 @@ export default function LandingPage() {
<NavbarLayoutFloatingOverlay <NavbarLayoutFloatingOverlay
navItems={[ navItems={[
{ {
name: "Home", name: "Home", id: "hero"},
id: "hero",
},
{ {
name: "About", name: "About", id: "about"},
id: "about",
},
{ {
name: "Products", name: "Products", id: "products"},
id: "products",
},
{ {
name: "Bulk Orders", name: "Bulk Orders", id: "dojo"},
id: "dojo",
},
{ {
name: "Contact", name: "Contact", id: "contact"},
id: "contact",
},
]} ]}
brandName="MIRAI" brandName="MIRAI"
/> />
@@ -60,64 +50,39 @@ export default function LandingPage() {
<div id="hero" data-section="hero"> <div id="hero" data-section="hero">
<HeroCentered <HeroCentered
background={{ background={{
variant: "radial-gradient", variant: "radial-gradient"}}
}}
title="MIRAI" title="MIRAI"
description="Premium Karate Uniforms. Engineered for excellence, crafted for the disciplined." description="Premium Karate Uniforms. Engineered for excellence, crafted for the disciplined."
avatars={[ avatars={[
{ {
src: "http://img.b2bpic.net/free-photo/woman-meditating-with-her-eyes-closed_23-2148322409.jpg", src: "http://img.b2bpic.net/free-photo/woman-meditating-with-her-eyes-closed_23-2148322409.jpg", alt: "karate athlete gi black background"},
alt: "karate athlete gi black background",
},
{ {
src: "http://img.b2bpic.net/free-photo/shaved-head-karate-fighter-sits-tatami-gym_613910-13403.jpg", src: "http://img.b2bpic.net/free-photo/shaved-head-karate-fighter-sits-tatami-gym_613910-13403.jpg", alt: "Shaved head karate fighter sits on the tatami in a gym."},
alt: "Shaved head karate fighter sits on the tatami in a gym.",
},
{ {
src: "http://img.b2bpic.net/free-photo/full-shot-asian-man-practicing-taekwondo_23-2150260492.jpg", src: "http://img.b2bpic.net/free-photo/full-shot-asian-man-practicing-taekwondo_23-2150260492.jpg", alt: "Full shot asian man practicing taekwondo"},
alt: "Full shot asian man practicing taekwondo",
},
{ {
src: "http://img.b2bpic.net/free-photo/front-view-woman-doing-karate-pose_23-2148446183.jpg", src: "http://img.b2bpic.net/free-photo/front-view-woman-doing-karate-pose_23-2148446183.jpg", alt: "Front view woman doing karate pose"},
alt: "Front view woman doing karate pose",
},
{ {
src: "http://img.b2bpic.net/free-photo/athlete-female-training-karate-outfit_23-2148324760.jpg", src: "http://img.b2bpic.net/free-photo/athlete-female-training-karate-outfit_23-2148324760.jpg", alt: "Athlete female training in karate outfit"},
alt: "Athlete female training in karate outfit",
},
]} ]}
buttons={[ buttons={[
{ {
text: "View Products", text: "View Products", href: "#products"},
href: "#products",
},
{ {
text: "Contact Us", text: "Contact Us", href: "#contact"},
href: "#contact",
},
]} ]}
buttonAnimation="slide-up" buttonAnimation="slide-up"
marqueeItems={[ marqueeItems={[
{ {
type: "text", type: "text", text: "Premium Grade"},
text: "Premium Grade",
},
{ {
type: "text", type: "text", text: "Japanese Design"},
text: "Japanese Design",
},
{ {
type: "text", type: "text", text: "Elite Performance"},
text: "Elite Performance",
},
{ {
type: "text", type: "text", text: "Durable Stitching"},
text: "Durable Stitching",
},
{ {
type: "text", type: "text", text: "Worldwide Shipping"},
text: "Worldwide Shipping",
},
]} ]}
/> />
</div> </div>
@@ -129,13 +94,9 @@ export default function LandingPage() {
description="MIRAI uniforms are designed to meet the rigorous demands of professional martial artists. We blend traditional Japanese aesthetics with modern performance fabrics for ultimate comfort and range of motion." description="MIRAI uniforms are designed to meet the rigorous demands of professional martial artists. We blend traditional Japanese aesthetics with modern performance fabrics for ultimate comfort and range of motion."
metrics={[ metrics={[
{ {
value: "100%", value: "100%", title: "Premium Fabric"},
title: "Premium Fabric",
},
{ {
value: "24h", value: "24h", title: "Fast Shipping"},
title: "Fast Shipping",
},
]} ]}
imageSrc="http://img.b2bpic.net/free-photo/medium-shot-asian-people-practicing-taekwondo_23-2150753763.jpg" imageSrc="http://img.b2bpic.net/free-photo/medium-shot-asian-people-practicing-taekwondo_23-2150753763.jpg"
imageAlt="karate black belt close up" imageAlt="karate black belt close up"
@@ -144,65 +105,29 @@ export default function LandingPage() {
</div> </div>
<div id="products" data-section="products"> <div id="products" data-section="products">
<ProductCardTwo <ProductCardThree
animationType="slide-up" animationType="slide-up"
textboxLayout="split" textboxLayout="split"
gridVariant="three-columns-all-equal-width" gridVariant="three-columns-all-equal-width"
useInvertedBackground={false} useInvertedBackground={false}
products={[ products={[
{ {
id: "p1", id: "p1", name: "Elite Kata Gi", price: "", imageSrc: "http://img.b2bpic.net/free-photo/karate-athlete-standing-ready_107420-64956.jpg", priceButtonProps: { text: "Contact to Order", href: "#contact" }
brand: "MIRAI",
name: "Elite Kata Gi",
price: "$150",
rating: 5,
reviewCount: "24",
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-woman-fighter-straighten-her-belt_23-2148322385.jpg",
}, },
{ {
id: "p2", id: "p2", name: "Training Kumite Gi", price: "", imageSrc: "http://img.b2bpic.net/free-photo/male-karate-fighter-training_613910-1888.jpg", priceButtonProps: { text: "Contact to Order", href: "#contact" }
brand: "MIRAI",
name: "Training Kumite Gi",
price: "$120",
rating: 5,
reviewCount: "18",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-woman-martial-arts-costume_23-2148324739.jpg",
}, },
{ {
id: "p3", id: "p3", name: "Sensei Classic Edition", price: "", imageSrc: "http://img.b2bpic.net/free-photo/determined-karate-athlete-focused_107420-65012.jpg", priceButtonProps: { text: "Contact to Order", href: "#contact" }
brand: "MIRAI",
name: "Sensei Classic Edition",
price: "$180",
rating: 5,
reviewCount: "12",
imageSrc: "http://img.b2bpic.net/free-photo/proud-karate-fighter-holding-black-belt_23-2148446199.jpg",
}, },
{ {
id: "p4", id: "p4", name: "Beginner Starter Gi", price: "", imageSrc: "http://img.b2bpic.net/free-photo/young-karate-practitioner-in-action_107420-64998.jpg", priceButtonProps: { text: "Contact to Order", href: "#contact" }
brand: "MIRAI",
name: "Beginner Starter Gi",
price: "$80",
rating: 4,
reviewCount: "45",
imageSrc: "http://img.b2bpic.net/free-photo/front-view-asian-boy-practicing-taekwondo_23-2150753769.jpg",
}, },
{ {
id: "p5", id: "p5", name: "Pro Master Gi", price: "", imageSrc: "http://img.b2bpic.net/free-photo/karate-master-striking-pose_107420-64972.jpg", priceButtonProps: { text: "Contact to Order", href: "#contact" }
brand: "MIRAI",
name: "Pro Master Gi",
price: "$210",
rating: 5,
reviewCount: "8",
imageSrc: "http://img.b2bpic.net/free-photo/karate-woman-showing-ok-sign_23-2148446224.jpg",
}, },
{ {
id: "p6", id: "p6", name: "Lightweight Sparring Gi", price: "", imageSrc: "http://img.b2bpic.net/free-photo/woman-practicing-karate-dynamic_107420-65005.jpg", priceButtonProps: { text: "Contact to Order", href: "#contact" }
brand: "MIRAI",
name: "Lightweight Sparring Gi",
price: "$100",
rating: 4,
reviewCount: "30",
imageSrc: "http://img.b2bpic.net/free-photo/female-fighter-martial-art-costume_23-2148324804.jpg",
}, },
]} ]}
title="Professional Collections" title="Professional Collections"
@@ -218,25 +143,13 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
metrics={[ metrics={[
{ {
id: "m1", id: "m1", value: "50+", title: "Dojos Served", description: "Clubs across the country", icon: Award,
value: "50+",
title: "Dojos Served",
description: "Clubs across the country",
icon: Award,
}, },
{ {
id: "m2", id: "m2", value: "1.2k", title: "Uniforms Sold", description: "Delivering quality daily", icon: Shield,
value: "1.2k",
title: "Uniforms Sold",
description: "Delivering quality daily",
icon: Shield,
}, },
{ {
id: "m3", id: "m3", value: "4.9", title: "Rating", description: "Customer satisfaction", icon: Star,
value: "4.9",
title: "Rating",
description: "Customer satisfaction",
icon: Star,
}, },
]} ]}
title="Trusted by Experts" title="Trusted by Experts"
@@ -250,45 +163,15 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
testimonials={[ testimonials={[
{ {
id: "t1", id: "t1", title: "Elite Quality", quote: "The best gi I've owned in 10 years of training.", name: "Hiroshi Tanaka", role: "Sensei", imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-attractive-male-standing-with-crossed-arms-isolated-white-background_181624-45641.jpg"},
title: "Elite Quality",
quote: "The best gi I've owned in 10 years of training.",
name: "Hiroshi Tanaka",
role: "Sensei",
imageSrc: "http://img.b2bpic.net/free-photo/closeup-shot-attractive-male-standing-with-crossed-arms-isolated-white-background_181624-45641.jpg",
},
{ {
id: "t2", id: "t2", title: "Perfect Fit", quote: "Excellent range of motion and very durable material.", name: "Sarah Jenkins", role: "Athlete", imageSrc: "http://img.b2bpic.net/free-photo/portrait-woman-fighter-ready-get-into-combat_23-2148322340.jpg"},
title: "Perfect Fit",
quote: "Excellent range of motion and very durable material.",
name: "Sarah Jenkins",
role: "Athlete",
imageSrc: "http://img.b2bpic.net/free-photo/portrait-woman-fighter-ready-get-into-combat_23-2148322340.jpg",
},
{ {
id: "t3", id: "t3", title: "Professional", quote: "Fast shipping and fantastic customer service.", name: "Kenji Sato", role: "Student", imageSrc: "http://img.b2bpic.net/free-photo/beautiful-woman-kimono-greeting-white_549566-575.jpg"},
title: "Professional",
quote: "Fast shipping and fantastic customer service.",
name: "Kenji Sato",
role: "Student",
imageSrc: "http://img.b2bpic.net/free-photo/beautiful-woman-kimono-greeting-white_549566-575.jpg",
},
{ {
id: "t4", id: "t4", title: "Top Tier", quote: "Gold embroidery looks amazing, quality is unmatched.", name: "Elena Rossi", role: "Champion", imageSrc: "http://img.b2bpic.net/free-photo/karate-player-man-posing-looking_107420-64916.jpg"},
title: "Top Tier",
quote: "Gold embroidery looks amazing, quality is unmatched.",
name: "Elena Rossi",
role: "Champion",
imageSrc: "http://img.b2bpic.net/free-photo/karate-player-man-posing-looking_107420-64916.jpg",
},
{ {
id: "t5", id: "t5", title: "Recommended", quote: "Everything I needed for my daily sessions.", name: "Marcus Wong", role: "Instructor", imageSrc: "http://img.b2bpic.net/free-photo/studio-portrait-bearded-brutal-karate-fighter-dressed-white-kimono-grey-background_613910-1890.jpg"},
title: "Recommended",
quote: "Everything I needed for my daily sessions.",
name: "Marcus Wong",
role: "Instructor",
imageSrc: "http://img.b2bpic.net/free-photo/studio-portrait-bearded-brutal-karate-fighter-dressed-white-kimono-grey-background_613910-1890.jpg",
},
]} ]}
title="Voice of the Practitioners" title="Voice of the Practitioners"
description="What our karate community has to say." description="What our karate community has to say."
@@ -302,22 +185,11 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
plans={[ plans={[
{ {
id: "bulk", id: "bulk", title: "Club Partner", price: "Custom", period: "/per order", features: [
title: "Club Partner", "Volume discounts", "Custom embroidery", "Priority support"],
price: "Custom",
period: "/per order",
features: [
"Volume discounts",
"Custom embroidery",
"Priority support",
],
button: { button: {
text: "Inquire Bulk", text: "Inquire Bulk", href: "#contact"},
href: "#contact", imageSrc: "http://img.b2bpic.net/free-photo/fashion-photo-young-magnificent-woman-white-shirt_158595-1011.jpg", imageAlt: "Fashion photo of young magnificent woman in white shirt"},
},
imageSrc: "http://img.b2bpic.net/free-photo/fashion-photo-young-magnificent-woman-white-shirt_158595-1011.jpg",
imageAlt: "Fashion photo of young magnificent woman in white shirt",
},
]} ]}
title="Bulk Orders for Dojos" title="Bulk Orders for Dojos"
description="Equip your entire club with professional-grade gear." description="Equip your entire club with professional-grade gear."
@@ -330,20 +202,11 @@ export default function LandingPage() {
useInvertedBackground={false} useInvertedBackground={false}
faqs={[ faqs={[
{ {
id: "f1", id: "f1", title: "How do I choose my size?", content: "Consult our size chart for precise fitting instructions."},
title: "How do I choose my size?",
content: "Consult our size chart for precise fitting instructions.",
},
{ {
id: "f2", id: "f2", title: "Is the material breathable?", content: "Yes, our uniforms are crafted for maximum airflow."},
title: "Is the material breathable?",
content: "Yes, our uniforms are crafted for maximum airflow.",
},
{ {
id: "f3", id: "f3", title: "How long does shipping take?", content: "Domestic orders arrive within 3-5 business days."},
title: "How long does shipping take?",
content: "Domestic orders arrive within 3-5 business days.",
},
]} ]}
title="Frequently Asked" title="Frequently Asked"
description="Common questions about our products." description="Common questions about our products."
@@ -357,14 +220,11 @@ export default function LandingPage() {
<ContactText <ContactText
useInvertedBackground={false} useInvertedBackground={false}
background={{ background={{
variant: "radial-gradient", variant: "radial-gradient"}}
}}
text="Ready to equip your journey? Contact us today for inquiries or custom bulk requests." text="Ready to equip your journey? Contact us today for inquiries or custom bulk requests."
buttons={[ buttons={[
{ {
text: "Send Message", text: "Send Message", href: "#"},
href: "#",
},
]} ]}
/> />
</div> </div>
@@ -373,29 +233,19 @@ export default function LandingPage() {
<FooterBase <FooterBase
columns={[ columns={[
{ {
title: "Company", title: "Company", items: [
items: [
{ {
label: "About", label: "About", href: "#about"},
href: "#about",
},
{ {
label: "Shop", label: "Shop", href: "#products"},
href: "#products",
},
], ],
}, },
{ {
title: "Support", title: "Support", items: [
items: [
{ {
label: "FAQ", label: "FAQ", href: "#faq"},
href: "#faq",
},
{ {
label: "Contact", label: "Contact", href: "#contact"},
href: "#contact",
},
], ],
}, },
]} ]}

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-open-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-inter), sans-serif; font-family: var(--font-libre-baskerville), serif;
} }

View File

@@ -12,13 +12,13 @@
--background: #0a0a0a; --background: #0a0a0a;
--card: #1a1a1a; --card: #1a1a1a;
--foreground: #ffffff; --foreground: #f5f5f5;
--primary-cta: #d4af37; --primary-cta: #d4af37;
--primary-cta-text: #000000; --primary-cta-text: #000000;
--secondary-cta: #ffffff; --secondary-cta: #1a1a1a;
--secondary-cta-text: #0a0a0a; --secondary-cta-text: #0a0a0a;
--accent: #d4af37; --accent: #b8860b;
--background-accent: #1a1a1a; --background-accent: #8b6914;
/* 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);