Skip to content

Commit bec0001

Browse files
(SP 2) [Frontend] Update Features section content and improve mobile UX (#224)
* (SP 2) [Frontend] Update Features section content and improve mobile UX - Features Section: Refined feature content and visuals. - Mobile UX: Improved responsive layout and scaling for feature cards and interactive elements. - Visual Enhancements: Added dynamic particle background effects to the Pricing section. * fix(review): address accessibility, security, and performance feedback * fix(review): resolve accessibility and hydration issues * fix(perf): implement frame-rate independent animations * fix(review): address accessibility, security, and performance feedback * fix(review): enable SSR for features section and support HiDPI canvas * fix(review): correct HiDPI logic for particle canvas measurements
1 parent ff29d88 commit bec0001

11 files changed

Lines changed: 956 additions & 402 deletions

frontend/app/globals.css

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,44 @@
331331
--card-rotate-offset: 3deg;
332332
animation-delay: 0.8s;
333333
}
334+
335+
/* Feature bubble floating animation */
336+
.animate-float {
337+
animation: float 3s ease-in-out infinite;
338+
will-change: transform;
339+
}
340+
341+
/* Slow spinning for orbit rings */
342+
.animate-spin-slow {
343+
animation: spin 20s linear infinite;
344+
}
345+
346+
.animate-spin-slower {
347+
animation: spin 30s linear infinite reverse;
348+
}
349+
350+
/* Dashed line flow animation */
351+
.animate-dash-flow {
352+
animation: dash-flow 2s linear infinite;
353+
}
354+
}
355+
356+
@keyframes float {
357+
0%, 100% {
358+
transform: translateY(0);
359+
}
360+
50% {
361+
transform: translateY(-8px);
362+
}
363+
}
364+
365+
@keyframes dash-flow {
366+
0% {
367+
stroke-dashoffset: 0;
368+
}
369+
100% {
370+
stroke-dashoffset: 20;
371+
}
334372
}
335373

336374
/* Shop theme: scoped overrides (must not affect platform pages) */
@@ -420,3 +458,12 @@
420458
.scrollbar-hide::-webkit-scrollbar {
421459
display: none; /* Chrome, Safari and Opera */
422460
}
461+
462+
@media (prefers-reduced-motion: reduce) {
463+
.animate-float,
464+
.animate-spin-slow,
465+
.animate-spin-slower,
466+
.animate-dash-flow {
467+
animation: none !important;
468+
}
469+
}

frontend/components/about/CommunitySection.tsx

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,31 @@
11
"use client"
22

3-
import { MessageCircle, Github, ArrowRight, ExternalLink } from "lucide-react"
4-
import { TESTIMONIALS, type Testimonial } from "@/data/about"
5-
3+
import { Github, ArrowRight, ExternalLink, MessageCircle } from "lucide-react"
64
import Link from "next/link"
5+
import { TESTIMONIALS, type Testimonial } from "@/data/about"
6+
import { GradientBadge } from "@/components/ui/gradient-badge"
7+
import { SectionHeading } from "@/components/ui/section-heading"
78

