Ballmac UI home

Product Art

New

Soft square placeholders with a simple object drawn in a chart color, for product grids, carts and detail pages before real photos exist, or as the fallback when a photo fails to load. Theme tokens only.

v1.0.0Updated Oct 25, 2026Ships with a test
What changed
  • speaker
  • mug
  • bag
  • lamp
  • bottle
  • headphones

Installation

$ pnpm dlx shadcn@latest add @ballmac/product-art

Usage

import { ProductArt } from "@/components/ballmac/product-art"

The full example is in the Code tab above.

Examples

Five tones

API reference

PropTypeDefault
kind*

Which object to draw.

ProductArtKind—
tone

Which chart color tints the background and the object.

ProductArtTone1
label

Describes the product for screen readers. Leave it out when the name is written beside the picture.

string—

Also accepts the standard attributes of its root element.

Accessibility

KeyAction
ImageDecorative by default (aria-hidden); with label it is role=img with that name

Use with AI

kind is 'speaker' | 'mug' | 'bag' | 'lamp' | 'bottle' | 'headphones'; tone is 1 to 5 (the chart color that tints the background and the object). It fills the width it is given as a square. Pass label to describe it as an image; without a label it is hidden from screen readers. With the shadcn MCP server set up (guide), ask your agent:

Add the Ballmac UI Product Art (@ballmac/product-art) to this project with the shadcn MCP, then use it where it fits.

Use it for

  • Product cards and galleries in demos, templates and loading states
  • A fallback when a product photo is missing

Not for

  • Real product photography; use an image
  • Icons; use lucide-react

Registry JSON: https://ui.ballmac.com/r/product-art.json

Credits

Free to use in personal and commercial projects.

npm
None
Registry
shadcn/utils

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.