Bob AI: Updated contact section buttons with Email and WhatsApp link

This commit is contained in:
kudinDmitriyUp
2026-06-14 16:09:25 +00:00
parent 6ceaeeba0e
commit bd99faf45a
9 changed files with 273 additions and 142 deletions

View File

@@ -1,154 +1,36 @@
import AboutMediaOverlay from '@/components/sections/about/AboutMediaOverlay';
import ContactCta from '@/components/sections/contact/ContactCta';
import FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
import HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
import MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import TeamGlassCards from '@/components/sections/team/TeamGlassCards';
import TestimonialColumnMarqueeCards from '@/components/sections/testimonial/TestimonialColumnMarqueeCards';
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 MetricsSection from './HomePage/sections/Metrics';
import TeamSection from './HomePage/sections/Team';
import TestimonialsSection from './HomePage/sections/Testimonials';
import SocialProofSection from './HomePage/sections/SocialProof';
import ContactSection from './HomePage/sections/Contact';
export default function HomePage(): React.JSX.Element {
return (
<>
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroCenteredLogos
avatarsSrc={[
"http://img.b2bpic.net/free-photo/male-dj-grey-suit-listening-headphones-enjoying-music_114579-15960.jpg", "http://img.b2bpic.net/free-photo/middle-age-latin-businesswoman-smiling-happy-standing-with-arms-crossed-gesture-city_839833-17431.jpg", "http://img.b2bpic.net/free-photo/medium-shot-young-man-posing-black-white_23-2149411420.jpg", "http://img.b2bpic.net/free-photo/waist-up-confident-businessman-office_329181-19349.jpg"]}
avatarText="Trusted by 50+ creatives worldwide"
title="Mastering the Art of Cinematic Editing"
description="I help directors, agencies, and brands elevate their visual stories through expert post-production and creative editing."
primaryButton={{
text: "View Portfolio", href: "#features"}}
secondaryButton={{
text: "Contact Me", href: "#contact"}}
names={[
"Alice", "Bob", "Charlie", "David"]}
imageSrc="http://img.b2bpic.net/free-photo/blurry-wet-car-lights-from-inside-car_181624-586.jpg"
/>
</SectionErrorBoundary>
</div>
<>
<HeroSection />
<div id="about" data-section="about">
<SectionErrorBoundary name="about">
<AboutMediaOverlay
tag="About My Craft"
title="Storytelling at 24 Frames Per Second"
description="With over 5 years of experience in high-end video editing, I focus on precision, rhythm, and emotion to turn raw footage into compelling narratives that resonate."
primaryButton={{
text: "Get in Touch", href: "#contact"}}
imageSrc="http://img.b2bpic.net/free-photo/asian-woman-editing-music-video-her-living-room-studio_482257-124253.jpg"
/>
</SectionErrorBoundary>
</div>
<AboutSection />
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesMediaCarousel
tag="Selected Work"
title="Curated Portfolio"
description="A glimpse into my recent collaborations and project aesthetics."
items={[
{
title: "Brand Story", description: "High-end corporate narrative", buttonIcon: "Play", imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-cinema-movie-theater_23-2151928691.jpg"},
{
title: "Docu-Style", description: "Authentic storytelling piece", buttonIcon: "Play", imageSrc: "http://img.b2bpic.net/free-photo/young-man-video-creator-working-editing-movie-montage-project_482257-126299.jpg"},
{
title: "Commercial", description: "Product-focused ad campaign", buttonIcon: "Play", imageSrc: "http://img.b2bpic.net/free-photo/3d-black-white-background_23-2150499081.jpg"},
{
title: "Music Video", description: "Artistic visual expression", buttonIcon: "Play", imageSrc: "http://img.b2bpic.net/free-photo/lovely-couple-love-embracing-corridor_8353-7513.jpg"},
{
title: "Motion Graphic", description: "Custom animated assets", buttonIcon: "Play", imageSrc: "http://img.b2bpic.net/free-photo/abstract-light-painting-dark_52683-92739.jpg"},
{
title: "Sports Promo", description: "High-energy dynamic cut", buttonIcon: "Play", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-doing-sport-outdoors_23-2149142348.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<FeaturesSection />
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsMediaCards
tag="My Impact"
title="Numbers That Matter"
description="The metrics of success behind every project."
metrics={[
{
value: "500+", title: "Projects Completed", description: "Over half a thousand edits delivered", imageSrc: "http://img.b2bpic.net/free-photo/client-dark-vip-cinema-studio_23-2149500648.jpg"},
{
value: "10M+", title: "Total Views", description: "Impact across global platforms", imageSrc: "http://img.b2bpic.net/free-photo/focused-editor-woman-works-video-montage-creative-software_482257-125115.jpg"},
{
value: "98%", title: "Client Satisfaction", description: "Consistency across all deliveries", imageSrc: "http://img.b2bpic.net/free-photo/music-leisure-entertainment-youth-concept_53876-21298.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<MetricsSection />
<div id="team" data-section="team">
<SectionErrorBoundary name="team">
<TeamGlassCards
tag="The Core"
title="Creative Collaborative"
description="I work with a network of talented professionals to deliver end-to-end production needs."
members={[
{
name: "Alex Riv", role: "Senior Editor", imageSrc: "http://img.b2bpic.net/free-photo/man-filming-q-session-with-mobile-phone-answering-questions_482257-116712.jpg"},
{
name: "Jordan P.", role: "Colorist", imageSrc: "http://img.b2bpic.net/free-photo/closeup-smiling-beautiful-adult-businesswoman_1262-1760.jpg"},
{
name: "Sam K.", role: "Sound Design", imageSrc: "http://img.b2bpic.net/free-photo/spotlight-portrait-golden-hour_23-2151915122.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<TeamSection />
<div id="testimonials" data-section="testimonials">
<SectionErrorBoundary name="testimonials">
<TestimonialColumnMarqueeCards
tag="Kind Words"
title="What Clients Say"
description="Real feedback from the incredible brands I've helped."
testimonials={[
{
name: "Sarah J.", role: "CEO", quote: "Incredible turnaround and unmatched eye for detail.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-positive-woman-black-shirt-posing-white-background-high-quality-photo_114579-61008.jpg"},
{
name: "Michael C.", role: "CTO", quote: "Professional, creative, and always meets the deadline.", imageSrc: "http://img.b2bpic.net/free-photo/young-businesswoman-portrait-office_1262-1506.jpg"},
{
name: "Emily R.", role: "Marketing Dir", quote: "Transformed our vision into a cinematic reality.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-handsome-bearded-man-suit_23-2149705921.jpg"},
{
name: "David K.", role: "Product Mgr", quote: "The best editor I've worked with this year.", imageSrc: "http://img.b2bpic.net/free-photo/closeup-content-pretty-businesswoman-glasses_1262-1740.jpg"},
{
name: "Jane L.", role: "Creative Lead", quote: "Perfect collaboration, looking forward to the next one.", imageSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1675.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
<TestimonialsSection />
<div id="social-proof" data-section="social-proof">
<SectionErrorBoundary name="social-proof">
<SocialProofMarquee
tag="Trusted By"
title="Industry Partners"
description="Proud to collaborate with forward-thinking companies."
names={[
"Microsoft", "Google", "Apple", "Adobe", "Netflix", "Sony", "Nike"]}
/>
</SectionErrorBoundary>
</div>
<SocialProofSection />
<div id="contact" data-section="contact">
<SectionErrorBoundary name="contact">
<ContactCta
tag="Let's Collaborate"
text="Have a project in mind? Let's discuss how we can create something exceptional together."
primaryButton={{
text: "Book a Consultation", href: "mailto:me@example.com"}}
secondaryButton={{
text: "Send a Message", href: "#"}}
/>
</SectionErrorBoundary>
</div>
<ContactSection />
</>
);
}

View File

@@ -0,0 +1,23 @@
// 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="About My Craft"
title="Storytelling at 24 Frames Per Second"
description="With over 5 years of experience in high-end video editing, I focus on precision, rhythm, and emotion to turn raw footage into compelling narratives that resonate."
primaryButton={{
text: "Get in Touch", href: "#contact"}}
imageSrc="http://img.b2bpic.net/free-photo/asian-woman-editing-music-video-her-living-room-studio_482257-124253.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,53 @@
/* eslint-disable */
// @ts-nocheck — generated by catalog-eject; runtime-correct but TS strict-mode false-positives on inlined catalog body
import ScrollReveal from "@/components/ui/ScrollReveal";
import TextAnimation from "@/components/ui/TextAnimation";
import Button from "@/components/ui/Button";
const primaryButton = {
text: "Email Me",
href: "mailto:your@email.com"
};
const secondaryButton = {
text: "WhatsApp Me",
href: "https://wa.me/1234567890"
};
const ContactInline = () => {
return (
<section aria-label="Contact section" className="py-20">
<div className="w-content-width mx-auto">
<ScrollReveal variant="fade-blur">
<div className="flex flex-col items-center gap-8 md:gap-10 py-20 px-8 rounded card">
<div className="flex flex-col items-center gap-2">
<div className="px-3 py-1 mb-1 text-sm card rounded w-fit">
<p>{"Let's Collaborate"}</p>
</div>
<TextAnimation
text={"Have a project in mind? Let's discuss how we can create something exceptional together."}
variant="fade"
gradientText={true}
tag="h2"
className="md:max-w-8/10 text-5xl 2xl:text-6xl leading-[1.15] font-semibold text-center text-balance"
/>
<div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3">
<Button text={primaryButton.text} href={primaryButton.href} variant="primary" />
<Button text={secondaryButton.text} href={secondaryButton.href} variant="secondary" animationDelay={0.1} />
</div>
</div>
</div>
</ScrollReveal>
</div>
</section>
);
};
export default function ContactSection() {
return (
<div data-webild-section="contact" id="contact">
<ContactInline />
</div>
);
}

View File

@@ -0,0 +1,34 @@
// 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 FeaturesMediaCarousel from '@/components/sections/features/FeaturesMediaCarousel';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function FeaturesSection(): React.JSX.Element {
return (
<div id="features" data-section="features">
<SectionErrorBoundary name="features">
<FeaturesMediaCarousel
tag="Selected Work"
title="Curated Portfolio"
description="A glimpse into my recent collaborations and project aesthetics."
items={[
{
title: "Brand Story", description: "High-end corporate narrative", buttonIcon: "Play", imageSrc: "http://img.b2bpic.net/free-photo/3d-rendering-cinema-movie-theater_23-2151928691.jpg"},
{
title: "Docu-Style", description: "Authentic storytelling piece", buttonIcon: "Play", imageSrc: "http://img.b2bpic.net/free-photo/young-man-video-creator-working-editing-movie-montage-project_482257-126299.jpg"},
{
title: "Commercial", description: "Product-focused ad campaign", buttonIcon: "Play", imageSrc: "http://img.b2bpic.net/free-photo/3d-black-white-background_23-2150499081.jpg"},
{
title: "Music Video", description: "Artistic visual expression", buttonIcon: "Play", imageSrc: "http://img.b2bpic.net/free-photo/lovely-couple-love-embracing-corridor_8353-7513.jpg"},
{
title: "Motion Graphic", description: "Custom animated assets", buttonIcon: "Play", imageSrc: "http://img.b2bpic.net/free-photo/abstract-light-painting-dark_52683-92739.jpg"},
{
title: "Sports Promo", description: "High-energy dynamic cut", buttonIcon: "Play", imageSrc: "http://img.b2bpic.net/free-photo/medium-shot-man-doing-sport-outdoors_23-2149142348.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,29 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "hero" section.
import React from 'react';
import HeroCenteredLogos from '@/components/sections/hero/HeroCenteredLogos';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function HeroSection(): React.JSX.Element {
return (
<div id="hero" data-section="hero">
<SectionErrorBoundary name="hero">
<HeroCenteredLogos
avatarsSrc={[
"http://img.b2bpic.net/free-photo/male-dj-grey-suit-listening-headphones-enjoying-music_114579-15960.jpg", "http://img.b2bpic.net/free-photo/middle-age-latin-businesswoman-smiling-happy-standing-with-arms-crossed-gesture-city_839833-17431.jpg", "http://img.b2bpic.net/free-photo/medium-shot-young-man-posing-black-white_23-2149411420.jpg", "http://img.b2bpic.net/free-photo/waist-up-confident-businessman-office_329181-19349.jpg"]}
avatarText="Trusted by 50+ creatives worldwide"
title="Mastering the Art of Cinematic Editing"
description="I help directors, agencies, and brands elevate their visual stories through expert post-production and creative editing."
primaryButton={{
text: "View Portfolio", href: "#features"}}
secondaryButton={{
text: "Contact Me", href: "#contact"}}
names={[
"Alice", "Bob", "Charlie", "David"]}
imageSrc="http://img.b2bpic.net/free-photo/blurry-wet-car-lights-from-inside-car_181624-586.jpg"
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,28 @@
// 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 MetricsMediaCards from '@/components/sections/metrics/MetricsMediaCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function MetricsSection(): React.JSX.Element {
return (
<div id="metrics" data-section="metrics">
<SectionErrorBoundary name="metrics">
<MetricsMediaCards
tag="My Impact"
title="Numbers That Matter"
description="The metrics of success behind every project."
metrics={[
{
value: "500+", title: "Projects Completed", description: "Over half a thousand edits delivered", imageSrc: "http://img.b2bpic.net/free-photo/client-dark-vip-cinema-studio_23-2149500648.jpg"},
{
value: "10M+", title: "Total Views", description: "Impact across global platforms", imageSrc: "http://img.b2bpic.net/free-photo/focused-editor-woman-works-video-montage-creative-software_482257-125115.jpg"},
{
value: "98%", title: "Client Satisfaction", description: "Consistency across all deliveries", imageSrc: "http://img.b2bpic.net/free-photo/music-leisure-entertainment-youth-concept_53876-21298.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,22 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "social-proof" section.
import React from 'react';
import SocialProofMarquee from '@/components/sections/social-proof/SocialProofMarquee';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function SocialProofSection(): React.JSX.Element {
return (
<div id="social-proof" data-section="social-proof">
<SectionErrorBoundary name="social-proof">
<SocialProofMarquee
tag="Trusted By"
title="Industry Partners"
description="Proud to collaborate with forward-thinking companies."
names={[
"Microsoft", "Google", "Apple", "Adobe", "Netflix", "Sony", "Nike"]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,28 @@
// AUTO-GENERATED by per-section-migrate. Edit freely — Bob will treat this
// file as the canonical source for the "team" section.
import React from 'react';
import TeamGlassCards from '@/components/sections/team/TeamGlassCards';
import SectionErrorBoundary from "@/components/ui/SectionErrorBoundary";
export default function TeamSection(): React.JSX.Element {
return (
<div id="team" data-section="team">
<SectionErrorBoundary name="team">
<TeamGlassCards
tag="The Core"
title="Creative Collaborative"
description="I work with a network of talented professionals to deliver end-to-end production needs."
members={[
{
name: "Alex Riv", role: "Senior Editor", imageSrc: "http://img.b2bpic.net/free-photo/man-filming-q-session-with-mobile-phone-answering-questions_482257-116712.jpg"},
{
name: "Jordan P.", role: "Colorist", imageSrc: "http://img.b2bpic.net/free-photo/closeup-smiling-beautiful-adult-businesswoman_1262-1760.jpg"},
{
name: "Sam K.", role: "Sound Design", imageSrc: "http://img.b2bpic.net/free-photo/spotlight-portrait-golden-hour_23-2151915122.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
);
}

View File

@@ -0,0 +1,32 @@
// 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="Kind Words"
title="What Clients Say"
description="Real feedback from the incredible brands I've helped."
testimonials={[
{
name: "Sarah J.", role: "CEO", quote: "Incredible turnaround and unmatched eye for detail.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-positive-woman-black-shirt-posing-white-background-high-quality-photo_114579-61008.jpg"},
{
name: "Michael C.", role: "CTO", quote: "Professional, creative, and always meets the deadline.", imageSrc: "http://img.b2bpic.net/free-photo/young-businesswoman-portrait-office_1262-1506.jpg"},
{
name: "Emily R.", role: "Marketing Dir", quote: "Transformed our vision into a cinematic reality.", imageSrc: "http://img.b2bpic.net/free-photo/portrait-handsome-bearded-man-suit_23-2149705921.jpg"},
{
name: "David K.", role: "Product Mgr", quote: "The best editor I've worked with this year.", imageSrc: "http://img.b2bpic.net/free-photo/closeup-content-pretty-businesswoman-glasses_1262-1740.jpg"},
{
name: "Jane L.", role: "Creative Lead", quote: "Perfect collaboration, looking forward to the next one.", imageSrc: "http://img.b2bpic.net/free-photo/young-businessman-happy-expression_1194-1675.jpg"},
]}
/>
</SectionErrorBoundary>
</div>
);
}