From 7246826dbfff18202904996c2cb8bea1f1062285 Mon Sep 17 00:00:00 2001 From: kudinDmitriyUp Date: Sat, 20 Jun 2026 08:09:24 +0000 Subject: [PATCH 1/2] Bob AI: Add products page --- src/App.tsx | 2 + src/components/Layout.tsx | 4 +- src/pages/ProductsPage.tsx | 99 ++++++++++++++++++++++++++++++++++++++ src/routes.ts | 1 + 4 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 src/pages/ProductsPage.tsx diff --git a/src/App.tsx b/src/App.tsx index 33d15f9..c9c6d8e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -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 ( }> } /> + } /> ); diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx index 4b027b4..9845c2d 100644 --- a/src/components/Layout.tsx +++ b/src/components/Layout.tsx @@ -34,7 +34,9 @@ export default function Layout() { { "name": "Testimonial", "href": "#testimonial" - } + }, + { name: "Products", href: "/products" }, + ]; return ( diff --git a/src/pages/ProductsPage.tsx b/src/pages/ProductsPage.tsx new file mode 100644 index 0000000..757f049 --- /dev/null +++ b/src/pages/ProductsPage.tsx @@ -0,0 +1,99 @@ +import React from "react"; +import { routes } from "@/routes"; +import NavbarCentered from "@/components/ui/NavbarCentered"; +import HeroSplit from "@/components/sections/hero/HeroSplit"; +import ProductMediaCards from "@/components/sections/product/ProductMediaCards"; +import FeaturesBentoGrid from "@/components/sections/features/FeaturesBentoGrid"; +import FooterSimple from "@/components/sections/footer/FooterSimple"; + +export default function ProductsPage() { + return ( +
+ ({ name: r.label, href: r.path }))} + ctaButton={{ text: "Get Started", href: "/contact" }} + /> + +
+ + +
+ console.log("Analytics clicked") + }, + { + name: "Cloud Storage", + price: "$19/mo", + imageSrc: "https://images.unsplash.com/photo-1544197150-b99a580bb7a8?auto=format&fit=crop&q=80", + onClick: () => console.log("Storage clicked") + }, + { + name: "Team Chat", + price: "$29/mo", + imageSrc: "https://images.unsplash.com/photo-1611162617474-5b21e879e113?auto=format&fit=crop&q=80", + onClick: () => console.log("Chat clicked") + } + ]} + /> +
+ + +
+ + +
+ ); +} \ No newline at end of file diff --git a/src/routes.ts b/src/routes.ts index 362ecb5..93d7fae 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -6,4 +6,5 @@ export interface Route { export const routes: Route[] = [ { path: '/', label: 'Home', pageFile: 'HomePage' }, + { path: '/products', label: 'Products', pageFile: 'ProductsPage' }, ]; -- 2.49.1 From 9c08dfd5cebc526e9a3e9ffdecc4c9ce7a1d185e Mon Sep 17 00:00:00 2001 From: kudinDmitriyUp Date: Sat, 20 Jun 2026 08:10:08 +0000 Subject: [PATCH 2/2] Bob AI: Populate src/pages/ProductsPage.tsx (snippet builder, 3 sections) --- src/pages/ProductsPage.tsx | 124 +++++++++---------------------------- 1 file changed, 29 insertions(+), 95 deletions(-) diff --git a/src/pages/ProductsPage.tsx b/src/pages/ProductsPage.tsx index 757f049..29b5591 100644 --- a/src/pages/ProductsPage.tsx +++ b/src/pages/ProductsPage.tsx @@ -1,99 +1,33 @@ -import React from "react"; -import { routes } from "@/routes"; -import NavbarCentered from "@/components/ui/NavbarCentered"; -import HeroSplit from "@/components/sections/hero/HeroSplit"; -import ProductMediaCards from "@/components/sections/product/ProductMediaCards"; -import FeaturesBentoGrid from "@/components/sections/features/FeaturesBentoGrid"; -import FooterSimple from "@/components/sections/footer/FooterSimple"; +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 ( -
- ({ name: r.label, href: r.path }))} - ctaButton={{ text: "Get Started", href: "/contact" }} - /> - -
- - -
- console.log("Analytics clicked") - }, - { - name: "Cloud Storage", - price: "$19/mo", - imageSrc: "https://images.unsplash.com/photo-1544197150-b99a580bb7a8?auto=format&fit=crop&q=80", - onClick: () => console.log("Storage clicked") - }, - { - name: "Team Chat", - price: "$29/mo", - imageSrc: "https://images.unsplash.com/photo-1611162617474-5b21e879e113?auto=format&fit=crop&q=80", - onClick: () => console.log("Chat clicked") - } - ]} - /> -
- - -
- - -
+ <> +
+
+

Pricing Plans

Indie

$499/moEssential sentiment tracking for independent filmmakers.
Real-time social sentiment
+
Basic trailer engagement metrics
+
Weekly trend reports
+
Up to 3 active projects
+

Studio

$2,499/moAdvanced predictive modeling for mid-sized production companies.
Everything in Indie
+
Predictive box office modeling
+
Competitor analysis dashboard
+
Daily trend alerts
+
Up to 10 active projects
+

Enterprise

CustomFull-scale analytics and forecasting for major global studios.
Everything in Studio
+
Custom predictive algorithms
+
Dedicated account manager
+
API access for internal tools
+
Unlimited active projects
+ ); -} \ No newline at end of file +} -- 2.49.1