import { Cell, Row, Table } from "@codex-storage/marketplace-ui-components"; import { PrettyBytes } from "../../utils/bytes"; import { AvailabilityActionsCell } from "./AvailabilityActionsCell"; import { CodexAvailability, CodexNodeSpace } from "@codex-storage/sdk-js/async"; import { Times } from "../../utils/times"; import { Fragment, useState } from "react"; import { AvailabilityReservations } from "./AvailabilityReservations"; import { AvailabilityIdCell } from "./AvailabilityIdCell"; import { Arrays } from "../../utils/arrays"; import { SlotRow } from "./SlotRow"; import { AvailabilityWithSlots } from "./types"; import { AvailabilityDiskRow } from "./AvailabilityDiskRow"; import { ChevronDown } from "./ChevronDown"; import { attributes } from "../../utils/attributes"; type Props = { // onEdit: () => void; space: CodexNodeSpace; availabilities: AvailabilityWithSlots[]; }; export function AvailabilitiesTable({ availabilities, space }: Props) { const [availability, setAvailability] = useState( null ); const [details, setDetails] = useState([]); const headers = [ "", "id", "total size", "duration", "min price", "max collateral", "actions", ]; const onReservationsClose = () => setAvailability(null); const rows = availabilities.map((a) => { const showDetails = details.includes(a.id); const onShowDetails = () => setDetails(Arrays.toggle(details, a.id)); const hasSlots = a.slots.length > 0; return ( {hasSlots ? ( ) : ( "" )} , , {PrettyBytes(a.totalSize)}, {Times.pretty(a.duration)}, {a.minPrice.toString()}, {a.maxCollateral.toString()}, , ]}> {a.slots.map((slot) => ( ))} ); }); rows.unshift( ); return ( <> ); }