Components

Every component below ships as source through the @persianlabsui registry. More are on the way.

All components

Is it accessible?
Is it styled?
Is it animated?

Accordion

A vertically stacked set of interactive headings that each reveal a section of content, built on Base UI.

Heads up
You can add components to your app

Alert

Displays a callout for important, contextual messages.

Are you absolutely sure?
This action cannot be undone.
Cancel
Confirm

Alert Dialog

A modal dialog that interrupts the user with important content and expects a response, built on Base UI.

16 : 9

Aspect Ratio

Displays content within a desired ratio.

sales-dashboard.pdf
PDF · 2.4 MB

Attachment

Displays a file or image attachment with media, metadata, upload state, and actions.

CN

Avatar

An image element with a fallback, for representing a user or entity, built on Base UI.

Default
Outline

Badge

Displays a small badge to highlight status or metadata.

6219-8619-1894-9297

Bank Input

Iranian card-number and Shaba fields with paste normalization, checksums, and bank detection.

Home
/
Components
/
Breadcrumb

Breadcrumb

Displays the path to the current resource using a hierarchy of links.

Hey there!
How can I help?

Bubble

A chat message bubble with variants, reactions, and start/end alignment.

Button

Button

A button built on Base UI with variant and size support.

Button 1
Button 2

Button Group

A container that groups related buttons together with consistent styling.

مرداد ۱۴۰۴
ش
ی
د
س
چ
پ
ج
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

Calendar

A date-grid calendar built on react-day-picker, switchable between the Jalali (Shamsi) and Gregorian (Miladi) calendars via a calendarType prop.

Card Title
Card description text
Card footer

Card

Displays a card with header, content, and footer.

2
3
4

Carousel

A carousel with motion and swipe built using Embla.

Accept terms

Checkbox

A control for selecting one or more options, built on Base UI.

Province
Alborz
City
Fardis

City Selector

A province & city picker for Iran, built on Combobox and bundled with all 31 provinces and 1,119 cities.

3 starred repos
@base_ui/react

Collapsible

An interactive component which expands/collapses a panel, built on Base UI.

Next.js
SvelteKit

Combobox

A searchable, accessible combobox built on Base UI.

Search commands...
Calendar
Calculator

Command

A command palette component built with Dialog and Autocomplete for searching and executing commands.

Back
Forward
Reload

Context Menu

A menu of actions triggered by a right click, built on Base UI.

Copy Button

An icon button that copies text to the clipboard, morphs its icon to reflect the result, and anchors a confirmation toast to itself.

۱۴۰۵/۰۵/۱۴
ش
ی
د
س
چ
پ
ج
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
انتخاب زمان
۰۹:۳۰

Date Picker

Responsive Shamsi/Gregorian date and date-time fields with SSR-safe defaults and confirmation flows.

۱۴۰۱
۱۴۰۲
۱۴۰۳
۱۴۰۴
۱۴۰۵
بهمن
اسفند
فروردین
اردیبهشت
خرداد
۱۷
۱۸
۱۹
۲۰
۲۱

Date Wheel Picker

An iOS-style year/month/day wheel-based date picker, switchable between the Shamsi and Gregorian calendars, with a responsive Popover-on-desktop, Drawer-on-mobile composition.

Edit profile
Make changes to your profile here.

Dialog

A modal window layered over the page for focused tasks or confirmations, built on Base UI.

LTR
<->
RTL

Direction

A provider for setting the reading direction (LTR or RTL) of your app, built on Base UI.

Drawer

A swipeable panel that slides in from an edge of the screen, built on Base UI.

Profile
Billing
Settings

Dropdown Menu

Displays a menu of actions or options, triggered by a button.

Price
$200 – $700

Elastic Range Slider

A single-track, dual-thumb range slider in the same visual language as Elastic Slider.

Opacity
0.55

Elastic Slider

Slider with elastic rubber-band drag and magnetic snap feedback.

No results
Nothing to show yet

Empty

Displays an empty state with a title, description, and optional actions.

Email
you@example.com
We'll never share your email.

Field

Groups a label, control, and description into an accessible form field, built on Base UI.

@shadcn
The React Framework for design engineers

Hover Card

For sighted users to preview content available behind a link, built on Base UI.

you@example.com

Input

A styled text input built on Base UI.

Search...

Input Group

Add addons, buttons, and helper content to inputs.

1
2
3
4

Input OTP

Accessible one-time password component with copy-paste functionality.

Iran Map Picker

An interactive SVG map of Iran's provinces for picking a province, with hover previews, keyboard selection, and shadcn-style controlled state.

Item title
Item description

Item

A flexible layout for a piece of content, media, or action, often used in lists.

K

Kbd

Displays a keyboard key or shortcut.

