import { ReactNode } from "react"
import { JsonViewSection } from "../common/json-view-section"
import { MetadataSection } from "../common/metadata-section"
import { RequiredPermissionsSection } from "../common/required-permissions-section"
import { LayoutComposer } from "./layout-composer"
export type DetailPageDefaultsOptions = {
/** Render the metadata section. @default true */
metadata?: boolean
/** Render the JSON view section. @default true */
jsonView?: boolean
/** Render the required-permissions section. @default true */
permissions?: boolean
}
/**
* Returns the sections common to detail pages (metadata, JSON view, and
* required permissions), each wrapped in a `LayoutComposer.Entry` with a
* stable id so saved user preferences survive component renames.
*
* All three render by default. Pass an options object to opt out of any a
* given page doesn't use, so the page renders exactly the set it always had:
*
* ```tsx
* sections={{ main: <>{...coreContent}{detailPageDefaultEntries(entity)}> }}
* // metadata + json only:
* {detailPageDefaultEntries(entity, { permissions: false })}
* ```
*/
export function detailPageDefaultEntries(
data: object,
{
metadata = true,
jsonView = true,
permissions = true,
}: DetailPageDefaultsOptions = {}
): ReactNode {
return (
<>
{metadata && (
)}
{jsonView && (
)}
{permissions && (
)}
>
)
}