import { type HTMLAttributes, type ReactNode } from 'react'; import { type VariantProps } from 'class-variance-authority'; import { type ProductHubItem } from './product-hub-tray'; declare const productHubPanelVariants: (props?: ({ surface?: "elevated" | "flat" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; /** * Curated imperative handle for ProductHubPanel — read-only ids / counts * plus a select delegation. See `product-hub-panel.agent.ts`. */ export interface ProductHubPanelHandle { getItems: () => Array<{ id: string; unseen: boolean; }>; getUnseenCount: () => number; selectItem: (id: string) => void; } export interface ProductHubPanelProps extends Omit, 'onClick' | 'children' | 'id'>, VariantProps { /** * Stable instance id. Surfaced on the root as `data-component-id` so * an agent / MCP UI bridge can address this specific panel. */ id?: string; /** Releases rendered in the panel, newest first. */ items: ProductHubItem[]; /** * Product-hub landing URL. When set (and safe) the panel renders an * "Open in Product Hub" footer link that opens in a new tab. */ hubUrl?: string; /** When true the panel shows skeleton placeholders. */ loading?: boolean; /** Error-state slot — rendered instead of the list. */ error?: ReactNode; /** Panel heading. Defaults to the localised "What's new". */ title?: string; /** Optional sub-heading rendered under the title. */ description?: string; /** Number of releases rendered before the rest are cut off. Default 5. */ maxVisible?: number; /** Empty-state slot — replaces the built-in EmptyState. */ emptyState?: ReactNode; /** * Analytics hook — fires when a row is activated. Navigation itself is * owned by the row anchor (new tab). */ onItemActivate?: (item: ProductHubItem) => void; /** BCP-47 locale override for the per-row dates. */ locale?: string; } export declare const ProductHubPanel: import("react").ForwardRefExoticComponent>; export {}; //# sourceMappingURL=product-hub-panel.d.ts.map