snowbase-templates-installer 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -0
- package/bin/cli.js +140 -0
- package/landing-pages/ai-saas-template/.orchids/orchids.json +8 -0
- package/landing-pages/ai-saas-template/README.md +36 -0
- package/landing-pages/ai-saas-template/bun.lock +2062 -0
- package/landing-pages/ai-saas-template/components.json +22 -0
- package/landing-pages/ai-saas-template/eslint.config.mjs +33 -0
- package/landing-pages/ai-saas-template/next.config.ts +24 -0
- package/landing-pages/ai-saas-template/package-lock.json +11708 -0
- package/landing-pages/ai-saas-template/package.json +114 -0
- package/landing-pages/ai-saas-template/postcss.config.mjs +7 -0
- package/landing-pages/ai-saas-template/public/file.svg +1 -0
- package/landing-pages/ai-saas-template/public/globe.svg +1 -0
- package/landing-pages/ai-saas-template/public/next.svg +1 -0
- package/landing-pages/ai-saas-template/public/vercel.svg +1 -0
- package/landing-pages/ai-saas-template/public/window.svg +1 -0
- package/landing-pages/ai-saas-template/src/app/favicon.ico +0 -0
- package/landing-pages/ai-saas-template/src/app/global-error.tsx +5 -0
- package/landing-pages/ai-saas-template/src/app/globals.css +172 -0
- package/landing-pages/ai-saas-template/src/app/layout.tsx +42 -0
- package/landing-pages/ai-saas-template/src/app/page.tsx +23 -0
- package/landing-pages/ai-saas-template/src/components/ErrorReporter.tsx +136 -0
- package/landing-pages/ai-saas-template/src/components/sections/cta.tsx +62 -0
- package/landing-pages/ai-saas-template/src/components/sections/features-grid.tsx +205 -0
- package/landing-pages/ai-saas-template/src/components/sections/footer.tsx +111 -0
- package/landing-pages/ai-saas-template/src/components/sections/hero.tsx +92 -0
- package/landing-pages/ai-saas-template/src/components/sections/logos.tsx +69 -0
- package/landing-pages/ai-saas-template/src/components/sections/navbar.tsx +83 -0
- package/landing-pages/ai-saas-template/src/components/sections/testimonials-header.tsx +41 -0
- package/landing-pages/ai-saas-template/src/components/sections/value-props.tsx +97 -0
- package/landing-pages/ai-saas-template/src/components/ui/accordion.tsx +66 -0
- package/landing-pages/ai-saas-template/src/components/ui/alert-dialog.tsx +157 -0
- package/landing-pages/ai-saas-template/src/components/ui/alert.tsx +66 -0
- package/landing-pages/ai-saas-template/src/components/ui/aspect-ratio.tsx +11 -0
- package/landing-pages/ai-saas-template/src/components/ui/avatar.tsx +53 -0
- package/landing-pages/ai-saas-template/src/components/ui/badge.tsx +46 -0
- package/landing-pages/ai-saas-template/src/components/ui/breadcrumb.tsx +109 -0
- package/landing-pages/ai-saas-template/src/components/ui/button-group.tsx +83 -0
- package/landing-pages/ai-saas-template/src/components/ui/button.tsx +59 -0
- package/landing-pages/ai-saas-template/src/components/ui/calendar.tsx +213 -0
- package/landing-pages/ai-saas-template/src/components/ui/card.tsx +92 -0
- package/landing-pages/ai-saas-template/src/components/ui/carousel.tsx +241 -0
- package/landing-pages/ai-saas-template/src/components/ui/chart.tsx +353 -0
- package/landing-pages/ai-saas-template/src/components/ui/checkbox.tsx +32 -0
- package/landing-pages/ai-saas-template/src/components/ui/collapsible.tsx +33 -0
- package/landing-pages/ai-saas-template/src/components/ui/command.tsx +184 -0
- package/landing-pages/ai-saas-template/src/components/ui/context-menu.tsx +252 -0
- package/landing-pages/ai-saas-template/src/components/ui/dialog.tsx +143 -0
- package/landing-pages/ai-saas-template/src/components/ui/drawer.tsx +135 -0
- package/landing-pages/ai-saas-template/src/components/ui/dropdown-menu.tsx +257 -0
- package/landing-pages/ai-saas-template/src/components/ui/empty.tsx +104 -0
- package/landing-pages/ai-saas-template/src/components/ui/field.tsx +248 -0
- package/landing-pages/ai-saas-template/src/components/ui/form.tsx +167 -0
- package/landing-pages/ai-saas-template/src/components/ui/hover-card.tsx +44 -0
- package/landing-pages/ai-saas-template/src/components/ui/input-group.tsx +170 -0
- package/landing-pages/ai-saas-template/src/components/ui/input-otp.tsx +77 -0
- package/landing-pages/ai-saas-template/src/components/ui/input.tsx +21 -0
- package/landing-pages/ai-saas-template/src/components/ui/item.tsx +193 -0
- package/landing-pages/ai-saas-template/src/components/ui/kbd.tsx +28 -0
- package/landing-pages/ai-saas-template/src/components/ui/label.tsx +24 -0
- package/landing-pages/ai-saas-template/src/components/ui/menubar.tsx +276 -0
- package/landing-pages/ai-saas-template/src/components/ui/navigation-menu.tsx +168 -0
- package/landing-pages/ai-saas-template/src/components/ui/pagination.tsx +127 -0
- package/landing-pages/ai-saas-template/src/components/ui/popover.tsx +48 -0
- package/landing-pages/ai-saas-template/src/components/ui/progress.tsx +31 -0
- package/landing-pages/ai-saas-template/src/components/ui/radio-group.tsx +45 -0
- package/landing-pages/ai-saas-template/src/components/ui/resizable.tsx +56 -0
- package/landing-pages/ai-saas-template/src/components/ui/scroll-area.tsx +58 -0
- package/landing-pages/ai-saas-template/src/components/ui/select.tsx +185 -0
- package/landing-pages/ai-saas-template/src/components/ui/separator.tsx +28 -0
- package/landing-pages/ai-saas-template/src/components/ui/sheet.tsx +139 -0
- package/landing-pages/ai-saas-template/src/components/ui/sidebar.tsx +726 -0
- package/landing-pages/ai-saas-template/src/components/ui/skeleton.tsx +13 -0
- package/landing-pages/ai-saas-template/src/components/ui/slider.tsx +63 -0
- package/landing-pages/ai-saas-template/src/components/ui/sonner.tsx +25 -0
- package/landing-pages/ai-saas-template/src/components/ui/spinner.tsx +16 -0
- package/landing-pages/ai-saas-template/src/components/ui/switch.tsx +31 -0
- package/landing-pages/ai-saas-template/src/components/ui/table.tsx +116 -0
- package/landing-pages/ai-saas-template/src/components/ui/tabs.tsx +66 -0
- package/landing-pages/ai-saas-template/src/components/ui/textarea.tsx +18 -0
- package/landing-pages/ai-saas-template/src/components/ui/toggle-group.tsx +73 -0
- package/landing-pages/ai-saas-template/src/components/ui/toggle.tsx +47 -0
- package/landing-pages/ai-saas-template/src/components/ui/tooltip.tsx +61 -0
- package/landing-pages/ai-saas-template/src/hooks/use-mobile.ts +19 -0
- package/landing-pages/ai-saas-template/src/lib/hooks/use-mobile.tsx +21 -0
- package/landing-pages/ai-saas-template/src/lib/utils.ts +6 -0
- package/landing-pages/ai-saas-template/src/visual-edits/VisualEditsMessenger.tsx +2159 -0
- package/landing-pages/ai-saas-template/src/visual-edits/component-tagger-loader.js +460 -0
- package/landing-pages/ai-saas-template/tsconfig.json +42 -0
- package/landing-pages/open-engineer-template/.orchids/orchids.json +8 -0
- package/landing-pages/open-engineer-template/README.md +36 -0
- package/landing-pages/open-engineer-template/bun.lock +2062 -0
- package/landing-pages/open-engineer-template/components.json +22 -0
- package/landing-pages/open-engineer-template/eslint.config.mjs +33 -0
- package/landing-pages/open-engineer-template/next.config.ts +24 -0
- package/landing-pages/open-engineer-template/package-lock.json +13669 -0
- package/landing-pages/open-engineer-template/package.json +114 -0
- package/landing-pages/open-engineer-template/postcss.config.mjs +7 -0
- package/landing-pages/open-engineer-template/public/file.svg +1 -0
- package/landing-pages/open-engineer-template/public/globe.svg +1 -0
- package/landing-pages/open-engineer-template/public/next.svg +1 -0
- package/landing-pages/open-engineer-template/public/vercel.svg +1 -0
- package/landing-pages/open-engineer-template/public/window.svg +1 -0
- package/landing-pages/open-engineer-template/src/app/favicon.ico +0 -0
- package/landing-pages/open-engineer-template/src/app/global-error.tsx +5 -0
- package/landing-pages/open-engineer-template/src/app/globals.css +189 -0
- package/landing-pages/open-engineer-template/src/app/layout.tsx +42 -0
- package/landing-pages/open-engineer-template/src/app/page.tsx +31 -0
- package/landing-pages/open-engineer-template/src/components/ErrorReporter.tsx +136 -0
- package/landing-pages/open-engineer-template/src/components/sections/cta-stats.tsx +71 -0
- package/landing-pages/open-engineer-template/src/components/sections/faq.tsx +188 -0
- package/landing-pages/open-engineer-template/src/components/sections/features-grid.tsx +193 -0
- package/landing-pages/open-engineer-template/src/components/sections/footer.tsx +137 -0
- package/landing-pages/open-engineer-template/src/components/sections/header.tsx +105 -0
- package/landing-pages/open-engineer-template/src/components/sections/hero.tsx +118 -0
- package/landing-pages/open-engineer-template/src/components/sections/how-it-works.tsx +123 -0
- package/landing-pages/open-engineer-template/src/components/sections/pricing.tsx +168 -0
- package/landing-pages/open-engineer-template/src/components/sections/testimonials-logos.tsx +88 -0
- package/landing-pages/open-engineer-template/src/components/sections/use-cases.tsx +141 -0
- package/landing-pages/open-engineer-template/src/components/sections/workflow-tabs.tsx +792 -0
- package/landing-pages/open-engineer-template/src/components/ui/accordion.tsx +66 -0
- package/landing-pages/open-engineer-template/src/components/ui/alert-dialog.tsx +157 -0
- package/landing-pages/open-engineer-template/src/components/ui/alert.tsx +66 -0
- package/landing-pages/open-engineer-template/src/components/ui/aspect-ratio.tsx +11 -0
- package/landing-pages/open-engineer-template/src/components/ui/avatar.tsx +53 -0
- package/landing-pages/open-engineer-template/src/components/ui/badge.tsx +46 -0
- package/landing-pages/open-engineer-template/src/components/ui/breadcrumb.tsx +109 -0
- package/landing-pages/open-engineer-template/src/components/ui/button-group.tsx +83 -0
- package/landing-pages/open-engineer-template/src/components/ui/button.tsx +59 -0
- package/landing-pages/open-engineer-template/src/components/ui/calendar.tsx +213 -0
- package/landing-pages/open-engineer-template/src/components/ui/card.tsx +92 -0
- package/landing-pages/open-engineer-template/src/components/ui/carousel.tsx +241 -0
- package/landing-pages/open-engineer-template/src/components/ui/chart.tsx +353 -0
- package/landing-pages/open-engineer-template/src/components/ui/checkbox.tsx +32 -0
- package/landing-pages/open-engineer-template/src/components/ui/collapsible.tsx +33 -0
- package/landing-pages/open-engineer-template/src/components/ui/command.tsx +184 -0
- package/landing-pages/open-engineer-template/src/components/ui/context-menu.tsx +252 -0
- package/landing-pages/open-engineer-template/src/components/ui/dialog.tsx +143 -0
- package/landing-pages/open-engineer-template/src/components/ui/drawer.tsx +135 -0
- package/landing-pages/open-engineer-template/src/components/ui/dropdown-menu.tsx +257 -0
- package/landing-pages/open-engineer-template/src/components/ui/empty.tsx +104 -0
- package/landing-pages/open-engineer-template/src/components/ui/field.tsx +248 -0
- package/landing-pages/open-engineer-template/src/components/ui/form.tsx +167 -0
- package/landing-pages/open-engineer-template/src/components/ui/hover-card.tsx +44 -0
- package/landing-pages/open-engineer-template/src/components/ui/input-group.tsx +170 -0
- package/landing-pages/open-engineer-template/src/components/ui/input-otp.tsx +77 -0
- package/landing-pages/open-engineer-template/src/components/ui/input.tsx +21 -0
- package/landing-pages/open-engineer-template/src/components/ui/item.tsx +193 -0
- package/landing-pages/open-engineer-template/src/components/ui/kbd.tsx +28 -0
- package/landing-pages/open-engineer-template/src/components/ui/label.tsx +24 -0
- package/landing-pages/open-engineer-template/src/components/ui/menubar.tsx +276 -0
- package/landing-pages/open-engineer-template/src/components/ui/navigation-menu.tsx +168 -0
- package/landing-pages/open-engineer-template/src/components/ui/pagination.tsx +127 -0
- package/landing-pages/open-engineer-template/src/components/ui/popover.tsx +48 -0
- package/landing-pages/open-engineer-template/src/components/ui/progress.tsx +31 -0
- package/landing-pages/open-engineer-template/src/components/ui/radio-group.tsx +45 -0
- package/landing-pages/open-engineer-template/src/components/ui/resizable.tsx +56 -0
- package/landing-pages/open-engineer-template/src/components/ui/scroll-area.tsx +58 -0
- package/landing-pages/open-engineer-template/src/components/ui/select.tsx +185 -0
- package/landing-pages/open-engineer-template/src/components/ui/separator.tsx +28 -0
- package/landing-pages/open-engineer-template/src/components/ui/sheet.tsx +139 -0
- package/landing-pages/open-engineer-template/src/components/ui/sidebar.tsx +726 -0
- package/landing-pages/open-engineer-template/src/components/ui/skeleton.tsx +13 -0
- package/landing-pages/open-engineer-template/src/components/ui/slider.tsx +63 -0
- package/landing-pages/open-engineer-template/src/components/ui/sonner.tsx +25 -0
- package/landing-pages/open-engineer-template/src/components/ui/spinner.tsx +16 -0
- package/landing-pages/open-engineer-template/src/components/ui/switch.tsx +31 -0
- package/landing-pages/open-engineer-template/src/components/ui/table.tsx +116 -0
- package/landing-pages/open-engineer-template/src/components/ui/tabs.tsx +66 -0
- package/landing-pages/open-engineer-template/src/components/ui/textarea.tsx +18 -0
- package/landing-pages/open-engineer-template/src/components/ui/toggle-group.tsx +73 -0
- package/landing-pages/open-engineer-template/src/components/ui/toggle.tsx +47 -0
- package/landing-pages/open-engineer-template/src/components/ui/tooltip.tsx +61 -0
- package/landing-pages/open-engineer-template/src/hooks/use-mobile.ts +19 -0
- package/landing-pages/open-engineer-template/src/lib/hooks/use-mobile.tsx +21 -0
- package/landing-pages/open-engineer-template/src/lib/utils.ts +6 -0
- package/landing-pages/open-engineer-template/src/visual-edits/VisualEditsMessenger.tsx +2159 -0
- package/landing-pages/open-engineer-template/src/visual-edits/component-tagger-loader.js +460 -0
- package/landing-pages/open-engineer-template/tsconfig.json +42 -0
- package/package.json +36 -0
- package/templates.json +22 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Image from 'next/image';
|
|
3
|
+
import { ArrowUpRight, DollarSign, Star } from 'lucide-react';
|
|
4
|
+
|
|
5
|
+
const HeroSection = () => {
|
|
6
|
+
return (
|
|
7
|
+
<section id="home" className="relative flex flex-col overflow-hidden bg-background">
|
|
8
|
+
<div className="border-b border-border px-4 sm:px-6 lg:px-8">
|
|
9
|
+
<div className="mx-auto flex max-w-[1280px] flex-col gap-6 border-x border-border px-4 py-8 sm:px-6 sm:py-16 lg:px-8 lg:py-24">
|
|
10
|
+
<div className="flex flex-col items-center gap-6 text-center">
|
|
11
|
+
<div className="space-y-4">
|
|
12
|
+
{/* Animated Badge */}
|
|
13
|
+
<div className="inline-flex items-center justify-center">
|
|
14
|
+
<span className="relative inline-flex items-center gap-2.5 overflow-hidden rounded-full border border-border bg-muted px-1.5 py-1 text-xs font-medium transition-all focus-visible:ring-2 focus-visible:ring-primary">
|
|
15
|
+
<span className="z-10 flex h-5.5 items-center rounded-full bg-primary px-2 py-0.5 text-primary-foreground">
|
|
16
|
+
New
|
|
17
|
+
</span>
|
|
18
|
+
<span className="z-10 text-sm font-normal text-muted-foreground">
|
|
19
|
+
Introducing AI Agent
|
|
20
|
+
</span>
|
|
21
|
+
<div className="pointer-events-none absolute inset-0 rounded-full border-[1px] border-transparent [mask-image:linear-gradient(transparent,transparent),linear-gradient(#000,#000)] [mask-composite:intersect]">
|
|
22
|
+
<div className="absolute inset-[-100%] animate-[spin_3s_linear_infinite] bg-[conic-gradient(from_0deg,transparent_0_340deg,#18181B_360deg)]"></div>
|
|
23
|
+
</div>
|
|
24
|
+
</span>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
{/* Headline */}
|
|
28
|
+
<h1 className="text-2xl font-semibold sm:text-3xl lg:text-[48px] lg:leading-[1.2] text-foreground tracking-tight">
|
|
29
|
+
Work with AI agent<br />
|
|
30
|
+
that handles your daily operations
|
|
31
|
+
</h1>
|
|
32
|
+
|
|
33
|
+
{/* Subtext */}
|
|
34
|
+
<p className="mx-auto max-w-3xl text-lg sm:text-xl text-muted-foreground leading-[1.6]">
|
|
35
|
+
Automate routine tasks, connect your tools, and let your AI agent coordinate workflows so you can focus on strategy, not busywork.
|
|
36
|
+
</p>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
{/* CTA Buttons */}
|
|
40
|
+
<div className="flex flex-wrap items-center justify-center gap-4 sm:gap-6 lg:gap-8 mt-4">
|
|
41
|
+
<a
|
|
42
|
+
href="/register"
|
|
43
|
+
className="inline-flex h-10 items-center justify-center gap-2 rounded-lg bg-primary px-6 text-base font-medium text-primary-foreground shadow-[inset_0_2px_3px_0_rgba(255,255,255,0.15),inset_2px_-4px_4px_0_rgba(0,0,0,0.25),inset_-2px_4px_4px_0_rgba(255,255,255,0.15)] transition-all duration-300 hover:shadow-[0_0_0_0_transparent,inset_1px_-1.5px_2px_0_rgba(0,0,0,0.25),inset_-1px_1.5px_2px_0_rgba(255,255,255,0.15)]"
|
|
44
|
+
>
|
|
45
|
+
<ArrowUpRight className="size-5" />
|
|
46
|
+
Get Started
|
|
47
|
+
</a>
|
|
48
|
+
<a
|
|
49
|
+
href="#pricing"
|
|
50
|
+
className="inline-flex h-10 items-center justify-center gap-2 rounded-lg border border-border bg-card px-6 text-base font-medium text-foreground shadow-sm transition-all duration-300 hover:bg-muted"
|
|
51
|
+
>
|
|
52
|
+
<DollarSign className="size-5" />
|
|
53
|
+
View Pricing
|
|
54
|
+
</a>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
{/* Social Proof */}
|
|
59
|
+
<div className="mt-8 sm:mt-12">
|
|
60
|
+
<div className="flex w-full items-center justify-center gap-4 max-sm:flex-col sm:gap-7">
|
|
61
|
+
{/* User Avatars */}
|
|
62
|
+
<div className="flex flex-1 items-center justify-end gap-3">
|
|
63
|
+
<div className="flex flex-row items-center justify-center">
|
|
64
|
+
{[
|
|
65
|
+
"https://slelguoygbfzlpylpxfs.supabase.co/storage/v1/object/public/test-clones/73098f9c-15b9-43d6-98e6-96ab2eba390e-shadcn-nextjs-orion-landing-page-vercel-app/assets/images/07-1.webp",
|
|
66
|
+
"https://slelguoygbfzlpylpxfs.supabase.co/storage/v1/object/public/test-clones/73098f9c-15b9-43d6-98e6-96ab2eba390e-shadcn-nextjs-orion-landing-page-vercel-app/assets/images/08-2.webp",
|
|
67
|
+
"https://slelguoygbfzlpylpxfs.supabase.co/storage/v1/object/public/test-clones/73098f9c-15b9-43d6-98e6-96ab2eba390e-shadcn-nextjs-orion-landing-page-vercel-app/assets/images/03-3.webp",
|
|
68
|
+
"https://slelguoygbfzlpylpxfs.supabase.co/storage/v1/object/public/test-clones/73098f9c-15b9-43d6-98e6-96ab2eba390e-shadcn-nextjs-orion-landing-page-vercel-app/assets/images/06-4.webp"
|
|
69
|
+
].map((url, i) => (
|
|
70
|
+
<div key={i} className="relative -me-3.5 last:me-0 group">
|
|
71
|
+
<div className="flex size-10 items-center justify-center overflow-hidden rounded-full border-2 border-background bg-muted shadow-md transition-all duration-300 hover:z-10 hover:scale-105">
|
|
72
|
+
<Image
|
|
73
|
+
src={url}
|
|
74
|
+
alt={`User profile ${i + 1}`}
|
|
75
|
+
width={40}
|
|
76
|
+
height={40}
|
|
77
|
+
className="aspect-square size-full object-cover"
|
|
78
|
+
/>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
))}
|
|
82
|
+
</div>
|
|
83
|
+
<div>
|
|
84
|
+
<span className="text-lg font-medium text-foreground">12K+</span>{" "}
|
|
85
|
+
<span className="text-muted-foreground">Users</span>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
{/* Vertical Separator */}
|
|
90
|
+
<div className="hidden h-4 w-px bg-border sm:block"></div>
|
|
91
|
+
|
|
92
|
+
{/* Ratings */}
|
|
93
|
+
<div className="flex flex-1 items-center gap-3">
|
|
94
|
+
<div className="flex gap-px" aria-label="4.5 stars rounded">
|
|
95
|
+
{[1, 2, 3, 4].map((star) => (
|
|
96
|
+
<Star key={star} className="size-5 fill-foreground text-foreground" strokeWidth={1} />
|
|
97
|
+
))}
|
|
98
|
+
<div className="relative">
|
|
99
|
+
<Star className="size-5 text-border fill-border" strokeWidth={1} />
|
|
100
|
+
<div className="absolute inset-0 overflow-hidden w-1/2">
|
|
101
|
+
<Star className="size-5 fill-foreground text-foreground" strokeWidth={1} />
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
<div>
|
|
106
|
+
<span className="text-lg font-medium text-foreground">4.5</span>{" "}
|
|
107
|
+
<span className="text-muted-foreground">Ratings</span>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
</section>
|
|
115
|
+
);
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
export default HeroSection;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Headphones, Share2, PenLine, ArrowUpRight, Paperclip } from 'lucide-react';
|
|
3
|
+
|
|
4
|
+
const HowItWorks = () => {
|
|
5
|
+
return (
|
|
6
|
+
<section id="how-it-works" className="relative w-full border-b bg-background">
|
|
7
|
+
<div className="mx-auto max-w-7xl border-x">
|
|
8
|
+
{/* Section Header */}
|
|
9
|
+
<div className="flex flex-col items-center border-b px-4 py-12 text-center sm:px-6 lg:px-8">
|
|
10
|
+
<span className="mb-2 text-sm font-semibold tracking-wider text-muted-foreground uppercase">
|
|
11
|
+
HOW IT WORKS
|
|
12
|
+
</span>
|
|
13
|
+
<h2 className="text-2xl font-semibold sm:text-3xl lg:text-[2.25rem] lg:leading-[1.25]">
|
|
14
|
+
Here's a quick look at how the AI agent effectively operates.
|
|
15
|
+
</h2>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div className="grid grid-cols-1 lg:grid-cols-2">
|
|
19
|
+
{/* Steps List */}
|
|
20
|
+
<div className="flex flex-col border-r-0 lg:border-r">
|
|
21
|
+
{/* Step 1 */}
|
|
22
|
+
<div className="group relative border-b p-8 transition-colors hover:bg-muted/30">
|
|
23
|
+
{/* Active Indicator Line */}
|
|
24
|
+
<div className="absolute top-0 bottom-0 left-0 w-0.5 bg-foreground opacity-100 transition-opacity" />
|
|
25
|
+
<div className="flex items-start gap-4">
|
|
26
|
+
<div className="flex shrink-0 items-center justify-center rounded-lg bg-muted p-2 text-foreground">
|
|
27
|
+
<Headphones className="size-5" />
|
|
28
|
+
</div>
|
|
29
|
+
<div>
|
|
30
|
+
<h3 className="mb-2 text-lg font-semibold text-foreground">Describe your workflow</h3>
|
|
31
|
+
<p className="text-muted-foreground leading-relaxed">
|
|
32
|
+
Inform the agent about what you wish to automate, ranging from daily team summaries to lead follow-ups, ensuring clarity in your request.
|
|
33
|
+
</p>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
{/* Step 2 */}
|
|
39
|
+
<div className="group relative border-b p-8 transition-colors hover:bg-muted/30">
|
|
40
|
+
<div className="absolute top-0 bottom-0 left-0 w-0.5 bg-foreground opacity-0 group-hover:opacity-100 transition-opacity" />
|
|
41
|
+
<div className="flex items-start gap-4">
|
|
42
|
+
<div className="flex shrink-0 items-center justify-center rounded-lg bg-muted p-2 text-foreground">
|
|
43
|
+
<Share2 className="size-5" />
|
|
44
|
+
</div>
|
|
45
|
+
<div>
|
|
46
|
+
<h3 className="mb-2 text-lg font-semibold text-foreground">Connect your tools</h3>
|
|
47
|
+
<p className="text-muted-foreground leading-relaxed">
|
|
48
|
+
Link Gmail, Slack, Notion, or any app your team already uses. The agent syncs data between them and builds context automatically.
|
|
49
|
+
</p>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
{/* Step 3 */}
|
|
55
|
+
<div className="group relative p-8 transition-colors hover:bg-muted/30">
|
|
56
|
+
<div className="absolute top-0 bottom-0 left-0 w-0.5 bg-foreground opacity-0 group-hover:opacity-100 transition-opacity" />
|
|
57
|
+
<div className="flex items-start gap-4">
|
|
58
|
+
<div className="flex shrink-0 items-center justify-center rounded-lg bg-muted p-2 text-foreground">
|
|
59
|
+
<PenLine className="size-5" />
|
|
60
|
+
</div>
|
|
61
|
+
<div>
|
|
62
|
+
<h3 className="mb-2 text-lg font-semibold text-foreground">Review and refine</h3>
|
|
63
|
+
<p className="text-muted-foreground leading-relaxed">
|
|
64
|
+
Every run is transparent. Approve, edit, or rerun workflows anytime — the agent learns from feedback to perform even better next time.
|
|
65
|
+
</p>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
{/* Visual Showcase (Static Preview of the UI described in steps) */}
|
|
72
|
+
<div className="relative flex items-center justify-center bg-muted/30 p-8 lg:p-12">
|
|
73
|
+
{/* Dot Grid Background Overlay */}
|
|
74
|
+
<div
|
|
75
|
+
className="absolute inset-0 opacity-[0.03]"
|
|
76
|
+
style={{
|
|
77
|
+
backgroundImage: 'radial-gradient(#09090B 1px, transparent 1px)',
|
|
78
|
+
backgroundSize: '24px 24px'
|
|
79
|
+
}}
|
|
80
|
+
/>
|
|
81
|
+
|
|
82
|
+
{/* UI Component Simulation */}
|
|
83
|
+
<div className="relative z-10 w-full max-w-sm rounded-[1.25rem] border border-border bg-white p-6 shadow-2xl">
|
|
84
|
+
<div className="mb-4">
|
|
85
|
+
<p className="text-[17px] font-medium leading-relaxed text-foreground">
|
|
86
|
+
Summarize daily team updates from Slack and
|
|
87
|
+
</p>
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
<div className="flex items-center justify-between gap-2 border-t pt-4">
|
|
91
|
+
<div className="flex items-center gap-2 rounded-lg border bg-muted/50 px-3 py-1.5 transition-colors hover:bg-muted">
|
|
92
|
+
<div className="flex size-5 items-center justify-center rounded-full bg-zinc-800 text-white">
|
|
93
|
+
<svg viewBox="0 0 24 24" className="size-3 fill-current">
|
|
94
|
+
<path d="M22.2819 9.8211a5.9847 5.9847 0 0 0-.5153-4.9066 6.0462 6.0462 0 0 0-3.947-3.1298 6.0945 6.0945 0 0 0-5.1813.9856 6.1365 6.1365 0 0 0-2.8826 3.6312 6.1132 6.1132 0 0 0-2.4033-.3111 6.0469 6.0469 0 0 0-4.3827 2.3669 6.133 6.133 0 0 0-1.42 4.4161 6.0934 6.0934 0 0 0 1.2574 4.0601 5.985 5.985 0 0 0 .5141 4.9068 6.0463 6.0463 0 0 0 3.947 3.1297 6.0948 6.0948 0 0 0 5.1813-.9855 6.1351 6.1351 0 0 0 2.884-3.6325 6.1042 6.1042 0 0 0 2.403.3125 6.0461 6.0461 0 0 0 4.3815-2.3683 6.126 6.126 0 0 0 1.4192-4.4138 6.091 6.091 0 0 0-1.2581-4.061z"/>
|
|
95
|
+
</svg>
|
|
96
|
+
</div>
|
|
97
|
+
<span className="text-xs font-semibold text-foreground uppercase tracking-tight">GPT-5-mini</span>
|
|
98
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" className="text-muted-foreground/60"><path d="m6 9 6 6 6-6"/></svg>
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
|
+
<div className="flex items-center gap-2">
|
|
102
|
+
<div className="flex size-9 items-center justify-center rounded-lg bg-muted text-foreground transition-colors hover:bg-zinc-200">
|
|
103
|
+
<Paperclip className="size-4" />
|
|
104
|
+
</div>
|
|
105
|
+
<div className="flex size-9 items-center justify-center rounded-lg bg-foreground text-white shadow-lg transition-all hover:scale-105 active:scale-95">
|
|
106
|
+
<ArrowUpRight className="size-5" />
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
{/* Decorative Subtle Labels inside UI mockup */}
|
|
112
|
+
<div className="absolute -right-6 top-1/2 -translate-y-1/2 rotate-90 transform text-[10px] font-medium tracking-widest text-border opacity-50 uppercase">
|
|
113
|
+
Dynamic Engine
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
</section>
|
|
120
|
+
);
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
export default HowItWorks;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import React, { useState } from "react";
|
|
4
|
+
import { Check } from "lucide-react";
|
|
5
|
+
|
|
6
|
+
const PricingSection = () => {
|
|
7
|
+
const [billingCycle, setBillingCycle] = useState<"monthly" | "yearly">("monthly");
|
|
8
|
+
|
|
9
|
+
const plans = [
|
|
10
|
+
{
|
|
11
|
+
name: "Starter",
|
|
12
|
+
description: "For individuals or small teams getting started",
|
|
13
|
+
monthlyPrice: 8,
|
|
14
|
+
yearlyPrice: 6,
|
|
15
|
+
buttonText: "Purchase plan",
|
|
16
|
+
buttonVariant: "secondary",
|
|
17
|
+
features: [
|
|
18
|
+
"Up to 3 active AI agents",
|
|
19
|
+
"100 automated tasks per month",
|
|
20
|
+
"Workflow designer access",
|
|
21
|
+
"Integration with Slack + Notion",
|
|
22
|
+
"Community support",
|
|
23
|
+
"1 shared workspace",
|
|
24
|
+
"API access",
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: "Pro",
|
|
29
|
+
description: "For growing teams ready to automate deeper",
|
|
30
|
+
monthlyPrice: 12,
|
|
31
|
+
yearlyPrice: 9,
|
|
32
|
+
buttonText: "Purchase plan",
|
|
33
|
+
buttonVariant: "primary",
|
|
34
|
+
highlighted: true,
|
|
35
|
+
features: [
|
|
36
|
+
"Up to 15 active AI agents",
|
|
37
|
+
"500 automated tasks per month",
|
|
38
|
+
"Workflow designer + AI templates",
|
|
39
|
+
"Integration with Slack, Notion, and GitHub",
|
|
40
|
+
"Priority chat support",
|
|
41
|
+
"5 team workspaces",
|
|
42
|
+
"API + Webhook access",
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: "Enterprise",
|
|
47
|
+
description: "For large organizations needing scale & control",
|
|
48
|
+
monthlyPrice: 25,
|
|
49
|
+
yearlyPrice: 19,
|
|
50
|
+
buttonText: "Purchase plan",
|
|
51
|
+
buttonVariant: "secondary",
|
|
52
|
+
features: [
|
|
53
|
+
"Unlimited active AI agents",
|
|
54
|
+
"Unlimited automated tasks",
|
|
55
|
+
"Advanced workflow orchestration",
|
|
56
|
+
"Integration with custom enterprise tools",
|
|
57
|
+
"Dedicated success manager",
|
|
58
|
+
"Unlimited workspaces",
|
|
59
|
+
"Advanced security & compliance",
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
|
|
64
|
+
return (
|
|
65
|
+
<section id="pricing" className="relative flex flex-col overflow-hidden">
|
|
66
|
+
{/* Section Header with Background Borders */}
|
|
67
|
+
<div className="border-b border-border px-4 sm:px-6 lg:px-8">
|
|
68
|
+
<div className="mx-auto flex max-w-7xl flex-col items-center border-x border-border px-4 py-12 text-center sm:px-6 lg:px-8 lg:py-16">
|
|
69
|
+
<span className="text-sm font-semibold tracking-widest text-muted-foreground uppercase mb-4">
|
|
70
|
+
PRICING
|
|
71
|
+
</span>
|
|
72
|
+
<h2 className="text-3xl font-semibold tracking-tight text-foreground sm:text-4xl">
|
|
73
|
+
Plans that Scale with Your Workflow
|
|
74
|
+
</h2>
|
|
75
|
+
<p className="mt-4 max-w-2xl text-base text-muted-foreground">
|
|
76
|
+
Find the perfect balance of features and scalability for your workflow,
|
|
77
|
+
designed to help you work smarter and grow effortlessly.
|
|
78
|
+
</p>
|
|
79
|
+
|
|
80
|
+
{/* Monthly/Yearly Toggle */}
|
|
81
|
+
<div className="mt-10 flex items-center justify-center gap-1">
|
|
82
|
+
<div className="inline-flex items-center rounded-lg border border-border bg-white p-1">
|
|
83
|
+
<button
|
|
84
|
+
onClick={() => setBillingCycle("monthly")}
|
|
85
|
+
className={`rounded-md px-6 py-1.5 text-sm font-medium transition-all ${
|
|
86
|
+
billingCycle === "monthly"
|
|
87
|
+
? "bg-muted text-foreground"
|
|
88
|
+
: "text-muted-foreground hover:text-foreground"
|
|
89
|
+
}`}
|
|
90
|
+
>
|
|
91
|
+
Monthly
|
|
92
|
+
</button>
|
|
93
|
+
<button
|
|
94
|
+
onClick={() => setBillingCycle("yearly")}
|
|
95
|
+
className={`flex items-center rounded-md px-6 py-1.5 text-sm font-medium transition-all ${
|
|
96
|
+
billingCycle === "yearly"
|
|
97
|
+
? "bg-muted text-foreground"
|
|
98
|
+
: "text-muted-foreground hover:text-foreground"
|
|
99
|
+
}`}
|
|
100
|
+
>
|
|
101
|
+
Yearly
|
|
102
|
+
<span className="ml-2 rounded-full bg-foreground px-2 py-0.5 text-[10px] text-white">
|
|
103
|
+
Save 35%
|
|
104
|
+
</span>
|
|
105
|
+
</button>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
{/* Pricing Grid */}
|
|
112
|
+
<div className="border-b border-border px-4 sm:px-6 lg:px-8">
|
|
113
|
+
<div className="mx-auto grid max-w-7xl grid-cols-1 border-x border-border lg:grid-cols-3">
|
|
114
|
+
{plans.map((plan, index) => (
|
|
115
|
+
<div
|
|
116
|
+
key={plan.name}
|
|
117
|
+
className={`flex flex-col border-b border-border p-8 lg:p-12 last:border-b-0 lg:border-b-0 ${
|
|
118
|
+
index !== plans.length - 1 ? "lg:border-r" : ""
|
|
119
|
+
} ${plan.highlighted ? "bg-muted/30" : "bg-transparent"}`}
|
|
120
|
+
>
|
|
121
|
+
<div className="mb-8">
|
|
122
|
+
<h3 className="text-2xl font-semibold text-foreground">
|
|
123
|
+
{plan.name}
|
|
124
|
+
</h3>
|
|
125
|
+
<p className="mt-2 text-sm text-muted-foreground">
|
|
126
|
+
{plan.description}
|
|
127
|
+
</p>
|
|
128
|
+
<div className="mt-6 flex items-baseline">
|
|
129
|
+
<span className="text-4xl font-semibold text-foreground">
|
|
130
|
+
${billingCycle === "monthly" ? plan.monthlyPrice : plan.yearlyPrice}
|
|
131
|
+
</span>
|
|
132
|
+
<span className="ml-1 text-sm text-muted-foreground">/month</span>
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
135
|
+
|
|
136
|
+
<div className="mb-10">
|
|
137
|
+
<button
|
|
138
|
+
className={`w-full rounded-lg py-3 text-sm font-medium transition-all duration-300 ${
|
|
139
|
+
plan.buttonVariant === "primary"
|
|
140
|
+
? "bg-foreground text-white shadow-[inset_0_2px_3px_0_rgba(255,255,255,0.15),inset_2px_-4px_4px_0_rgba(0,0,0,0.25)] hover:shadow-[inset_0_0_0_0_#18181B,inset_1px_-1.5px_2px_0_rgba(0,0,0,0.25)]"
|
|
141
|
+
: "bg-muted text-foreground border border-border hover:bg-zinc-200"
|
|
142
|
+
}`}
|
|
143
|
+
>
|
|
144
|
+
{plan.buttonText}
|
|
145
|
+
</button>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
<ul className="space-y-4">
|
|
149
|
+
{plan.features.map((feature) => (
|
|
150
|
+
<li key={feature} className="flex items-start gap-3">
|
|
151
|
+
<div className="mt-1 flex-shrink-0">
|
|
152
|
+
<div className="h-1.5 w-1.5 rounded-full bg-foreground" />
|
|
153
|
+
</div>
|
|
154
|
+
<span className="text-sm text-muted-foreground">{feature}</span>
|
|
155
|
+
</li>
|
|
156
|
+
))}
|
|
157
|
+
</ul>
|
|
158
|
+
</div>
|
|
159
|
+
))}
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
|
|
163
|
+
{/* Decorative Dot Grid Background can be added here if needed to match other sections */}
|
|
164
|
+
</section>
|
|
165
|
+
);
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
export default PricingSection;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Image from 'next/image';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* TestimonialLogos component
|
|
6
|
+
*
|
|
7
|
+
* This component renders a grid of partner logos with a consistent design system.
|
|
8
|
+
* It's structured with a container that has visible the vertical border styling
|
|
9
|
+
* defined in the high-level design.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const logos = [
|
|
13
|
+
{
|
|
14
|
+
name: 'Bright Sync',
|
|
15
|
+
src: 'https://slelguoygbfzlpylpxfs.supabase.co/storage/v1/object/public/test-clones/73098f9c-15b9-43d6-98e6-96ab2eba390e-shadcn-nextjs-orion-landing-page-vercel-app/assets/images/11-24.webp',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'Novas Solution',
|
|
19
|
+
src: 'https://slelguoygbfzlpylpxfs.supabase.co/storage/v1/object/public/test-clones/73098f9c-15b9-43d6-98e6-96ab2eba390e-shadcn-nextjs-orion-landing-page-vercel-app/assets/images/12-25.webp',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Looma Labs',
|
|
23
|
+
src: 'https://slelguoygbfzlpylpxfs.supabase.co/storage/v1/object/public/test-clones/73098f9c-15b9-43d6-98e6-96ab2eba390e-shadcn-nextjs-orion-landing-page-vercel-app/assets/images/13-26.webp',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'Crestline',
|
|
27
|
+
src: 'https://slelguoygbfzlpylpxfs.supabase.co/storage/v1/object/public/test-clones/73098f9c-15b9-43d6-98e6-96ab2eba390e-shadcn-nextjs-orion-landing-page-vercel-app/assets/images/14-27.webp',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'CogniTech Labs',
|
|
31
|
+
src: 'https://slelguoygbfzlpylpxfs.supabase.co/storage/v1/object/public/test-clones/73098f9c-15b9-43d6-98e6-96ab2eba390e-shadcn-nextjs-orion-landing-page-vercel-app/assets/images/10-28.webp',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Tech Wave',
|
|
35
|
+
src: 'https://slelguoygbfzlpylpxfs.supabase.co/storage/v1/object/public/test-clones/73098f9c-15b9-43d6-98e6-96ab2eba390e-shadcn-nextjs-orion-landing-page-vercel-app/assets/images/24-29.webp',
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const TestimonialLogos = () => {
|
|
40
|
+
return (
|
|
41
|
+
<section id="testimonials-logos" className="w-full bg-[#FDF8F3]">
|
|
42
|
+
<div className="mx-auto max-w-7xl border-x border-border">
|
|
43
|
+
{/* Descriptive Header for the Logos */}
|
|
44
|
+
<div className="flex flex-col items-center justify-center border-b border-border py-12 px-4 text-center">
|
|
45
|
+
<h2 className="text-xs font-semibold uppercase tracking-[0.2em] text-[#71717A] mb-2">
|
|
46
|
+
Testimonials
|
|
47
|
+
</h2>
|
|
48
|
+
<p className="text-sm text-[#71717A]">
|
|
49
|
+
Real experiences from users who automated work with AI.
|
|
50
|
+
</p>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
{/* Logo Grid Section */}
|
|
54
|
+
<div className="grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-6 border-b border-border">
|
|
55
|
+
{logos.map((logo, index) => (
|
|
56
|
+
<div
|
|
57
|
+
key={logo.name}
|
|
58
|
+
className={`flex flex-col items-center justify-center py-10 px-4 transition-all duration-300 hover:bg-[#FFF1E6]/50 group cursor-default
|
|
59
|
+
${index < logos.length - 1 ? 'border-r border-border' : ''}
|
|
60
|
+
${index >= 3 && index < 6 ? 'max-sm:border-t' : ''}
|
|
61
|
+
${index >= 2 && index < 6 ? 'max-lg:border-t lg:border-t-0' : ''}
|
|
62
|
+
/* Handling responsive borders specifically to match grid */
|
|
63
|
+
${index % 2 !== 0 ? 'max-sm:border-r-0' : 'max-sm:border-r'}
|
|
64
|
+
${(index + 1) % 3 === 0 ? 'max-lg:border-r-0' : 'max-lg:border-r'}
|
|
65
|
+
${index === 5 ? 'lg:border-r-0' : ''}
|
|
66
|
+
`}
|
|
67
|
+
>
|
|
68
|
+
<div className="relative h-12 w-full max-w-[140px] grayscale opacity-50 transition-all duration-300 group-hover:grayscale-0 group-hover:opacity-100 flex items-center justify-center">
|
|
69
|
+
<Image
|
|
70
|
+
src={logo.src}
|
|
71
|
+
alt={`${logo.name} logo`}
|
|
72
|
+
fill
|
|
73
|
+
style={{ objectFit: 'contain' }}
|
|
74
|
+
sizes="(max-width: 768px) 100px, 140px"
|
|
75
|
+
/>
|
|
76
|
+
</div>
|
|
77
|
+
<span className="mt-4 text-[13px] font-medium text-[#71717A] group-hover:text-foreground transition-colors">
|
|
78
|
+
{logo.name}
|
|
79
|
+
</span>
|
|
80
|
+
</div>
|
|
81
|
+
))}
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</section>
|
|
85
|
+
);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export default TestimonialLogos;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import React, { useState } from "react";
|
|
4
|
+
|
|
5
|
+
import { ArrowUpRight, TrendingUp, Users, Crown } from "lucide-react";
|
|
6
|
+
|
|
7
|
+
interface UseCase {
|
|
8
|
+
id: string;
|
|
9
|
+
title: string;
|
|
10
|
+
description: string;
|
|
11
|
+
longDescription: string;
|
|
12
|
+
testimonial: string;
|
|
13
|
+
icon: React.ReactNode;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const useCases: UseCase[] = [
|
|
17
|
+
{
|
|
18
|
+
id: "sales",
|
|
19
|
+
title: "Sales leader",
|
|
20
|
+
description: "Sales Leaders use ai agent to automate and optimise sales workflows",
|
|
21
|
+
longDescription: "This helps sales teams reduce tasks like lead qualification and follow-ups. With automated workflows, sales teams can focus on closing deals faster, prioritizing high-value prospects, and increasing conversion rates consistently.",
|
|
22
|
+
testimonial: '"Our sales cycle has been cut down by 30%, thanks to the efficiency and precision provided by AI..."',
|
|
23
|
+
icon: <TrendingUp className="size-4" />,
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: "marketing",
|
|
27
|
+
title: "Marketing leader",
|
|
28
|
+
description: "Marketing leaders leverage AI to streamline content and campaign management",
|
|
29
|
+
longDescription: "Automate social media scheduling, email campaign triggers, and data analysis across platforms. Open Engineer allows marketing teams to maintain brand consistency while scaling their output without adding extra overhead to the creative process.",
|
|
30
|
+
testimonial: '"Generating reports and managing multi-channel campaigns has never been this seamless. Truly a game changer."',
|
|
31
|
+
icon: <Users className="size-4" />,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: "founders",
|
|
35
|
+
title: "Founders",
|
|
36
|
+
description: "Founders use ai to scale operations and make faster, smarter decisions",
|
|
37
|
+
longDescription: "AI helps founders automate routine work, gain clear insights from data, and run leaner operations efficiently. This allows them to focus on strategic growth, innovation, faster execution, and building long-term value.",
|
|
38
|
+
testimonial: '"Scaling our startup was only possible because we automated our back-office operations from day one with Open Engineer."',
|
|
39
|
+
icon: <Crown className="size-4" />,
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
export default function UseCasesSection() {
|
|
44
|
+
const [activeTab, setActiveTab] = useState<string>("sales");
|
|
45
|
+
|
|
46
|
+
const activeUseCase = useCases.find((u) => u.id === activeTab) || useCases[0];
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<section id="use-cases" className="relative flex flex-col bg-background">
|
|
50
|
+
{/* Structural Header Padding */}
|
|
51
|
+
<div className="border-b px-4 sm:px-6 lg:px-8">
|
|
52
|
+
<div className="mx-auto max-w-7xl border-x px-4 py-12 text-center sm:px-6 lg:px-8">
|
|
53
|
+
<div className="flex flex-col items-center gap-2">
|
|
54
|
+
<span className="text-xs font-semibold tracking-widest text-muted-foreground uppercase">
|
|
55
|
+
Use Cases
|
|
56
|
+
</span>
|
|
57
|
+
<p className="text-sm text-muted-foreground">
|
|
58
|
+
Practical ways our AI agent automates your daily tasks.
|
|
59
|
+
</p>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
{/* Main Content Area */}
|
|
65
|
+
<div className="border-b px-4 sm:px-6 lg:px-8">
|
|
66
|
+
<div className="mx-auto max-w-7xl border-x">
|
|
67
|
+
<div className="grid grid-cols-1 lg:grid-cols-12 min-h-[600px]">
|
|
68
|
+
{/* Left Content Column */}
|
|
69
|
+
<div className="lg:col-span-7 flex flex-col justify-between p-8 sm:p-12 lg:p-16">
|
|
70
|
+
<div className="space-y-8">
|
|
71
|
+
<h2 className="text-3xl font-semibold leading-tight text-foreground sm:text-4xl lg:text-5xl max-w-xl">
|
|
72
|
+
See how we drives <span className="text-muted-foreground">success</span> for{" "}
|
|
73
|
+
<span className="text-foreground">every team.</span>
|
|
74
|
+
</h2>
|
|
75
|
+
|
|
76
|
+
<div className="space-y-4 transition-all duration-500 ease-in-out">
|
|
77
|
+
<h3 className="text-xl font-semibold text-foreground sm:text-2xl capitalize">
|
|
78
|
+
{activeUseCase.description}
|
|
79
|
+
</h3>
|
|
80
|
+
<p className="max-w-xl text-base leading-relaxed text-muted-foreground">
|
|
81
|
+
{activeUseCase.longDescription}
|
|
82
|
+
</p>
|
|
83
|
+
<a
|
|
84
|
+
href="#"
|
|
85
|
+
className="inline-flex items-center gap-1.5 text-sm font-medium text-primary hover:underline group"
|
|
86
|
+
>
|
|
87
|
+
Learn more
|
|
88
|
+
<ArrowUpRight className="size-3.5 transition-transform group-hover:translate-x-0.5 group-hover:-translate-y-0.5" />
|
|
89
|
+
</a>
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+
{/* Tabs Navigation (Positioned at bottom of left content) */}
|
|
94
|
+
<div className="mt-12 flex flex-wrap gap-px overflow-hidden rounded-lg border border-border bg-border shadow-sm">
|
|
95
|
+
{useCases.map((useCase) => (
|
|
96
|
+
<button
|
|
97
|
+
key={useCase.id}
|
|
98
|
+
onClick={() => setActiveTab(useCase.id)}
|
|
99
|
+
className={`flex flex-1 items-center justify-center gap-2 px-4 py-4 text-sm font-medium transition-all sm:px-6 ${
|
|
100
|
+
activeTab === useCase.id
|
|
101
|
+
? "bg-muted text-primary"
|
|
102
|
+
: "bg-card text-muted-foreground hover:bg-muted/50 hover:text-foreground"
|
|
103
|
+
}`}
|
|
104
|
+
>
|
|
105
|
+
<span className={activeTab === useCase.id ? "text-primary" : "text-primary/60"}>
|
|
106
|
+
{useCase.icon}
|
|
107
|
+
</span>
|
|
108
|
+
{useCase.title}
|
|
109
|
+
</button>
|
|
110
|
+
))}
|
|
111
|
+
</div>
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
{/* Right Testimonial Column */}
|
|
115
|
+
<div className="relative lg:col-span-5 bg-muted/30 overflow-hidden flex items-center justify-center">
|
|
116
|
+
<div className="relative h-full w-full min-h-[400px] flex items-end p-8">
|
|
117
|
+
{/* Floating Testimonial Card */}
|
|
118
|
+
<div className="w-full">
|
|
119
|
+
<div className="glass-card rounded-xl border border-white/20 p-6 shadow-2xl backdrop-blur-md">
|
|
120
|
+
<p className="text-sm font-medium italic text-foreground leading-relaxed">
|
|
121
|
+
{activeUseCase.testimonial}
|
|
122
|
+
</p>
|
|
123
|
+
<div className="mt-4 flex items-center gap-2">
|
|
124
|
+
<div className="size-1 bg-primary rounded-full"></div>
|
|
125
|
+
<span className="text-xs font-semibold uppercase tracking-wider text-muted-foreground">
|
|
126
|
+
Verified Result
|
|
127
|
+
</span>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
</div>
|
|
132
|
+
|
|
133
|
+
{/* Decorative Corner Grid */}
|
|
134
|
+
<div className="dot-grid absolute inset-0 pointer-events-none opacity-20"></div>
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
</section>
|
|
140
|
+
);
|
|
141
|
+
}
|