import type { VendoTheme } from "../../core/apps/index.js"; /** * The approval→notification morph: the decided panel lifts out of the thread * and settles into the top-right notification. The travel is a GPU transform * and the size eases on a spring curve, so nothing layout-thrashes. The * surface is the same solid glass as the overlay (not a translucent liquid * blob), and it's inset from the corner so it's never clipped. * * The morph teaches the record: when an activity anchor is mounted (any * element the host stamps with `data-vendo-activity-anchor`), the settled pill * holds briefly and then shrinks and docks INTO it instead of fading in place, * dispatching a * `vendo:activity-bump` event as it lands so the anchor can pulse. Without * an anchor (overlay/threads outside the page) the original hold-and-fade * behavior is unchanged. Reduced motion keeps the opacity-only exit. */ export interface MorphToastProps { startRect: { top: number; left: number; width: number; height: number; }; title: string; sub?: string; logoUrl?: string; theme: VendoTheme; onDone(): void; } export declare const ACTIVITY_ANCHOR_ATTRIBUTE = "data-vendo-activity-anchor"; /** Fired on window as the morph pill lands in the Activity anchor. */ export declare const ACTIVITY_BUMP_EVENT = "vendo:activity-bump"; export declare function MorphToast({ startRect, title, sub, logoUrl, theme, onDone }: MorphToastProps): import("react").ReactPortal | null;