Skip to main content
Clever Ops

Curtain Reveal Footer

The page lifts like a curtain to reveal the footer waiting underneath, a fixed backstage layer with CTA, links, and meta, exposed by the scroll itself.

Preview & code

Loading Curtain Reveal Footer preview

Installation

pnpm dlx shadcn@latest add @cleverui/footer-curtain-reveal

Requires the @cleverui registry in your components.json, a one-off, two-line setup.

Usage

tsx
import { FooterCurtainReveal } from '@/components/blocks/footer-curtain-reveal'
Exampletsx
import { FooterCurtainReveal } from '@/components/blocks/footer-curtain-reveal'

export default function FooterCurtainRevealDemo() {
  return (
    <div className="w-full">
      {/* preceding page content, rounded bottom + elevation creates the curtain lift */}
      <div className="relative z-10 min-h-[52vh] rounded-b-3xl border border-border/60 bg-card px-4 py-16 shadow-lg sm:px-6 sm:py-20">
        <div className="mx-auto max-w-2xl text-center">
          <p className="font-mono text-[11px] uppercase tracking-[0.2em] text-muted-foreground sm:text-xs">
            End of page
          </p>
          <h2 className="mt-4 text-2xl font-semibold tracking-tight text-balance text-foreground sm:text-3xl">
            Scroll to lift the sheet.
          </h2>
          <p className="mx-auto mt-4 max-w-md text-sm leading-relaxed text-muted-foreground sm:text-base">
            Meridian Ops ships warehouse routing for mid-market brands. The
            footer waits underneath like a backstage call sheet, keep scrolling
            to open it.
          </p>
          <div
            aria-hidden="true"
            className="mx-auto mt-10 h-24 max-w-sm rounded-2xl border border-border/60 bg-muted/40"
          />
        </div>
      </div>

      <FooterCurtainReveal
        heading="Ready when your fleet is."
        cta={{ label: 'Book a routing demo', href: '#' }}
        columns={[
          {
            label: 'Product',
            links: [
              { label: 'Route planner', href: '#' },
              { label: 'Live tracking', href: '#' },
              { label: 'Carrier scores', href: '#' },
            ],
          },
          {
            label: 'Company',
            links: [
              { label: 'About Meridian', href: '#' },
              { label: 'Careers', href: '#' },
              { label: 'Press kit', href: '#' },
            ],
          },
          {
            label: 'Support',
            links: [
              { label: 'Help center', href: '#' },
              { label: 'Status', href: '#' },
              { label: 'Contact ops', href: '#' },
            ],
          },
          {
            label: 'Legal',
            links: [
              { label: 'Privacy', href: '#' },
              { label: 'Terms', href: '#' },
              { label: 'DPA', href: '#' },
            ],
          },
        ]}
        meta={[
          '© 2026 Meridian Ops',
          'Chicago · Berlin',
          'SOC 2 Type II',
        ]}
      />
    </div>
  )
}

API reference

FooterCurtainReveal accepts the following props.

PropTypeDefaultDescription
heading*stringthe backstage CTA line
cta{ label: string; href: string }
columns{ label: string; links: { label: string; href: string }[] }[][]
metastring[][]

…plus everything from React.HTMLAttributes<HTMLElement>: className, event handlers, aria attributes and the rest pass straight through.

Frequently asked questions

How do I install the Curtain Reveal Footer component?

Register the @cleverui registry in your components.json ("@cleverui": "https://cleverops.com.au/r/{name}.json"), then run `npx shadcn@latest add @cleverui/footer-curtain-reveal`. The shadcn CLI copies the source into your project, you own the code from that point. You can also copy the source directly from this page.

What dependencies does Curtain Reveal Footer require?

Curtain Reveal Footer uses motion on top of React and Tailwind CSS. You don't need to install it manually, the shadcn CLI resolves and installs npm dependencies automatically when you add the component.

Can I theme Curtain Reveal Footer to match my brand?

Yes. The component is styled entirely with Tailwind utilities over standard design tokens (primary, background, muted, border), so it inherits your existing shadcn/ui theme automatically. Change your CSS variables and the component follows, no source edits needed for palette, radius, or fonts.

Want this built for you?

CleverUI is built by the Clever Ops web team. If you'd rather ship a hand-coded, fast, custom website than assemble one, we build them for Australian businesses every week.

Explore web development services