HomeDocsComponentsBlocksChartsThemes
Introduction
  • Introduction
  • Installation
  • Themes
  • llms.txt
Components
  • Accordion
  • Alert
  • Alert Dialog
  • Amount
  • Aspect Ratio
  • Audio Player
  • Avatar
  • Avatar Upload
  • Badge
  • Banner
  • Breadcrumb
  • Button
  • Button Group
  • Calendar
  • Card
  • Carousel
  • Chart
  • Checkbox
  • Code Block
  • Collapsible
  • Color Picker
  • Combobox
  • Command
  • Context Menu
  • Copy Button
  • Countdown
  • Data Grid
  • Data Table
  • Date Picker
  • Date Range Picker
  • Description List
  • Device Mockup
  • Dialog
  • Direction
  • Dot Loader
  • Drawer
  • Dropdown Menu
  • Empty
  • Field
  • File Upload
  • Hover Card
  • Input
  • Input Group
  • Input OTP
  • Item
  • Kanban
  • Kbd
  • Label
  • Menubar
  • Meter
  • Multi Select
  • Native Select
  • Navigation Menu
  • Number Field
  • Pagination
  • Password Strength
  • Phone Input
  • Popover
  • Progress
  • Progress Circle
  • Radio Group
  • Rating
  • Resizable
  • Responsive Dialog
  • Rich Text Editor
  • Scroll Area
  • Segmented Control
  • Select
  • Separator
  • Sheet
  • Sidebar
  • Skeleton
  • Slider
  • Sortable
  • Spinner
  • Stat
  • Stepper
  • Switch
  • Table
  • Tabs
  • Tag Input
  • Terminal
  • Textarea
  • Time Field
  • Timeline
  • Toast
  • Toggle
  • Toggle Group
  • Tooltip
  • Tree
  • Typography
  • Video Player
  • Window Mockup
AI
  • Message Scroller
  • Message
  • Bubble
  • Marker
  • Attachment
  • Questionnaire
  • Composer
  • Reasoning
  • Tool Call
  • Approval Card
  • Citations
Blocks
  • Airtable
  • Airtable Kanban
  • ClickUp List
  • ClickUp Kanban
  • Repeatable Group
  • Command Palette
  • Sign In and Sign Up
  • Availability Scheduler
  • AI Chat
  • Action Bar
  • Notion
  • Banking
  • Lineup Builder
  • Sports Score
  • Strava
  • Sheets
  • Notices
  • Settings
  • Billing
Utilities
  • motion
  • sounds
  • scroll-fade
  • shimmer
Another UI. Built on shadcn/ui with Phosphor icons.

Device Mockup

PreviousNext

A phone, tablet or laptop drawn in CSS around live content, an image or a video. It keeps the real screen size of the device and scales down to fit.

Base UIReact AriaRadix UI

Home

Net worth
$
01234567890123456789
01234567890123456789
,
01234567890123456789
01234567890123456789
01234567890123456789
.
01234567890123456789
01234567890123456789
Spend & Save
$
01234567890123456789
01234567890123456789
,
01234567890123456789
01234567890123456789
01234567890123456789
.
01234567890123456789
01234567890123456789
Invest
$
01234567890123456789
01234567890123456789
,
01234567890123456789
01234567890123456789
01234567890123456789
.
01234567890123456789
01234567890123456789

All activity

Today

Credit card

Credit card payment

- $309.52$13,482.17
Grocery store

Purchase

- $86.13$1,206.44

Yesterday

Transfer in

From: Portfolio line of credit

$650.00$13,791.69
Credit card

Credit card payment

- $603.18$13,141.69
Coffee shop

Purchase

- $6.45$1,120.31
Transfer out

To: Joint Account

- $650.00$24,350.00

October 9, 2026

Credit card

Credit card payment

- $35.90$13,744.87
Dividend

XEQT distribution

$41.27$48,210.55

October 8, 2026

Credit card

Credit card payment

- $186.40$13,780.77
Mortgage

Pre-authorized debit

- $1,327.40$13,967.17

October 7, 2026

City parking

Purchase

- $14.25$1,113.86
Payroll

Direct deposit

$4,280.50$15,294.57
9:41100

Installation#

pnpm dlx shadcn@latest add https://anotherui.dev/r/device-mockup.json

Usage#

import { DeviceMockup } from "@/components/ui/device-mockup"
<DeviceMockup device="iphone-18-pro" finish="glacier" className="max-w-[300px]">
  <Banking className="h-full rounded-none border-0" />
</DeviceMockup>
 
<DeviceMockup device="macbook" showStatusBar={false} safeArea={false}>
  <img src="/screenshot.png" alt="" className="size-full object-cover" />
</DeviceMockup>

Sizing#

The screen renders at the real size of the device in points, so live content lays out as it would on the device. An iPhone 18 Pro screen is 402 by 874, the Pro Max is 440 by 956, and the MacBook is 1280 by 832. The whole frame then scales down to the width of its container. Set a max-w-* class to make it smaller, and maxScale to let it grow past its native size.

Give the content h-full so it fills the screen. Blocks built with container queries, like Banking and Strava, switch to their phone layout inside the frame on any screen.

Devices#

  • iphone-18-pro and iphone-18-pro-max. Sizes from the published specs. The Dynamic Island is the smaller one that came with under display Face ID. Finishes are silver, glacier, burgundy and black.
  • android. A flat phone with a punch hole camera. Black, silver and sage.
  • ipad. An 11 inch tablet with even bezels and the camera on the long edge. Space black and silver.
  • macbook. A lid with a notch, a menu bar and a base with a hinge. Space black and silver.

The colours are close matches, not official values.

Safe area#

With safeArea on, the content is padded so it clears the status bar and the home indicator, like a real app. Turn it off for screenshots and videos that already include them. In landscape, phones hide the status bar and pad the sides instead.

Props#

  • device. Which device to draw. Defaults to iphone-18-pro.
  • finish. The frame colour. An unsupported finish falls back to the first one for the device.
  • orientation. portrait or landscape. Ignored for the MacBook.
  • showStatusBar and statusBarTone. The time, signal, wifi and battery over the screen. The tone is auto (follows the theme), light or dark.
  • time and appName. Text in the status bar and the MacBook menu bar.
  • safeArea and showHomeIndicator. Both on by default.
  • screenClassName. Classes for the screen, like a background colour.
  • maxScale. The largest scale. Defaults to 1.

MockupScale is exported too. It renders any children at a fixed width and scales them to fit, and WindowMockup uses it for its fit prop.

Description ListDialog

On This Page

InstallationUsageSizingDevicesSafe areaProps