← Back to Design System

shadcn/ui Components

All 60 components with 346 interactive demos — matching official shadcn/ui documentation

60 components346 demosSynced with shadcn/ui v4 docs

1. Accordion

Documentation →

Basic

My primary stack includes TypeScript, React, Next.js, Node.js, and PostgreSQL. I also have strong experience with AWS, Docker, Kubernetes, and CI/CD pipelines. I favor pragmatic architecture choices over hype-driven decisions.

Multiple

Expert in React 19, Next.js (App Router), TypeScript strict mode, and modern CSS (Tailwind CSS v4). I build accessible, performant, and SEO-optimized interfaces with a strong focus on Core Web Vitals and user experience.

Proficient with Node.js, NestJS, PostgreSQL, Prisma ORM, and Redis. I design scalable API architectures (REST, GraphQL) with proper authentication, rate limiting, and observability. Experienced with AWS, Terraform, and Docker.

Rich Content with Waves

Directed a 12-month cloud migration program for a financial services company, moving 30+ legacy applications to AWS. Managed a team of 8 engineers and coordinated with 4 business units to ensure zero-downtime transitions.

  • Infrastructure costs reduced by 40% through right-sizing and reserved instances
  • Achieved 99.99% uptime SLA across all migrated services
  • Implemented Infrastructure as Code with Terraform for reproducible deployments

2. Alert

Documentation →

Demo

Basic

Destructive

Action

Custom Colors

3. Alert Dialog

Documentation →

Demo

Basic

Small

Media

Small with Media

Destructive

4. Aspect Ratio

Documentation →

Demo

Photo

Square

Photo

Portrait

Photo

5. Avatar

Documentation →

Demo

CNER
CNLRER
+3

Basic

CN

Badge

CN

Badge with Icon

PP

Avatar Group

CNLRER

Avatar Group Count

CNLRER
+3

Avatar Group with Icon

CNLRER

Sizes

CNCNCN

Dropdown

6. Badge

Documentation →

Demo

BadgeSecondaryDestructiveOutline

Variants

DefaultSecondaryDestructiveOutlineGhost

With Icon

VerifiedBookmark

With Spinner

DeletingGenerating

Custom Colors

BlueGreenSkyPurpleRed

8. Button

Documentation →

Demo

Size

Default

Outline

Secondary

Ghost

Destructive

Icon

With Icon

Rounded

Spinner

Button Group

Render

9. Button Group

Documentation →

Demo

Orientation

Size

Nested

Separator

Split

Input

Input Group

Dropdown Menu

Select

Popover

10. Calendar

Documentation →

Demo

April 2026

Hijri

خرداد ۱۴۰۴

Basic

April 2026

Range Calendar

January 2026
February 2026

Month and Year Selector

April 2026

Presets

April 2026

Date and Time Picker

April 2026

Booked dates

February 2026

Custom Cell Size

December 2026

Week Numbers

February 2026
06
07
08
09

11. Card

Documentation →

Demo

Login to your account
Enter your email below to login to your account

Size

Small Card
This card uses the small size variant.

The card component supports a size prop that can be set to "sm" for a more compact appearance.

Image

Event cover
Featured
Design systems meetup
A practical talk on component APIs, accessibility, and shipping faster.

13. Chart

Documentation →

Demo

Bar Chart - Interactive
Showing total visitors for the last 3 months

Your First Chart

Add a Grid

Add an Axis

Add Tooltip

Add Legend

Tooltip

Label
Page Views
Desktop
186
Mobile
80
Name
Chrome
1,286
Firefox
1,000
Page Views
Desktop
12,486
Indicator
Chrome
1,286

14. Checkbox

Documentation →

Demo

By clicking this checkbox, you agree to the terms.

Invalid

Basic

Description

By clicking this checkbox, you agree to the terms and conditions.

Disabled

Group

Show these items on the desktop:

Select the items you want to show on the desktop.

Table

NameEmailRole
Sarah Chensarah.chen@example.comAdmin
Marcus Rodriguezmarcus.rodriguez@example.comUser
Priya Patelpriya.patel@example.comUser
David Kimdavid.kim@example.comEditor

15. Collapsible

Documentation →

Default

Order #4189

StatusShipped

Basic

Settings Panel

Radius
Set the corner radius of the element.

File Tree

16. Combobox

Documentation →

Default

Basic

Multiple

Clear Button

Groups

Custom Items

Invalid

Disabled

Auto Highlight

