11<script setup lang="ts">
2- import { Icon } from ' @iconify/vue' ;
3- import SiteFooter from ' ./components/SiteFooter.vue' ;
42import Badge from ' ./components/Badge.vue' ;
5- import CtaButton from ' ./components/CtaButton.vue' ;
63import CtaSection from ' ./components/CtaSection.vue' ;
74import FeatureCard from ' ./components/FeatureCard.vue' ;
85import FeatureSection from ' ./components/FeatureSection.vue' ;
96import FlutterBrand from ' ./components/FlutterBrand.vue' ;
107import GridBackground from ' ./components/GridBackground.vue' ;
11- import MarqueeSection from ' ./components/MarqueeSection.vue' ;
8+ import HeroSection from ' ./components/HeroSection.vue' ;
9+ import MarqueeGroup from ' ./components/MarqueeGroup.vue' ;
10+ import Section from ' ./components/Section.vue' ;
1211import SectionHeader from ' ./components/SectionHeader.vue' ;
12+ import SelectProgramCard from ' ./components/SelectProgramCard.vue' ;
13+ import SiteFooter from ' ./components/SiteFooter.vue' ;
1314import TitleBadge from ' ./components/TitleBadge.vue' ;
1415
1516// Blinking grid cells generator
@@ -160,53 +161,56 @@ const workflowFeatures = [
160161];
161162
162163// Marquee content for Pro features
163- const marqueePurple = [
164- ' Unlimited Undo/Redo' ,
165- ' Step-through Debugging' ,
166- ' Workflow Versioning' ,
167- ' Custom Tasks' ,
168- ' Task Libraries' ,
169- ' Auto-Save' ,
170- ' Collaboration' ,
171- ];
172-
173- const marqueeTeal = [
174- ' BPMN Activities' ,
175- ' Saga Patterns' ,
176- ' Retry Policies' ,
177- ' Error Handling' ,
178- ' Async Execution' ,
179- ' Event Streams' ,
180- ' Audit Trails' ,
181- ' Worker Pools' ,
182- ];
183-
184- const marqueeAmber = [
185- ' Priority Support' ,
186- ' Custom Integrations' ,
187- ' SSO Authentication' ,
188- ' Role-Based Access' ,
189- ' API Access' ,
190- ' Webhooks' ,
191- ' Custom Branding' ,
192- ' SLA Guarantee' ,
164+ const marqueeLines = [
165+ {
166+ items: [
167+ ' Unlimited Undo/Redo' ,
168+ ' Step-through Debugging' ,
169+ ' Workflow Versioning' ,
170+ ' Custom Tasks' ,
171+ ' Task Libraries' ,
172+ ' Auto-Save' ,
173+ ' Collaboration' ,
174+ ],
175+ color: ' purple' as const ,
176+ },
177+ {
178+ items: [
179+ ' BPMN Activities' ,
180+ ' Saga Patterns' ,
181+ ' Retry Policies' ,
182+ ' Error Handling' ,
183+ ' Async Execution' ,
184+ ' Event Streams' ,
185+ ' Audit Trails' ,
186+ ' Worker Pools' ,
187+ ],
188+ color: ' teal' as const ,
189+ reverse: true ,
190+ },
191+ {
192+ items: [
193+ ' Priority Support' ,
194+ ' Custom Integrations' ,
195+ ' SSO Authentication' ,
196+ ' Role-Based Access' ,
197+ ' API Access' ,
198+ ' Webhooks' ,
199+ ' Custom Branding' ,
200+ ' SLA Guarantee' ,
201+ ],
202+ color: ' purple' as const ,
203+ },
193204];
194205 </script >
195206
196207<template >
197- <div class =" pro-page " >
198- <!-- Grid Background (reused component) -->
208+ <div class =" min-h-screen relative overflow-x-hidden " >
209+ <!-- Grid Background -->
199210 <GridBackground color =" purple" :blinkCells =" proBlinkCells" />
200211
201- <!-- Blur Effects -->
202- <div class =" pro-background" >
203- <div class =" pro-blur pro-blur-purple" />
204- <div class =" pro-blur pro-blur-blue" />
205- <div class =" pro-blur pro-blur-teal" />
206- </div >
207-
208- <!-- Hero Section -->
209- <section class =" pro-hero" >
212+ <!-- Hero Section with centered variant -->
213+ <HeroSection variant =" centered" >
210214 <Badge icon =" ph:crown-fill" color =" purple" >Pro Edition</Badge >
211215 <h1 class =" pro-title" >
212216 <span class =" pro-title-gradient" >Vyuh Node Flow</span >
@@ -216,26 +220,13 @@ const marqueeAmber = [
216220 Enterprise-grade features for building sophisticated visual editors,
217221 workflow engines, and BPMN-style automation.
218222 </p >
219- <div class =" pro-select-card" >
220- <Badge icon =" ph:users-three-fill" color =" amber" >Select Program</Badge >
221- <p class =" pro-select-text" >
222- We're working closely with select customers to refine the Vyuh Node
223- Flow package, editor, and workflow engine. Want to shape the future of
224- visual flow editing in Flutter?
225- </p >
226- <CtaButton
227- href =" https://vyuh.tech"
228- icon =" ph:envelope-fill"
229- variant =" primary"
230- external
231- >
232- Join the Waitlist
233- </CtaButton >
223+ <div class =" mt-12" >
224+ <SelectProgramCard />
234225 </div >
235- </section >
226+ </HeroSection >
236227
237- <!-- Features Grid -->
238- <section class = " pro-features-section " >
228+ <!-- Pro Features Grid -->
229+ <Section first background >
239230 <SectionHeader
240231 badge =" Pro Features"
241232 badge-icon =" ph:star-fill"
@@ -244,7 +235,7 @@ const marqueeAmber = [
244235 subtitle =" Powerful capabilities designed for professional development teams and enterprise applications."
245236 centered
246237 />
247- <div class =" pro-features- grid" >
238+ <div class =" grid grid-cols-1 md: grid-cols-2 lg:grid-cols-4 gap-6 " >
248239 <FeatureCard
249240 v-for =" (feature, index) in proFeatures"
250241 :key =" index"
@@ -254,17 +245,13 @@ const marqueeAmber = [
254245 :color =" feature.color"
255246 />
256247 </div >
257- </section >
248+ </Section >
258249
259250 <!-- Marquee -->
260- <section class =" pro-marquee-section" >
261- <MarqueeSection :items =" marqueePurple" color =" purple" />
262- <MarqueeSection :items =" marqueeTeal" color =" teal" reverse />
263- <MarqueeSection :items =" marqueeAmber" color =" purple" />
264- </section >
251+ <MarqueeGroup :lines =" marqueeLines" />
265252
266253 <!-- Workflow Engine Section -->
267- <section class = " workflow-engine-section " >
254+ <Section background >
268255 <SectionHeader
269256 badge =" Workflow Engine"
270257 badge-icon =" ph:git-branch-fill"
@@ -275,7 +262,7 @@ const marqueeAmber = [
275262 large-title
276263 />
277264
278- <div class =" workflow-details " >
265+ <div class =" mt-16 " >
279266 <FeatureSection
280267 v-for =" (feature, index) in workflowFeatures"
281268 :key =" index"
@@ -289,7 +276,7 @@ const marqueeAmber = [
289276 :reverse =" index % 2 === 1"
290277 />
291278 </div >
292- </section >
279+ </Section >
293280
294281 <!-- CTA Section -->
295282 <CtaSection
@@ -301,14 +288,20 @@ const marqueeAmber = [
301288 href: 'https://vyuh.tech',
302289 icon: 'ph:rocket-launch-fill',
303290 label: 'Apply for Select Access',
304- external: true
291+ external: true,
305292 }"
306293 :secondary-actions =" [
307- { href: '/docs/getting-started/installation', icon: 'ph:github-logo-fill', label: 'Try Free Version' }
294+ {
295+ href: '/docs/getting-started/installation',
296+ icon: 'ph:github-logo-fill',
297+ label: 'Try Free Version',
298+ },
308299 ]"
309300 >
310301 <template #subtitle >
311- <p class =" cta-subtitle" >
302+ <p
303+ class =" text-lg text-slate-600 dark:text-zinc-400 leading-relaxed mb-10"
304+ >
312305 We're collaborating with a select group of customers to build the
313306 future of visual flow editing in
314307 <FlutterBrand />. Get early access, direct support, and help shape the
@@ -325,52 +318,17 @@ const marqueeAmber = [
325318<style >
326319@reference "./style.css";
327320
328- /* ═══════════════════════════════════════════════════════════════════
329- PRO PAGE BASE
330- ═══════════════════════════════════════════════════════════════════ */
331-
332- .pro-page {
333- @apply min-h-screen relative overflow-x-hidden ;
334- /* No solid background - let the grid show through */
335- }
336-
337- /* ═══════════════════════════════════════════════════════════════════
338- BACKGROUND EFFECTS
339- ═══════════════════════════════════════════════════════════════════ */
340-
341- .pro-background {
342- @apply fixed inset- 0 z- [1] pointer-events-none overflow-hidden ;
343- }
344-
345- .pro-blur {
346- @apply absolute w- 96 h- 96 rounded-full blur- 3xl ;
347- }
348-
349- .pro-blur-purple {
350- @apply bg-violet- 500/20 dark :bg-violet-400/15 top-1/4 left-1/4 ;
351- }
352-
353- .pro-blur-blue {
354- @apply bg-blue- 500/15 dark :bg-blue-400/10 top-1/2 right-1/4 ;
355- }
356-
357- .pro-blur-teal {
358- @apply bg-teal- 500/15 dark :bg-teal-400/10 bottom-1/4 left-1/3 ;
359- }
360-
361- /* ═══════════════════════════════════════════════════════════════════
362- HERO SECTION
363- ═══════════════════════════════════════════════════════════════════ */
364-
365- .pro-hero {
366- @apply relative z- 10 py- 32 px- 6 text-center max-w- 4xl mx-auto ;
367- }
368-
321+ /* Pro page title - unique gradient styling */
369322.pro-title {
370323 @apply text- 5xl sm :text-6xl lg:text-7xl font-black leading-none mb-6;
371324 font-family : var (--vn-font-display );
372325}
373326
327+ .pro-subtitle {
328+ @apply text-xl text-slate- 600 dark :text-zinc-400 leading-relaxed;
329+ @apply text-center max-w- 2xl mx-auto ;
330+ }
331+
374332.pro-title-gradient {
375333 @apply block ;
376334 background : linear-gradient (
@@ -393,57 +351,4 @@ const marqueeAmber = [
393351 -webkit-text-fill-color : transparent ;
394352 background-clip : text ;
395353}
396-
397- .pro-subtitle {
398- @apply text-xl text-slate- 600 dark :text-zinc-400 leading-relaxed mb-10 max-w-2xl mx-auto;
399- }
400-
401- .pro-select-card {
402- @apply flex flex-col items-center gap- 4 p- 8 rounded- 2xl max-w-xl mx-auto ;
403- @apply bg-white /80 dark :bg-zinc-800/60 backdrop-blur-sm;
404- @apply border border-slate- 200/60 dark :border-zinc-600/40 ;
405- box-shadow : 0 4px 20px rgba (0 , 0 , 0 , 0.05 );
406- }
407-
408- .dark .pro-select-card {
409- box-shadow : 0 4px 20px rgba (0 , 0 , 0 , 0.2 );
410- }
411-
412- .pro-select-text {
413- @apply text-base text-slate- 500 dark :text-zinc-400 text-center;
414- }
415-
416- /* ═══════════════════════════════════════════════════════════════════
417- FEATURES SECTION
418- ═══════════════════════════════════════════════════════════════════ */
419-
420- .pro-features-section {
421- @apply relative z- 10 py- 24 px- 6 max-w- 6xl mx-auto ;
422- }
423-
424- .pro-features-grid {
425- @apply grid grid-cols- 1 md :grid-cols-2 lg:grid-cols-4 gap-6;
426- }
427-
428- /* ═══════════════════════════════════════════════════════════════════
429- MARQUEE SECTION
430- ═══════════════════════════════════════════════════════════════════ */
431-
432- .pro-marquee-section {
433- @apply relative z- 10 py- 10 overflow-hidden ;
434- @apply bg-white /70 dark :bg-zinc-800/50 ;
435- @apply backdrop-blur-md ;
436- }
437-
438- /* ═══════════════════════════════════════════════════════════════════
439- WORKFLOW ENGINE SECTION
440- ═══════════════════════════════════════════════════════════════════ */
441-
442- .workflow-engine-section {
443- @apply relative z- 10 py- 24 px- 6 max-w- 6xl mx-auto ;
444- }
445-
446- .workflow-details {
447- @apply mt- 16;
448- }
449354 </style >
0 commit comments