/** * DevSectionView — the canonical chrome for ANY dev-center section * (Roadmap / Delivery / Releases). One component, used in BOTH: * * - tabbed `/roadmap-and-releases` (compact title mode, no `hero`) * - full-page `/roadmap`, `/bug-fixes-and-enhancements`, `/releases` * (hero mode with icon + description + back link) * * Owns: title rendering, the inline search input, the filter pill row, * and the URL-param wiring that connects both. The list `children` * receive a clean URL contract — they read `?=...` via * `useSearchParams()` and refetch on change. No duplicated controls. */ import type { ReactNode } from 'react'; import { type OpenframeDevSectionKey } from '../../../utils/dev-sections/openframe-dev-sections'; export interface DevSectionViewProps { /** Which section to render — drives title, search, and filter * config via the `OPENFRAME_DEV_SECTIONS` registry. */ sectionKey: OpenframeDevSectionKey; /** When set, renders the rich page-level hero (icon + h1 + description). * Omit for the compact tab-context heading. */ hero?: { /** Pre-rendered icon JSX. Server components render the icon themselves * and pass the element here — function references can't cross the * server→client boundary, but React elements can. */ icon: ReactNode; /** Hero title. Falls back to `OPENFRAME_DEV_SECTIONS[sectionKey].hero.title` * when omitted, so embedders can override the (OpenFrame-specific) default * copy without forking the registry. */ title?: string; description: string; }; /** Optional slot rendered BETWEEN the hero and the search/filter * controls. Use this for an entry-action surface that should sit * above the list (e.g. the Help Center's "Open a new ticket" form). * The slot is wrapped in the same `gap-10` flex column so spacing * matches the surrounding chrome — callers should NOT add their * own top/bottom margin. Renders `null` (no DOM) when omitted. */ preControls?: ReactNode; /** The page-specific list body. Reads URL params written by this * component (search input + filter pills). */ children: ReactNode; /** Render this component's own title heading (hero or compact `h2`). Default * `true` — the tab context renders the compact heading itself. Pass `false` * when the host already renders the title elsewhere (e.g. `DevSectionPage` * routes it through the unified `PageLayout` `TitleBlock`): then only the * search + filter controls + list render, with no duplicate heading. */ showHeading?: boolean; } export declare function DevSectionView({ sectionKey, hero, preControls, children, showHeading }: DevSectionViewProps): import("react").JSX.Element; //# sourceMappingURL=dev-section-view.d.ts.map