import { type LinkInfo, type Icon } from "@agyemanjp/fxui"; import { type Rec, type RecordFilter, type ResultBasic } from "@agyemanjp/standard"; import type { EntityRecordBase } from "../../schema"; import type { PageInfo } from "./base"; import type { FieldSpecs } from "../field"; import { type RecordsFilterUI, type RecordViewerUI, type StdCardArgs, type PossibleValsDict } from "../record"; /** Constructs basic page info out of input record-list page info */ export declare function makeRecordListPage(info: RecordListPageInfo): PageInfo>; /** Specs for creating a page that manages a record list */ export type RecordListPageInfo = { /** Base path, without initial slash */ entityBasePath: string; title: string; /** Links to related pages */ relatedLinks: LinkInfo[]; /** Component that provides UI for each item in list */ recordsCardUI: { component: RecordViewerUI; } | { createFromMapper: (x: T) => StdCardArgs; }; /** UI component that provides a panel of inputs for filtering the list * If not provided, a default algorithm will be used to generate the filtering panel ui */ filterPanelUI: ({ component: RecordsFilterUI; } | { createFromFields: FieldSpecs; }); icons: { addNew: Icon; search: Icon; }; }; /** Dynamic args for record list page UI component */ export type RecordListPageArgs = { records: ResultBasic; filter?: ResultBasic>; possibleValsDict: PossibleValsDict; allowCreate: boolean; };