jksantos/jetax
Jetax é um design system opinativo para a TALL Stack em PHP 8.4+ e Laravel 12+: rode o instalador e tenha sidebar, topbar, workspace e 60+ componentes Blade/Livewire prontos, com dark mode nativo, tipografia Manrope/Inter e tudo publicável para customização.
Architecture fit. Jetax is a Blade/Livewire component library plus a Tailwind v4 token layer — not a service-layer package. It touches the presentation tier only, which is the lowest-risk place to adopt third-party code: no database migrations, no queue workers, no auth surface, no runtime dependency in request paths beyond view rendering. It ships a ServiceProvider with package discovery, a jetax:install command, four vendor:publish groups, a jetax:check drift detector for published views, and a jetax_config() helper. That command surface signals the author has thought about the two hardest problems in Blade component packages: CSS build coupling and published-view drift.
Integration feasibility. Mechanically straightforward, economically narrow. The hard requirement intersection is PHP 8.4 + Laravel 12 + Livewire 4 + Tailwind 4 + Alpine 3. As of writing, Livewire 4 is very new; mandating it forces the host application onto an early Livewire major as a precondition for a UI kit. That inverts the normal risk calculus — you would be accepting framework-upgrade risk in order to adopt a zero-adoption design system. Consumption also requires the host's Vite/Tailwind pipeline to compile the package's source CSS (@import "../../vendor/jksantos/jetax/resources/css/jetax.css" plus @source "../../vendor/jksantos/jetax/resources/views"), so the package is build-time coupled to the host toolchain rather than shipping precompiled, versioned artifacts.
Technical risk.
perPage vs per_page (silently non-functional page-size selector), a default of 15 that matched none of the selector's options, and a missing withPath()/appends() pair causing duplicated URL segments and 404s. Two consecutive patch releases fixing table pagination indicates the most load-bearing component shipped without integration-level verification.app.css can silently break.@source scans all 60+ component views, so Tailwind emits utilities for components you never use. Expect a larger CSS payload than a hand-rolled equivalent unless you prune.localStorage key will conflict with any existing theme provider (Filament, custom toggles, OS-preference logic). Two competing class="dark" writers is a real defect class.Key questions.
headerClass, footerClass, slots, config tokens) suffice?Stack fit. Only pursue if the application is already on, or independently committed to, Laravel 12 + Livewire 4 + Tailwind 4 on PHP 8.4. If Jetax is the reason to upgrade any of those, stop — the dependency direction is wrong. Best-fit target: a greenfield or recently rebuilt internal admin/back-office panel where visual consistency, time-to-first-screen, and dark mode matter, and where the blast radius of a UI regression is a handful of internal users.
Migration path. Do not retrofit an existing UI. Adopt in one of three modes, in increasing commitment:
Compatibility. Pin the exact version in composer.json (no caret range) and commit composer.lock. Pin the host's Tailwind version to the same major/minor you validated — because the host compiles Jetax's source CSS, a host-side Tailwind bump is a package upgrade. Verify which Alpine version Livewire 4 bundles; Jetax loads Alpine implicitly via @livewireScripts, so you cannot independently upgrade or downgrade Alpine. Confirm jetax:check runs in CI if you publish views. If you must customize beyond props/slots, prefer a path-repository fork committed into the monorepo over published views — published views are copies that rot, forks are upgrades you control.
Sequencing.
<x-jetax-*> can be swapped without touching feature views).Maintenance. This is the dominant cost. A single-maintainer, zero-dependent package effectively means you are adopting a codebase, not a vendor. Budget explicitly for: tracking upstream releases, reviewing every minor for visual breakage (1.1.0 proves minors carry redesigns), re-validating the Tailwind @source path and CSS import ordering after any host toolchain change, and self-hosting fonts/icons if compliance requires it. If you fork, you own merges from upstream forever and lose the ability to composer update — a real but bounded cost for ~60 Blade files. Mitigate structurally: wrap Jetax components behind a thin internal alias layer so replacement is a single-directory change.
Support. No SLA, no support channel, no security disclosure process, no published deprecation policy. Portuguese-only documentation is a genuine ramp-up tax for a non-Portuguese-reading team, and the README documents component names rather than component APIs — props, slots, emitted events, and wire:model semantics must be read out of the Blade source. Assume reverse-engineering effort per component used, and write internal usage docs as you go; that artifact, not the package, becomes your durable asset.
Scaling. Runtime scaling is a non-issue — this is CSS and Blade rendering, and Livewire requests behave like any other Livewire endpoint. The scaling concerns are all build-time and long-term: CSS payload grows with the number of component views scanned, so a large app adopting many components pays a growing stylesheet cost; per-request Livewire round-trips for interactive components (DataTable, modals, toasts) should be reviewed against your existing Livewire performance profile; and organizational scaling is the real ceiling — onboarding new engineers onto an undocumented, single-maintainer, Portuguese-documented design system does not compound well.
Failure modes. Rank by likelihood × impact:
composer update. Mitigation: exact pins, visual regression snapshots on your key screens, manual changelog review.@source path breaks under a relocated vendor directory, path-repository install, or Docker multi-stage build where the package isn't present at build time. Mitigation: build-time assertion that a known jetax class is present in the compiled CSS.class="dark" producing flicker or stuck themes. Mitigation: single owner of theme state; delete the other implementation before rollout.jetax:check in CI, or avoid publishing.Ramp-up. Expect roughly a week of engineer time to a confident pilot for a team already fluent in Livewire 3/4 and Tailwind 4, plus additional time for the font/icon self-hosting and CSP work, plus ongoing per-component API discovery given the docs gap. The install path itself is minutes; the validation is the cost. Set the adoption decision accordingly: Jetax is a credible accelerator for an internal, greenfield, TALL-native admin surface where you are willing to own a fork — and a poor trade for anything customer-facing, compliance-constrained, or still below Laravel 12 / Livewire 4, where the mandatory stack upgrade carries more risk than the components remove.
How can I help you explore Laravel packages today?