@udus/notion-renderer
Version:

21 lines (20 loc) • 1.76 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { selectProperties } from "../../utils/index.js";
import { Cover } from "../Common/Cover.js";
import { Icon } from "../Common/Icon.js";
import { Title } from "../Common/Title.js";
import { RichText } from "../index.js";
import { Gallery } from "./Gallery/Gallery.js";
import { List } from "./List/List.js";
import { Table } from "./Table/Table.js";
export const Database = ({ database, pages, displayProperties, hideCover = false, hideIcon = false, hideTitle = false, hideDescription = false, viewType = "table", }) => {
// Filter properties to display
if (displayProperties) {
database.properties = selectProperties(database.properties, displayProperties);
pages.forEach((page) => {
page.properties = selectProperties(page.properties, displayProperties);
return page;
});
}
return (_jsxs("div", { id: database.id, className: "notion-database", children: [!hideCover && (_jsx("div", { className: "notion-database-cover", children: _jsx(Cover, { cover: database.cover }) })), !hideIcon && (_jsx("div", { className: "notion-database-icon", children: _jsx(Icon, { icon: database.icon }) })), !hideTitle && (_jsx("div", { className: "notion-database-title", children: _jsx(Title, { title: database.title }) })), !hideDescription && (_jsx("div", { className: "notion-database-description", children: _jsx(RichText, { richText: database.description }) })), _jsx("div", { className: "notion-database-collection", children: viewType === "gallery" ? (_jsx(Gallery, { pages: pages })) : viewType === "list" ? (_jsx(List, { pages: pages })) : viewType === "table" ? (_jsx(Table, { database: database, pages: pages })) : null })] }));
};