Ballmac UI home

Listing 1: property listing

A property page: a photo gallery with buttons, thumbnails and arrow keys, price and the facts that matter, description and features, and a viewing request form with times to choose from, field errors and a clear result.

State

The normal view. Pick a state to see what the block shows while it loads, is empty or fails.

Open in v0 (opens in a new tab)

Installation

$ pnpm dlx shadcn@latest add @ballmac/listing-1

Usage

Example: listing-1-demo.tsx
"use client"

import { Listing1 } from "@/components/ballmac/blocks/listing-1/listing-1"

export default function Listing1Demo() {
  return <Listing1 onRequestViewing={() => new Promise((r) => setTimeout(r, 600))} />
}

States

Pass state and the block does the rest: skeletons that match its layout, a clear empty message, an error you can retry, and announcements for screen readers.

  • Loading

    Skeleton for the gallery, facts and form under the page, announced as loading.

    state="loading"
  • Listing unavailable

    Says the listing is no longer available and points back to search; pass listing={null}.

    state="empty"
  • Could not load

    An alert saying to check the connection, with Try again (onRetry).

    state="error"

Dependencies

Use with AI

A property listing page. <Listing1 listing={{ address, city, price, offer: 'For sale' | 'To rent', per?, type, beds, baths, area, description, features: string[], photos: [{ media?, alt }], agent: { name, role, phone? }, viewings: [{ id, label }] }} currency='USD' onRequestViewing={({ viewingId, name, email }) => Promise} />. Photos use Media with generated artwork until you pass media. listing={null} shows the no-longer-available state. With the shadcn MCP server set up (guide), ask your agent:

Add the Ballmac UI Listing 1: property listing (@ballmac/listing-1) to this project with the shadcn MCP, then use it where it fits.

Use it for

  • An estate agent's or landlord's property page
  • Any single-item page with a gallery, key facts and a booking request

Not for

  • A search results grid; use directory-1
  • A product page in a shop; use the ecommerce blocks

Registry JSON: https://ui.ballmac.com/r/listing-1.json

Free to use in personal and commercial projects.

Ballmac UI Pro

Need the whole screen, not one piece?

150 premium blocks (dashboards, settings, calendars, mail, shops, onboarding), a private shadcn registry and Figma tokens. Blocks that show data come with loading, empty and error states built in.

Not ready? Try three Pro blocks free

Leave your email and the blocks appear right here, ready to copy. Yours to use in any project.