4 Commits

Author SHA1 Message Date
9687c18f61 Merge version_2_1781942913928 into main
Merge version_2_1781942913928 into main
2026-06-20 08:10:40 +00:00
kudinDmitriyUp
9c08dfd5ce Bob AI: Populate src/pages/ProductsPage.tsx (snippet builder, 3 sections) 2026-06-20 08:10:08 +00:00
kudinDmitriyUp
7246826dbf Bob AI: Add products page 2026-06-20 08:09:24 +00:00
e51c8b4870 Merge version_1_1781941981870 into main
Merge version_1_1781941981870 into main
2026-06-20 07:54:14 +00:00
4 changed files with 39 additions and 1 deletions

View File

@@ -2,11 +2,13 @@ import { Routes, Route } from 'react-router-dom';
import Layout from './components/Layout';
import HomePage from './pages/HomePage';
import ProductsPage from "@/pages/ProductsPage";
export default function App() {
return (
<Routes>
<Route element={<Layout />}>
<Route path="/" element={<HomePage />} />
<Route path="/products" element={<ProductsPage />} />
</Route>
</Routes>
);

View File

@@ -34,7 +34,9 @@ export default function Layout() {
{
"name": "Testimonial",
"href": "#testimonial"
}
},
{ name: "Products", href: "/products" },
];
return (

View File

@@ -0,0 +1,33 @@
import Button from "@/components/ui/Button";
import HeroBackgroundSlot from "@/components/ui/HeroBackgroundSlot";
import TextAnimation from "@/components/ui/TextAnimation";
import ImageOrVideo from "@/components/ui/ImageOrVideo";
import ScrollReveal from "@/components/ui/ScrollReveal";
import AvatarGroup from "@/components/ui/AvatarGroup";
import { ArrowUpRight, Loader2 } from "lucide-react";
import GridOrCarousel from "@/components/ui/GridOrCarousel";
import useProducts from "@/hooks/useProducts";
import { Check } from "lucide-react";
export default function ProductsPage() {
return (
<>
<div data-webild-section="HeroBillboard"><section aria-label="Hero section" className="relative pt-25 pb-20 md:pt-30"><HeroBackgroundSlot /><div className="flex flex-col gap-12 md:gap-15 w-content-width mx-auto"><div className="flex flex-col items-center gap-3 text-center"><AvatarGroup avatarsSrc={["https://img.freepik.com/free-photo/portrait-successful-man-having-stubble-posing-with-broad-smile-keeping-arms-folded_171337-1267.jpg","https://img.freepik.com/free-photo/young-beautiful-woman-pink-warm-sweater-natural-look-smiling-portrait-isolated-long-hair_285396-896.jpg","https://img.freepik.com/free-photo/handsome-confident-smiling-man-with-hands-crossed-chest_176420-18743.jpg"]} label="Trusted by top studios" className="mb-1" /><TextAnimation text="Advanced Box Office Forecasting Tools" variant="fade" gradientText={true} tag="h1" className="md:max-w-8/10 text-7xl 2xl:text-8xl leading-[1.15] font-semibold text-center text-balance" /><TextAnimation text="Equip your studio with predictive analytics, real-time sentiment tracking, and audience engagement metrics to maximize your film's success." variant="fade" gradientText={false} tag="p" className="md:max-w-7/10 text-lg md:text-xl leading-snug text-balance" /><div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3"><Button text="Explore Suite" href="#products" variant="primary" /><Button text="Request Demo" href="/demo" variant="secondary" animationDelay={0.1} /></div></div><ScrollReveal variant="fade" delay={0.2} className="w-full p-2 xl:p-3 2xl:p-4 card rounded overflow-hidden"><ImageOrVideo imageSrc="https://img.freepik.com/premium-photo/business-data-analytics-dashboard-with-charts-graphs_31965-115201.jpg" className="aspect-4/5 md:aspect-video" /></ScrollReveal></div></section></div>
<div data-webild-section="ProductMediaCards"><section aria-label="Products section" className="py-20"><div className="w-content-width mx-auto flex justify-center"><Loader2 className="size-8 animate-spin text-foreground" strokeWidth={1.5} /></div></section></div>
<div data-webild-section="PricingSimpleCards"><section aria-label="Pricing section" className="py-20"><div className="flex flex-col gap-8 md:gap-10"><div className="flex flex-col items-center w-content-width mx-auto gap-2"><div className="px-3 py-1 mb-1 text-sm card rounded w-fit"><p>Pricing Plans</p></div><TextAnimation text="Predictive Power for Every Studio" variant="fade" gradientText={true} tag="h2" className="md:max-w-8/10 text-6xl 2xl:text-7xl leading-[1.15] font-semibold text-center text-balance" /><TextAnimation text="Choose the analytics tier that fits your production scale. From indie films to global blockbusters, we have you covered." variant="fade" gradientText={false} tag="p" className="md:max-w-7/10 text-lg md:text-xl leading-snug text-center text-balance" /><div className="flex flex-wrap justify-center gap-3 mt-2 md:mt-3"><Button text="Start Free Trial" href="/signup" variant="primary" /><Button text="Contact Sales" href="/contact" variant="secondary" animationDelay={0.1} /></div></div><ScrollReveal variant="slide-up"><GridOrCarousel><div key="Indie" className="flex flex-col gap-4 xl:gap-5 2xl:gap-6 p-6 xl:p-7 2xl:p-8 h-full card rounded"><div className="px-3 py-1 text-sm card rounded w-fit"><p>Indie</p></div><div className="flex flex-col gap-1"><span className="text-5xl md:text-6xl font-semibold">$499/mo</span><span className="text-base font-medium">Essential sentiment tracking for independent filmmakers.</span></div><div className="w-full h-px bg-foreground/20" /><div className="flex flex-col gap-3"><div key="Real-time social sentiment" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Real-time social sentiment</span></div>
<div key="Basic trailer engagement metrics" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Basic trailer engagement metrics</span></div>
<div key="Weekly trend reports" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Weekly trend reports</span></div>
<div key="Up to 3 active projects" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Up to 3 active projects</span></div></div></div>
<div key="Studio" className="flex flex-col gap-4 xl:gap-5 2xl:gap-6 p-6 xl:p-7 2xl:p-8 h-full card rounded"><div className="px-3 py-1 text-sm card rounded w-fit"><p>Studio</p></div><div className="flex flex-col gap-1"><span className="text-5xl md:text-6xl font-semibold">$2,499/mo</span><span className="text-base font-medium">Advanced predictive modeling for mid-sized production companies.</span></div><div className="w-full h-px bg-foreground/20" /><div className="flex flex-col gap-3"><div key="Everything in Indie" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Everything in Indie</span></div>
<div key="Predictive box office modeling" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Predictive box office modeling</span></div>
<div key="Competitor analysis dashboard" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Competitor analysis dashboard</span></div>
<div key="Daily trend alerts" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Daily trend alerts</span></div>
<div key="Up to 10 active projects" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Up to 10 active projects</span></div></div></div>
<div key="Enterprise" className="flex flex-col gap-4 xl:gap-5 2xl:gap-6 p-6 xl:p-7 2xl:p-8 h-full card rounded"><div className="px-3 py-1 text-sm card rounded w-fit"><p>Enterprise</p></div><div className="flex flex-col gap-1"><span className="text-5xl md:text-6xl font-semibold">Custom</span><span className="text-base font-medium">Full-scale analytics and forecasting for major global studios.</span></div><div className="w-full h-px bg-foreground/20" /><div className="flex flex-col gap-3"><div key="Everything in Studio" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Everything in Studio</span></div>
<div key="Custom predictive algorithms" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Custom predictive algorithms</span></div>
<div key="Dedicated account manager" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Dedicated account manager</span></div>
<div key="API access for internal tools" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">API access for internal tools</span></div>
<div key="Unlimited active projects" className="flex items-start gap-3"><div className="flex items-center justify-center shrink-0 size-6 primary-button rounded"><Check className="size-3 text-primary-cta-text" strokeWidth={2} /></div><span className="text-base">Unlimited active projects</span></div></div></div></GridOrCarousel></ScrollReveal></div></section></div>
</>
);
}

View File

@@ -6,4 +6,5 @@ export interface Route {
export const routes: Route[] = [
{ path: '/', label: 'Home', pageFile: 'HomePage' },
{ path: '/products', label: 'Products', pageFile: 'ProductsPage' },
];