"use client" import React from "react" import DashboardPage from "@/base/components/layout/dashboard/dashboard-page" import type { DashboardHeaderProps } from "@/base/components/layout/dashboard" import { Card, CardContent } from "@/shared/components/ui/card" import type { ResourcePageClient, ResourceItem } from "./use-resource-page" import { CrudResource, type CrudResourceContext, type CrudResourceColumnHelpers, type CrudResourceProps } from "./crud-resource" // Re-exported for backward compatibility export type ResourcePageColumnHelpers = CrudResourceColumnHelpers export type ResourcePageContext = CrudResourceContext export type ResourceFormProps = { resourceId: string | null initialData: ResourceItem | null onSuccess: () => void } export type ResourcePageHeaderHelpers = { selectedItem: ResourceItem | null invalidateQuery: () => void } type ReactNodeOrRender = | React.ReactNode | ((context: ResourcePageContext) => React.ReactNode) export type ResourcePageProps = Omit, "render"> & { pageTitle?: string headerProps?: DashboardHeaderProps | ((helpers: ResourcePageHeaderHelpers) => DashboardHeaderProps) header?: ReactNodeOrRender | null } export function ResourcePage({ pageTitle, headerProps: headerPropsProp, header, ...crudResourceProps }: ResourcePageProps) { return ( {...crudResourceProps} render={(table, context) => { const resolvedHeaderProps = typeof headerPropsProp === "function" ? headerPropsProp({ selectedItem: context.selectedItem, invalidateQuery: context.invalidateQuery, }) : headerPropsProp const mergedHeaderProps = pageTitle ? { title: pageTitle, ...resolvedHeaderProps } : resolvedHeaderProps const resolvedHeader = typeof header === "function" ? header(context) : header return ( {table} ) }} /> ) }