"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { ADDON_CATALOG, type BrandFeatureKey } from "@/lib/feature-flags"; import { toggleBrandFeature } from "@/actions/settings/features"; import GlassModal from "./GlassModal"; type Props = { brandId: string; initialEnabledFeatures: Record; }; export default function BrandFeatureCards({ brandId, initialEnabledFeatures }: Props) { const router = useRouter(); const [enabledFeatures, setEnabledFeatures] = useState>(initialEnabledFeatures); const [toggling, setToggling] = useState(null); const [toast, setToast] = useState<{ message: string; type: 'success' | 'error' } | null>(null); const [showEnableModal, setShowEnableModal] = useState(null); const showToast = (message: string, type: 'success' | 'error' = 'success') => { setToast({ message, type }); setTimeout(() => setToast(null), 3000); }; const handleToggle = async (key: BrandFeatureKey, enable: boolean) => { setToggling(key); setShowEnableModal(null); setEnabledFeatures((prev) => ({ ...prev, [key]: enable })); const result = await toggleBrandFeature(brandId, key, enable); if (result.success) { showToast(enable ? `${ADDON_CATALOG[key].name} enabled` : `${ADDON_CATALOG[key].name} disabled`); router.refresh(); } else { setEnabledFeatures((prev) => ({ ...prev, [key]: !enable })); showToast(`Error: ${result.error}`, 'error'); } setToggling(null); }; const keys = Object.keys(ADDON_CATALOG) as BrandFeatureKey[]; return ( <> {toast && (
{toast.message}
)}
{keys.map((key) => { const addon = ADDON_CATALOG[key]; const enabled = !!enabledFeatures[key]; const busy = toggling === key; return (
{addon.icon}

{addon.name}

{enabled ? "Active" : "Inactive"}

{addon.description}

{addon.addOnPrice && (

{addon.addOnPrice}/month

)}
{enabled && addon.adminRoute && ( Open → )}
); })}
{/* Enable confirmation modal */} {showEnableModal && ( setShowEnableModal(null)} >

{ADDON_CATALOG[showEnableModal].description}

{ADDON_CATALOG[showEnableModal].addOnPrice && (

Price: {ADDON_CATALOG[showEnableModal].addOnPrice}/month

)}
)} ); }