Radix UI provides unstyled, accessible React primitives for building high-quality design systems. It powers shadcn/ui and many production apps.
Dialog
import * as Dialog from "@radix-ui/react-dialog";
<Dialog.Root>
<Dialog.Trigger>Open</Dialog.Trigger>
<Dialog.Portal>
<Dialog.Overlay className="fixed inset-0 bg-black/50" />
<Dialog.Content className="fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-white p-6 rounded-lg">
<Dialog.Title>Edit Profile</Dialog.Title>
<Dialog.Description>Make changes to your profile.</Dialog.Description>
<input placeholder="Name" />
<Dialog.Close>Save</Dialog.Close>
</Dialog.Content>
</Dialog.Portal>
</Dialog.Root>
Dropdown Menu
import * as DropdownMenu from "@radix-ui/react-dropdown-menu";
<DropdownMenu.Root>
<DropdownMenu.Trigger>Options</DropdownMenu.Trigger>
<DropdownMenu.Portal>
<DropdownMenu.Content className="bg-white rounded-md shadow-lg p-1">
<DropdownMenu.Item className="px-2 py-1 cursor-pointer hover:bg-gray-100">
Edit
</DropdownMenu.Item>
<DropdownMenu.Separator className="h-px bg-gray-200 my-1" />
<DropdownMenu.Item className="px-2 py-1 text-red-500">
Delete
</DropdownMenu.Item>
</DropdownMenu.Content>
</DropdownMenu.Portal>
</DropdownMenu.Root>
Tabs
import * as Tabs from "@radix-ui/react-tabs";
<Tabs.Root defaultValue="tab1">
<Tabs.List>
<Tabs.Trigger value="tab1">Account</Tabs.Trigger>
<Tabs.Trigger value="tab2">Settings</Tabs.Trigger>
</Tabs.List>
<Tabs.Content value="tab1">Account content</Tabs.Content>
<Tabs.Content value="tab2">Settings content</Tabs.Content>
</Tabs.Root>
Key Features
- Fully accessible (WAI-ARIA)
- Unstyled — bring your own CSS
- Composable compound components
- Keyboard navigation built-in
- Powers shadcn/ui
Need to scrape or monitor web data at scale? Check out my web scraping actors on Apify or email spinov001@gmail.com for custom solutions.
Top comments (0)