import React from 'react'; import { type FilterGroup, type SortConfig, type SortDirection } from '../ui/filter-modal'; import type { TableFilters } from '../ui/table/types'; import { type PageActionButton } from './page-container'; export interface ListPageLayoutProps { title: string; headerActions?: React.ReactNode; actions?: PageActionButton[]; searchPlaceholder: string; searchValue: string; onSearch: (term: string) => void; children: React.ReactNode; error?: string | null; className?: string; padding?: 'none' | 'sm' | 'md' | 'lg'; background?: 'default' | 'card' | 'transparent'; mobileFilterGroups?: FilterGroup[]; onMobileFilterChange?: (filters: TableFilters) => void; currentMobileFilters?: TableFilters; mobileSortConfig?: SortConfig; onMobileSort?: (column: string, direction: SortDirection) => void; mobileFilterTitle?: string; stickyHeader?: boolean; } /** * @deprecated Use `PageLayout` from `'../layout/page-layout'` instead. * * Standardized Layout for List Pages * * A comprehensive layout component that provides 100% consistent structure * for all list-based pages throughout the OpenFrame application. * * ## Layout Structure: * ``` * ┌─────────────────────────────────────────────────────────────┐ * │ Title (left aligned) │ Header Actions (right aligned) │ * ├─────────────────────────────────────────────────────────────┤ * │ Search Bar (full width) │ * ├─────────────────────────────────────────────────────────────┤ * │ Table/Grid with Filters │ * │ (main content) │ * └─────────────────────────────────────────────────────────────┘ * ``` * * ## Key Features: * - **Consistent Spacing**: All pages use identical padding and gaps * - **Responsive Design**: Works seamlessly across all screen sizes * - **Accessibility**: Proper semantic HTML and ARIA support * - **Error Handling**: Built-in error state display * - **Flexible Actions**: Supports any combination of buttons/controls * - **Search Integration**: Standardized search bar positioning * * ## Currently Used By: * - `/devices` - Device management with table/grid toggle * - `/logs-page` - Log analysis with refresh functionality * - `/scripts` - Script management with new/refresh actions * - `/mingo` tabs - Archive/current chats with filtering * - `/policies-and-queries` tabs - Policy management with refresh/new actions * * ## Design Tokens: * - Uses ODS design system tokens for consistent theming * - Maintains proper contrast ratios and accessibility standards * - Supports both light and dark mode themes * * ## Performance: * - Minimal re-renders through proper prop drilling * - Optimized for large datasets with virtualization support * - Built-in debouncing for search operations * * @example * ```tsx * Refresh} * searchPlaceholder="Search items..." * searchValue={searchTerm} * onSearch={setSearchTerm} * error={error} * > * * * ``` */ export declare function ListPageLayout({ title, headerActions, actions, searchPlaceholder, searchValue, onSearch, children, error, className, padding, background, mobileFilterGroups, onMobileFilterChange, currentMobileFilters, mobileSortConfig, onMobileSort, mobileFilterTitle, stickyHeader, }: ListPageLayoutProps): React.JSX.Element; export type { PageActionButton } from './page-container'; /** @deprecated Use `PageLayout` from `'../layout/page-layout'` instead. */ export default ListPageLayout; //# sourceMappingURL=list-page-layout.d.ts.map