nextui.dev
Home
Docs
Saved
Pricing
Components37
  • Forms & inputs7
  • Cards13
  • Buttons, badges & avatars8
  • Feedback & display6
  • Effects3
Agents17
  • Chat inputNew
  • Task checklistNew
  • ReasoningNew
  • Tool callNew
  • Tool approvalNew
  • SourcesNew
  • Agent timelineNew
  • Artifact panelNew
  • Streaming messageNew
  • Conversation shellNew
  • Voice agentNew
  • Voice orbNew
  • Thinking ring
  • Thinking waveNew
  • Thinking sparkle
  • Thinking bot
  • Prompt deckNew
Blocks20
  • Agent chatNew
  • Pill heroNew
  • Grid hero
  • Moodboard generatorNew
  • Waitlist heroNew
  • Intro bannerNew
  • Creative home heroNew
  • Chat heroNew
  • App shelfNew
  • Usage card
  • Design resultsNew
  • Pricing tiers
  • Dashboard home
  • The shiftNew
  • Launch perksNew
  • Testimonials
  • Quote
  • Team
  • Leads tableNew
  • Sign in
Pages10
  • ASCII workspace$49
  • CRM overviewNew
  • Marketing dashboardNew
  • Developer portfolio$49
  • Particle landing$49
  • Particle story$49
  • Statement converter$49
  • AI photo studio$49
  • Group card launch$49
  • Month-end storyNew
Themes9
  • Default
  • Ember
  • Ocean
  • Forest
  • Grape
  • Rose
  • Amber
  • Clay
  • Brutal
Upgrade
nextui.dev

nextui components, blocks and themes you install with one command.

Product

  • Components
  • Blocks
  • Themes
  • Pricing

Resources

  • Docs
  • Roadmap
  • GitHub

Legal

  • License
  • Privacy
  • Terms
  • Refunds

nextUI

[ 200 OK ] · nextUI

© 2026 NEXTUI • All rights reserved.

Upgrade
BlocksApp shelf
Copy promptCopy prompt

App shelfNew

Row of glossy app icons where hovering one bounces a mock preview out of it, with name, blurb and button, while the rest of the page softens into a blur.

Installation

Set your access key from API keys as NEXTUI_TOKEN in .env.local and add the @nextui namespace below to components.json once. Then every item installs by name. Each install counts as a copy on a free account.

$pnpm dlx shadcn@latest add @nextui/app-shelf
1{
2 "registries": {
3 "@nextui": {
4 "url": "https://nextui.dev/r/{name}.json",
5 "headers": { "Authorization": "Bearer ${NEXTUI_TOKEN}" }
6 }
7 }
8}

Usage

1"use client";
2
3import { Camera, Music } from "lucide-react";
4import { AppShelf } from "@/components/blocks/app-shelf";
5
6export function Apps() {
7 return (
8 <AppShelf
9 title="Things we make"
10 intro="Two small apps from a two-person studio."
11 apps={[
12 { id: "snap", name: "Snapline", description: "Photo notes for field teams.", href: "/snapline", icon: Camera, colors: ["#60a5fa", "#2563eb"] },
13 { id: "beat", name: "Beatbox", description: "A pocket drum machine.", href: "/beatbox", icon: Music, colors: ["#f472b6", "#be185d"], preview: <img src="/beatbox.png" alt="" /> },
14 ]}
15 />
16 );
17}

API reference

PropTypeDefaultDescription
titleReactNode"A small studio of useful things"Heading above the icons
introReactNodeSample bioParagraph under the icons
appsShelfApp[]4 sample appsApps: id, name, label, description, ctaLabel, href, colors, and either artwork (a finished icon) or icon (a glyph on a gradient tile), plus an optional preview node
classNamestring–Extra classes on the section

How it behaves

  • Hover, focus or tap an icon to open its preview; Escape, a tap outside or moving the mouse away closes it
  • The preview stays centred on its icon but is kept inside the row on narrow screens
  • Without a preview node, a mock window in the app's colours stands in

Related

All blocks

Pill heroNew

Grid hero

Sign in to see the code

Preview it freely. A free account copies code and prompts a few times a day.

Sign in