# Radix UI: Accessible Headless Components für React
**Meta-Description:** Radix UI Primitives für barrierefreie React-Komponenten. Headless Architecture, WAI-ARIA Compliance und shadcn/ui Integration.
**Keywords:** Radix UI, Headless Components, Accessibility, WAI-ARIA, React Components, shadcn/ui, Unstyled Components
---
## Einführung
Radix UI ist eine **Headless Component Library** für React. Statt vorgestylter Komponenten liefert sie zugängliche, ungestylte Bausteine – perfekte Grundlage für Design Systems mit voller Accessibility out-of-the-box.
---
## Warum Radix UI?
```
┌─────────────────────────────────────────────────────────────┐
│ RADIX UI VORTEILE │
├─────────────────────────────────────────────────────────────┤
│ │
│ Accessibility (A11Y): │
│ ├── WAI-ARIA Design Patterns │
│ ├── Keyboard Navigation │
│ ├── Focus Management │
│ ├── Screen Reader Support │
│ └── Reduced Motion Support │
│ │
│ Headless Architecture: │
│ ├── Zero Styles (volle Kontrolle) │
│ ├── Jedes Styling möglich (CSS, Tailwind, CSS-in-JS) │
│ ├── Kein UI Lock-in │
│ └── Perfekt für Design Systems │
│ │
│ Developer Experience: │
│ ├── Composable APIs │
│ ├── TypeScript Support │
│ ├── SSR Compatible │
│ └── Tree-Shakeable │
│ │
└─────────────────────────────────────────────────────────────┘
```
---
## Installation
```bash
# Einzelne Primitives installieren
npm install @radix-ui/react-dialog
npm install @radix-ui/react-dropdown-menu
npm install @radix-ui/react-tabs
npm install @radix-ui/react-tooltip
# Oder alle Primitives
npm install @radix-ui/primitives
```
---
## Dialog (Modal)
```typescript
import * as Dialog from '@radix-ui/react-dialog';
import { X } from 'lucide-react';
function ConfirmDialog({
trigger,
title,
description,
onConfirm
}: {
trigger: React.ReactNode;
title: string;
description: string;
onConfirm: () => void;
}) {
return (
{trigger}
{title}
{description}
);
}
// Verwendung
Löschen}
title="Eintrag löschen?"
description="Diese Aktion kann nicht rückgängig gemacht werden."
onConfirm={() => deleteItem(id)}
/>
```
---
## Dropdown Menu
```typescript
import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
import { Check, ChevronRight, Circle } from 'lucide-react';
function UserMenu({ user }: { user: User }) {
const [bookmarksChecked, setBookmarksChecked] = useState(true);
const [person, setPerson] = useState('pedro');
return (
{/* Regular Items */}
Profil
Einstellungen
{/* Checkbox Item */}
Lesezeichen anzeigen
{/* Radio Group */}
Personen
Pedro
Maria
{/* Sub Menu */}
Mehr
Hilfe
Über uns
{/* Destructive Item */}
Abmelden
);
}
```
---
## Tabs
```typescript
import * as Tabs from '@radix-ui/react-tabs';
function SettingsTabs() {
return (
Account
Passwort
Benachrichtigungen