import React from 'react' import classnames from 'classnames' import { __ } from '@wordpress/i18n' import type { Dispatch, Key, SetStateAction } from 'react' import type { ListTableColumn, ListTableRowsProps } from './ListTable' interface CheckboxCellProps extends Pick, 'getKey'> { item: T selected: Set setSelected: Dispatch>> } const CheckboxCell = ({ item, selected, setSelected, getKey }: CheckboxCellProps) => { setSelected(previous => { const updated = new Set(previous) if (event.target.checked) { updated.add(getKey(item)) } else { updated.delete(getKey(item)) } return updated }) }} /> interface TableCellProps { item: T column: ListTableColumn } const TableCell = ({ item, column }: TableCellProps) => { const className = classnames(`${column.id}-column`, `column-${column.id}`, { hidden: column.isHidden }) return column.isHeading ? {column.render(item)} : {column.render(item)} } export interface TableRowsProps extends Pick, 'getKey' | 'columns' | 'noItems' | 'rowClassName'> { items: T[] selected: Set setSelected: Dispatch>> } export const TableRows = ({ items, getKey, columns, noItems, selected, setSelected, rowClassName }: TableRowsProps ) => 0 < items.length ? items.map(item => {columns.map(column => )} ) : {noItems}