Download the PHP package leenuxus/jarenui without Composer
On this page you can find all versions of the php package leenuxus/jarenui. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download leenuxus/jarenui
More information about leenuxus/jarenui
Files in leenuxus/jarenui
Package jarenui
Short Description A Jaren-UI compatible Livewire component library for Laravel — 50+ components, dark mode, CSS-variable theming.
License MIT
Homepage https://github.com/leenuxus/jarenui
Informations about the package jarenui
JarenUI for Laravel Livewire
50+ production-ready Livewire components — dark mode, CSS-variable theming, Alpine.js interactivity, full ARIA accessibility, and zero Tailwind config required.
Requirements
| Dependency | Version |
|---|---|
| PHP | ^8.4 |
| Laravel | ^13 |
| Livewire | ^4.0 |
| Alpine.js | ^3.0 |
| Tailwind CSS | ^4.0 (optional — all styling uses CSS variables) |
Installation
That's it. The installer:
- Publishes
config/jarenui.php - Injects
@jarenStylesinto your layout<head> - Injects
<livewire:jaren.toast/>before your</body>
Manual setup
If you prefer not to use the installer:
Alpine.js
JarenUI uses Alpine.js for interactivity. Load it in your layout or app.js:
Quick start
Artisan commands
| Command | Description |
|---|---|
php artisan jaren:install |
Install jarenui (publish assets, inject into layout) |
php artisan jaren:publish --views |
Publish Blade views for customisation |
php artisan jaren:publish --config |
Publish config file |
php artisan jaren:publish --assets |
Publish CSS to public/vendor/jarenui/ |
php artisan jaren:publish --stubs |
Publish layout stub |
php artisan jaren:make-table UsersTable --model=User |
Generate a Table component |
php artisan jaren:make-kanban ProjectKanban |
Generate a Kanban component |
Theming
All visual tokens are CSS custom properties. Override any in your own CSS — no Tailwind config or build step needed:
Or via .env / config/jarenui.php:
Built-in themes
Add a class to <html> to activate a named theme:
| Class | Colour |
|---|---|
theme-rose |
Rose / pink |
theme-violet |
Violet / purple |
theme-emerald |
Emerald green |
theme-amber |
Amber / gold |
theme-sharp |
Reduced border radii |
theme-rounded |
Increased border radii |
Dark mode
Set data-theme="dark" on <html> (or use Tailwind's .dark class):
Toggle dynamically with Alpine:
Component reference
Layouts
<x-jaren::header> — Sticky app header with brand, nav, search, and actions slots.
<x-jaren::sidebar> — Collapsible sidebar with sections, items, and user footer.
<x-jaren::navbar> — Standalone horizontal nav bar.
Primitives
<x-jaren::button>
<x-jaren::badge>
<x-jaren::avatar>
<x-jaren::brand>
Form
<x-jaren::input>
Password with toggle
Note:
toggleableoccupies the trailing addon slot. Do not combine it withclearable,copyable,icon-end, orsuffixon the same input.
<x-jaren::textarea>
<x-jaren::select>
<x-jaren::checkbox>
<x-jaren::radio-group> + <x-jaren::radio>
<x-jaren::switch>
<x-jaren::slider>
<x-jaren::otp-input>
<x-jaren::pillbox>
<x-jaren::field> — wraps any control with label + hint + error
Navigation
<x-jaren::accordion>
<x-jaren::breadcrumbs>
<x-jaren::dropdown>
<x-jaren::tabs>
<x-jaren::pagination>
Overlay
<x-jaren::modal>
Open from PHP: $this->dispatch('open-modal', name: 'confirm')
Open from JS: $dispatch('open-modal', 'confirm')
<x-jaren::tooltip>
<x-jaren::popover>
Feedback
<x-jaren::toast> — Driven by the jaren.toast Livewire component.
<x-jaren::callout>
<x-jaren::progress>
<x-jaren::skeleton>
Display
<x-jaren::card>
<x-jaren::profile>
<x-jaren::timeline>
Full-stack Livewire components
Table — extend jarenui\Livewire\Table:
Kanban — extend jarenui\Livewire\Kanban:
Calendar
A full-featured calendar component for date selection. Supports single dates, multiple dates, and date ranges.
Basic usage
Multiple dates
Date range
Props
| Prop | Type / Values | Default |
|---|---|---|
wire:model |
Livewire property binding | — |
value |
Y-m-d / Y-m-d,Y-m-d / Y-m-d/Y-m-d |
— |
mode |
single multiple range |
single |
min |
Y-m-d or 'today' |
— |
max |
Y-m-d or 'today' |
— |
unavailable |
comma-separated Y-m-d list |
— |
size |
xs sm base lg xl 2xl |
base |
months |
integer | 1 (2 for range) |
min-range |
integer (days) | — |
max-range |
integer (days) | — |
start-day |
0–6 (0 = Sunday) |
user locale |
with-today |
bool | false |
selectable-header |
bool — click month/year to jump | false |
fixed-weeks |
bool — always show 6 rows | false |
week-numbers |
bool | false |
open-to |
Y-m-d |
— |
force-open-to |
bool | false |
static |
bool — display only, no interaction | false |
navigation |
bool — show prev/next buttons | true |
locale |
BCP-47 string e.g. fr, ja-JP |
browser |
DateRange object
Persist in the session automatically:
Events
The calendar dispatches an jaren-calendar-change Alpine event whenever the selection changes:
Event Calendar
A full-featured Livewire calendar with month, week, and day views for displaying and managing events.
Quick start
Generate a calendar component:
Use in Blade:
Static events (no database)
Loading from a database
Override fetchEvents() in your subclass. It receives the visible date window as two Carbon instances:
fetchEvents() is called automatically whenever the view or visible period changes.
CalendarEvent
Component props
| Prop | Type / Values | Default |
|---|---|---|
events |
CalendarEvent[] or plain arrays |
[] |
view |
month week day |
month |
show-toolbar |
bool | true |
show-detail |
bool — event detail panel | true |
creatable |
bool — click empty date to create | false |
start-day |
0–6 (0 = Sunday, 1 = Monday) |
0 |
locale |
BCP-47 string e.g. fr, ja-JP |
en |
available-views |
array of view names | all three |
day-start-hour |
integer | 7 |
day-end-hour |
integer | 20 |
Override in subclass
Events dispatched
| Event | Payload | When |
|---|---|---|
jaren-event-selected |
{event: array} |
User clicks an event |
jaren-event-created |
{date: 'Y-m-d'} |
User clicks empty date (creatable) |
jaren-event-moved |
{id, date, start, end} |
Drag-and-drop (frontend) |
jaren-view-changed |
{view, year, month} |
View or period changes |
jaren-date-clicked |
{date: 'Y-m-d'} |
Any date click |
Listen in Livewire:
Event colours
| Value | Appearance |
|---|---|
blue |
Blue (default) |
green |
Green |
amber |
Amber / gold |
red |
Red |
purple |
Purple |
teal |
Teal |
pink |
Pink |
coral |
Coral / orange |
gray |
Neutral gray |
Wizard
A multi-step form component with a progress stepper, per-step validation, and built-in navigation.
Generate a wizard
This creates:
app/Livewire/OnboardingWizard.php— the PHP classresources/views/livewire/onboarding-wizard/account.blade.phpresources/views/livewire/onboarding-wizard/plan.blade.phpresources/views/livewire/onboarding-wizard/features.blade.phpresources/views/livewire/onboarding-wizard/review.blade.php
Use in Blade:
Anatomy
Component props
| Prop | Type / Values | Default |
|---|---|---|
steps |
array — step definitions |
[] |
variant |
default numbered minimal |
default |
size |
sm md lg |
md |
show-icons |
bool — use icons instead of nums | false |
clickable |
bool — click past steps to jump | true |
show-progress |
bool — linear progress bar | false |
Stepper variants
| Variant | Appearance |
|---|---|
default |
Numbered dots with labels, connecting line, green when done |
numbered |
Same as default |
minimal |
Small dot pills — active dot expands to a pill |
Hooks
Events dispatched
| Event | Payload | When |
|---|---|---|
jaren-wizard-step-changed |
{step: string, index: int} |
Any step navigation |
jaren-wizard-completed |
{data: array} |
complete() is called |
jaren-wizard-cancelled |
— | cancel() is called |
Listen in another Livewire component:
Custom complete panel
Pass a $complete named slot to replace the default success screen:
Navigation methods (callable from Blade)
Combobox
A versatile combobox that handles basic autocomplete, multi-select, grouped options, async server-side search, and creatable options — all in one component.
Basic autocomplete
Multi-select with pills
Grouped options
Creatable (add new options on the fly)
Async server-side search
Generate a Livewire-backed combobox:
Use it:
Or inline without subclassing:
Option shape
Every option can be a plain string (using key as value) or a full array:
Props
| Prop | Type / Values | Default |
|---|---|---|
options |
array of strings or option arrays | [] |
multiple |
bool | false |
searchable |
bool | true |
clearable |
bool | true |
creatable |
bool — allow adding new options | false |
grouped |
bool — group by option['group'] |
false |
async |
bool — fire JS search event | false |
max-selected |
int (multiple mode) | null |
close-on-select |
bool | true (single), false (multiple) |
with-avatars |
bool | false |
with-badges |
bool | false |
with-descriptions |
bool | false |
size |
xs sm md lg xl 2xl |
md |
placeholder |
string | 'Select an option…' |
search-placeholder |
string | 'Search…' |
empty-text |
string | 'No options found' |
label |
string | — |
hint |
string | — |
error |
string | — |
Events dispatched
| Event | Payload | When |
|---|---|---|
jaren-combobox-change |
{value, option} |
Any selection change |
jaren-combobox-create |
{value, label} |
New option created |
jaren-combobox-search |
{query, callback} |
Async mode — call callback(results) |
Listen in Alpine:
Async JS search (no Livewire)
For pure client-side async (e.g. fetching from an API):
The callback receives the results array and populates the dropdown automatically.
AsyncCombobox Livewire component
Override search() in your subclass for full control:
Customising views
Publish views to override any component:
Views land in resources/views/vendor/jarenui/. Laravel will prefer these over the package defaults.
Upgrading
Contributing
License
MIT — see LICENSE.md.
All versions of jarenui with dependencies
illuminate/support Version ^13.0
illuminate/view Version ^13.0
livewire/livewire Version ^4.0
blade-ui-kit/blade-heroicons Version ^2.0