Powerful and customizable React inline CTA components built for modern applications and websites. These inline CTAs are built using React Aria and styled with Tailwind CSS.

We've just released a new update!
Check out the all new dashboard view. Pages and now load faster.
Installation
These inline CTA components do not require any installation, just copy and paste into your project once you've set up Untitled UI. Check out our installation guide to get started.
Inline CTA examples
Below are examples and variations of this inline CTA component:
We've just released a new update!
Check out the all new dashboard view. Pages and now load faster.
We've just released a new update!
Check out the all new dashboard view. Pages and now load faster.
Change your plan
Flexible pricing that grows with you.
$10per month
Includes up to 10 users, 20 GB individual data and access to all features.
Upgrade your plan
Need more space? Upgrade your plan today.
10 users
Add up to 10 team members.
20 GB data
Up to 20 GB individual data.
All features
Access to advanced features and analytics.
Payment method
Change how you pay for your plan.
Visa ending in 1234
Expiry 06/2028
Your latest receipt is available
Download receipt for January 2027.
Receipt_January_2027.pdf
200 KB
FAQs
Please refer to our frequently asked questions page for more.
No. The inline CTA examples are PRO code you copy and paste once Untitled UI is set up in your project. Each one is composed from existing components such as Button, Input, Form and FeaturedIcon; the receipt example also uses FileIcon from @untitledui/file-icons, so add that package if your project does not have it.
The action rows render two Button components — a color="secondary" button for the dismissive action and a default "primary" one for the main action, both at size="sm". Neither has behavior attached in the example, so add your own onClick handler, or an href if the action is navigation.
The email field example wraps the field in the Form component and handles onSubmit by calling e.preventDefault() and reading new FormData(e.currentTarget). The Input is marked isRequired with hideRequiredIndicator and uses name="email", size="md" and the Mail01 icon, so native validation runs before your handler is reached.
Yes, they are built mobile-first. The image variant stacks vertically and switches to a row with a fixed sm:w-60 image column at the sm breakpoint, and most action rows use flex-col-reverse on mobile — so the primary button sits on top — before flipping to sm:flex-row.
Most variants are a single wrapper with rounded-xl bg-primary shadow-xs plus ring-1 ring-secondary ring-inset; the image variant uses border-secondary instead because it needs per-edge control around the image. Swap those semantic tokens for others in the palette rather than raw color classes so the card keeps working in both themes.
Yes. Text and surfaces use semantic tokens like text-primary, text-tertiary and bg-primary, which adapt automatically. File icons are the exception: the receipt example renders two FileIcon elements, one with theme="light" and dark:hidden and one with theme="dark" and not-dark:hidden, so follow that pattern if you add file or payment icons of your own.