Popup

Input Group

17. Command

Documentation →

Default

Basic

Command Palette

Search for a command to run...

Shortcuts

Command Palette

Search for a command to run...

Groups

Command Palette

Search for a command to run...

Scrollable

Command Palette

Search for a command to run...

18. Context Menu

Documentation →

Demo

Basic

Submenu

Shortcuts

Groups

Icons

Checkboxes

Radio

Destructive

Sides

19. Data Table

Documentation →

Demo

Status
Amount
success
ken99@example.com
$316.00
success
Abe45@example.com
$242.00
processing
Monserrat44@example.com
$837.00
success
Silas22@example.com
$874.00
failed
carmella@example.com
$721.00
0 of 5 row(s) selected.

20. Date Picker

Documentation →

Demo

Basic

Range Picker

Date of Birth

Input

Time Picker

Natural Language Picker

Your post will be published on April 21, 2026.

21. Dialog

Documentation →

Dialog

Custom Close Button

No Close Button

Scrollable Content

22. Direction

Documentation →

LTR and RTL Comparison

DirectionProvider sets the text direction for child components. Compare left-to-right (English) and right-to-left (Arabic) layouts.

Sign in to your account
Enter your email below to sign in
تسجيل الدخول إلى حسابك
أدخل بريدك الإلكتروني أدناه لتسجيل الدخول

Reading Direction Context

The useDirection hook returns the current direction from the nearest DirectionProvider.

LTR Context

Current direction: ltr

RTL Context

Current direction: rtl

23. Drawer

Documentation →

Drawer

Scrollable Content

Sides

Responsive Dialog

25. Empty

Documentation →

Basic

No Projects Yet
You haven't created any projects yet. Get started by creating your first project.
Learn More

Outline

Cloud Storage Empty
Upload files to your cloud storage to access them anywhere.

Background

No Notifications
You're all caught up. New notifications will appear here.

Avatar

LR
User Offline
This user is currently offline. You can leave a message to notify them or try again later.

Avatar Group

CNLRER
No Team Members
Invite your team to collaborate on this project.

Input Group

404 - Not Found
The page you're looking for doesn't exist. Try searching for what you need below.
/
Need help? Contact support

26. Field

Documentation →

Basic

Payment Method

All transactions are secure and encrypted

Enter your 16-digit card number

Billing Address

The billing address associated with your payment method

Input

Choose a unique username for your account.

Must be at least 8 characters long.

Textarea

Share your thoughts about our service.

Select

Select your department or area of work.

Slider

Price Range

Set your budget range ($200 - 800).

Fieldset

Address Information

We need your address to deliver your order.

Checkbox

Show these items on the desktop

Select the items you want to show on the desktop.

Your Desktop & Documents folders are being synced with iCloud Drive. You can access them from other devices.

Radio

Subscription Plan

Yearly and lifetime plans offer significant savings.

Switch

Choice Card

Compute Environment

Select the compute environment for your cluster.

Field Group

Get notified when ChatGPT responds to requests that take time, like research or image generation.

Get notified when tasks you've created have updates. Manage tasks

Responsive

Profile

Fill in your profile information.

Provide your full name for identification

27. Form

Documentation →

With Zod Validation

This is your public display name.

28. Hover Card

Documentation →

Basic

Sides

29. Input

Documentation →

Basic

Your API key is encrypted and stored securely.

Basic

Field

Choose a unique username for your account.

Field Group

We'll send updates to this address.

Disabled

This field is currently disabled.

Invalid

This field contains validation errors.

File

Select a picture to upload.

Inline

Grid

Required

This field must be filled out.

Badge

Input Group

https://

Button Group

Form

We'll never share your email with anyone.

30. Input Group

Documentation →

Demo

12 results

inline-start

Icon positioned at the start.

inline-end

Icon positioned at the end.

block-start

Full Name

Header positioned above the input.

script.js

Header positioned above the textarea.

block-end

USD

Footer positioned below the input.

0/280

Footer positioned below the textarea.

Icon

Text

$
USD
https://
.com
@company.com
120 characters left

Button

https://

Kbd

⌘K

Dropdown

Spinner

Saving...
Please wait...

Textarea

Line 1, Column 1
script.js

Custom Input

31. Input OTP

Documentation →

Demo

Pattern

Separator

Disabled

1
2
3
4
5
6

Controlled

Enter your one-time password.

Invalid

0
0
0
0
0
0

Four Digits

