Essential UI components library for Laravel applications with Tailwind CSS
UmbraUI focuses on providing the most essential UI components for modern web applications. Built with accessibility-first design, dark/light theme support, and seamless Laravel integration.
UmbraUI focuses on the most critical components for modern web applications, based on industry standards and popular libraries like shadcn/ui, Tailwind UI, and Chakra UI.
Component | Status | Description |
---|---|---|
Button | âś… Ready | Primary, secondary, and variant styles |
Input | âś… Ready | Text, email, password, number inputs |
Link | âś… Ready | Styled anchor elements |
Textarea | âś… Ready | Multi-line text input |
Select | âś… Ready | Dropdown selection |
Checkbox | âś… Ready | Boolean selection |
Radio | âś… Ready | Single choice selection |
Label | âś… Ready | Form field labels |
Field | âś… Ready | Form field wrapper with validation |
Switch | âś… Ready | Toggle switch |
Slider | âś… Ready | Range input |
Date Picker | âś… Ready | Date selection |
Component | Status | Description |
---|---|---|
Alert | âś… Ready | Success, error, warning, info |
Badge | âś… Ready | Status indicators and labels |
Avatar | âś… Ready | User profile pictures and initials |
Tabs | âś… Ready | Tabbed navigation interface |
Accordion | âś… Ready | Collapsible content sections |
Modal | âś… Ready | Dialog/popup overlay |
Card | âś… Ready | Universal card with image support |
Dropdown | âś… Ready | Context menus with nested submenus |
Popover | âś… Ready | Contextual overlay with click/hover |
Tooltip | âś… Ready | Accessible hover/focus tooltip |
Spinner | âś… Ready | Loading animations and states |
Divider | âś… Ready | Content separators |
Progress | âś… Ready | Progress indicators |
Breadcrumb | âś… Ready | Navigation breadcrumbs |
Component | Status | Description |
---|---|---|
Table | âś… Ready | Data tables with sorting and selection support |
Component | Status | Description |
---|---|---|
Toast | âś… Ready | Elegant notification system |
UmbraUI uses Tabler Icons - a beautiful set of 4,900+ free SVG icons designed for web interfaces. All components that require icons come with pre-integrated Tabler icons support for consistency and visual appeal.
{{-- Basic usage --}}
<x-umbra-ui::icons.home />
<x-umbra-ui::icons.user />
<x-umbra-ui::icons.heart />
{{-- Custom colors --}}
<x-umbra-ui::icons.heart class="text-red-500" />
<x-umbra-ui::icons.star class="text-yellow-400" />
{{-- Custom sizes --}}
<x-umbra-ui::icons.home class="w-4 h-4" />
<x-umbra-ui::icons.settings class="w-8 h-8" />
{{-- Combined customization --}}
<x-umbra-ui::icons.bell class="w-6 h-6 text-blue-600" />
Component | Status | Description |
---|---|---|
Command | 🔄 Planned | Command palette/search |
Pagination | 🔄 Planned | Page navigation controls |
You can install the package via composer:
composer require ihxnnxs/umbra-ui
To use JavaScript toast notifications, you need to publish the assets:
php artisan vendor:publish --tag=umbra-ui-assets
This will publish the JavaScript files to public/vendor/umbra-ui/js/
.
{{-- Buttons --}}
<x-umbra-ui::button>Primary Button</x-umbra-ui::button>
<x-umbra-ui::button type="submit" class="bg-blue-600">Custom Button</x-umbra-ui::button>
{{-- Form Inputs --}}
<x-umbra-ui::input type="email" placeholder="Enter email" />
<x-umbra-ui::textarea placeholder="Your message..." />
<x-umbra-ui::select>
<option>Choose...</option>
<option value="1">Option 1</option>
</x-umbra-ui::select>
{{-- Form Controls --}}
<x-umbra-ui::checkbox id="terms" />
<x-umbra-ui::label for="terms">Accept Terms</x-umbra-ui::label>
<x-umbra-ui::radio name="choice" value="a" id="choice-a" />
<x-umbra-ui::label for="choice-a">Choice A</x-umbra-ui::label>
<x-umbra-ui::switch id="notifications" />
{{-- Form Fields with Validation --}}
<x-field label="Email Address" error="Email is required">
<x-input type="email" />
</x-field>
<x-field label="Message" helper="Maximum 500 characters">
<x-textarea />
</x-field>
{{-- Navigation --}}
<x-tabs default-tab="overview">
<x-tabs.nav>
<x-tabs.tab value="overview">Overview</x-tabs.tab>
<x-tabs.tab value="settings">Settings</x-tabs.tab>
</x-tabs.nav>
<x-tabs.panel value="overview">
<p>Overview content...</p>
</x-tabs.panel>
<x-tabs.panel value="settings">
<p>Settings content...</p>
</x-tabs.panel>
</x-tabs>
{{-- Badges --}}
<x-umbra-ui::badge>Default</x-umbra-ui::badge>
<x-umbra-ui::badge variant="success">Success</x-umbra-ui::badge>
<x-umbra-ui::badge variant="error" removable="true">Removable</x-umbra-ui::badge>
<x-umbra-ui::badge variant="primary" dot="true">With Dot</x-umbra-ui::badge>
<x-umbra-ui::badge size="lg">Large Badge</x-umbra-ui::badge>
{{-- Avatars --}}
<x-umbra-ui::avatar src="/path/to/image.jpg" alt="User Name" />
<x-umbra-ui::avatar initials="JD" size="lg" />
<x-umbra-ui::avatar status="online" size="md" />
<x-umbra-ui::avatar shape="square" initials="AB" />
{{-- Interactive Components --}}
<x-accordion>
<x-slot name="title">FAQ Item</x-slot>
Answer content goes here...
</x-accordion>
<x-slider min="0" max="100" value="50" />
<x-date-picker value="2025-01-15" />
Simple, elegant toast notifications for Laravel applications.
For JavaScript toasts only:
<script src="{{ asset('vendor/umbra-ui/js/toast.js') }}"></script>
For server-side toasts (redirect()->with()):
<x-umbra-ui::toast-container />
For both:
<x-umbra-ui::toast-container/>
<script src="{{ asset('vendor/umbra-ui/js/toast.js') }}"></script>
Server-side (PHP):
// Using redirect()->with()
return redirect()->back()
->with('success', 'User created successfully!');
// Supports: success, error, warning, info
// Using Toast Facade
use Ihxnnxs\UmbraUI\Facades\Toast;
Toast::success('User created successfully!', 'Success Title');
Toast::error('Something went wrong!');
Toast::warning('Please review your data');
Toast::info('New updates available');
Client-side (JavaScript):
<!-- Data attributes on buttons -->
<button
data-toast-trigger
data-toast-type="success"
data-toast-message="Operation completed!"
data-toast-title="Success"
>
Show Toast
</button>
<script>
// Direct JavaScript calls
umbraToast.success('Success message!', 'Title');
umbraToast.error('Error message!');
umbraToast.warning('Warning message!');
umbraToast.info('Info message!');
</script>
Data Attributes:
data-toast-type
: success, error, warning, info, defaultdata-toast-message
: Toast message textdata-toast-title
: Optional titledata-toast-position
: top-left, top-right, top-center, bottom-left, bottom-right, bottom-centerdata-toast-duration
: Milliseconds (default: 5000, 0 = no auto-dismiss)
JavaScript Options:
umbraToast.show('Message', 'success', 'Title', {
position: 'top-right',
duration: 5000,
dismissible: true
});
{{-- Simple Card --}}
<x-card>
<h4>Card Title</h4>
<p>Card content goes here...</p>
</x-card>
{{-- Card with Image --}}
<x-card>
<x-slot name="image">
<img src="image.jpg" alt="Description" class="w-full h-48 object-cover" />
</x-slot>
<x-slot name="header">
<h4>Card with Image</h4>
</x-slot>
<p>Content with image and header.</p>
<x-slot name="footer">
<x-button>Action</x-button>
</x-slot>
</x-card>
<x-link href="https://example.com">External Link</x-link>
<x-link href="/dashboard" class="text-blue-600">Custom Styled Link</x-link>
{{-- Basic Table --}}
<x-umbra-ui::table>
<x-umbra-ui::table.head>
<x-umbra-ui::table.row>
<x-umbra-ui::table.th>Name</x-umbra-ui::table.th>
<x-umbra-ui::table.th>Email</x-umbra-ui::table.th>
<x-umbra-ui::table.th align="right">Actions</x-umbra-ui::table.th>
</x-umbra-ui::table.row>
</x-umbra-ui::table.head>
<x-umbra-ui::table.body>
<x-umbra-ui::table.row>
<x-umbra-ui::table.td>John Doe</x-umbra-ui::table.td>
<x-umbra-ui::table.td>[email protected]</x-umbra-ui::table.td>
<x-umbra-ui::table.td align="right">
<x-button class="text-xs">Edit</x-button>
</x-umbra-ui::table.td>
</x-umbra-ui::table.row>
<x-umbra-ui::table.row selected="true">
<x-umbra-ui::table.td>Jane Smith</x-umbra-ui::table.td>
<x-umbra-ui::table.td>[email protected]</x-umbra-ui::table.td>
<x-umbra-ui::table.td align="right">
<x-button class="text-xs">Edit</x-button>
</x-umbra-ui::table.td>
</x-umbra-ui::table.row>
</x-umbra-ui::table.body>
</x-umbra-ui::table>
{{-- Empty State Table --}}
<x-umbra-ui::table>
<x-umbra-ui::table.head>
<x-umbra-ui::table.row>
<x-umbra-ui::table.th>Orders</x-umbra-ui::table.th>
<x-umbra-ui::table.th>Customer</x-umbra-ui::table.th>
<x-umbra-ui::table.th align="right">Total</x-umbra-ui::table.th>
</x-umbra-ui::table.row>
</x-umbra-ui::table.head>
<x-umbra-ui::table.body>
<x-umbra-ui::table.empty colspan="3">
<x-slot name="title">No orders found</x-slot>
You haven't received any orders yet.
<x-slot name="action">
<x-button class="text-sm">Create Order</x-button>
</x-slot>
</x-umbra-ui::table.empty>
</x-umbra-ui::table.body>
</x-umbra-ui::table>
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
- ihxnnxs
- All Contributors
- Tabler Icons - Beautiful free SVG icons
The MIT License (MIT). Please see License File for more information.