import { FC } from 'react';
export interface Product {
id: string;
name: string;
url: string;
icon?: string;
color?: string;
/** Real product logo (the app's `/icons/icon.svg`). Rendered as an
. */
logoUrl?: string;
/** When true, render as disabled with a "Coming soon" badge. */
comingSoon?: boolean;
}
/**
* Resolve a product's logo URL: prefer an explicit `logoUrl`, else derive it
* from the product's app URL (every product app serves its real brand mark at
* `/icons/icon.svg`). This keeps the switcher showing real logos for ALL shells
* without each shell having to thread `logoUrl` through its product list.
*/
export declare function resolveProductLogo(product?: {
logoUrl?: string;
url?: string;
}): string | undefined;
/**
* Filter a product list by a free-text query, matching against name, id, and
* (when present) description — case-insensitive, whitespace-trimmed. An empty
* query returns the list unchanged. Shared by the desktop `ProductSwitcher` and
* the mobile `ProductPickerSheet` so both filter identically.
*/
export declare function filterProducts(products: T[], query: string): T[];
/**
* Resolve the product to render as "current" in the switcher trigger.
*
* Prefers the passed list (e.g. the API-driven access list). If the shell's own
* product isn't in that list — common for shells whose product isn't returned
* by `myAccessibleProducts` — fall back to the shared product catalog so the
* chip still shows the real display name + logo (derived from its app URL)
* instead of a bare slug + initial. Only when the slug is entirely unknown do we
* synthesize a neutral entry; `products[0]` is used only when no slug is given.
*/
export declare function resolveCurrentProduct(products: Product[], currentProductId?: string): Product | undefined;
export interface ProductSwitcherProps {
products: Product[];
currentProductId?: string;
onProductChange?: (product: Product) => void;
/** Show as icon only (for small screens) */
compact?: boolean;
}
/**
* ProductSwitcher Component
*
* Allows switching between different products:
* - FluidGrids
* - VibeControls
* - BigConsole
* - Botlit
* etc.
*
* On small screens (when compact=true), shows as icon with popup
*/
export declare const ProductSwitcher: FC;
//# sourceMappingURL=ProductSwitcher.d.ts.map