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