Sticky CTA Bar
Mobile and tablet bottom CTA bar that slides in past the hero, keeping the primary conversion one thumb-tap away. Dismissible and safe-area aware.
Growth & Conversion · React · Subscription · commercial licence · v1.0.3 · updated 2026-10-16 · Live demo
Install
Section titled “Install”velocityx add sticky-cta-barSubscription component. Run velocityx login with your key first — get one.
---import StickyCtaBar from '../components/velocity/sticky-cta-bar/StickyCtaBar.tsx';---<StickyCtaBar client:visible />A persistent bottom CTA bar for mobile/tablet (lg:hidden) — the highest-value real estate on a phone. Slides in once the visitor scrolls past the hero, keeping the primary conversion one thumb-tap away.
src/components/growth/StickyCtaBar.tsx · live demo: /components/sticky-cta-bar
Mount once at the app shell:
---import StickyCtaBar from '../components/growth/StickyCtaBar.tsx';---<StickyCtaBar client:idle />| Prop | Type | Default | Description |
|---|---|---|---|
enabled | boolean | true | Master switch. |
label | string | Get Velocity X — from $4,995 | Button text. |
href | string | /pricing | Button target. |
showAfter | number | 700 | Show after scrolling this many px (past-the-hero intent). |
excludePaths | string[] | checkout/contact/… | Path prefixes to suppress on. |
Behaviour
Section titled “Behaviour”- Mobile/tablet only — desktop is excluded because the header CTA is always visible there.
- Appears after
showAfterpx of scroll (an intent signal), slides up from the bottom. - Dismissible; stays dismissed for the session (
velocity.stickycta.dismissed). - Respects the iOS safe-area inset.
Events
Section titled “Events”Fires cta_clicked with { location: 'sticky_bar', label } on tap.
Accessibility
Section titled “Accessibility”Real <a> link (keyboard + screen-reader friendly), visible dismiss button with aria-label, dark-mode, reduced-motion aware.
Files written
Section titled “Files written”velocityx drops these into your project:
components/velocity/sticky-cta-bar/StickyCtaBar.tsxcomponents/lib/analytics.tscomponents/lib/consent.ts
Peer dependencies
Section titled “Peer dependencies”react — nothing else. Zero external dependencies is the point.
Theming
Section titled “Theming”Colours come from the primary-* / accent-* Tailwind scales, so this drops into a project
that is not Velocity without dragging our brand in. Install the contract once:
velocityx themeThen set your whole brand in one place — raw RGB channels, not hex (a hex here silently breaks every opacity variant):
:root { --vx-brand: custom; --vx-primary-600: 220 38 38;}There is no component-level font-family anywhere in the library — your font cascade wins.
Licence
Section titled “Licence”Commercial, for the duration of an active Velocity X subscription. The source is served by the licence-gated endpoint, never by the public CDN.