Mobile
v1.0.0Added in 1.0.0
The bottom action bar of product, listing and checkout pages on phones: the price on one side, the main action on the other.
The bar sits at the bottom edge, above a bottom tab bar and the home indicator, with the price (an old price struck through, a muted caption) on the left and the main button on the right, plus an optional icon button such as a heart. With showOn="anchor" it stays out of the way while the page's own buy button is on screen and glides up on a smooth spring once you scroll past it (or while you have not reached it yet), then drops away quickly when the button comes back; showOn="scroll" does the same after a scroll distance. With hideOnScroll it follows your finger down and out while you scroll down and comes back as soon as you scroll up. Tap the button: a promise from onAction shows its spinner without changing the width. When the price changes the new amount fades in. When the on-screen keyboard opens (a coupon field) the bar slides away by default, or rides on top of the keyboard with keyboard="lift". Everything is a normal button, reached with Tab and pressed with Enter or Space; while hidden the bar is inert so Tab skips it, and while keyboard focus is inside it never hides. Under reduced motion it fades instead of sliding.
npx wingo-ui@latest add sticky-cta-barPro item: the CLI needs a Pro account. See plans

New York, Upper West Side · Sep 24, 2026
$489,000$840/sq ft
A third-floor apartment in a 2012 building, with a bright living room, a separate kitchen, two bathrooms and an enclosed balcony over the courtyard. Own heating, double glazing, hardwood floors.
Five minutes from Central Park, with a bus stop and a school nearby. Sold furnished, with a parking spot included.
2-bedroom apartment, Harlem$455,000New York, Harlem
Renovated studio, 370 sq ft$329,000New York, Chelsea
3-bedroom apartment with terrace$612,000Jersey City, DowntownScroll the listing: the bar stays above the home indicator.
showOn always · threshold 200px · hideOnScroll off · keyboard hide · position fixed (sticky in this frame) · hideFrom none · safeArea on