30 Commits

Author SHA1 Message Date
0de34608c8 Update src/app/work/page.tsx 2026-03-10 17:59:31 +00:00
96d439b505 Merge version_20 into main
Merge version_20 into main
2026-03-10 17:49:31 +00:00
6c72f51c42 Update src/app/page.tsx 2026-03-10 17:49:23 +00:00
f2b31ce705 Merge version_20 into main
Merge version_20 into main
2026-03-10 17:35:00 +00:00
4045629ca8 Update src/app/work/page.tsx 2026-03-10 17:34:56 +00:00
d0558cf7b7 Merge version_19 into main
Merge version_19 into main
2026-03-10 12:16:48 +00:00
f29702ca3d Add src/app/work/page.tsx 2026-03-10 12:16:44 +00:00
aaf0434362 Update src/app/page.tsx 2026-03-10 12:16:44 +00:00
baf09ef455 Update src/app/page.tsx 2026-03-10 12:12:13 +00:00
caf19a75b5 Add src/app/contact/page.tsx 2026-03-10 12:12:12 +00:00
41c98c4f7a fix 2026-03-10 12:09:24 +00:00
8e075e033b Fix 2026-03-10 11:50:58 +00:00
e0ed620731 Merge version_18 into main
Merge version_18 into main
2026-03-10 10:26:24 +00:00
d8e4ab3766 Update src/app/page.tsx 2026-03-10 10:26:20 +00:00
eaa9708b6a Update src/app/contact/page.tsx 2026-03-10 10:26:20 +00:00
72ef11caff Fix 2026-03-10 10:14:14 +00:00
142ae79f34 Update src/app/page.tsx 2026-03-09 10:57:18 +00:00
b7f7aecc75 Update src/app/layout.tsx 2026-03-09 10:57:18 +00:00
fc8e481b50 Update src/app/contact/page.tsx 2026-03-09 10:57:17 +00:00
b5016b084f Switch to version 12: modified src/app/page.tsx 2026-03-07 22:03:33 +00:00
81ebd9ba22 Switch to version 12: modified src/app/layout.tsx 2026-03-07 22:03:32 +00:00
a804a049ba Switch to version 12: modified src/app/contact/page.tsx 2026-03-07 22:03:32 +00:00
aedd678d11 Merge version_14 into main
Merge version_14 into main
2026-03-07 22:02:53 +00:00
be22251d05 Update src/app/page.tsx 2026-03-07 22:02:49 +00:00
3231da3b19 Update src/app/layout.tsx 2026-03-07 22:02:49 +00:00
efd2ec196c Update src/app/contact/page.tsx 2026-03-07 22:02:48 +00:00
a7ba662e66 Merge version_14 into main
Merge version_14 into main
2026-03-07 22:01:46 +00:00
8de0bb4dff Update src/app/page.tsx 2026-03-07 22:01:42 +00:00
bde0f158b7 Update src/app/contact/page.tsx 2026-03-07 22:01:42 +00:00
ce9b59d89e Merge version_13 into main
Merge version_13 into main
2026-03-07 22:01:03 +00:00
3 changed files with 463 additions and 190 deletions

View File

