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:
@@ -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>
|
||||||
|
Reference in New Issue
Block a user