electrik/slate
Slate is a shadcn-inspired Blade UI kit for Laravel. Build product interfaces with anonymous x-slate::* components, Tailwind CSS v4, Slate-owned design tokens, first-class dark mode, and Livewire-aware forms—all in Blade, no React or copy-paste CLI required.
Architecture fit — Slate is a presentation-layer dependency only: anonymous Blade components, Tailwind CSS v4 utilities, and package-owned CSS custom properties. It introduces no service provider surface we would need to reason about at runtime, no database, no queue, no middleware. That is the lowest-risk category of dependency in a Laravel codebase — it fails visibly in a rendered page rather than silently in a background job. The shadcn lineage matters strategically: component source is copy-paste-able into our repo, which gives us a credible ejection path if the package stalls. The trade-off is that "Slate-owned theme tokens" means the visual contract lives in the package, not in our design system; adopting it is partly a decision to let a third party own our token names.
Integration feasibility — High for a Laravel 12/13 + Vite + Blade/Livewire app already on Tailwind v4. Low-to-moderate for anything else: Tailwind v4 is CSS-first configuration, so an app on v3 either upgrades first or runs two design systems in parallel, which is a real cost we should not underestimate. Livewire-readiness is claimed but not evidenced; anonymous components are generally morph-safe, but any Alpine-driven component (dropdowns, dialogs) needs a wire:navigate and morph smoke test before we trust it.
Technical risk — Concentrated, not diffuse:
Key questions to put to the maintainer (or answer via spike)
Stack fit — Best fit is a Blade-first Laravel app on Vite with Tailwind v4 already in place, and a UI surface that is either internal (admin, ops tooling) or non-differentiating (marketing, auth, settings). Poor fit for a product whose visual identity is a competitive asset and whose design team maintains its own token system, unless we accept mapping our tokens onto theirs.
Migration path — Do not attempt a big-bang redesign. The realistic path is an extraction: audit our existing Blade partials and identify the 10–15 highest-churn primitives (button, input, select, badge, card, alert, table, dialog). Build a thin internal wrapper layer over Slate's components so our templates call our names, not theirs. That wrapper is the whole insurance policy — it converts a package swap into a two-day change instead of a quarter.
Compatibility — Verify three things before writing component code: Tailwind major version in our build, whether our CSS layer order collides with Slate's theme tokens, and whether our design tokens can be expressed as overrides rather than forks. Also confirm Livewire and Alpine versions if we use interactive components.
Sequencing — (1) One-day spike on a throwaway branch: install, render five representative components, measure bundle delta and token-override ergonomics. (2) Accessibility and dark-mode-flash check on those five. (3) Token mapping decision — override, replace, or bridge. (4) Pilot on one internal surface for four to six weeks. (5) Gate broader adoption on the ejection test: can we vendor the components into our repo and keep shipping without the maintainer? If yes, risk is bounded and we proceed. If no, we treat Slate as inspiration and copy the patterns rather than depend on them.
Alternatives to price in — Flux UI (paid, Livewire-native, first-party-adjacent, support contract) is the obvious benchmark if we want a vendor with accountability. Hand-rolled components are the status quo cost. Slate's case is speed-to-UI at low license cost with low commitment — which is genuinely attractive for a pilot or a v1, and less attractive as the foundation of a multi-year design system.
Maintenance — Steady-state cost is low: no runtime services, no migrations, no data plane. The recurring cost is upgrade choreography — Tailwind majors and Slate majors, plus the periodic re-sync if we vendor components. Budget a small recurring slice (roughly one to two engineer-days per quarter) for dependency review, and more during any Tailwind major.
Support — No commercial support, no SLA, no known maintainer headcount. Internal first-line support is ours. This is acceptable for presentational components and unacceptable if we extend it into anything we'd call business-critical UI. Set that expectation with stakeholders before the pilot, not after.
Scaling — No scaling risk in the runtime sense. The scaling concern is organizational: every team that adopts Slate creates a coupling, and unmanaged component drift across teams is how UI kits quietly become shadow design systems. Governance answer is a documented wrapper layer and a single owner for component changes.
Failure modes to plan for
npm run dev.Ramp-up — Day one productive for any engineer fluent in Blade and Tailwind; the API is conventional and the docs site plus llms.txt lower the learning curve further. Expect two to three weeks before a team is genuinely fluent in override patterns, and a parallel design-side effort to reconcile our tokens with Slate's. The honest framing for stakeholders: engineering ramp-up is trivial, design-system alignment is the real cost, and that cost exists with any UI kit we choose.
Recommendation — Adopt as a bounded pilot with a wrapper layer and a written ejection trigger. Score is low and adoption signals are weak, so this is not a strategic bet; it is a time-to-UI bet with a defined exit. Reassess at the pilot gate against Flux UI and the hand-rolled baseline with real bundle and velocity data in hand.
How can I help you explore Laravel packages today?