@@ -1,123 +0,0 @@
"use client";
import { ThemeProvider } from "@/components/theme/ThemeProvider";
import NavbarLayoutFloatingInline from "@/components/navbar/NavbarLayoutFloatingInline";
import { useState } from "react";
const ContactPage = () => {
const [formData, setFormData] = useState({
name: "", email: "", message: ""});
const handleInputChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {
const { name, value } = e.target;
setFormData((prev) => ({ ...prev, [name]: value }));
};
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
// Handle form submission
console.log("Form submitted:", formData);
setFormData({ name: "", email: "", message: "" });
};
return (
<ThemeProvider
defaultButtonVariant="hover-magnetic"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="none"
cardStyle="solid"
primaryButtonStyle="gradient"
secondaryButtonStyle="glass"
headingFontWeight="bold"
>
<NavbarLayoutFloatingInline
navItems={[
{ name: "Home", id: "/" },
{ name: "About", id: "#about" },
{ name: "Services", id: "#services" },
{ name: "Contact", id: "/contact" },
]}
brandName="billiclipd"
button={{
text: "Book a Call", href: "/contact"}}
animateOnLoad={true}
/>
<div id="contact-page" data-section="contact-page" className="pt-40 pb-20 px-4">
<div className="max-w-2xl mx-auto">
<h1 className="text-5xl font-bold mb-4 text-center">Get in Touch</h1>
<p className="text-lg text-center mb-12 opacity-75">
Ready to turn your content into viral clips? Fill out the form below and our team will get back to you within 24 hours.
</p>
<form onSubmit={handleSubmit} className="space-y-6 bg-card p-8 rounded-lg border border-accent">
<div>
<label htmlFor="name" className="block text-sm font-medium mb-2">
Full Name
</label>
<input
type="text"
id="name"
name="name"
value={formData.name}
onChange={handleInputChange}
required
className="w-full px-4 py-2 rounded border border-accent bg-background text-foreground focus:outline-none focus:border-primary-cta"
placeholder="Your name"
/>
</div>
<div>
<label htmlFor="email" className="block text-sm font-medium mb-2">
Email Address
</label>
<input
type="email"
id="email"
name="email"
value={formData.email}
onChange={handleInputChange}
required
className="w-full px-4 py-2 rounded border border-accent bg-background text-foreground focus:outline-none focus:border-primary-cta"
placeholder="your@email.com"
/>
</div>
<div>
<label htmlFor="message" className="block text-sm font-medium mb-2">
Message
</label>
<textarea
id="message"
name="message"
value={formData.message}
onChange={handleInputChange}
required
rows={5}
className="w-full px-4 py-2 rounded border border-accent bg-background text-foreground focus:outline-none focus:border-primary-cta resize-none"
placeholder="Tell us about your project..."
/>
</div>
<button
type="submit"
className="w-full bg-primary-cta text-primary-cta-text font-semibold py-3 rounded hover:opacity-90 transition-opacity"
>
Send Message
</button>
</form>
<div className="mt-12 text-center">
<p className="text-sm opacity-60">Or reach out to us directly at:</p>
<p className="text-lg font-semibold mt-2">hello@billiclipd.com</p>
</div>
</div>
</div>
</ThemeProvider>
);
};
export default ContactPage;

View File

