"use client"; import React, { useEffect, useState, ReactNode } from 'react'; export default function ServiceButton({ url, checkUrl, className, icon, name, desc, access }: { url: string, checkUrl?: string, className: string, icon: ReactNode, name: string, desc: string, access?: 'public' | 'private' | 'on_request' }) { const [status, setStatus] = useState<'pending' | 'up' | 'down'>('pending'); useEffect(() => { const checkStatus = async () => { try { const targetUrl = checkUrl || url; const res = await fetch(`/api/ping?url=${encodeURIComponent(targetUrl)}`); const data = await res.json(); setStatus(data.status); } catch { setStatus('down'); } }; checkStatus(); }, [url, checkUrl]); return (
{icon} {name} {access === 'public' && (public)} {access === 'private' && (private)} {access === 'on_request' && (on request)} {desc} ); }