import { ReactNode } from 'react'; import { BreadcrumbItem } from '../organisms/Breadcrumb'; export interface ActiveFilter { key: string; label: string; value: string; /** * Operator symbol printed between `label` and `value` — `"≠"`, `">"`, `"≈"`, * whatever `FilterPanel` applied. The chip used to hardcode `"="`, so a user who * filtered "Status ≠ Timeout" read it back as "Status=TIMEOUT" and could not tell * which operator was live. Use the SYMBOL, not the wire operator name. * * The spacing is deliberately tight on both sides, as `"="` has always been, so * an omitted `operator` renders byte-identically to before. (NB-CHIP-OPERATOR-01) * * `value` stays the caller's to format: the package cannot know that `TIMEOUT` * displays as "Zaman Aşımı". * * @default "=" */ operator?: string; } export interface ListPageLayoutProps { title: string; breadcrumbs: BreadcrumbItem[]; createButton?: { label: string; onClick: () => void; }; searchSlot?: ReactNode; filterCount?: number; /** * Optional callback for sidebar collapse trigger. Consumers must wire `aria-expanded` * on their own filter-toggle button via this callback's caller — the template does not * own the trigger element. */ onFilterToggle?: () => void; activeFilters?: ActiveFilter[]; onRemoveFilter?: (key: string) => void; onClearFilters?: () => void; /** * Optional filter rail. IMPORTANT — host-wrapper contract: the rail uses a * negative-margin breakout (`--list-rail-breakout`) to sit flush against the app * shell content edge and run full viewport height. It REQUIRES the layout to be * mounted inside the standard two-layer host padding: * 1. app-shell
: `px-[var(--content-padding)] pt-[calc(var(--content-padding)/2)] pb-[var(--content-padding)]` * 2. page root: `
` * Without this wrapper the rail slides under the sidebar (runtime-only; the build * does not catch it). All MDM + HES list pages already carry this wrapper. */ sidePanel?: ReactNode; /** Optional tab strip rendered above the toolbar row (primary in-page navigation). Pass your own ``/``. */ tabsSlot?: ReactNode; /** Leading toolbar content — entity label + count, or informational metadata (e.g. "Modemler · 1.234", last-updated). Rendered at the start of the toolbar row. */ toolbarMeta?: ReactNode; /** Extra action controls placed beside `createButton` (export/refresh/import), in the trailing action group before the create button. */ secondaryActions?: ReactNode; children: ReactNode; className?: string; } export declare function ListPageLayout({ breadcrumbs, createButton, searchSlot, filterCount, onFilterToggle, activeFilters, onRemoveFilter, onClearFilters, sidePanel, tabsSlot, toolbarMeta, secondaryActions, children, className, }: ListPageLayoutProps): import("react").JSX.Element; //# sourceMappingURL=ListPageLayout.d.ts.map