89
export function CommunitySection() {
910
return (
10-
<section className="w-full py-16 md:py-24 relative overflow-hidden bg-gray-50 dark:bg-transparent">
11+
<section className="w-full py-20 lg:py-28 relative overflow-hidden bg-gray-50 dark:bg-transparent">
1112

1213
<div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[300px] h-[300px] bg-[#1e5eff]/5 dark:bg-[#ff2d55]/5 blur-[80px] rounded-full pointer-events-none" />
1314

1415
<div className="w-full relative z-10">
1516

16-
<div className="max-w-7xl mx-auto px-4 mb-12 text-center">
17-
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full border border-gray-200 dark:border-white/10 bg-white dark:bg-white/5 text-gray-500 dark:text-gray-400 text-[10px] font-bold uppercase tracking-widest mb-4">
18-
<MessageCircle size={10} /> Community Love
19-
</div>
17+
<div className="container-main mb-12 text-center">
18+
<GradientBadge icon={MessageCircle} text="Community Love" className="mb-4" />
2019

21-
<h2 className="text-3xl md:text-4xl font-black tracking-tight text-gray-900 dark:text-white mb-4">
22-
Approved by <span className="text-transparent bg-clip-text bg-gradient-to-r from-[#1e5eff] to-[#174ad6] dark:from-[#ff2d55] dark:to-[#e0264b]">Survivors</span>
23-
</h2>
24-
<p className="text-gray-600 dark:text-gray-400 max-w-xl mx-auto text-base font-light leading-relaxed">
25-
Join thousands of developers who stopped guessing and started shipping. Real feedback from real engineers.
26-
</p>
20+
<SectionHeading
21+
title="Approved by"
22+
highlight="Survivors"
23+
subtitle="Join thousands of developers who stopped guessing and started shipping. Real feedback from real engineers."
24+
className="mb-0"
25+
/>
2726
</div>
2827

29-
<div className="relative w-full pause-on-hover mb-16">
28+
<div className="relative w-full pause-on-hover mb-8 md:mb-16">
3029

3130
<div className="pointer-events-none absolute left-0 top-0 z-10 h-full w-12 md:w-32 bg-gradient-to-r from-gray-50 dark:from-background to-transparent" />
3231
<div className="pointer-events-none absolute right-0 top-0 z-10 h-full w-12 md:w-32 bg-gradient-to-l from-gray-50 dark:from-background to-transparent" />
@@ -45,31 +44,31 @@ export function CommunitySection() {
4544
</div>
4645
</div>
4746

48-
<div className="max-w-7xl mx-auto px-4 text-center">
49-
<div className="flex flex-col items-center gap-3 md:hidden">
50-
<span className="text-sm text-gray-600 dark:text-gray-400 font-medium">
51-
Have a success story or feature request?
52-
</span>
47+
<div className="container-main text-center">
48+
<div className="flex flex-col items-center gap-2 md:hidden">
5349
<Link
5450
href="https://github.com/DevLoversTeam/devlovers.net/discussions"
5551
target="_blank"
56-
className="group inline-flex items-center gap-2 px-5 py-3 rounded-full
57-
bg-gray-900 dark:bg-white text-white dark:text-black
58-
text-xs font-bold uppercase tracking-wider
52+
rel="noopener noreferrer"
53+
className="group inline-flex items-center gap-1.5 px-4 py-2 rounded-full
54+
border border-gray-200 dark:border-white/10
55+
bg-white/50 dark:bg-white/5
56+
text-[10px] font-bold uppercase tracking-wider
57+
text-gray-700 dark:text-gray-300
5958
transition-all duration-300
60-
hover:bg-[#1e5eff] dark:hover:bg-[#ff2d55]
61-
hover:text-white dark:hover:text-white
62-
hover:scale-[1.02]"
59+
hover:border-[#1e5eff]/40 dark:hover:border-[#ff2d55]/40
60+
hover:text-[#1e5eff] dark:hover:text-[#ff2d55]"
6361
>
64-
<Github size={14} />
62+
<Github size={12} />
6563
Join Discussion
66-
<ArrowRight size={12} className="group-hover:translate-x-1 transition-transform" />
64+
<ArrowRight size={10} className="group-hover:translate-x-0.5 transition-transform" />
6765
</Link>
6866
</div>
6967

7068
<Link
7169
href="https://github.com/DevLoversTeam/devlovers.net/discussions"
7270
target="_blank"
71+
rel="noopener noreferrer"
7372
className="group relative hidden md:inline-flex items-center justify-center gap-4 p-1.5 pl-6 pr-1.5 rounded-full
7473
bg-white dark:bg-white/5 border border-gray-200 dark:border-white/10
7574
transition-all duration-300 ease-out
@@ -94,8 +93,8 @@ export function CommunitySection() {
9493
</span>
9594
</Link>
9695

97-
<p className="mt-6 text-[10px] text-gray-400 dark:text-gray-600 uppercase tracking-widest font-bold opacity-60">
98-
We read every single thread
96+
<p className="mt-3 md:mt-6 text-[8px] md:text-[10px] text-gray-400 dark:text-gray-600 uppercase tracking-widest md:font-bold md:opacity-60 opacity-70">
97+
We read every <span className="hidden md:inline">single </span>thread
9998
</p>
10099
</div>
101100

@@ -114,7 +113,7 @@ function TestimonialCard({
114113
color
115114
}: Testimonial) {
116115
return (
117-
<div className="w-[280px] md:w-[320px] shrink-0 rounded-xl border border-gray-200 dark:border-white/10 bg-white dark:bg-[#0f0f0f] p-5 shadow-sm hover:shadow-md transition-all duration-300 hover:border-gray-300 dark:hover:border-white/20 hover:-translate-y-1">
116+
<div className="w-[280px] md:w-[320px] shrink-0 rounded-xl border border-gray-200 dark:border-white/10 bg-white/10 dark:bg-neutral-900/10 backdrop-blur-md p-5 shadow-sm hover:shadow-md transition-all duration-300 hover:border-gray-300 dark:hover:border-white/20 hover:-translate-y-1">
118117
<div className="mb-3 flex items-start justify-between">
119118
<div className="flex items-center gap-3">
120119
<div className="flex h-9 w-9 items-center justify-center rounded-full bg-gray-100 dark:bg-white/10 border border-gray-200 dark:border-white/5 text-xs font-bold text-gray-700 dark:text-gray-200">

0 commit comments

Comments
 (0)