import { faBan, faCertificate, faEllipsis, faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate } from "@tanstack/react-router"; import { format } from "date-fns"; import { twMerge } from "tailwind-merge"; import { ProjectPermissionCan } from "@app/components/permissions"; import { Badge, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, EmptyState, Table, TableContainer, TableSkeleton, TBody, Td, Th, THead, Tooltip, Tr } from "@app/components/v2"; import { ProjectPermissionActions, ProjectPermissionSub, useWorkspace } from "@app/context"; import { CaStatus, useListWorkspaceCas } from "@app/hooks/api"; import { caStatusToNameMap, caTypeToNameMap, getCaStatusBadgeVariant } from "@app/hooks/api/ca/constants"; import { ProjectType } from "@app/hooks/api/workspace/types"; import { UsePopUpState } from "@app/hooks/usePopUp"; type Props = { handlePopUpOpen: ( popUpName: keyof UsePopUpState< ["installCaCert", "caCert", "ca", "deleteCa", "caStatus", "upgradePlan"] >, data?: { caId?: string; dn?: string; status?: CaStatus; description?: string; } ) => void; }; export const CaTable = ({ handlePopUpOpen }: Props) => { const navigate = useNavigate(); const { currentWorkspace } = useWorkspace(); const { data, isPending } = useListWorkspaceCas({ projectSlug: currentWorkspace?.slug ?? "" }); return (
| Friendly Name | Status | Type | Valid Until | |
|---|---|---|---|---|
| {ca.friendlyName} |
|
{caTypeToNameMap[ca.type]} |
{ca.notAfter ? format(new Date(ca.notAfter), "yyyy-MM-dd") : "-"} |
|