Accept terms and conditions

Label

An accessible, styled label element.

OR

Marker

A small label for annotating content, such as a section divider or inline note.

File
Edit
View

Menubar

A persistent horizontal menu bar for application-style commands, built on Base UI.

Got it, thanks!

Message

Composable layout for a chat message with an avatar, header, content, and footer.

Message Scroller

An auto-scrolling viewport for chat messages, with scroll-to-start/end buttons, built on @shadcn/react.

0912 123 4567

Mobile Number Input

An Iranian mobile number input that normalizes mixed paste formats and Persian digits, with a redundant validity indicator.

0499370899

National ID Input

An Iranian national ID (کد ملی) input that normalizes Persian digits as you type or paste and validates the checksum live, with a redundant validity indicator.

Next.js

Native Select

A styled native <select> element for choosing a single value.

Home
Components
Docs

Navigation Menu

A collection of links for navigating websites.

1
2
3
•••

Pagination

Navigation for paginated content, built on Button.

••••••••

Password Input

A password input with a show/hide toggle that always renders LTR, regardless of the surrounding document direction.

IRIRAN
57
الف
555
ایران11

Plate Input

An Iranian vehicle license plate input with digit segments, a letter picker including wheelchair plates, and the Iran serial tab.

Dimensions
Set the dimensions for the layer.

Popover

Displays rich content in a portal, anchored to a trigger.

125,000

Price Input

A text input that formats digits as a grouped price as you type, with support for Persian/Arabic-Indic numerals.

Progress

Displays an indicator showing the completion progress of a task, built on Base UI.

QR Code

A rounded QR code generator with dot modules, custom foreground/background colors, and a center logo slot.

Developer
Designer

Questionnaire

A multi-step questionnaire with single-choice, multiple-choice, freeform, and skippable questions, built on @shadcn/react.

Default
Comfortable

Radio Group

A set of mutually exclusive radio buttons, built on Base UI.

ORDER COMPLETE
READY · 12:48
MORNING GOODS
Everyday watch$128
TOTAL$138.24

Receipt Printer

A tactile checkout printer with processing stages and a composable thermal-paper receipt.

Resizable

Accessible resizable panel groups and layouts, built on react-resizable-panels.

Are you absolutely sure?
This action cannot be undone.
Cancel
Confirm

Responsive Alert Dialog

Renders an Alert Dialog on desktop and a bottom Drawer on mobile from one shared set of components.

Edit profile
Make changes to your profile here.

Responsive Dialog

Renders a Dialog on desktop and a bottom Drawer on mobile from one shared set of components.

Back
Forward
Reload

Responsive Menu

Renders a Dropdown Menu on desktop and a bottom Drawer menu on mobile from one shared set of components.

Tag 1
Tag 2
Tag 3
Tag 4

Scroll Area

Cross-browser custom scrollbars, built on Base UI.

Apple

Select

A listbox for choosing a single value, built on Base UI.

PersianLabs/ui
Design system foundation

Separator

Visually or semantically separates content, built on Base UI.

Sheet

A panel that slides in from an edge of the screen to complement the main content, built on Base UI.

Sidebar

A composable, collapsible application sidebar with mobile drawer, tooltips, and RTL support, built on Base UI.

Skeleton

Used to show a placeholder while content is loading.

Slider

An input where the user selects a value from within a given range, built on Base UI.

Spinner

A spinning loading indicator icon.

Submit
Submitted

Status Button

A button that swaps between idle, loading, and success feedback for async actions.

Airplane Mode

Switch

A control that toggles between checked and unchecked, built on Base UI.

Field
Value
Invoice
INV001
Status
Paid

Table

A responsive table component, with an optional card-row variant.

Overview
Activity

Tabs

Layered panels with a sliding active-tab indicator, built on Base UI.

Type your message here.

Textarea

Displays a form textarea, or a component that looks like a textarea.

08
09
10
11
12
15
30
45
00
15

Time Picker

An hour/minute/second wheel-based time picker, with a responsive Popover-on-desktop, Drawer-on-mobile composition.

Event created
Sunday, December 3 at 9:00 AM

Toast

A temporary notification that stacks in a corner of the screen or anchors to an element, built on Base UI.

B

Toggle

A two-state button that can be either on or off, built on Base UI.

B
I
U

Toggle Group

A set of two-state buttons that can be toggled on or off, built on Base UI.

Toman Icon

The Toman currency symbol, as a standalone icon component.

Add to library
Hover

Tooltip

Displays contextual information when hovering or focusing an element, built on Base UI.

07
08
09
10
11
28
29
30
31
32
AM
PM

Wheel Picker

An iOS-like wheel picker with smooth inertia, infinite scrolling, and keyboard navigation.