@@ -1,73 +1,287 @@
"use client";
import { ThemeProvider } from "@/components/theme/ThemeProvider";
import NavbarLayoutFloatingInline from "@/components/navbar/NavbarLayoutFloatingInline";
import HeroCentered from "@/components/sections/hero/HeroCentered";
import ContactCTA from "@/components/sections/contact/ContactCTA";
import { Mail } from "lucide-react";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarLayoutFloatingOverlay from "@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay";
import HeroSplitDoubleCarousel from "@/components/sections/hero/HeroSplitDoubleCarousel";
import SocialProofOne from "@/components/sections/socialProof/SocialProofOne";
import FeatureCardSix from "@/components/sections/feature/FeatureCardSix";
import MetricCardOne from "@/components/sections/metrics/MetricCardOne";
import TextSplitAbout from "@/components/sections/about/TextSplitAbout";
import FaqBase from "@/components/sections/faq/FaqBase";
import ContactText from "@/components/sections/contact/ContactText";
import FooterLogoEmphasis from "@/components/sections/footer/FooterLogoEmphasis";
import ProductCardFour from "@/components/sections/product/ProductCardFour";
import {
Sparkles,
TrendingUp,
Zap,
BarChart3,
Trophy,
HelpCircle,
Eye,
Users,
Award,
} from "lucide-react";
const HomePage = () => {
return (
<ThemeProvider
defaultButtonVariant="hover-magnetic"
defaultTextAnimation="entrance-slide"
borderRadius="rounded"
contentWidth="medium"
sizing="medium"
background="none"
cardStyle="solid"
primaryButtonStyle="gradient"
secondaryButtonStyle="glass"
headingFontWeight="bold"
>
<NavbarLayoutFloatingInline
navItems={[
{ name: "Home", id: "/" },
{ name: "About", id: "#about" },
{ name: "Services", id: "#services" },
{ name: "Contact", id: "/contact" },
]}
brandName="billiclipd"
button={{
text: "Book a Call", href: "/contact"}}
animateOnLoad={true}
/>
export default function LandingPage() {
return (
<ThemeProvider
defaultButtonVariant="bounce-effect"
defaultTextAnimation="entrance-slide"
borderRadius="pill"
contentWidth="mediumLarge"
sizing="mediumSizeLargeTitles"
background="noise"
cardStyle="soft-shadow"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="solid"
headingFontWeight="light"
>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
brandName="billiscales"
navItems={[
{ name: "Case Studies", id: "case-studies" },
{ name: "About", id: "about" },
{ name: "My Work", id: "work" },
{ name: "Process", id: "process" },
{ name: "Contact", id: "contact" },
]}
button={{
text: "Book A Call", href: "https://calendly.com/ibbiyousuf420/30min"
}}
/>
</div>
<div id="hero" data-section="hero">
<HeroCentered
background={{ variant: "plain" }}
avatars={[
{ src: "asset://avatar1", alt: "User 1" },
{ src: "asset://avatar2", alt: "User 2" },
{ src: "asset://avatar3", alt: "User 3" },
]}
avatarText="Trusted by content creators"
title="Turn Longform into Viral Clips"
description="Professional clip editing service. We transform your YouTube videos, podcasts, and streams into TikTok, Reels, and Shorts that drive engagement."
buttons={[
{ text: "Get Started", href: "/contact" },
{ text: "Learn More", href: "#services" },
]}
buttonAnimation="slide-up"
/>
</div>
<div id="hero" data-section="hero">
<HeroSplitDoubleCarousel
title="Turn LongForm Into Viral Clips"
description="I transform your best podcast, stream, and video moments into high-retention shortform content optimized for TikTok, Instagram Reels, and YouTube Shorts. More views, more followers, more growth—no ad spend required."
tag="Shortform Specialist"
tagIcon={Sparkles}
tagAnimation="slide-up"
background={{ variant: "glowing-orb" }}
leftCarouselItems={[
{
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1772881146961-mr1xedhd.jpg?_wi=1", imageAlt: "TikTok viral clip example"
},
{
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1772881146961-h65hjshx.jpg?_wi=1", imageAlt: "Professional editing dashboard"
},
{
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1772881146961-1pjxjkc4.jpg?_wi=1", imageAlt: "Instagram Reels clip"
},
]}
rightCarouselItems={[
{
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1772881750051-0ym5nbmx.jpg?_wi=1", imageAlt: "YouTube Shorts content"
},
{
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1772881146961-mr1xedhd.jpg?_wi=2", imageAlt: "Trending clips montage"
},
{
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1772881146961-h65hjshx.jpg?_wi=2", imageAlt: "Editing interface"
},
]}
carouselPosition="right"
buttons={[
{ text: "See My Work", href: "/work" },
{ text: "Book A Call", href: "https://calendly.com/ibbiyousuf420/30min" },
]}
buttonAnimation="slide-up"
/>
</div>
<div id="contact-cta" data-section="contact-cta">
<ContactCTA
tag="Ready to Go Viral?"
tagIcon={Mail}
title="Let's Turn Your Content into Clips"
description="Our team of expert editors is ready to help you maximize your content's reach. Book a consultation call with us today."
buttons={[
{ text: "Book a Call", href: "/contact" },
{ text: "View Our Work", href: "#services" },
]}
background={{ variant: "plain" }}
useInvertedBackground={false}
/>
</div>
</ThemeProvider>
);
};
<div id="social-proof" data-section="social-proof">
<SocialProofOne
title="Trusted by Top Creators and Brands"
description="Over 10M+ views generated. I've powered viral content for artists, influencers, TV shows, and products reaching hundreds of millions of followers."
tag="10M+ Views Generated"
tagIcon={TrendingUp}
tagAnimation="slide-up"
textboxLayout="default"
useInvertedBackground={false}
names={[
"Brandon Clark 600K Followers", "Sexyishaan 60K Followers", "Ericcouu 300K Followers", "Brandon Clark 600K Followers", "Sexyishaan 60K Followers", "Ericcouu 300K Followers", "Brandon Clark 600K Followers", "Sexyishaan 60K Followers"
]}
speed={40}
showCard={true}
/>
</div>
export default HomePage;
<div id="process" data-section="process">
<FeatureCardSix
title="The Process"
description="Launching your private clipping project has never been easier. Say goodbye to slow agencies—with my personalized clipping methodology, you launch, scale, and analyze viral content in record time with direct team access."
tag="Proven Workflow"
tagIcon={Zap}
tagAnimation="slide-up"
textboxLayout="default"
useInvertedBackground={false}
features={[
{
id: 1,
title: "Step #1", description: "Book an Intro Call. We start with a quick intro call to understand your goals, target audience, and creative direction. From there, my team builds a custom private clipping project designed to maximize reach and engagement — whether you're a brand, artist, creator, or product.", buttons: [{ text: "Start Your Project", href: "https://calendly.com/ibbiyousuf420/30min" }],
},
{
id: 2,
title: "Our Team Starts Posting", description: "Once we align on strategy, personalized content gets distributed across TikTok, Instagram Reels, YouTube Shorts, and more—simultaneously—with my proven optimization techniques. Direct team management ensures every clip reflects your brand's vision."
},
{
id: 3,
title: "Track Real-Time Results", description: "Watch your clips climb trending charts in real-time. Full transparency with detailed analytics showing views, engagement, growth metrics, and ROI. Optimize on the fly based on what's working with direct collaboration and personalized guidance."
},
]}
/>
</div>
<div id="metrics" data-section="metrics">
<MetricCardOne
title="Measurable Results That Speak"
description="Track the impact of your private clipping projects with clear, actionable metrics from our dedicated team."
tag="Performance Metrics"
tagIcon={BarChart3}
tagAnimation="slide-up"
textboxLayout="default"
useInvertedBackground={false}
metrics={[
{
id: "1", value: "10M ", title: "Views Generated", description: "Average Views per private project", icon: Eye,
},
{
id: "2", value: "1000 ", title: "Expert Team", description: "Dedicated clipping specialists for your projects", icon: Users,
},
{
id: "3", value: "💯 ", title: "Organic Growth", description: "Zero ad spend required—pure algorithmic reach", icon: TrendingUp,
},
{
id: "4", value: "3-5x", title: "Avg ROI", description: "Return on investment vs traditional marketing", icon: Award,
},
]}
gridVariant="uniform-all-items-equal"
animationType="slide-up"
/>
</div>
<div id="case-studies" data-section="case-studies">
<ProductCardFour
title="Client Success Stories"
description="From independent creators to global brands—here's the impact of our personalized clipping and team management approach."
tag="Proven Results"
tagIcon={Trophy}
textboxLayout="default"
useInvertedBackground={false}
products={[
{
id: "bbno", name: "Ericcouu - Influencer", price: "", variant: "Viral Growth", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1772881146961-h65hjshx.jpg", imageAlt: "Ericcouu success story"
},
{
id: "dhar-mann", name: "Brandon Clark - Gym Coach", price: "", variant: "Followers | Trending Content", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1772881146961-mr1xedhd.jpg", imageAlt: "Brandon Clark success story"
},
{
id: "paul-american", name: "PB Investing - Trader", price: "", variant: "Followers | Trading Content", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1772881750051-0ym5nbmx.jpg?_wi=2", imageAlt: "PB Investing success story"
},
{
id: "tate-mccrae", name: "Sexyishaan - Influencer", price: "", variant: "Entertainment", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1772881146961-1pjxjkc4.jpg", imageAlt: "Sexyishaan success story"
},
]}
gridVariant="uniform-all-items-equal"
animationType="slide-up"
/>
</div>
<div id="about" data-section="about">
<TextSplitAbout
title="Why you need Clipping"
description={[
"I started private clipping work because I saw creators and brands struggling to repurpose their best content. They were sitting on goldmines—podcasts, streams, videos—but lacked the time, skills, or network to turn them into viral clips.", "Now, with a dedicated team of expert clippers and a proven personalized methodology, I've helped launch private projects that generated over 10 Million views. No agencies. No gatekeeping. Just direct collaboration and results.", "Every client I work with gets direct access to a team obsessed with viral growth, algorithmic optimization, and transparent metrics. Your success is my success, and my team is committed to your project's unique vision."
]}
useInvertedBackground={false}
showBorder={false}
buttons={[{ text: "Schedule Consultation", href: "https://calendly.com/ibbiyousuf420/30min" }]}
/>
</div>
<div id="faq" data-section="faq">
<FaqBase
title="Frequently Asked Questions"
description="Everything you need to know before starting your private clipping project with our dedicated team."
tag="Help & Support"
tagIcon={HelpCircle}
tagAnimation="slide-up"
textboxLayout="default"
useInvertedBackground={false}
faqs={[
{
id: "1", title: "Whats Clipping ?", content: "Clipping is the process of turning long-form content such as podcasts, livestreams, and YouTube videos into short, high-impact clips designed for platforms like TikTok, Instagram Reels, and YouTube Shorts.Through private clipping collaboration, you work directly with my dedicated team to identify the most engaging moments from your content. We then transform those moments into high-retention short-form videos with optimized hooks, captions, and formatting designed to perform well in social media algorithms. "
},
{
id: "2", title: "How does the process work?", content: "Step 1: Book an intro call where we discuss your goals, content strategy, and vision. Step 2: Your content gets assigned to our dedicated team who create and optimize clips for each platform while maintaining direct communication with you. Step 3: Clips launch simultaneously across social platforms and we track real-time performance together with detailed analytics and regular updates."
},
{
id: "3", title: "How quickly can I Start?", content: "Most private clipping projects launch within 2-5 business days after the initial strategy call. Your content goes through our personalized optimization process, and begins gaining traction immediately. Real-time results start appearing within hours, with our team providing direct updates on performance."
},
{
id: "4", title: "What types of creators and businesses do you work with?", content: "I work with podcasters, streamers, influencers, TV shows, brands, product launches, apps, startups, and content entrepreneurs seeking personalized team management. Essentially, if you have longform or short-form content and want to maximize viral reach through direct collaboration with expert clippers, we're a fit."
},
{
id: "5", title: "Is there a cost to start? What's the pricing model?", content: "Pricing varies based on your project scope, content volume, and dedicated team support level. I offer custom packages tailored to your specific goals and vision. Contact me for a consultation and I'll provide transparent pricing with no hidden fees."
},
{
id: "6", title: "How is this different from hiring a video editor?", content: "I'm not just editing videos—I'm providing personalized team management and optimization for viral growth across platforms. My private clipping collaboration includes audience research, platform algorithms, trend analysis, optimal timing, direct communication with your dedicated team, and distribution through my network. It's a complete organic growth system with direct collaboration, not just editing."
},
{
id: "7", title: "Do I retain ownership of my clips?", content: "100%. You retain full ownership of all clips created through our private collaboration. My team handles creation, optimization, and distribution, but the content is yours. We simply amplify it through our network to drive maximum views and engagement."
},
{
id: "8", title: "What kind of results should I expect?", content: "Results vary based on content quality, audience size, and platform fit. My private collaboration clients typically see 3-5x ROI within the first month. Many experience viral clips (100K-500K+ views), new followers, lead generation, and increased business opportunities from the exposure managed by our dedicated team."
},
]}
faqsAnimation="slide-up"
animationType="smooth"
/>
</div>
<div id="contact" data-section="contact">
<ContactText
text="Ready To Turn Your Content Into Viral Clips 👇 "
animationType="entrance-slide"
background={{ variant: "radial-gradient" }}
useInvertedBackground={false}
buttons={[
{ text: "Book A Call", href: "https://calendly.com/ibbiyousuf420/30min" },
{ text: "See Case Studies", href: "#case-studies" },
]}
/>
</div>
<div id="footer" data-section="footer">
<FooterLogoEmphasis
logoText=""
columns={[
{
items: [
{ label: "Home", href: "/" },
{ label: "Case Studies", href: "#case-studies" },
{ label: "My Work", href: "/work" },
],
},
{
items: [
{ label: "Process", href: "#process" },
{ label: "About", href: "#about" },
],
},
{
items: [
{ label: "FAQ", href: "#faq" },
{ label: "Contact", href: "#contact" },
{ label: "Book A Call", href: "https://calendly.com/ibbiyousuf420/30min" },
],
},
]}
/>
</div>
</ThemeProvider>
);
}

