electrik / slate
Beautiful, accessible Laravel Blade components built with Tailwind CSS v4
Fund package maintenance!
electrikhq
Installs: 2 196
Dependents: 1
Suggesters: 0
Security: 0
Stars: 11
Watchers: 2
Forks: 0
Open Issues: 0
pkg:composer/electrik/slate
Requires
- php: ^8.1|^8.2|^8.3|^8.4
- blade-ui-kit/blade-icons: ^1.8
- codeat3/blade-carbon-icons: *
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^10.6
- phpunit/phpunit: ^12.3
README
Slate UI Kit is a set of beautiful anonymous blade components built using tailwindcss for your next Laravel project.
โจ Features
- ๐จ 57 Components - Complete component library
- ๐ฏ Zero PHP Color Logic - All colors controlled via CSS variables
- ๐ Dark Mode - Built-in dark mode support with automatic variable switching
- โฟ Accessible - WCAG 2.1 AA compliant with proper ARIA attributes
- ๐ Tailwind CSS v4 - Using latest Tailwind with CSS variables
- ๐ฆ Anonymous Components - Pure Blade templates, no PHP classes
- ๐จ Self-Contained - Everything in the package, minimal client configuration
- โก Alpine.js - Interactive components using Alpine.js (standard in Laravel)
- ๐จ Semantic Colors - success, warning, info, error, danger color system
๐ Requirements
- PHP 8.1+
- Laravel 10.0+ or 11.0+ or 12.0+
- Tailwind CSS v4
- Alpine.js (for interactive components - usually included in Laravel apps)
๐ Installation
Step 1: Install via Composer
composer require electrik/slate
Step 2: Run Installation Command
php artisan slate:install
This command will:
- Copy
slate.csstoresources/css/slate.css - Add
@import './slate.css';to yourapp.css(after@import 'tailwindcss';) - Add
@sourcedirective to scan Slate components
Note: The installation command automatically configures your app.css file. No manual Tailwind config changes needed when using Tailwind CSS v4!
Step 3: Build Assets
npm run build
That's it! Slate uses CSS variables and Tailwind v4's @theme system, so no tailwind.config.js changes are required.
๐ Usage
Basic Example
<x-slate::button>Click me</x-slate::button>
With Variants
<x-slate::button variant="success">Save</x-slate::button> <x-slate::button variant="warning">Warning</x-slate::button> <x-slate::button variant="error">Error</x-slate::button> <x-slate::button variant="danger">Delete</x-slate::button> <x-slate::button variant="outline">Cancel</x-slate::button> <x-slate::button variant="ghost">Ghost Button</x-slate::button>
Form Example
<x-slate::label for="email">Email</x-slate::label> <x-slate::input type="email" id="email" name="email" placeholder="Enter your email" />
๐จ Components
Slate includes 57 components:
Core Components
- Button, Input, Card, Label, Badge
Form Components
- Textarea, Select, Checkbox, Radio Group, Switch, Slider, Input Group, Input OTP, Field
Feedback & Overlay
- Alert, Dialog, Alert Dialog, Drawer, Sheet, Popover, Tooltip, Hover Card, Sonner (Toast)
Navigation
- Dropdown Menu, Context Menu, Navigation Menu, Menubar, Breadcrumb, Tabs, Sidebar, Pagination
Data Display
- Table, Avatar, Separator, Skeleton, Empty, Aspect Ratio
Advanced
- Accordion, Collapsible, Command, Combobox, Calendar, Progress, Scroll Area, Resizable, Carousel, Chart
Utility
- Toggle, Toggle Group, Button Group, Item, Kbd, Spinner
๐จ Theming
Color System
Slate uses semantic color naming with foreground/background pairs:
Base Colors:
background/foreground- Page background and textborder,input,ring- UI element colors
Semantic Colors:
primary/primary-foreground- Main brand colorsecondary/secondary-foreground- Secondary actionssuccess/success-foreground- Success stateswarning/warning-foreground- Warning statesinfo/info-foreground- Informational stateserror/error-foreground- Error statesdanger/danger-foreground- Destructive actionsmuted/muted-foreground- Subtle backgrounds/textaccent/accent-foreground- Hover states, highlightscard/card-foreground- Card backgroundspopover/popover-foreground- Popover backgrounds
Customize Colors
Override CSS variables in resources/css/slate.css:
:root { --color-primary: 142 76% 36%; /* Custom green */ --color-primary-foreground: 355 100% 97%; --color-success: 142 71% 45%; /* Custom success color */ --color-success-foreground: 0 0% 98%; } .dark { --color-primary: 142 70% 45%; /* Dark mode variant */ --color-primary-foreground: 0 0% 9%; }
Dark Mode
Dark mode is automatically handled via the .dark class:
<html class="dark"> <!-- Dark mode enabled --> </html>
Toggle dark mode with Alpine.js:
<div x-data="{ dark: false }"> <button @click="dark = !dark; document.documentElement.classList.toggle('dark', dark)"> Toggle Dark Mode </button> </div>
๐งช Testing
Slate components are tested using:
- Unit Tests - Blade component rendering with different props/variants
- Integration Tests - Components in real Laravel views and forms
- Visual Regression Tests
- Accessibility Tests - WCAG 2.1 AA compliance using axe-core/Pa11y
๐ Documentation
Full documentation is available at: https://slate.electrik.dev
Note: Documentation is in a separate repository (slate-docs) and uses Jigsaw for static site generation.
๐ง Customization
Self-Contained Package
Slate is designed to be self-contained. All styles and components live in the package, and the slate:install command handles configuration automatically.
Customize CSS Variables
Edit resources/css/slate.css (copied during installation) to customize colors, spacing, and other design tokens.
Publish Views (Optional)
To customize component markup:
php artisan vendor:publish --tag=slate-views
Views will be published to resources/views/vendor/slate/components/
Note: Published views won't receive automatic updates. Use this only if you need to modify component structure.
๐ค Contributing
Contributions are welcome! Please see our Contributing Guide for details.
๐ License
This package is open-sourced software licensed under the MIT license.
๐ Credits
- Built with Laravel and Tailwind CSS
- Interactive components powered by Alpine.js
Made with โค๏ธ by Electrik