Acrylic
Components

Button

macOS 26 Push Button — 6 variants × 5 sizes (heights 16/20/24/28/36) × states.

macOS-style push buttons lifted from the Apple macOS 26 UI Kit: a prominent solid default, three low-emphasis tinted colors (secondary, destructive, neutral), a borderless neutral ghost, and a borderless accent link. Per-size corner radius and an orthogonal icon shape, theme-aware via the Acrylic token set (colors flip light/dark).

Installation

npx shadcn add https://acrylic-ui.vercel.app/r/button.json

Usage

import { Button } from "@/components/acrylic/button"

<Button variant="secondary" size="large">Label</Button>

Variants

variantmacOS classlookemphasis
defaultBordered Defaultsolid accent fill, white label (System Blue)high
secondaryBordered Secondary10% accent tint, accent labellow
destructiveBordered Destructive25% red tint, red label (System Red)low
neutralNeutraltranslucent gray fill, foreground labellow
ghostBorderless Neutralforeground label/glyph, no fill at restlow
linkBorderless Accentaccent label, no button chromelow

Sizes

mini (16px) · small (20) · medium (24, default) · large (28) · xl (36). Corner radius is taken straight from the kit and is not a single formula — mini/small/medium stay quarter-height rounded rectangles while large/xl snap to a full capsule:

sizeminismallmediumlargexl
radius4561418

Icon buttons

icon is an orthogonal boolean — not a size. It turns any size × variant into the kit's round Arrow Button: square (diameter = the size's height), full-circle radius, no padding, with the glyph scaled to the size. So it composes freely:

<Button icon aria-label="Next"><ArrowRight /></Button>            {/* medium, default */}
<Button icon size="large" variant="ghost"><Trash2 /></Button>     {/* large round ghost */}
<Button icon size="mini" variant="destructive"><X /></Button>     {/* mini round red */}

Icon + label

A leading or trailing icon sits inline with the label (flex, items-center, gap-1). The kit renders icon + label as a single SF run — glyph + one space — so the gap is ~one SF Pro space (≈4px), not a looser 6–8px. The glyph scales with the control size and stays optically centered with the text:

Showcase

Every variant in every size (plus a round icon button per variant):

On this page