Skip to content

UI Components

ElyOS provides a rich UI component library based on shadcn-svelte components, Lucide icons, Tailwind CSS 4 styles, and custom components. These components ensure a consistent look and behavior throughout the system.

  • shadcn-svelte — Headless UI components (based on bits-ui)
  • Lucide Svelte — Icon set (~1400 icons)
  • Tailwind CSS 4 — Utility-first CSS framework (Vite plugin)
  • Tanstack Table — Data table logic
  • svelte-sonner — Toast notifications

The fundamental UI building blocks you can use in any app.

Detailed documentation →

  • Button — Buttons with various variants
  • Input — Text input fields
  • Select — Dropdown menus
  • Checkbox — Checkboxes
  • Switch — Toggle switches
  • Label — Labels
  • Badge — Status labels
  • Separator — Divider lines

Modal windows and dialog panels for simple and complex use cases.

Detailed documentation →

  • ConfirmDialog — Confirmation dialog (delete, etc.)
  • CustomDialog — Custom content dialog
  • AlertDialog — Alert dialog
  • Drawer — Side panel

Toast messages and notification system.

Detailed documentation →

  • Toast — Transient notifications (svelte-sonner)
  • NotificationStore — Notification system
  • NotificationList — Notification list

Server-side data table component with sorting, filtering and pagination.

Detailed documentation →

  • DataTable — Main table component
  • Actions Column — Action column (primary + dropdown)
  • Column Header — Sortable column header
  • Faceted Filter — Filter component

Components for structuring content.

Detailed documentation →

  • Card — Card component
  • Tabs — Tab component
  • Separator — Divider lines

Navigation components and menus.

Detailed documentation →

  • Dropdown Menu — Dropdown menu
  • Context Menu — Right-click menu
  • Command — Command palette
  • Popover — Popup panel (Combobox pattern)

Lucide icon set usage.

Detailed documentation →

  • Icon importing
  • Common icons
  • Size and style customization

Utility classes and styling conventions.

Detailed documentation →

  • Common utility classes
  • Color palette
  • Responsive design
  • Dark mode
<script>
import { Button } from '$lib/components/ui/button';
import { Input } from '$lib/components/ui/input';
import * as Dialog from '$lib/components/ui/dialog';
</script>
<script>
import User from 'lucide-svelte/icons/user';
import Settings from 'lucide-svelte/icons/settings';
</script>
<User size={24} />
<Settings size={16} class="text-primary" />
<script>
import { toast } from 'svelte-sonner';
</script>
<button onclick={() => toast.success('Saved successfully!')}>
Save
</button>
  1. Use shadcn components — Don’t build your own buttons, inputs
  2. Toast messages — Give feedback after every operation
  3. ConfirmDialog for deletion — Always ask for confirmation on dangerous operations
  4. DataTable server-side — Use server-side pagination for large datasets
  5. Icons consistently — Only use Lucide icons
  6. Tailwind utilities — Prefer them over custom CSS
  7. Responsive design — Use responsive classes (sm:, md:, lg:)
  8. Accessibility — Use Label component with every input
  9. Loading state — Display loading state
  10. Semantic colorsdestructive for deletion, primary for primary action

Choose a component category from the left menu for detailed documentation and code examples.