import { useState } from "react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Music, Toggle, ToggleLeft, ToggleRight, ExternalLink, } from "lucide-react"; export interface EthosStorefrontData { for_hire: boolean; headline?: string; bio?: string; avatar_url?: string; services: EthosService[]; verified?: boolean; profile_url?: string; } export interface EthosService { id: string; name: string; type: "track" | "sfx" | "service"; price?: number; currency?: string; description?: string; } interface EthosStorefrontWidgetProps { data: EthosStorefrontData; onToggleForHire?: (enabled: boolean) => void; onEditProfile?: () => void; accentColor?: "purple" | "blue" | "cyan" | "green" | "amber" | "red"; } const colorMap = { purple: { bg: "bg-gradient-to-br from-purple-950/40 to-purple-900/20", border: "border-purple-500/20", accent: "bg-purple-600 hover:bg-purple-700", text: "text-purple-300", }, blue: { bg: "bg-gradient-to-br from-blue-950/40 to-blue-900/20", border: "border-blue-500/20", accent: "bg-blue-600 hover:bg-blue-700", text: "text-blue-300", }, cyan: { bg: "bg-gradient-to-br from-cyan-950/40 to-cyan-900/20", border: "border-cyan-500/20", accent: "bg-cyan-600 hover:bg-cyan-700", text: "text-cyan-300", }, green: { bg: "bg-gradient-to-br from-green-950/40 to-green-900/20", border: "border-green-500/20", accent: "bg-green-600 hover:bg-green-700", text: "text-green-300", }, amber: { bg: "bg-gradient-to-br from-amber-950/40 to-amber-900/20", border: "border-amber-500/20", accent: "bg-amber-600 hover:bg-amber-700", text: "text-amber-300", }, red: { bg: "bg-gradient-to-br from-red-950/40 to-red-900/20", border: "border-red-500/20", accent: "bg-red-600 hover:bg-red-700", text: "text-red-300", }, }; export function EthosStorefrontWidget({ data, onToggleForHire, onEditProfile, accentColor = "purple", }: EthosStorefrontWidgetProps) { const [isForHire, setIsForHire] = useState(data.for_hire); const colors = colorMap[accentColor]; const handleToggleForHire = async (enabled: boolean) => { setIsForHire(enabled); if (onToggleForHire) { onToggleForHire(enabled); } }; return ( My ETHOS Storefront Your marketplace presence for services and tracks {/* Profile Header */}
{data.avatar_url && ( Profile )}
{data.headline && (

{data.headline}

)} {data.bio && (

{data.bio}

)} {data.verified && ( ✓ Verified )}
{/* For Hire Toggle */}

Available for Work

Is your profile visible to clients?

{/* Service Menu */}

Service Menu

{data.services.length === 0 ? (

No services listed

) : (
{data.services.map((service) => (

{service.name}

{service.type}
{service.price && (

${service.price}

)}
{service.description && (

{service.description}

)}
))}
)}
{/* Actions */}
); } export default EthosStorefrontWidget;