11 Commits

Author SHA1 Message Date
9ff510db2f Bob AI: Can you add a button to each of the features so th... 2026-02-07 02:13:12 +00:00
ce06c48d40 Merge version_7 into main
Merge version_7 into main
2026-02-07 02:09:10 +00:00
d9372d0570 Bob AI: No that's not what I meant at all 2026-02-07 02:08:37 +00:00
4555c33e2a Merge version_6 into main
Merge version_6 into main
2026-02-07 02:07:42 +00:00
5d0cc73800 Bob AI: Can you edit the trusted by over 500 clients to ma... 2026-02-07 02:07:08 +00:00
a6dbd15c23 Merge version_5 into main
Merge version_5 into main
2026-02-07 02:05:24 +00:00
2fb723835d Bob AI: Can you add a section with all of our work? I need... 2026-02-07 02:04:50 +00:00
a67b833f27 Merge version_4 into main
Merge version_4 into main
2026-02-07 02:03:32 +00:00
6e689fb1bd Bob AI: Editing div ([data-webild-id="webild-1770429676776... 2026-02-07 02:02:59 +00:00
862adeabb9 Merge version_2 into main
Merge version_2 into main
2026-02-07 01:57:52 +00:00
bb9af7162c Bob AI: Can you reduce between the spacing of the button a... 2026-02-07 01:57:18 +00:00
3 changed files with 134 additions and 1 deletions

View File

@@ -10,6 +10,9 @@ import FeatureCardSixteen from '@/components/sections/feature/FeatureCardSixteen
import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia'; import FaqSplitMedia from '@/components/sections/faq/FaqSplitMedia';
import FooterLogoReveal from '@/components/sections/footer/FooterLogoReveal'; import FooterLogoReveal from '@/components/sections/footer/FooterLogoReveal';
import { Camera, CheckCircle, HelpCircle, Play, Sparkles, Star, TrendingUp, Zap, Flame, Users, MessageSquare, Lock } from "lucide-react"; import { Camera, CheckCircle, HelpCircle, Play, Sparkles, Star, TrendingUp, Zap, Flame, Users, MessageSquare, Lock } from "lucide-react";
import ProductCatalog from '@/components/ecommerce/productCatalog/ProductCatalog';
import MetricCardSeven from '@/components/sections/metrics/MetricCardSeven';
import TeamCardOne from '@/components/sections/team/TeamCardOne';
export default function LandingPage() { export default function LandingPage() {
return ( return (
@@ -213,6 +216,109 @@ export default function LandingPage() {
/> />
</div> </div>
<div id="ecommerce" data-section="ecommerce">
<ProductCatalog
layout="section"
products={[
{
id: "1",
name: "ClipVerse Pro",
price: 29.99,
imageSrc: "https://images.unsplash.com/photo-1519681393784-d120267933ba?w=800&q=80",
imageAlt: "ClipVerse Pro",
rating: 4.8,
reviewCount: 120,
category: "ClipVerse",
onProductClick: () => {}
},
{
id: "2",
name: "ClipVerse Basic",
price: 19.99,
imageSrc: "https://images.unsplash.com/photo-1519681393784-d120267933ba?w=800&q=80",
imageAlt: "ClipVerse Basic",
rating: 4.5,
reviewCount: 85,
category: "ClipVerse",
onProductClick: () => {}
},
{
id: "3",
name: "ClipVerse Elite",
price: 39.99,
imageSrc: "https://images.unsplash.com/photo-1519681393784-d120267933ba?w=800&q=80",
imageAlt: "ClipVerse Elite",
rating: 4.9,
reviewCount: 150,
category: "ClipVerse",
onProductClick: () => {}
}
]}
searchPlaceholder="Search ClipVerse products..."
emptyMessage="No ClipVerse products found"
className="mt-10"
gridClassName="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-6"
cardClassName="bg-white rounded-lg shadow-md overflow-hidden"
imageClassName="w-full h-48 object-cover"
searchClassName="mb-4"
filterClassName="mb-4"
toolbarClassName="mb-4"
/>
</div>
<div id="metric" data-section="metric">
<MetricCardSeven
metrics={[
{
id: "1",
value: "500+",
title: "Trusted by",
items: [
"https://images.unsplash.com/photo-1519681393784-d120267933ba?w=800&q=80",
"https://images.unsplash.com/photo-1519681393784-d120267933ba?w=800&q=80",
"https://images.unsplash.com/photo-1519681393784-d120267933ba?w=800&q=80",
"https://images.unsplash.com/photo-1519681393784-d120267933ba?w=800&q=80"
]
}
]}
carouselMode="auto"
animationType="slide"
title="ClipVerse"
description="Experience seamless video editing with ClipVerse. Trusted by over 500 satisfied clients."
textboxLayout="left"
useInvertedBackground="none"
textBoxTitleClassName="text-4xl font-bold"
textBoxDescriptionClassName="text-lg"
valueClassName="text-5xl font-extrabold"
metricTitleClassName="text-2xl font-semibold"
featureItemClassName="flex items-center gap-2"
/>
</div>
<div id="team" data-section="team">
<TeamCardOne
members={[
{ id: "1", name: "Alice Johnson", role: "Lead Designer", imageSrc: "https://images.unsplash.com/photo-1519681393784-d120267933ba?w=800&q=80", imageAlt: "Alice Johnson" },
{ id: "2", name: "Bob Smith", role: "Frontend Developer", imageSrc: "https://images.unsplash.com/photo-1519681393784-d120267933ba?w=800&q=80", imageAlt: "Bob Smith" },
{ id: "3", name: "Charlie Brown", role: "Backend Developer", imageSrc: "https://images.unsplash.com/photo-1519681393784-d120267933ba?w=800&q=80", imageAlt: "Charlie Brown" },
{ id: "4", name: "Diana Prince", role: "Project Manager", imageSrc: "https://images.unsplash.com/photo-1519681393784-d120267933ba?w=800&q=80", imageAlt: "Diana Prince" }
]}
carouselMode="buttons"
gridVariant="grid-cols-2"
animationType="slide-up"
title="Meet the Team"
description="Our team of experts is dedicated to bringing innovative solutions to your projects."
textboxLayout="left"
useInvertedBackground="none"
className="mb-10"
textBoxTitleClassName="text-3xl font-bold mb-4"
textBoxDescriptionClassName="text-lg mb-6"
imageClassName="rounded-theme-capped"
nameClassName="text-xl font-semibold mt-2"
roleClassName="text-gray-500"
/>
</div>
<div id="footer" data-section="footer"> <div id="footer" data-section="footer">
<FooterLogoReveal <FooterLogoReveal
logoText="ClipVerse" logoText="ClipVerse"

View File

@@ -21,6 +21,7 @@ import BentoRevealIcon from "@/components/bento/BentoRevealIcon";
import BentoTimeline, { type TimelineItem } from "@/components/bento/BentoTimeline"; import BentoTimeline, { type TimelineItem } from "@/components/bento/BentoTimeline";
import BentoMediaStack, { type MediaStackItem } from "@/components/bento/BentoMediaStack"; import BentoMediaStack, { type MediaStackItem } from "@/components/bento/BentoMediaStack";
import type { LucideIcon } from "lucide-react"; import type { LucideIcon } from "lucide-react";
import { useRouter } from "next/navigation";
export type { PhoneApp, PhoneApps8, ChatExchange, TimelineItem, MediaStackItem }; export type { PhoneApp, PhoneApps8, ChatExchange, TimelineItem, MediaStackItem };
import type { ButtonConfig, CardAnimationTypeWith3D, TitleSegment } from "@/components/cardStack/types"; import type { ButtonConfig, CardAnimationTypeWith3D, TitleSegment } from "@/components/cardStack/types";
@@ -184,6 +185,7 @@ const FeatureBento = ({
}: FeatureBentoProps) => { }: FeatureBentoProps) => {
const theme = useTheme(); const theme = useTheme();
const shouldUseLightText = shouldUseInvertedText(useInvertedBackground, theme.cardStyle); const shouldUseLightText = shouldUseInvertedText(useInvertedBackground, theme.cardStyle);
const router = useRouter();
const getBentoComponent = (feature: FeatureCard) => { const getBentoComponent = (feature: FeatureCard) => {
switch (feature.bentoComponent) { switch (feature.bentoComponent) {
@@ -283,6 +285,13 @@ const FeatureBento = ({
{feature.button && ( {feature.button && (
<Button {...getButtonProps(feature.button, 0, theme.defaultButtonVariant, cls("w-full", cardButtonClassName), cardButtonTextClassName)} /> <Button {...getButtonProps(feature.button, 0, theme.defaultButtonVariant, cls("w-full", cardButtonClassName), cardButtonTextClassName)} />
)} )}
<Button
onClick={() => router.push('/feature-details')}
className={cls("w-full", cardButtonClassName)}
textClassName={cardButtonTextClassName}
>
Learn More
</Button>
</div> </div>
))} ))}
</CardStack> </CardStack>

View File

@@ -8,6 +8,7 @@ import { cls } from "@/lib/utils";
import type { LucideIcon } from "lucide-react"; import type { LucideIcon } from "lucide-react";
import type { ButtonConfig } from "@/types/button"; import type { ButtonConfig } from "@/types/button";
import type { Avatar } from "@/components/shared/AvatarGroup"; import type { Avatar } from "@/components/shared/AvatarGroup";
import { User, CheckCircle } from "lucide-react";
type HeroBillboardBackgroundProps = Extract< type HeroBillboardBackgroundProps = Extract<
HeroBackgroundVariantProps, HeroBackgroundVariantProps,
@@ -127,7 +128,7 @@ const HeroBillboard = ({
buttonTextClassName={buttonTextClassName} buttonTextClassName={buttonTextClassName}
center={true} center={true}
/> />
<div className="flex flex-col gap-6" > <div className="flex flex-col gap-3" >
<div className={cls("w-full overflow-hidden rounded-theme-capped card p-4", mediaWrapperClassName)}> <div className={cls("w-full overflow-hidden rounded-theme-capped card p-4", mediaWrapperClassName)}>
<MediaContent <MediaContent
imageSrc={imageSrc} imageSrc={imageSrc}
@@ -151,6 +152,23 @@ const HeroBillboard = ({
/> />
)} )}
</div> </div>
<div data-webild-id="webild-1770429676776-pbdgcp6ud" className="text-center mt-6">
Trusted by over 500 clients
<div className="flex justify-center mt-4">
<div className="flex items-center mx-4">
<User className="w-6 h-6 mr-2" />
<CheckCircle className="w-4 h-4 text-green-500" />
</div>
<div className="flex items-center mx-4">
<User className="w-6 h-6 mr-2" />
<CheckCircle className="w-4 h-4 text-green-500" />
</div>
<div className="flex items-center mx-4">
<User className="w-6 h-6 mr-2" />
<CheckCircle className="w-4 h-4 text-green-500" />
</div>
</div>
</div>
</div> </div>
</section> </section>
); );