Components

Forty-one Blade components for Laravel, plus two pagination views. Presentation only: no state, no framework assumptions beyond Blade itself.

New here? Start with Getting started — install, three lines of CSS, and the one line that everything depends on.

Components

Every page has a screenshot showing light and dark side by side, the full prop table, copy-paste examples, and the mistakes worth avoiding.

Forms

ButtonDoes something, or goes somewhere
InputText field, textarea, native select
SelectStyled listbox — needs Alpine
ComboboxFiltering select, single or multiple — needs Alpine
SwitchA setting that takes effect
Date pickerA calendar, one date or a range — needs Alpine
File uploadDrop zone with local previews
CheckboxOne independent yes/no
RadioOne of a set, plus the group

Layout & content

PanelBordered card, with rows or free-form
TableRows of records, scrolling in its own box
Stat tileOne number, with its change
AccordionSections that expand one at a time — needs Alpine
Empty stateWhat a region says when it has nothing
SkeletonA picture of content that is still loading

Navigation

Nav itemA row in the sidebar rail
Bottom navThe phone's primary navigation
TabsOne row, several views
BreadcrumbWhere this page sits
PaginationTwo Laravel paginator views

Overlays

ModalBlocks the page until it is answered — Alpine
DrawerAn edge panel to work in — Alpine
SheetThe mobile form of either — Alpine
DropdownA menu of actions — Alpine
TooltipA short label on hover or focus — Alpine
ToastSomething already happened

Marks

IconA Heroicon, sized by the system
AvatarA person or a thing, at a glance
BadgeA small label that annotates
AlertSomething about the page you are on

See everything at once

dist/gallery.html is a single self-contained page rendering every component in both themes, with a token and type reference. Open it in a browser.

It is generated from the real components rather than drawn to look like them, so if one is broken, the gallery is broken too.

Which components need JavaScript

No Livewire, ever. The package requires php, illuminate/support, illuminate/view and blade-heroicons — nothing else. Everything works in a plain Blade view.

Alpine — a single 15 kB script, not a framework — is needed by six components, and by four optional props:

Needs Alpine
modal drawer sheet dropdown select combobox date-picker accordion file-upload tooltipAlways. Their whole behaviour is state the browser has no markup for.
checkboxOnly for indeterminate. Without it the box renders unchecked — which is what a screen reader announces, so the feature is absent rather than lying.
nav-itemOnly for collapsedWhen. Omit it for a permanently expanded rail.
toastOnly for dismiss, which takes an expression that removes the toast.
Everything elseNever.

stat-tile pushes its own count-up script to a scripts stack — plain JavaScript, no framework. Without @stack('scripts') in your layout the tile still renders the final value correctly.

Docs, or specs?

Two sets of documents, for two questions.

AnswersAudience
docs/ (here)How do I use this?Anyone building with the package
specs/Why does it work that way?Anyone changing the package, or porting it

Every page here links to its spec. The specs carry the anatomy, the tokens behind each part, the accessibility contract, and the reasoning — including the bugs that produced each rule. Read one when a component surprises you, or before you change it.

Reporting something

If a component renders wrongly, the fastest useful bug report is a screenshot in both themes and the Blade that produced it. Most visual bugs in this system's history were invisible in the source and obvious in a picture.


From the package repo: edit this page on GitHub.

Was this page helpful?