Dynamic Island

An iPhone-like pill that expands into whichever live view you make active, springing its outline to fit each one and blurring between their contents; set the view to null and it folds back to the compact pill.

Preview

Dynamic Island preview width

Install

Add it with the shadcn CLI, or copy the source manually.

$ bunx --bun shadcn add @karaui/dynamic-island
@karaui not found? Add it to components.json
{
  "registries": {
    "@karaui": "https://karaui.kamisama-v0.my.id/r/{name}.json"
  }
}

@karaui is in shadcn's public registry directory, so the latest CLI needs no setup. On an older CLI, merge this into the existing file once and every @karaui/… install resolves.

API Reference

DynamicIsland

view
string | null

Active view id. `null` shows the compact pill.

—
compact?
ReactNode

Compact pill content, shown when no view is active.

—
children?
ReactNode

DynamicIslandView elements.

—
className?
string
—

DynamicIslandView

id
string

Matches the parent `view` prop when active.

—
className?
string
—

Keep in mind

Some components on this site are inspired by or recreated from existing work across the web. I'm not here to take credit; just to learn, experiment, and sometimes push things a bit further. If something looks familiar and I forgot to mention you, reach out and I'll fix that right away.

Updated