Skip to content
All Taste components

Call to action

Call to action — split with image

Copy and buttons on one half of a card, a brand-coloured product picture on the other.

split card · brand art panel · paid-invoice mock · stacks on mobile

Get paid faster

Your next invoice could be paid by Friday

Customers on Tallybook usually get paid within a week of sending, because paying takes one tap from the email.

  • Card, bank and wallet payments
  • Reminders that send themselves
import { Check } from "lucide-react";

const points = ["Card, bank and wallet payments", "Reminders that send themselves"];

export function CtaSplitImage() {
  return (
    <section aria-labelledby="cta-split-title" className="bg-bg px-5 py-16 font-sans sm:px-10 sm:py-20">
      <div className="mx-auto grid max-w-6xl overflow-hidden rounded-xl border border-border bg-surface md:grid-cols-2">
        <div className="grid content-center justify-items-start gap-5 p-8 lg:p-14">
          <p className="text-[13px] font-medium text-primary">Get paid faster</p>
          <h2 id="cta-split-title" className="text-balance text-3xl font-semibold tracking-tight text-fg sm:text-4xl">Your next invoice could be paid by Friday</h2>
          <p className="text-[15px] leading-relaxed text-fg-muted">Customers on Tallybook usually get paid within a week of sending, because paying takes one tap from the email.</p>
          <ul className="grid gap-2.5 text-sm text-fg">
            {points.map((p) => (
              <li key={p} className="flex items-start gap-2.5"><Check className="mt-0.5 size-4 text-primary" aria-hidden />{p}</li>
            ))}
          </ul>
          <div className="mt-1.5 flex flex-wrap gap-2.5">
            <a href="/signup" className="inline-flex h-11 items-center rounded bg-primary px-5 text-[15px] font-medium text-primary-fg transition hover:bg-primary-hover">Create a free account</a>
            <a href="/how-it-works" className="inline-flex h-11 items-center rounded px-5 text-[15px] font-medium text-fg transition hover:bg-surface-2">See how it works</a>
          </div>
        </div>
        {/* Swap the gradient panel for a product screenshot: <img src="..." alt="..." className="size-full object-cover" /> */}
        <div className="relative grid min-h-[300px] place-items-center overflow-hidden bg-gradient-to-br from-brand-500 to-brand-800 p-9" aria-hidden>
          <div className="relative grid w-full max-w-xs -rotate-[2.5deg] gap-3 rounded-lg bg-bg p-5 text-[12.5px] text-fg shadow-2xl">
            <span className="absolute -right-3.5 -top-3.5 inline-flex rotate-[4deg] items-center gap-1.5 rounded-full bg-success-soft px-3 py-1.5 text-xs font-semibold text-success-fg shadow-lg">
              <Check className="size-3.5" />Paid
            </span>
            <div className="flex justify-between"><b>Invoice #0418</b><span className="text-fg-subtle">Due 12 Nov</span></div>
            <span className="text-fg-subtle">Fernwood Bakery</span>
            <hr className="border-border" />
            <div className="flex justify-between gap-3"><span>Shop fit-out, phase 2</span><span className="tabular-nums">$2,400.00</span></div>
            <div className="flex justify-between gap-3"><span>Materials</span><span className="tabular-nums">$615.50</span></div>
            <hr className="border-border" />
            <div className="flex justify-between text-sm font-semibold"><span>Total</span><span className="tabular-nums">$3,015.50</span></div>
          </div>
        </div>
      </div>
    </section>
  );
}

The code uses the Taste Tailwind preset. Make yours on the Taste page with Export my system.