"use client"; import { Box, Button, Card, CardContent, Divider, IconButton, List, ListItem, ListItemSecondaryAction, ListItemText, Pagination, Stack, TextField, Typography } from "@mui/material"; import DeleteIcon from "@mui/icons-material/Delete"; import type { AccessList } from "@/src/lib/models/access-lists"; import { addAccessEntryAction, createAccessListAction, deleteAccessEntryAction, deleteAccessListAction, updateAccessListAction } from "./actions"; import { usePathname, useRouter, useSearchParams } from "next/navigation"; type Props = { lists: AccessList[]; pagination: { total: number; page: number; perPage: number }; }; export default function AccessListsClient({ lists, pagination }: Props) { const router = useRouter(); const pathname = usePathname(); const searchParams = useSearchParams(); const pageCount = Math.ceil(pagination.total / pagination.perPage); function handlePageChange(_: React.ChangeEvent, page: number) { const params = new URLSearchParams(searchParams.toString()); params.set("page", String(page)); router.push(`${pathname}?${params.toString()}`); } return ( Access Lists Protect proxy hosts with HTTP basic authentication credentials. {lists.map((list) => ( updateAccessListAction(list.id, formData)} spacing={2}> Access List Accounts {list.entries.length === 0 ? ( No credentials configured. ) : ( {list.entries.map((entry) => (
))}
)}
addAccessEntryAction(list.id, formData)} spacing={1.5} direction={{ xs: "column", sm: "row" }}>
))}
{pageCount > 1 && ( )} Create access list
); }