Merge version_2_1781620726483 into main #2

Merged
bender merged 2 commits from version_2_1781620726483 into main 2026-06-16 14:42:31 +00:00
9 changed files with 351 additions and 272 deletions

View File

@@ -1,284 +1,36 @@
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import ContactCta from '@/components/sections/contact/ContactCta';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
import HeroOverlayMarquee from '@/components/sections/hero/HeroOverlayMarquee';
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import PricingLayeredCards from '@/components/sections/pricing/PricingLayeredCards';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
import { Award, Users, Zap } from "lucide-react";
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
// AUTO-GENERATED shell by per-section-migrate.
// Section bodies live in ./<PageBase>/sections/<X>.tsx. Edit the section
// files directly. Non-block content (wrappers, non-inlinable sections) is
// preserved inline; extracted section blocks become <XSection/> refs.
export default function HomePage() {
import React from 'react';
import HeroSection from './HomePage/sections/Hero';
import AboutSection from './HomePage/sections/About';
import FeaturesSection from './HomePage/sections/Features';
import ProductsSection from './HomePage/sections/Products';
import PricingSection from './HomePage/sections/Pricing';
import MetricsSection from './HomePage/sections/Metrics';
import TestimonialsSection from './HomePage/sections/Testimonials';
import ContactSection from './HomePage/sections/Contact';
export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroOverlayMarquee
tag="Jakarta's Premier Academy"
title="Master the Art of Coffee"
description="Transform your passion into a professional career with hands-on training at BARISTA.ID Academy Jakarta."
primaryButton={{
text: "Explore Courses",
href: "#courses",
}}
secondaryButton={{
text: "Contact Us",
href: "#contact",
}}
items={[
{
text: "Professional Certification",
icon: Award,
},
{
text: "Hands-on Experience",
icon: Zap,
},
{
text: "Industry Experts",
icon: Users,
},
]}
imageSrc="http://img.b2bpic.net/free-photo/close-up-hand-holding-coffee-cup_23-2148865587.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutMediaOverlay
tag="Our Philosophy"
title="Where Passion Meets Craft"
description="BARISTA.ID Academy Jakarta provides a unique environment for aspiring baristas to learn the science and art of specialty coffee under the guidance of industry masters."
imageSrc="http://img.b2bpic.net/free-photo/cappuccino-bar_23-2147798085.jpg?_wi=1"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesTaggedCards
tag="Curriculum"
title="Specialized Training Paths"
description="We offer comprehensive courses designed for every skill level, from hobbyist to professional barista."
items={[
{
tag: "Beginner",
title: "Fundamentals of Coffee",
description: "Master extraction basics and machine operation.",
primaryButton: {
text: "Join Class",
href: "#",
},
imageSrc: "http://img.b2bpic.net/free-photo/close-up-hands-preparing-drink-with-milk_23-2148865605.jpg",
},
{
tag: "Advanced",
title: "Latte Art & Design",
description: "Perfect your pours with creative techniques.",
primaryButton: {
text: "Join Class",
href: "#",
},
imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-barista-wearing-mask_23-2148892846.jpg",
},
{
tag: "Pro",
title: "Advanced Roasting",
description: "Understand bean profiles and complex roasting.",
primaryButton: {
text: "Join Class",
href: "#",
},
imageSrc: "http://img.b2bpic.net/free-photo/girl-drinking-hot-tea-mulled-wine_329181-5782.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="products" data-section="products">
<SectionErrorBoundary name="products">
<FeaturesImageBento
tag="Shop Equipment"
title="Professional Tools"
description="Essential gear for your coffee journey."
items={[
{
title: "Filter Kits",
description: "Manual brewing essentials",
imageSrc: "http://img.b2bpic.net/free-photo/coffee-maker-machine-table_23-2148937230.jpg",
},
{
title: "Precision Grinders",
description: "Professional output",
imageSrc: "http://img.b2bpic.net/free-photo/antique-coffee-grinder-with-coffee-beans_1232-1356.jpg",
},
{
title: "Milk Frothers",
description: "Easy texture",
imageSrc: "http://img.b2bpic.net/free-photo/cocoa-close-up-picture-womans-hands-pouring-cocoa-into-glass_259150-58656.jpg",
},
{
title: "Leather Aprons",
description: "Pro durability",
imageSrc: "http://img.b2bpic.net/free-photo/side-view-male-making-coffee_23-2148366603.jpg",
},
{
title: "House Beans",
description: "Roasted in Jakarta",
imageSrc: "http://img.b2bpic.net/free-photo/roasted-coffee-beans-coffee-bean-shaped-cookies_114579-6544.jpg",
},
{
title: "Brewing Kits",
description: "Complete setup",
imageSrc: "http://img.b2bpic.net/free-photo/view-process-making-pressed-coffee_23-2149709932.jpg",
},
{
title: "Tampers",
description: "Precision extraction",
imageSrc: "http://img.b2bpic.net/free-photo/ordered-composition-baking-tools_23-2150096552.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<ProductsSection />
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingLayeredCards
tag="Our Plans"
title="Invest in Your Career"
description="Choose a program tailored to your ambition."
plans={[
{
tag: "Standard",
price: "Rp 2.500.000",
description: "Fundamentals Course",
primaryButton: {
text: "Enroll",
href: "#",
},
features: [
"Machine Basics",
"Espresso Science",
"Manual Brew",
],
},
{
tag: "Elite",
price: "Rp 4.500.000",
description: "Advanced Professional",
primaryButton: {
text: "Enroll",
href: "#",
},
features: [
"Advanced Latte Art",
"Roasting Basics",
"Shop Management",
],
},
]}
/>
</SectionErrorBoundary>
</div>
<PricingSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsFeatureCards
tag="Our Success"
title="Impact in Numbers"
description="We are proud of the community we've built in the heart of Jakarta."
metrics={[
{
value: "500+",
title: "Certified Graduates",
features: [
"Success in industry",
"High employability",
],
},
{
value: "10+",
title: "Expert Instructors",
features: [
"Years of experience",
"Award-winning",
],
},
{
value: "95%",
title: "Job Placement",
features: [
"Career support",
"Networking",
],
},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialColumnMarqueeCards
tag="Testimonials"
title="Our Graduate Success"
description="Hear from students who built their dream careers with us."
testimonials={[
{
name: "Andi S.",
role: "Head Barista",
quote: "The academy changed my life. I went from novice to lead barista in months.",
imageSrc: "http://img.b2bpic.net/free-photo/small-business-owner-drinking-coffee_23-2149458139.jpg",
},
{
name: "Budi W.",
role: "Cafe Owner",
quote: "Practical, hands-on, and industry focused. Best investment ever.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-happy-businesswoman-white-blouse-smiling-cheerfully-as-sitting-cafe_197531-23018.jpg",
},
{
name: "Citra L.",
role: "Roaster",
quote: "The roasting program at BARISTA.ID is unmatched in Jakarta.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-barista-smelling-coffee_23-2148865616.jpg",
},
{
name: "Deni P.",
role: "Junior Barista",
quote: "I feel confident at the espresso bar thanks to the instructors here.",
imageSrc: "http://img.b2bpic.net/free-photo/enthusiastic-young-asian-woman-barista-apron-looking-amazed-clap-hands-smiling-standing_1258-199218.jpg",
},
{
name: "Eka M.",
role: "Lead Trainer",
quote: "Outstanding environment for professional growth in coffee arts.",
imageSrc: "http://img.b2bpic.net/free-photo/young-barista-black-working-suit-with-ingredients-coffee-equipment-brown-coffee-seeds-white_140725-14674.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Enroll Now"
text="Start your journey at BARISTA.ID Academy Jakarta today. Limited slots per intake."
primaryButton={{
text: "Register Now",
href: "#",
}}
secondaryButton={{
text: "Contact Support",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "about" section.
import React from 'react';
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function AboutSection(): React.JSX.Element {
return (
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutMediaOverlay
tag="Filosofi Kami"
title="Tempat Bertemunya Gairah dan Keahlian"
description="BARISTA.ID Academy Jakarta menyediakan lingkungan yang unik bagi calon barista untuk mempelajari ilmu dan seni kopi spesialti di bawah bimbingan para ahli industri."
imageSrc="http://img.b2bpic.net/free-photo/cappuccino-bar_23-2147798085.jpg?_wi=1"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,27 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "contact" section.
import React from 'react';
import ContactCta from '@/components/sections/contact/ContactCta';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ContactSection(): React.JSX.Element {
return (
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Enroll Now"
text="Start your journey at BARISTA.ID Academy Jakarta today. Limited slots per intake."
primaryButton={{
text: "Register Now",
href: "#",
}}
secondaryButton={{
text: "Contact Support",
href: "#",
}}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,21 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "features" section.
import React from 'react';
import FeaturesTaggedCards from '@/components/sections/features/FeaturesTaggedCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesTaggedCards
tag="Kurikulum"
title="Jalur Pelatihan Khusus"
description="Kami menawarkan kursus komprehensif yang dirancang untuk setiap tingkat keahlian, dari penghobi hingga barista profesional."
items={[{"description":"Kuasai dasar-dasar ekstraksi dan pengoperasian mesin.","tag":"Pemula","primaryButton":{"text":"Ikuti Kelas","href":"#"},"imageSrc":"http://img.b2bpic.net/free-photo/close-up-hands-preparing-drink-with-milk_23-2148865605.jpg","title":"Dasar-dasar Kopi"},{"title":"Seni & Desain Latte","imageSrc":"http://img.b2bpic.net/free-photo/medium-shot-barista-wearing-mask_23-2148892846.jpg","tag":"Lanjutan","primaryButton":{"text":"Ikuti Kelas","href":"#"},"description":"Sempurnakan tuangan Anda dengan teknik kreatif."},{"title":"Pemanggangan Lanjutan","imageSrc":"http://img.b2bpic.net/free-photo/girl-drinking-hot-tea-mulled-wine_329181-5782.jpg","description":"Pahami profil biji kopi dan pemanggangan kompleks.","tag":"Pro","primaryButton":{"href":"#","text":"Ikuti Kelas"}}]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,53 @@
import { Coffee, Star, Award } from "lucide-react";
import Button from "@/components/ui/Button";
import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
import Tag from "@/components/ui/Tag";
export default function HeroSection() {
return (
<div data-webild-section="HeroCentered">
<section aria-label="Hero section" className="relative overflow-hidden">
<div className="absolute -z-10 w-[600px] h-[600px] rounded-full bg-primary-cta/10 blur-3xl top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2" />
<div className="flex flex-col items-center gap-8 mx-auto w-content-width text-center">
<div className="flex flex-wrap justify-center gap-3">
<Tag text="Artisanal Coffee" icon={Coffee} />
<Tag text="Expert Baristas" icon={Star} />
<Tag text="Certified Academy" icon={Award} />
</div>
<TextAnimation
text="BARISTA.ID Academy Jakarta"
variant="fade-blur"
gradientText={true}
tag="h1"
className="md:max-w-9/10 text-6xl md:text-7xl lg:text-8xl leading-[1.1] font-bold tracking-tight text-balance"
/>
<TextAnimation
text="Master the art of artisanal coffee. Join the premier barista academy in Jakarta and elevate your brewing skills to a professional level."
variant="fade-blur"
gradientText={false}
tag="p"
className="md:max-w-7/10 text-lg md:text-xl leading-snug text-muted-foreground text-balance"
/>
<div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-4">
<Button text="Explore Courses" href="#courses" variant="primary" />
<Button text="About Us" href="#about" variant="secondary" animationDelay={0.1} />
</div>
<div className="w-full mt-8 p-px card rounded-xl overflow-hidden">
<div className="relative w-full aspect-video rounded-lg overflow-hidden">
<ImageOrVideo
imageSrc="http://img.b2bpic.net/free-photo/cappuccino-bar_23-2147798085.jpg?_wi=2"
className="absolute inset-0 w-full h-full object-cover"
/>
</div>
</div>
</div>
</section>
</div>
);
}

View File

@@ -0,0 +1,46 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "metrics" section.
import React from 'react';
import MetricsFeatureCards from '@/components/sections/metrics/MetricsFeatureCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MetricsSection(): React.JSX.Element {
return (
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsFeatureCards
tag="Our Success"
title="Impact in Numbers"
description="We are proud of the community we've built in the heart of Jakarta."
metrics={[
{
value: "500+",
title: "Certified Graduates",
features: [
"Success in industry",
"High employability",
],
},
{
value: "10+",
title: "Expert Instructors",
features: [
"Years of experience",
"Award-winning",
],
},
{
value: "95%",
title: "Job Placement",
features: [
"Career support",
"Networking",
],
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,50 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "pricing" section.
import React from 'react';
import PricingLayeredCards from '@/components/sections/pricing/PricingLayeredCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function PricingSection(): React.JSX.Element {
return (
<div id="pricing" data-section="pricing">
<SectionErrorBoundary name="pricing">
<PricingLayeredCards
tag="Our Plans"
title="Invest in Your Career"
description="Choose a program tailored to your ambition."
plans={[
{
tag: "Standard",
price: "Rp 2.500.000",
description: "Fundamentals Course",
primaryButton: {
text: "Enroll",
href: "#",
},
features: [
"Machine Basics",
"Espresso Science",
"Manual Brew",
],
},
{
tag: "Elite",
price: "Rp 4.500.000",
description: "Advanced Professional",
primaryButton: {
text: "Enroll",
href: "#",
},
features: [
"Advanced Latte Art",
"Roasting Basics",
"Shop Management",
],
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,57 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "products" section.
import React from 'react';
import FeaturesImageBento from '@/components/sections/features/FeaturesImageBento';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function ProductsSection(): React.JSX.Element {
return (
<div id="products" data-section="products">
<SectionErrorBoundary name="products">
<FeaturesImageBento
tag="Shop Equipment"
title="Professional Tools"
description="Essential gear for your coffee journey."
items={[
{
title: "Filter Kits",
description: "Manual brewing essentials",
imageSrc: "http://img.b2bpic.net/free-photo/coffee-maker-machine-table_23-2148937230.jpg",
},
{
title: "Precision Grinders",
description: "Professional output",
imageSrc: "http://img.b2bpic.net/free-photo/antique-coffee-grinder-with-coffee-beans_1232-1356.jpg",
},
{
title: "Milk Frothers",
description: "Easy texture",
imageSrc: "http://img.b2bpic.net/free-photo/cocoa-close-up-picture-womans-hands-pouring-cocoa-into-glass_259150-58656.jpg",
},
{
title: "Leather Aprons",
description: "Pro durability",
imageSrc: "http://img.b2bpic.net/free-photo/side-view-male-making-coffee_23-2148366603.jpg",
},
{
title: "House Beans",
description: "Roasted in Jakarta",
imageSrc: "http://img.b2bpic.net/free-photo/roasted-coffee-beans-coffee-bean-shaped-cookies_114579-6544.jpg",
},
{
title: "Brewing Kits",
description: "Complete setup",
imageSrc: "http://img.b2bpic.net/free-photo/view-process-making-pressed-coffee_23-2149709932.jpg",
},
{
title: "Tampers",
description: "Precision extraction",
imageSrc: "http://img.b2bpic.net/free-photo/ordered-composition-baking-tools_23-2150096552.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,52 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "testimonials" section.
import React from 'react';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TestimonialsSection(): React.JSX.Element {
return (
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialColumnMarqueeCards
tag="Testimonials"
title="Our Graduate Success"
description="Hear from students who built their dream careers with us."
testimonials={[
{
name: "Andi S.",
role: "Head Barista",
quote: "The academy changed my life. I went from novice to lead barista in months.",
imageSrc: "http://img.b2bpic.net/free-photo/small-business-owner-drinking-coffee_23-2149458139.jpg",
},
{
name: "Budi W.",
role: "Cafe Owner",
quote: "Practical, hands-on, and industry focused. Best investment ever.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-portrait-happy-businesswoman-white-blouse-smiling-cheerfully-as-sitting-cafe_197531-23018.jpg",
},
{
name: "Citra L.",
role: "Roaster",
quote: "The roasting program at BARISTA.ID is unmatched in Jakarta.",
imageSrc: "http://img.b2bpic.net/free-photo/close-up-barista-smelling-coffee_23-2148865616.jpg",
},
{
name: "Deni P.",
role: "Junior Barista",
quote: "I feel confident at the espresso bar thanks to the instructors here.",
imageSrc: "http://img.b2bpic.net/free-photo/enthusiastic-young-asian-woman-barista-apron-looking-amazed-clap-hands-smiling-standing_1258-199218.jpg",
},
{
name: "Eka M.",
role: "Lead Trainer",
quote: "Outstanding environment for professional growth in coffee arts.",
imageSrc: "http://img.b2bpic.net/free-photo/young-barista-black-working-suit-with-ingredients-coffee-equipment-brown-coffee-seeds-white_140725-14674.jpg",
},
]}
/>
</SectionErrorBoundary>
</div>
);
}