Skip to content

Order Confirmed

The post-purchase screen, with navigation restored and a rail that shows what to buy next rather than what was just bought.

2 blocks56 lineslucide-reactAdded 8 Aug 2026

What's included

  • app/order-confirmation-page.tsx
  • 2 blocks it is built from, installed with it
  • Needs lucide-react

Works with

  • React
  • Next.js
  • Tailwind CSS
  • TypeScript

npx hoverlab add order-confirmation-page

Or over MCP, from your editor's agent — no account needed.

License

Free to read, copy and install, for personal and non-commercial projects. Shipping it in client work or a paid product needs Pro ($79 once). The source lands in your repo and stops being ours — no attribution, nothing to upgrade.

Was this useful?

Preview

Thanks — your order is confirmed

A confirmation is on its way to you@example.com

Order numberORD-4821-9930

Estimated delivery

–

We will email a tracking link as soon as it ships.

Delivering to

Ada Lovelace12 Marchmont StreetLondonWC1N 1AGUnited Kingdom

Payment

Subtotal
£219.00
Discount
−£21.90
Delivery
Free
Total
£197.10

2 items

  • Merino Crew Sweater

    Stone · M

    ×1

    £89.00

  • Cotton Oxford Shirt

    Sky · L

    ×2

    £130.00

The real page, rendered in your current theme — every section below is a live block, not a screenshot.

Built from

All blocks
  1. Order ConfirmationThe thank-you screen built to prevent two support emails: a selectable order number and a delivery date range rather than "soon".
  2. Scroll-Snap Product RailA "you might also like" row on native scroll-snap — touch swiping, momentum and keyboard support for free, with no carousel library.

Only want one section? Open it and copy that block instead — browse Orders & Reviews.

Shipped in these templates

Want the whole project rather than this one screen? A template ships every route, the theme tokens and the layout.

Source

app/order-confirmation-page.tsx
/**
 * The post-purchase screen.
 *
 * Navigation comes back here — the opposite of the checkout. The sale is
 * done, and the useful next action is browsing again, so the header returns
 * and the confirmation block ends with a link back into the shop.
 *
 * The product rail below is "you might also like" rather than "recently
 * viewed": showing someone the item they just bought, three seconds after
 * buying it, is the most common own-goal on this screen.
 */

import * as React from 'react'
import { OrderConfirmation } from '@/components/order-confirmation'
import { ProductRail } from '@/components/product-rail'

export default function OrderConfirmationPage() {
  return (
    <div className="min-h-screen bg-background text-foreground">
      <header className="border-b border-border/60">
        <div className="mx-auto flex h-16 max-w-5xl items-center justify-between px-4 sm:px-6">
          <a href="/" className="flex items-center gap-2 font-semibold tracking-tight">
            <span
              aria-hidden
              className="flex h-8 w-8 items-center justify-center rounded-xl bg-primary text-primary-foreground"
            >
              A
            </span>
            Acme
          </a>
          <nav aria-label="Main" className="flex items-center gap-5 text-sm">
            <a href="/" className="text-muted-foreground transition-colors hover:text-foreground">
              Shop
            </a>
            <a
              href="/account/orders"
              className="text-muted-foreground transition-colors hover:text-foreground"
            >
              Orders
            </a>
          </nav>
        </div>
      </header>

      <main>
        <OrderConfirmation />

        <div className="mx-auto w-full max-w-5xl border-t border-border/60 px-4 py-12 sm:px-6">
          {/* Not "recently viewed" — they just bought that. */}
          <ProductRail heading="You might also like" />
        </div>
      </main>
    </div>
  )
}

How to use it

  1. 1. Copy each of the 2 blocks above into components/ — each block page has its own copy button.
  2. 2. Drop this file at app/order-confirmation-page.tsx. The imports already point at @/components/…, so they resolve with no edits.
  3. 3. Delete the sections you do not want. Every block takes props, so the copy changes without the layout moving.

For AI

The component, its props, the design tokens it expects and the command that installs it — as one prompt. Paste it into Claude, Cursor, v0 or ChatGPT and what they build around it will match the rest of the catalog instead of inventing its own system.

See the prompt

More Commerce Pages

Open the full page for this page

Product Collection

Sticky filter sidebar, sort toolbar and product grid — with the facets dropped rather than stacked on mobile, so a shopping page does not open as a form.

Commerce Pages4 blocks68 lines
Open the full page for this page

Product Detail

Gallery, sticky buy box, details accordion and reviews — ordered by what a shopper needs before they can decide.

Commerce Pages6 blocks75 lines
Open the full page for this page

Shopping Bag

Editable lines beside a sticky summary, so the total and the checkout button survive a scroll through four quantity changes.

Commerce Pages3 blocks42 lines
Open the full page for this page

Checkout

Address and payment with the site navigation stripped and the order summary moved above the form on mobile — both aimed squarely at completion rate.

Commerce Pages2 blocks57 lines
Open the full page for this page

Account Orders

Order history in the settings shell rather than a second sidebar layout — an account area and a settings area are the same shape.

Commerce Pages2 blocks42 lines
Open the full page for this page

Product Comparison

The page between a listing and a product detail, with the two questions a comparison table alone cannot answer: will it fit, and can I actually have it.

Commerce Pages6 blocks53 lines
Open the full page for this page

Express Checkout

Checkout for the buyer who will not fill in a form: wallet buttons above the fields, and the address a wallet returns shown and changeable before the charge rather than after it.

Commerce Pages3 blocks57 lines
Open the full page for this page

Order Tracking

For the customer with an order number and no account — a lookup, an arrival range rather than a promised date, and the review form where the "how did we do" email actually lands.

Commerce Pages3 blocks40 lines