"use client"; import { type ReactNode, useState, useEffect } from "react"; import { useLoginLogs, useLoginLogFilter } from "@/hooks/use-login-logs"; import { AuditLogsTabs } from "@/components/audit-logs-tabs"; import { PageHeader, PaperCard, Input, Select, LoadingState, ErrorState, EmptyState, Table, TableRow, TableCell, Pagination, } from "@/components/ui"; import { t } from "@/lib/i18n"; export default function LoginLogsPage(): ReactNode { const { filter, setPage, setSearch, setAction, setStatus } = useLoginLogFilter(); const { data, loading, error } = useLoginLogs(filter); const [searchInput, setSearchInput] = useState(""); useEffect(() => { const timer = setTimeout(() => setSearch(searchInput), 300); return () => clearTimeout(timer); }, [searchInput, setSearch]); return (
setSearchInput(e.target.value)} style={{ width: 240 }} />
{loading && } {error && } {!loading && !error && data && ( <> {data.items.length === 0 ? ( ) : ( <> {data.items.map((log) => ( {new Date(log.occurredAt).toLocaleString("zh-CN")} {log.userName} {log.action} {log.status === "success" ? "成功" : "失败"} {log.ip} {log.userAgent} {log.failureReason ?? "—"} ))}
)} )}
); }