Commit
·
91d7c85
1
Parent(s):
e9c0734
add category status
Browse files- components/CategoryCard.tsx +10 -4
- lib/categories.tsx +4 -1
- types/categories.ts +4 -2
components/CategoryCard.tsx
CHANGED
|
@@ -9,14 +9,15 @@ const CategoryCard: React.FC<CategoryCardProps> = ({
|
|
| 9 |
icon: Icon,
|
| 10 |
colorName,
|
| 11 |
description,
|
| 12 |
-
|
| 13 |
graphic: Graphic
|
| 14 |
}) => {
|
| 15 |
const { text, gradient, iconBg } = getColorConfig(colorName);
|
|
|
|
| 16 |
|
| 17 |
return (
|
| 18 |
<div className={`bg-gradient-to-br ${gradient} rounded-xl p-4 text-white w-92 h-[380px] flex flex-col relative shadow-lg transition-transform duration-300 ease-in-out hover:scale-105`}>
|
| 19 |
-
{
|
| 20 |
<div className={`absolute top-2 right-2 ${iconBg} ${text} text-xs font-bold py-1 px-2 rounded-full`}>
|
| 21 |
New
|
| 22 |
</div>
|
|
@@ -31,8 +32,13 @@ const CategoryCard: React.FC<CategoryCardProps> = ({
|
|
| 31 |
<Graphic />
|
| 32 |
</div>
|
| 33 |
<p className="text-xs mb-3 leading-tight">{description}</p>
|
| 34 |
-
<button
|
| 35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
</button>
|
| 37 |
</div>
|
| 38 |
);
|
|
|
|
| 9 |
icon: Icon,
|
| 10 |
colorName,
|
| 11 |
description,
|
| 12 |
+
status,
|
| 13 |
graphic: Graphic
|
| 14 |
}) => {
|
| 15 |
const { text, gradient, iconBg } = getColorConfig(colorName);
|
| 16 |
+
const isComingSoon = status === 'Coming Soon';
|
| 17 |
|
| 18 |
return (
|
| 19 |
<div className={`bg-gradient-to-br ${gradient} rounded-xl p-4 text-white w-92 h-[380px] flex flex-col relative shadow-lg transition-transform duration-300 ease-in-out hover:scale-105`}>
|
| 20 |
+
{(status === 'New' || status === 'Coming Soon') && (
|
| 21 |
<div className={`absolute top-2 right-2 ${iconBg} ${text} text-xs font-bold py-1 px-2 rounded-full`}>
|
| 22 |
New
|
| 23 |
</div>
|
|
|
|
| 32 |
<Graphic />
|
| 33 |
</div>
|
| 34 |
<p className="text-xs mb-3 leading-tight">{description}</p>
|
| 35 |
+
<button
|
| 36 |
+
className={`w-full bg-white ${text} py-2 px-3 rounded-lg text-sm font-semibold transition-colors mt-auto ${
|
| 37 |
+
isComingSoon ? 'opacity-50 cursor-not-allowed' : 'hover:bg-opacity-90'
|
| 38 |
+
}`}
|
| 39 |
+
disabled={isComingSoon}
|
| 40 |
+
>
|
| 41 |
+
{isComingSoon ? 'Coming Soon' : 'View Tools'}
|
| 42 |
</button>
|
| 43 |
</div>
|
| 44 |
);
|
lib/categories.tsx
CHANGED
|
@@ -11,7 +11,7 @@ export const categories: Category[] = [
|
|
| 11 |
title: "Segment",
|
| 12 |
icon: Scissors,
|
| 13 |
description: "Break down images into distinct segments based on the object or background.",
|
| 14 |
-
|
| 15 |
colorName: "indigo",
|
| 16 |
graphic: SegmentationIcon
|
| 17 |
},
|
|
@@ -19,6 +19,7 @@ export const categories: Category[] = [
|
|
| 19 |
title: "Embed",
|
| 20 |
icon: Sparkles,
|
| 21 |
description: "Create vector embeddings for text and images.",
|
|
|
|
| 22 |
colorName: "teal",
|
| 23 |
graphic: EmbeddingIcon
|
| 24 |
},
|
|
@@ -26,6 +27,7 @@ export const categories: Category[] = [
|
|
| 26 |
title: "Transcribe",
|
| 27 |
icon: Mic,
|
| 28 |
description: "Convert speech to text with high accuracy using advanced AI-powered transcription (Whisper).",
|
|
|
|
| 29 |
colorName: "rose",
|
| 30 |
graphic: TranscriptionIcon
|
| 31 |
},
|
|
@@ -33,6 +35,7 @@ export const categories: Category[] = [
|
|
| 33 |
title: "Sentiment",
|
| 34 |
icon: Smile,
|
| 35 |
description: "Analyze text to determine the emotional tone and attitude, classifying it as positive, negative, or neutral.",
|
|
|
|
| 36 |
colorName: "amber",
|
| 37 |
graphic: SentimentAnalysisIcon
|
| 38 |
}
|
|
|
|
| 11 |
title: "Segment",
|
| 12 |
icon: Scissors,
|
| 13 |
description: "Break down images into distinct segments based on the object or background.",
|
| 14 |
+
status: "Coming Soon",
|
| 15 |
colorName: "indigo",
|
| 16 |
graphic: SegmentationIcon
|
| 17 |
},
|
|
|
|
| 19 |
title: "Embed",
|
| 20 |
icon: Sparkles,
|
| 21 |
description: "Create vector embeddings for text and images.",
|
| 22 |
+
status: "Coming Soon",
|
| 23 |
colorName: "teal",
|
| 24 |
graphic: EmbeddingIcon
|
| 25 |
},
|
|
|
|
| 27 |
title: "Transcribe",
|
| 28 |
icon: Mic,
|
| 29 |
description: "Convert speech to text with high accuracy using advanced AI-powered transcription (Whisper).",
|
| 30 |
+
status: "Coming Soon",
|
| 31 |
colorName: "rose",
|
| 32 |
graphic: TranscriptionIcon
|
| 33 |
},
|
|
|
|
| 35 |
title: "Sentiment",
|
| 36 |
icon: Smile,
|
| 37 |
description: "Analyze text to determine the emotional tone and attitude, classifying it as positive, negative, or neutral.",
|
| 38 |
+
status: "Coming Soon",
|
| 39 |
colorName: "amber",
|
| 40 |
graphic: SentimentAnalysisIcon
|
| 41 |
}
|
types/categories.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
| 1 |
import type { LucideIcon } from 'lucide-react';
|
| 2 |
|
|
|
|
|
|
|
| 3 |
export interface Category {
|
| 4 |
title: string;
|
| 5 |
icon: LucideIcon;
|
| 6 |
description: string;
|
| 7 |
-
|
| 8 |
colorName: string;
|
| 9 |
graphic: React.ComponentType<React.SVGProps<SVGSVGElement>>;
|
| 10 |
-
}
|
|
|
|
| 1 |
import type { LucideIcon } from 'lucide-react';
|
| 2 |
|
| 3 |
+
export type CategoryStatus = 'New' | 'Coming Soon' | 'Available';
|
| 4 |
+
|
| 5 |
export interface Category {
|
| 6 |
title: string;
|
| 7 |
icon: LucideIcon;
|
| 8 |
description: string;
|
| 9 |
+
status: CategoryStatus;
|
| 10 |
colorName: string;
|
| 11 |
graphic: React.ComponentType<React.SVGProps<SVGSVGElement>>;
|
| 12 |
+
}
|