/** Button sizes: sm 32 px, md 40 px with a 44 px hit area, lg 48 px. */ export type WishlistToggleSize = "sm" | "md" | "lg"; /** glass: translucent dark disc for use on photos; soft: tonal disc on the page; ghost: icon only. */ export type WishlistToggleVariant = "glass" | "soft" | "ghost"; /** Heart toggle button with `aria-pressed`, a spring pop on save and a 44 px touch target from md up. */ export interface WishlistToggleProps { /** Controlled state; pair with `onSelectedChange`. */ selected?: boolean; /** Initial state when `selected` is not controlled. */ defaultSelected?: boolean; /** Fires with the next state on click or keyboard activation. */ onSelectedChange?: (selected: boolean) => void; /** Button size; defaults to "md". */ size?: WishlistToggleSize; /** Look of the button; defaults to "soft". */ variant?: WishlistToggleVariant; /** Fixed accessible name, e.g. "Save Denim Jacket"; defaults to "Add to wishlist" / "Remove from wishlist". */ label?: string; /** Blocks toggling and dims the button. */ isDisabled?: boolean; /** Test id on the button. */ "data-testid"?: string; }