/** * Shared building blocks for the entity-context picker's ITEMS level * (Figma 31:29102). The picker SHELL (root menu, type list, search, Back) lives * in `chat-context-picker.tsx`; the per-type DATA is host-owned and rendered * via `ChatContextPickerConfig.renderItems`, which returns a `` * fed from the host's own hooks (TanStack / react-relay). * * Row chrome here matches the design-system menu rows (same as `ActionsMenu`): * 16px→24px responsive icon, h4 label, border-b, hover surface. */ import * as React from 'react'; import type { ChatContextItem } from './types/context-item.types'; export declare const CONTEXT_ROW_CLASS = "flex w-full items-center gap-2 border-b border-ods-border bg-ods-bg py-3 pl-4 pr-2 text-left outline-none transition-colors last:border-b-0 hover:bg-ods-bg-hover focus-visible:bg-ods-bg-hover [&_svg]:size-4 md:[&_svg]:size-6"; export declare const CONTEXT_ICON_CLASS = "flex size-4 shrink-0 items-center justify-center text-ods-text-secondary md:size-6"; export declare const CONTEXT_LABEL_CLASS = "flex-1 truncate text-h4 font-medium leading-6 text-ods-text-primary"; export declare const CONTEXT_BACK_CLASS = "flex shrink-0 items-center gap-2 border-b border-ods-border bg-ods-bg px-2 py-3 text-left text-h4 font-medium leading-6 text-ods-text-secondary outline-none transition-colors hover:text-ods-text-primary [&_svg]:size-4 md:[&_svg]:size-6"; export declare const CONTEXT_STATE_CLASS = "bg-ods-bg px-4 py-3 text-h4 text-ods-text-secondary"; export interface ContextMenuRowProps { /** Lead glyph (entity-type icon). Omit for item rows (label only). */ icon?: React.ReactNode; label: React.ReactNode; /** Trailing slot (e.g. the selected ✓). */ trailing?: React.ReactNode; onClick?: () => void; disabled?: boolean; /** Selected state for `role="option"` rows (aria + caller styling). */ selected?: boolean; role?: 'menuitem' | 'option'; title?: string; } export declare function ContextMenuRow({ icon, label, trailing, onClick, disabled, selected, role, title, }: ContextMenuRowProps): React.JSX.Element; export declare function ContextItemsSkeleton({ count }: { count: number; }): React.JSX.Element; export interface ContextItemsListProps { items: ChatContextItem[]; /** Selected keys (`${type}:${id}`) for the ✓ state. */ selectedKeys: Set; onToggle: (item: ChatContextItem) => void; /** Selection cap reached → non-selected rows disabled. */ atLimit: boolean; /** Another page is available. */ hasMore?: boolean; /** Load the next page (called when the user nears the bottom). */ onLoadMore?: () => void; /** A page is currently loading (shows inline skeleton rows). */ loadingMore?: boolean; emptyLabel?: string; className?: string; } export declare function ContextItemsList({ items, selectedKeys, onToggle, atLimit, hasMore, onLoadMore, loadingMore, emptyLabel, className, }: ContextItemsListProps): React.JSX.Element; export interface ContextErrorBoundaryProps { /** Change this (e.g. `type:query`) to clear a previous error and retry. */ resetKey: string; /** Error UI. As a render-prop it receives a `retry` callback that clears the * boundary so the children re-mount (pair it with react-query's `reset()` so * the cached suspense error is dropped and the fetch actually re-runs). */ fallback: React.ReactNode | ((retry: () => void) => React.ReactNode); children: React.ReactNode; } export declare class ContextErrorBoundary extends React.Component { state: { errored: boolean; }; static getDerivedStateFromError(): { errored: boolean; }; componentDidUpdate(prev: ContextErrorBoundaryProps): void; private retry; render(): React.ReactNode; } //# sourceMappingURL=context-items-list.d.ts.map