"use client"; import React, { useEffect, useState } from "react"; import axios from "axios"; interface DomainStatus { domain: string; validTo: string; expired: boolean; } const SSLChecker: React.FC = () => { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); const [search, setSearch] = useState(""); const [lastChecked, setLastChecked] = useState(""); // Fetch SSL Data const loadSSL = async () => { try { setLoading(true); const response = await axios.get("http://localhost:3010/api/ssl/status"); setData(response.data); const now = new Date().toLocaleString(); setLastChecked(now); } catch (error) { console.error("SSL API Error:", error); } finally { setLoading(false); } }; // Auto load on mount useEffect(() => { loadSSL(); }, []); // Filter domains const filteredData = data.filter((item) => item.domain.toLowerCase().includes(search.toLowerCase()) ); return (

SSL Expiry Status Checker

{/* Search + Refresh */}
setSearch(e.target.value)} className="w-1/3 p-2 border border-gray-300 rounded-md focus:ring focus:ring-blue-300" />
{/* Last checked time */}

Last checked: {lastChecked}

{/* Loading Shimmer */} {loading ? (
Checking SSL certificates...
) : (
{filteredData.map((d) => ( ))}
Domain Valid Until Status
{d.domain} {d.validTo} {d.expired ? "Expired" : "Valid"}
{filteredData.length === 0 && (

No matching domains found.

)}
)}
); }; export default SSLChecker;