182
src/app/work/page.tsx Normal file
View File

@@ -0,0 +1,182 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarLayoutFloatingOverlay from "@/components/navbar/NavbarLayoutFloatingOverlay/NavbarLayoutFloatingOverlay";
import { useEffect, useRef } from "react";
interface Clip {
id: string;
src: string;
title: string;
link: string;
}
const clips: Clip[] = [
{
id: "1", src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1773165537767-sb172m93.png", title: "Viral Clip 1", link: "https://www.tiktok.com/@brandonclipd/video/7593877522681564446"
},
{
id: "2", src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1773165537769-ecm4mns3.png", title: "Viral Clip 2", link: "https://www.tiktok.com/@brandonclipd/video/7594523303847415070"
},
{
id: "3", src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1773165537769-p7aqg1q7.png", title: "Viral Clip 3", link: "https://drive.google.com/file/d/1QbP28qpbNlyWE-kJcLQXlZ70ai5ccjuw/view?usp=drivesdk"
},
{
id: "4", src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1773165537769-ji09ma2s.png", title: "Viral Clip 4", link: "https://drive.google.com/file/d/1TFDj__ZvlvGQah-3T6YRsw6wwCGrR2YW/view?usp=drivesdk"
},
{
id: "5", src: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3Ab38TzdGBnNuMLrvS5uTUM2zMr/uploaded-1773164050845-j8dxb4nc.png", title: "Viral Clip 5", link: "https://drive.google.com/file/d/1Pt43OPdW-tMbRB_3DLumnhedP87cDZzo/view?usp=share_link"
}
];
export default function WorkPage() {
const scrollContainerRef = useRef<HTMLDivElement>(null);
useEffect(() => {
const scrollContainer = scrollContainerRef.current;
if (!scrollContainer) return;
let scrollPosition = 0;
const scrollSpeed = 2;
const containerWidth = scrollContainer.scrollWidth;
const viewportWidth = scrollContainer.clientWidth;
const scroll = () => {
scrollPosition += scrollSpeed;
// Loop back to start for infinite scroll
if (scrollPosition >= containerWidth / 2) {
scrollPosition = 0;
}
scrollContainer.scrollLeft = scrollPosition;
};
const interval = setInterval(scroll, 30);
return () => clearInterval(interval);
}, []);
const handleClipClick = (link: string) => {
window.open(link, "_blank");
};
return (
<ThemeProvider
defaultButtonVariant="bounce-effect"
defaultTextAnimation="entrance-slide"
borderRadius="pill"
contentWidth="mediumLarge"
sizing="mediumSizeLargeTitles"
background="noise"
cardStyle="soft-shadow"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="solid"
headingFontWeight="light"
>
<div id="nav" data-section="nav">
<NavbarLayoutFloatingOverlay
brandName="billiscales"
navItems={[
{ name: "Case Studies", id: "case-studies" },
{ name: "About", id: "about" },
{ name: "My Work", id: "/work" },
{ name: "Process", id: "process" },
{ name: "Contact", id: "contact" }
]}
button={{
text: "Book A Call", href: "https://calendly.com/ibbiyousuf420/30min"
}}
/>
</div>
<main className="w-full min-h-screen bg-gradient-to-b from-background to-card pt-32 pb-20">
<div className="w-full px-4 md:px-8 mb-16">
<div className="text-center mb-12">
<h1 className="text-5xl md:text-7xl font-bold text-foreground mb-4">
My Work
</h1>
<p className="text-lg md:text-xl text-foreground/70 max-w-2xl mx-auto">
Scroll through my latest viral clips and shortform content
</p>
</div>
{/* Horizontal Infinite Scrolling Container */}
<div
className="w-full overflow-hidden rounded-2xl"
style={{
background: "linear-gradient(135deg, rgba(var(--primary-cta), 0.05), rgba(var(--accent), 0.05))", border: "1px solid rgba(var(--foreground), 0.1)"
}}
>
<div
ref={scrollContainerRef}
className="flex gap-6 p-6 overflow-x-scroll"
style={{
scrollBehavior: "smooth", scrollbarWidth: "none", msOverflowStyle: "none"
}}
>
{/* Duplicate clips for infinite loop effect */}
{[...clips, ...clips].map((clip, index) => (
<div
key={`${clip.id}-${index}`}
className="flex-shrink-0 relative group cursor-pointer transition-all duration-300 hover:scale-110 hover:shadow-2xl"
style={{
width: "280px", aspectRatio: "9/16"
}}
onClick={() => handleClipClick(clip.link)}
role="link"
tabIndex={0}
onKeyDown={(e) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
handleClipClick(clip.link);
}
}}
>
{/* Clip Card Container */}
<div
className="w-full h-full rounded-xl overflow-hidden shadow-lg transition-all duration-300"
style={{
background: "var(--card)", border: "2px solid rgba(var(--primary-cta), 0.2)", boxShadow: "0 10px 30px rgba(0, 0, 0, 0.1)"
}}
>
{/* Image */}
<img
src={clip.src}
alt={clip.title}
className="w-full h-full object-cover"
loading="lazy"
/>
{/* Hover Overlay */}
<div className="absolute inset-0 bg-gradient-to-b from-transparent via-transparent to-black/40 opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex flex-col items-center justify-end p-4">
<div
className="px-4 py-2 rounded-full text-sm font-semibold text-white transition-all duration-300 transform translate-y-8 group-hover:translate-y-0"
style={{
background: "var(--primary-cta)", backdropFilter: "blur(10px)"
}}
>
View
</div>
</div>
</div>
{/* Title */}
<div className="mt-3">
<p className="text-sm font-medium text-foreground truncate">
{clip.title}
</p>
</div>
</div>
))}
</div>
</div>
{/* Info Text */}
<div className="text-center mt-8 text-foreground/60">
<p className="text-sm md:text-base">
👆 Continuous scroll Click any card to view
</p>
</div>
</div>
</main>
</ThemeProvider>
);
}