link-stack/packages/bridge-ui/components/List.tsx
2024-06-05 08:52:41 +02:00

40 lines
1,021 B
TypeScript

"use client";
import { FC } from "react";
import { useRouter } from "next/navigation";
import { List as InternalList, Button } from "@link-stack/ui";
import { type Selectable } from "kysely";
import { type Database } from "@link-stack/bridge-common";
import { serviceConfig } from "../config/config";
import { getBasePath } from "../lib/frontendUtils";
type ListProps = {
service: string;
rows: Selectable<keyof Database>[];
};
export const List: FC<ListProps> = ({ service, rows }) => {
const { displayName, entity, listColumns } = serviceConfig[service];
const title = `${displayName}s`;
const router = useRouter();
const onRowClick = (id: string) => {
router.push(`${getBasePath()}${entity}/${id}`);
};
return (
<InternalList
title={title}
rows={rows}
columns={listColumns}
onRowClick={onRowClick}
buttons={
<Button
text="Create"
kind="primary"
href={`${getBasePath()}${entity}/create`}
/>
}
/>
);
};