Skip to main content
The SDK re-exports a curated set of shadcn/ui components that are already themed to match the Stratos shell. Use these instead of installing your own UI library to stay visually consistent across plugins.

Import

All components are available from a single import:

Component Reference

Dialogs

AlertDialog

Accessible alert dialog for confirmations and destructive actions.
Sub-components: AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel

Dialog

General-purpose modal dialog.
Sub-components: Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger

Forms

Input

Single-line text input.

Textarea

Multi-line text input.

Select

Dropdown select menu.
Sub-components: Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue

Combobox

Searchable single-select. Prefer this over Select when there are many options — the list filters as you type and scrolls natively.
Props: options ({ value, label }[]), value, onValueChange, placeholder, searchPlaceholder, emptyText, loading, loadingText, disabled, triggerClassName, contentClassName, align, onOpenChange. Pass loading while options are being fetched to avoid a flickering empty state.

RadioGroup

Radio button group for mutually exclusive choices.

Slider

Range slider for numeric values.

Switch

Toggle switch for boolean settings.

Layout

Card

Elevated container for grouping related content.

Separator

Horizontal or vertical visual divider.

Tabs

Tabbed content panels.

Popover

Floating panel anchored to a trigger. Use it for lightweight overlays (filters, pickers, info panels); for modal flows use Dialog. It’s the primitive behind Combobox.
Sub-components: Popover, PopoverTrigger, PopoverAnchor, PopoverContent

Feedback

Badge

Inline status label or tag.

Button

Primary interactive element.

Tooltip

Non-interactive contextual hint.

Icons

Import icons directly from lucide-react — they’re tree-shaken, so only the icons you use land in your bundle:
The shell provides a single React instance to all plugins via the SDK’s Vite shim, so lucide-react’s own React imports resolve to the same instance — no two-React crashes, no bundle duplication.
Earlier SDK versions exposed STRATOS_ICONS (a re-export of lucide’s full icons object) for dynamic name→component lookup. That export is still available but deprecated. For static imports, use lucide-react directly. For genuinely dynamic lookup (e.g. icon names from a remote config), import { icons } from "lucide-react" gets you the same registry at the cost of bundling the full set (~60 KB gzipped) into your plugin — prefer a curated static map when you can.

Styling Notes

All components use the shell’s Tailwind theme tokens automatically. Dark mode is handled for you — use semantic class names like bg-card, text-muted-foreground, and border rather than hardcoded colours:
Key theme tokens: