Ballmac UI home

Watch Frame

A smartwatch drawn in CSS: rounded aluminum case, digital crown and side button, curved glass and a fading strap in sport, loop or leather. The screen is always dark and children render scaled to fit.

Right-to-left: Hardware buttons and bezels sit on fixed physical edges of the device, so the frame keeps its shape; the screen content you place inside follows the page direction.

Installation

$ pnpm dlx shadcn@latest add @ballmac/watch-frame

Usage

import { WatchFrame } from "@/components/ballmac/watch-frame"

The full example is in the Code tab above.

Examples

Workout, loop band

Outdoor Run

24:18

148BPM
312CAL
5'42"PACE

API reference

PropTypeDefault
children

Screen content. Ignored when `src` or `videoSrc` is set. Defaults to a dark screen.

React.ReactNode—
variant

Finish of the aluminum case. "auto" is silver in light mode and black in dark mode.

"auto" | "silver" | "black" | "gold""auto"
band

Strap style and color.

"sport" | "loop" | "leather" | "none""sport"
bandTone

Strap color, taken from the theme's chart colors.

"blue" | "teal" | "orange" | "purple" | "graphite" | "red""graphite"
src

Image shown on the screen, cropped to fill it.

string—
alt

Alternative text for `src`.

string""
videoSrc

Video shown on the screen: muted, looping, and paused under reduced motion.

string—
poster

Poster image for `videoSrc`.

string—
screenWidth

Width in CSS pixels that the screen content is laid out at (208 matches a 46 mm watch); it is then scaled to fit. Omit to lay content out at the frame's actual size.

number—
screenClassName

Class names for the screen element.

string—

Also accepts the standard attributes of its root element.

Accessibility

KeyAction
StaticPurely visual: no focusable elements from the frame
Reduced motionVideo on the screen is not autoplayed

Use with AI

<WatchFrame screenWidth={208} band="sport" bandTone="blue"> renders children as the watch screen at 208 CSS px wide, scaled to fit. Set the width with className (about w-40). With the shadcn MCP server set up (guide), ask your agent:

Add the Ballmac UI Watch Frame (@ballmac/watch-frame) to this project with the shadcn MCP, then use it where it fits.

Use it for

  • Wearable app showcases
  • Device lineups next to phone-frame

Not for

  • Large UI that needs a normal screen (phone-frame)

Registry JSON: https://ui.ballmac.com/r/watch-frame.json

Credits

Free to use in personal and commercial projects.