Alphanumeric

Form

Verify your login
Enter the verification code we sent to your email address: m@example.com.

I no longer have access to this email address.

Having trouble signing in? Contact support

32. Item

Documentation →

Demo

Basic Item

A simple item with title and description.

Your profile has been verified.

Variant

Default Variant

Transparent background with no border.

Outline Variant

Outlined style with a visible border.

Muted Variant

Muted background for secondary content.

Size

Default Size

The standard size for most use cases.

Small Size

A compact size for dense layouts.

Extra Small Size

The most compact size available.

Icon

Security Alert

New login detected from unknown device.

Avatar

ER
Evil Rabbit

Last seen 5 months ago

ER
No Team Members

Invite your team to collaborate on this project.

Group

s
shadcn

shadcn@vercel.com

m
maxleiter

maxleiter@vercel.com

e
evilrabbit

evilrabbit@vercel.com

Header

v0-1.5-sm
v0-1.5-sm

Everyday tasks and UI generation.

v0-1.5-lg
v0-1.5-lg

Advanced thinking or reasoning.

v0-2.0-mini
v0-2.0-mini

Open Source model for everyone.

Dropdown

33. Kbd

Documentation →

Demo

Ctrl+B

Group

Use Ctrl + BCtrl + K to open the command palette

Button

Tooltip

Input Group

K

34. Label

Documentation →

Default

36. Native Select

Documentation →

Default

Groups

Disabled

Invalid

39. Popover

Documentation →

Demo

Basic

Align

With Form

40. Progress

Documentation →

Demo

Label

Controlled

41. Radio Group

Documentation →

Demo

Description

Standard spacing for most use cases.

More space between elements.

Minimal spacing for dense layouts.

Choice Card

Fieldset

Subscription Plan

Yearly and lifetime plans offer significant savings.

Disabled

Invalid

Notification Preferences

Choose how you want to receive notifications.

42. Resizable

Documentation →

Default

One
Two
Three

Vertical

Header
Content

Handle

Sidebar
Content

43. Scroll Area

Documentation →

Default

Tags

v1.2.0-beta.50
v1.2.0-beta.49
v1.2.0-beta.48
v1.2.0-beta.47
v1.2.0-beta.46
v1.2.0-beta.45
v1.2.0-beta.44
v1.2.0-beta.43
v1.2.0-beta.42
v1.2.0-beta.41
v1.2.0-beta.40
v1.2.0-beta.39
v1.2.0-beta.38
v1.2.0-beta.37
v1.2.0-beta.36
v1.2.0-beta.35
v1.2.0-beta.34
v1.2.0-beta.33
v1.2.0-beta.32
v1.2.0-beta.31
v1.2.0-beta.30
v1.2.0-beta.29
v1.2.0-beta.28
v1.2.0-beta.27
v1.2.0-beta.26
v1.2.0-beta.25
v1.2.0-beta.24
v1.2.0-beta.23
v1.2.0-beta.22
v1.2.0-beta.21
v1.2.0-beta.20
v1.2.0-beta.19
v1.2.0-beta.18
v1.2.0-beta.17
v1.2.0-beta.16
v1.2.0-beta.15
v1.2.0-beta.14
v1.2.0-beta.13
v1.2.0-beta.12
v1.2.0-beta.11
v1.2.0-beta.10
v1.2.0-beta.9
v1.2.0-beta.8
v1.2.0-beta.7
v1.2.0-beta.6
v1.2.0-beta.5
v1.2.0-beta.4
v1.2.0-beta.3
v1.2.0-beta.2
v1.2.0-beta.1

Horizontal

Photo by Ornella Binni
Photo by Ornella Binni
Photo by Tom Byrom
Photo by Tom Byrom
Photo by Vladimir Malyavko
Photo by Vladimir Malyavko

44. Select

Documentation →

Default

Align Item With Trigger

Toggle to align the item with the trigger.

Groups

Scrollable

Disabled

Invalid

45. Separator

Documentation →

Default

shadcn/ui
The Foundation for your Design System
A set of beautifully designed components that you can customize, extend, and build on.

Vertical

Blog
Docs
Source

Menu

SettingsManage preferences
AccountProfile & security

List

Item 1
Value 1
Item 2
Value 2
Item 3
Value 3

46. Sheet

Documentation →

Demo

Side

No Close Button

48. Skeleton

Documentation →

Demo

Avatar

Card

Text

Form

Table

49. Slider

