Add GFTD marketplace listing and discovery
This commit is contained in:
@@ -8,7 +8,7 @@ import { Input } from '@/components/ui/input'
|
||||
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
|
||||
import { Badge } from '@/components/ui/badge'
|
||||
import { ProductCard } from '@/components/marketplace/ProductCard'
|
||||
import { Search, Filter } from 'lucide-react'
|
||||
import { Search, Filter, ArrowRight, ShieldCheck, BookOpen } from 'lucide-react'
|
||||
|
||||
const PRODUCT_CATEGORIES = [
|
||||
{ value: 'COMPUTE', label: 'Compute' },
|
||||
@@ -75,6 +75,48 @@ export default function MarketplacePage() {
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<Card className="mb-8 border-border/60 bg-gradient-to-r from-slate-950 via-slate-900 to-slate-800 text-white">
|
||||
<CardHeader>
|
||||
<div className="flex flex-wrap items-center gap-2 mb-2">
|
||||
<Badge variant="secondary" className="bg-white/10 text-white hover:bg-white/20">
|
||||
New
|
||||
</Badge>
|
||||
<Badge variant="outline" className="border-white/20 text-white">
|
||||
Internet Registry
|
||||
</Badge>
|
||||
</div>
|
||||
<CardTitle className="text-2xl">GFTD Directory</CardTitle>
|
||||
<CardDescription className="text-slate-300">
|
||||
Rights-aware entity intelligence with live approved source lanes, redacted public-safe outputs, and bounded observability.
|
||||
</CardDescription>
|
||||
</CardHeader>
|
||||
<CardContent className="flex flex-col gap-4 md:flex-row md:items-center md:justify-between">
|
||||
<div className="flex flex-wrap gap-4 text-sm text-slate-300">
|
||||
<span className="inline-flex items-center gap-2">
|
||||
<ShieldCheck className="h-4 w-4" />
|
||||
Source-rights gated
|
||||
</span>
|
||||
<span className="inline-flex items-center gap-2">
|
||||
<BookOpen className="h-4 w-4" />
|
||||
Subscription tiers available
|
||||
</span>
|
||||
</div>
|
||||
<div className="flex gap-3">
|
||||
<Button variant="outline" className="border-white/20 text-white hover:bg-white/10" asChild>
|
||||
<Link href="/marketplace/products/phoenix-gftd-directory">
|
||||
View GFTD
|
||||
<ArrowRight className="ml-2 h-4 w-4" />
|
||||
</Link>
|
||||
</Button>
|
||||
<Button variant="phoenix" asChild>
|
||||
<Link href="/marketplace/products/phoenix-gftd-directory">
|
||||
Subscribe
|
||||
</Link>
|
||||
</Button>
|
||||
</div>
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
{/* Search and Filters */}
|
||||
<div className="mb-8 space-y-4">
|
||||
<div className="flex gap-4">
|
||||
@@ -153,4 +195,3 @@ export default function MarketplacePage() {
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -34,6 +34,10 @@ const CATEGORY_LABELS: Record<string, string> = {
|
||||
AI_LLM_AGENT: 'AI',
|
||||
}
|
||||
|
||||
const CATEGORY_DESCRIPTIONS: Record<string, string> = {
|
||||
INTERNET_REGISTRY: 'Rights-aware registry and entity intelligence',
|
||||
}
|
||||
|
||||
export function ProductCard({ product }: ProductCardProps) {
|
||||
return (
|
||||
<Card className="hover:shadow-lg transition-shadow">
|
||||
@@ -72,6 +76,9 @@ export function ProductCard({ product }: ProductCardProps) {
|
||||
{CATEGORY_LABELS[product.category] || product.category}
|
||||
</Badge>
|
||||
{product.featured && <Badge variant="default">Featured</Badge>}
|
||||
{CATEGORY_DESCRIPTIONS[product.category] && (
|
||||
<Badge variant="outline">{CATEGORY_DESCRIPTIONS[product.category]}</Badge>
|
||||
)}
|
||||
</div>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
@@ -102,4 +109,3 @@ export function ProductCard({ product }: ProductCardProps) {
|
||||
</Card>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user