1
0
mirror of https://github.com/kamranahmedse/developer-roadmap.git synced 2025-08-24 18:03:06 +02:00

Update premium page designgst

This commit is contained in:
Kamran Ahmed
2025-07-22 18:19:26 +01:00
parent 21f2c9384d
commit e17bc250ec

View File

@@ -1,27 +1,29 @@
import type { LucideIcon } from 'lucide-react';
import { import {
Bot,
Book, Book,
Star, Bot,
CheckCircle2, CheckCircle2,
Zap,
Clock, Clock,
GitPullRequest,
Lock,
Play,
Star,
Users2, Users2,
Wand2, Wand2,
Play, Zap,
GitPullRequest,
} from 'lucide-react'; } from 'lucide-react';
import type { LucideIcon } from 'lucide-react';
import { cn } from '../../lib/classname';
import { useState } from 'react'; import { useState } from 'react';
import { cn } from '../../lib/classname';
import { VideoModal } from '../VideoModal'; import { VideoModal } from '../VideoModal';
interface FeatureCardProps { interface FeatureCardProps {
title: string; title: string;
description: string; description: string;
duration?: string; duration?: string;
videoId: string; videoId?: string;
thumbnail: string; thumbnail?: string;
onClick: () => void; onClick?: () => void;
isComingSoon?: boolean;
} }
function FeatureCard(props: FeatureCardProps) { function FeatureCard(props: FeatureCardProps) {
@@ -32,8 +34,27 @@ function FeatureCard(props: FeatureCardProps) {
videoId, videoId,
thumbnail, thumbnail,
onClick, onClick,
isComingSoon = false,
} = props; } = props;
if (isComingSoon) {
return (
<div className="group relative overflow-hidden rounded-lg border border-dashed border-slate-600/50 bg-slate-800/30 p-4 text-left opacity-90">
<div className="relative block aspect-video w-full overflow-hidden rounded-lg bg-gradient-to-br from-indigo-900/20 to-purple-900/20">
<div className="absolute inset-0 flex items-center justify-center">
<div className="flex h-12 w-12 items-center justify-center rounded-full bg-gradient-to-br from-indigo-500/20 to-purple-500/20 backdrop-blur-sm">
<Lock className="h-6 w-6 text-indigo-400/70" strokeWidth={1.5} />
</div>
</div>
</div>
<div className="mt-4">
<h3 className="mb-1 text-sm font-medium text-slate-100">{title}</h3>
<p className="text-xs leading-relaxed text-slate-500">{description}</p>
</div>
</div>
);
}
return ( return (
<button <button
onClick={onClick} onClick={onClick}
@@ -205,6 +226,12 @@ export function PremiumPage() {
'https://assets.roadmap.sh/guest/ai-based-roadmap-editor-ochm8.png', 'https://assets.roadmap.sh/guest/ai-based-roadmap-editor-ochm8.png',
duration: '1:30', duration: '1:30',
}, },
{
title: 'Early Access to New Features',
description:
'We have more amazing features coming soon! Be the first to try them out!',
isComingSoon: true,
},
]; ];
const activeVideoStartTime = const activeVideoStartTime =
@@ -273,15 +300,16 @@ export function PremiumPage() {
Click any card below to watch a quick demo of our AI features Click any card below to watch a quick demo of our AI features
</p> </p>
<div className="grid gap-6 md:grid-cols-2 lg:grid-cols-3"> <div className="grid gap-6 md:grid-cols-2 lg:grid-cols-3">
{features.map((feature) => ( {features.map((feature, index) => (
<FeatureCard <FeatureCard
key={feature.videoId} key={feature.videoId || `coming-soon-${index}`}
title={feature.title} title={feature.title}
description={feature.description} description={feature.description}
videoId={feature.videoId} videoId={feature.videoId}
thumbnail={feature.thumbnail} thumbnail={feature.thumbnail}
duration={feature.duration} duration={feature.duration}
onClick={() => setActiveVideoId(feature.videoId)} isComingSoon={feature.isComingSoon}
onClick={feature.videoId ? () => setActiveVideoId(feature.videoId) : undefined}
/> />
))} ))}
</div> </div>