UI Frameworks¶
Crabyard supports three UI choices. You choose one during project generation with --ui <framework>, or switch later with crabyard update-ui --switch <framework>.
All themes include these shared components out of the box:
ErrorBoundary— catches render errors with a fallback UIOnboardingTour— multi-step first-launch welcome dialogSidebarLayout— collapsible sidebar navigationSkeleton— animated loading placeholderSpinner— CSS-only loading spinnerStatusBar— bottom bar for status items and quick actions
And these shared hooks:
useAuth— authentication state managementuseKeyboardShortcut— declarative keyboard shortcut bindinguseSettings— app settings with Tauri backend persistenceuseTheme— dark/light theme toggle (CSS class or data-theme)
shadcn/ui¶
shadcn/ui provides accessible, composable React components built on Radix UI primitives and styled with Tailwind CSS.
What's included¶
The generated app ships with these pre-configured shadcn/ui components:
Avatar— user profile imagesBadge— status indicatorsButton— primary actionsCard— content containersDialog— modal dialogs (used for settings)DropdownMenu— context menusInput— text fieldsScrollArea— scrollable containersSeparator— visual dividersSwitch— toggle controlsTooltip— hover hints
Adding more components¶
bunx shadcn@latest add [component-name]
Components are generated into src/components/ui/.
Customization¶
Theming is controlled via CSS variables in src/index.css. The default theme uses a dark zinc palette.
DaisyUI¶
DaisyUI adds semantic component classes to Tailwind CSS — no extra JavaScript, just utility classes.
What's included¶
DaisyUI is configured as a Tailwind plugin with the dark theme. Components like buttons, cards, inputs, modals, and toggles use DaisyUI class names (btn, card, input, modal, toggle).
Adding components¶
No installation required — all DaisyUI components are available via class names:
<button className="btn btn-primary">Click me</button>
Theming¶
Change the theme in src/index.css:
@plugin "daisyui" {
themes: dark --default, light, cyberpunk;
}
Minimal¶
Minimal is a zero-dependency theme using only Tailwind CSS utilities — no Radix, no DaisyUI plugin, no external component library.
What's included¶
All core components (Button, Card, Dialog, Input, Badge, Switch, etc.) are implemented with pure Tailwind classes. The only runtime dependency is lucide-react for icons.
When to use it¶
Choose Minimal when you want: - Full control over styling with no opinionated abstractions - Smallest possible bundle with no component library overhead - A clean starting point for building your own design system