Documentation →

Demo

Range

Multiple Thumbs

Vertical

Controlled

0.3, 0.7

Disabled

50. Sonner

Documentation →

Demo

Types

Description

Position

51. Spinner

Documentation →

Default

Processing payment...
$100.00

Custom

Size

Button

Badge

SyncingUpdatingProcessing

Input Group

Validating...

Empty

Processing your request
Please wait while we process your request. Do not refresh the page.

52. Switch

Documentation →

Default

Description

Focus is shared across devices, and turns off when you leave the app.

Choice Card

Disabled

Invalid

You must accept the terms and conditions to continue.

Size

53. Table

Documentation →

Default

A list of your recent invoices.
InvoiceStatusMethodAmount
INV001PaidCredit Card$250.00
INV002PendingPayPal$150.00
INV003UnpaidBank Transfer$350.00
INV004PaidCredit Card$450.00
INV005PaidPayPal$550.00
INV006PendingBank Transfer$200.00
INV007UnpaidCredit Card$300.00
Total$2,500.00

Actions

ProductPriceActions
Wireless Mouse$29.99
Mechanical Keyboard$129.99
USB-C Hub$49.99

54. Tabs

Documentation →

Default

Overview
View your key metrics and recent project activity. Track progress across all your active projects.
You have 12 active projects and 3 pending tasks.

Line

Vertical

Disabled

Icons

55. Textarea

Documentation →

Default

Field

Enter your message below.

Disabled

Invalid

Please enter a valid message.

Button

56. Toast

Documentation →

Default Toast (via Sonner)

57. Toggle

Documentation →

Default

Outline

With Text

Size

Disabled

58. Toggle Group

Documentation →

Default

Outline

Size

Spacing

Vertical

Disabled

Custom

Use font-normal to set the font weight.

59. Tooltip

Documentation →

Default

Side

With Keyboard Shortcut

Disabled Button

60. Typography

Documentation →

Demo

Taxing Laughter: The Joke Tax Chronicles

Once upon a time, in a far-off land, there was a very lazy king who spent all day lounging on his throne. One day, his advisors came to him with a problem: the kingdom was running out of money.

The King's Plan

The king thought long and hard, and finally came up with a brilliant plan: he would tax the jokes in the kingdom.

"After all," he said, "everyone enjoys a good joke, so it's only fair that they should pay for the privilege."

The Joke Tax

The king's subjects were not amused. They grumbled and complained, but the king was firm:

  • 1st level of puns: 5 gold coins
  • 2nd level of jokes: 10 gold coins
  • 3rd level of one-liners : 20 gold coins

As a result, people stopped telling jokes, and the kingdom fell into a gloom. But there was one person who refused to let the king's foolishness get him down: a court jester named Jokester.

Jokester's Revolt

Jokester began sneaking into the castle in the middle of the night and leaving jokes all over the place: under the king's pillow, in his soup, even in the royal toilet. The king was furious, but he couldn't seem to stop Jokester.

And then, one day, the people of the kingdom discovered that the jokes left by Jokester were so funny that they couldn't help but laugh. And once they started laughing, they couldn't stop.

The People's Rebellion

The people of the kingdom, feeling uplifted by the laughter, started to tell jokes and puns again, and soon the entire kingdom was in on the joke.

King's TreasuryPeople's happiness
EmptyOverflowing
ModestSatisfied
FullEcstatic

The king, seeing how much happier his subjects were, realized the error of his ways and repealed the joke tax. Jokester was declared a hero, and the kingdom lived happily ever after.

The moral of the story is: never underestimate the power of a good laugh and always be careful of bad ideas.

h1

Taxing Laughter: The Joke Tax Chronicles

h2

The People of the Kingdom

h3

The Joke Tax

h4

People stopped telling jokes

p

The king, seeing how much happier his subjects were, realized the error of his ways and repealed the joke tax.

blockquote

"After all," he said, "everyone enjoys a good joke, so it's only fair that they should pay for the privilege."

table

King's TreasuryPeople's happiness
EmptyOverflowing
ModestSatisfied
FullEcstatic

list

  • 1st level of puns: 5 gold coins
  • 2nd level of jokes: 10 gold coins
  • 3rd level of one-liners : 20 gold coins

Inline code

@radix-ui/react-alert-dialog

Lead

A modal dialog that interrupts the user with important content and expects a response.

Large

Are you absolutely sure?

Small

Email address

Muted

Enter your email address.