Add GFTD marketplace listing and discovery

This commit is contained in:
defiQUG
2026-07-30 13:12:19 -07:00
parent 89a180faf3
commit c25e4891be
9 changed files with 325 additions and 36 deletions
+43 -2
View File
@@ -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>
)
}
+7 -1
View File
@@ -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>
)
}