"use client" import { flexRender, getCoreRowModel, getPaginationRowModel, useReactTable, } from "@tanstack/react-table" import { useState } from "react" import { ShowMoreButton } from "@scandic-hotels/design-system/ShowMoreButton" import Table from "@scandic-hotels/design-system/Table" import { Section } from "@/components/Section" import { SectionHeader } from "@/components/Section/Header" import styles from "./table.module.css" import type { TableBlockProps } from "@/types/components/blocks/table" export default function TableBlock({ data }: TableBlockProps) { const { columns, rows, totalWidth, heading, preamble } = data const initialPageSize = 5 const [pageSize, setPageSize] = useState(initialPageSize) const showMoreVisible = rows.length > initialPageSize const showLessVisible = pageSize >= rows.length const columnDefs = columns.map((col) => ({ accessorKey: col.id, header: col.header, size: col.width, // eslint-disable-next-line @typescript-eslint/no-explicit-any cell: (info: any) => (
), })) const hasHeader = columns.some((col) => col.header) const table = useReactTable({ columns: columnDefs, data: rows, getCoreRowModel: getCoreRowModel(), getPaginationRowModel: getPaginationRowModel(), state: { pagination: { pageIndex: 0, pageSize, }, }, }) function handleShowMore() { setPageSize(showLessVisible ? initialPageSize : rows.length) } return (