Skip to content

Commit eba946d

Browse files
committed
feat: add decorative FloatingNodes and SectionConnector components for Pro and Home pages, enhancing visual hierarchy and theme consistency
1 parent f1aacd9 commit eba946d

File tree

6 files changed

+393
-2
lines changed

6 files changed

+393
-2
lines changed

website/.vitepress/theme/HomePage.vue

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ import CtaSection from './components/CtaSection.vue';
88
import DemoFrame from './components/DemoFrame.vue';
99
import FeatureCard from './components/FeatureCard.vue';
1010
import FeatureSection from './components/FeatureSection.vue';
11+
import FloatingNodes from './components/FloatingNodes.vue';
1112
import FlutterBrand from './components/FlutterBrand.vue';
1213
import GridBackground from './components/GridBackground.vue';
1314
import HeroSection from './components/HeroSection.vue';
1415
import MarqueeGroup from './components/MarqueeGroup.vue';
1516
import Section from './components/Section.vue';
17+
import SectionConnector from './components/SectionConnector.vue';
1618
import SectionHeader from './components/SectionHeader.vue';
1719
import SiteFooter from './components/SiteFooter.vue';
1820
import WordFlipper from './components/WordFlipper.vue';
@@ -409,6 +411,9 @@ const heroBlinkCells = generateBlinkCells(20, 42);
409411
<!-- Canvas-based Grid Background with blinking cells -->
410412
<GridBackground color="blue" :blinkCells="heroBlinkCells" />
411413

414+
<!-- Decorative floating nodes -->
415+
<FloatingNodes />
416+
412417
<!-- Hero Section -->
413418
<HeroSection>
414419
<template #text>
@@ -508,9 +513,15 @@ const heroBlinkCells = generateBlinkCells(20, 42);
508513
</BentoGrid>
509514
</Section>
510515

516+
<!-- Section connector -->
517+
<SectionConnector color="purple" />
518+
511519
<!-- Marquee -->
512520
<MarqueeGroup :lines="marqueeLines" />
513521

522+
<!-- Section connector -->
523+
<SectionConnector color="teal" />
524+
514525
<!-- Use Cases Section -->
515526
<Section background>
516527
<SectionHeader

website/.vitepress/theme/ProPage.vue

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ import Badge from './components/Badge.vue';
33
import CtaSection from './components/CtaSection.vue';
44
import FeatureCard from './components/FeatureCard.vue';
55
import FeatureSection from './components/FeatureSection.vue';
6+
import FloatingNodes from './components/FloatingNodes.vue';
67
import FlutterBrand from './components/FlutterBrand.vue';
78
import GridBackground from './components/GridBackground.vue';
89
import HeroSection from './components/HeroSection.vue';
910
import MarqueeGroup from './components/MarqueeGroup.vue';
1011
import Section from './components/Section.vue';
12+
import SectionConnector from './components/SectionConnector.vue';
1113
import SectionHeader from './components/SectionHeader.vue';
1214
import SelectProgramCard from './components/SelectProgramCard.vue';
1315
import SiteFooter from './components/SiteFooter.vue';
@@ -212,6 +214,9 @@ const marqueeLines = [
212214
<!-- Grid Background -->
213215
<GridBackground color="purple" :blinkCells="proBlinkCells" />
214216

217+
<!-- Floating decorative nodes -->
218+
<FloatingNodes />
219+
215220
<!-- Hero Section with centered variant -->
216221
<HeroSection variant="centered">
217222
<Badge icon="ph:crown-fill" color="purple">Pro Edition</Badge>
@@ -228,6 +233,9 @@ const marqueeLines = [
228233
</div>
229234
</HeroSection>
230235

236+
<!-- Connector: Hero to Features -->
237+
<SectionConnector color="purple" />
238+
231239
<!-- Pro Features Grid -->
232240
<Section first background>
233241
<SectionHeader
@@ -250,9 +258,15 @@ const marqueeLines = [
250258
</div>
251259
</Section>
252260

261+
<!-- Connector: Features to Marquee -->
262+
<SectionConnector color="teal" />
263+
253264
<!-- Marquee -->
254265
<MarqueeGroup :lines="marqueeLines" />
255266

267+
<!-- Connector: Marquee to Workflow -->
268+
<SectionConnector color="purple" />
269+
256270
<!-- Workflow Engine Section -->
257271
<Section background>
258272
<SectionHeader
@@ -281,6 +295,9 @@ const marqueeLines = [
281295
</div>
282296
</Section>
283297

298+
<!-- Connector: Workflow to CTA -->
299+
<SectionConnector color="teal" />
300+
284301
<!-- CTA Section -->
285302
<CtaSection
286303
badge="Partner With Us"

website/.vitepress/theme/components/Badge.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ defineProps<{
3434
}
3535
3636
.badge-line {
37-
@apply h-12;
37+
@apply h-20;
3838
width: 2px;
3939
background: repeating-linear-gradient(
4040
to bottom,
@@ -44,6 +44,8 @@ defineProps<{
4444
transparent 6px
4545
);
4646
opacity: 0.4;
47+
mask-image: linear-gradient(to bottom, transparent, black 40%);
48+
-webkit-mask-image: linear-gradient(to bottom, transparent, black 40%);
4749
}
4850
4951
.badge-port-wrapper {

website/.vitepress/theme/components/FeatureCard.vue

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ defineProps<{
1818
layout === 'horizontal' ? 'feature-card-horizontal' : ''
1919
]"
2020
>
21+
<!-- Node ports -->
22+
<div class="card-port card-port-left" :class="'card-port-' + color" />
23+
<div class="card-port card-port-right" :class="'card-port-' + color" />
24+
2125
<div class="feature-icon" :class="'feature-icon-' + color">
2226
<Icon :icon="icon" />
2327
</div>
@@ -32,7 +36,7 @@ defineProps<{
3236
@reference "../style.css";
3337
3438
.feature-card {
35-
@apply relative p-10 bg-white dark:bg-zinc-800 border border-slate-200/60 dark:border-zinc-500/40 rounded-2xl overflow-hidden;
39+
@apply relative p-10 bg-white dark:bg-zinc-800 border border-slate-200/60 dark:border-zinc-500/40 rounded-2xl;
3640
transition: all 0.4s var(--vn-ease-out);
3741
}
3842
@@ -87,4 +91,30 @@ defineProps<{
8791
.feature-desc {
8892
@apply text-base text-slate-600 dark:text-zinc-400 leading-relaxed;
8993
}
94+
95+
/* Node-style ports on cards */
96+
.card-port {
97+
@apply absolute w-2.5 h-2.5 rounded-full border-2;
98+
@apply bg-white dark:bg-zinc-900;
99+
@apply opacity-0 transition-opacity duration-300;
100+
top: 50%;
101+
transform: translateY(-50%);
102+
}
103+
104+
.feature-card:hover .card-port {
105+
@apply opacity-100;
106+
}
107+
108+
.card-port-left {
109+
left: -5px;
110+
}
111+
112+
.card-port-right {
113+
right: -5px;
114+
}
115+
116+
.card-port-blue { @apply border-blue-600 dark:border-blue-400; }
117+
.card-port-purple { @apply border-violet-500 dark:border-violet-400; }
118+
.card-port-teal { @apply border-teal-500 dark:border-teal-400; }
119+
.card-port-amber { @apply border-amber-500 dark:border-amber-400; }
90120
</style>

0 commit comments

Comments
 (0)