artisanpack-ui/livewire-ui-components
ArtisanPack UI Livewire UI Components offers 70+ responsive, accessible Livewire components styled with daisyUI and Tailwind CSS. Built for the TALL stack with Livewire 3/4 support, customizable themes, and an interactive installer to speed up Laravel app development.
Architecture fit. The package is a Blade component library (class-based components extending a shared BaseComponent) rendered server-side with Alpine.js sprinkles — not a JS framework, not a headless primitive set. That maps cleanly onto a standard Livewire monolith or modular Laravel app where markup is authored in Blade. It does not fit Inertia/Vue/React front ends, Blade-on-Bootstrap applications, or teams that have deliberately standardized on a different design system. The hard prerequisite is a real Tailwind build pipeline with the daisyUI plugin — daisyUI is a styling contract, not an optional dependency, so every class name the package emits lives in daisyUI's vocabulary and every customization inherits its semantics. The extension-hook layer (artisanpack-ui/hooks, nine seams for classes, attributes, icons, toasts, table columns, themes, modal lifecycle, spotlight) is the most architecturally significant feature from a TPM standpoint: it converts "fork the package to change behavior" into "register a callback," which is the difference between a vendored liability and a governed dependency.
Integration feasibility. Installation is a three-step path (composer require, interactive livewire-ui-components:install, npm run dev), with optional capabilities gated behind separate installs: PhpSpreadsheet for XLSX, laravel-dompdf for PDF, ApexCharts for Chart/Sparkline, flatpickr for DatePicker. That decomposition is sensible — CSV export and all non-chart components work with zero extra weight. Feasibility is therefore high for a Tailwind shop and effectively zero for anyone else.
Technical risk — the dominant factor in this assessment. Objective adoption signals are near-absent: 1 star, 0 dependents, no third-party production references. This is a single-vendor component library with no community backstop. Compounding factors:
| Risk | Severity | Note |
|---|---|---|
License declared NOASSERTION while README claims MIT |
High | Procurement/legal will block until resolved; the mismatch itself is the issue |
| Fork of MaryUI | Medium | Upstream improvements must be manually reconciled; divergence grows monotonically |
Dependency fan-out on four sibling packages (hooks, icons, accessibility, core) |
Medium | hooks ^1.2 and friends now require illuminate/support ^11+, so Laravel 10 is unreachable regardless of this package's own constraint |
| Documented asset-path fragility | Medium | README tells you the vendor import path "would be different and you may need to adjust based on your setup" — a production build that depends on guessing a path is a repeat-incident candidate |
| CI health | Medium | Changelog explicitly notes Feature tests run unconditionally because pre-existing Unit-suite failures make the earlier step exit non-zero — tests are knowingly red |
| Accessibility claims asserted, not evidenced | Medium | "Accessibility focused" with no conformance statement (WCAG level, audit artifacts) |
Key questions for the maintainer / for us.
composer.json be corrected to match the README's MIT claim?Stack fit. TALL only: Laravel 11+, Livewire 3 or 4, Tailwind + daisyUI, Alpine. Treat the stack matrix as a hard gate — verify Tailwind/daisyUI compatibility in the spike rather than assuming it, since daisyUI major versions have historically changed class semantics.
Migration path. Two distinct migrations exist and should not be conflated:
<x-artisanpack-button>), so it is a mechanical Blade rewrite plus a theming re-derivation. Historically the v1.0 rename (artisanpack-artisanpack- → artisanpack-) is the kind of churn to expect.Within the package's own line, v1.x → v2.0 is stated as fully backwards compatible, which lowers the cost of starting now and upgrading later.
Compatibility. Pin exact versions in composer.json and package.json, and commit the lockfiles. The risk surface is the joint version matrix across four sibling packages plus the npm-side ApexCharts/flatpickr peer versions plus daisyUI — a floating constraint anywhere in that set can produce a resolved combination nobody has tested. Ensure Tailwind's content globs include the vendor package views or classes will be purged in production builds.
Sequencing.
artisanpack:generate-theme, render five components including one chart and one date picker, run npm run build for production and verify the vendor asset paths resolve without manual editing.ap.livewireUiComponents.componentClasses / iconAlias filters early so brand divergence is handled at the seam, not by forking.Maintenance. The package ships a changelog, releases, and wiki docs, which is better hygiene than most single-maintainer projects — but there is no LTS commitment, no security policy, and no deprecation process beyond the one documented rename. Budget ongoing effort for: reconciling MaryUI upstream, tracking the four sibling packages, and re-deriving the theme when daisyUI majors move. The hook API is now a stability surface you depend on — pin artisanpack-ui/hooks and treat its major bumps as breaking.
Support. Documentation lives in a GitHub wiki, which is unversioned and not shipped with the code — you cannot read the docs for the version you installed. Support is GitHub issues from a single vendor. There is no commercial support path, so an internal owner must be named. Given 1 star / 0 dependents, assume you will be the first to hit most edge cases.
Scaling. Runtime cost is low: components render server-side, and the hooks layer short-circuits when nothing is subscribed (componentClasses is opt-in per component; componentAttributes fires per render but is cheap when idle). The scaling concern is front-end payload — daisyUI CSS plus ApexCharts plus flatpickr can meaningfully inflate the bundle. Mitigate by keeping charts and date pickers on lazily-loaded routes rather than the base layout. Table/export components can push memory and time limits on large datasets; PhpSpreadsheet and dompdf both need explicit row caps to stay deterministic.
Failure modes to design against.
composer update breaks the sparkline/Alpine import — pin and add a build-time assertion.Ramp-up. A mid-level Laravel developer already fluent in Tailwind will need roughly 1–2 days to become productive (slot/prop conventions per component, theme command, hook registration); a developer without daisyUI experience needs a week. The real ramp-up cost is governance, not syntax: someone must own the theme, the wrapper layer, the hook registry, and the upgrade cadence. Verify accessibility claims independently — do not inherit them from the README — and add axe or equivalent to CI on any surface that claims conformance.
Verdict. Technically coherent and well-scoped for a TALL-stack app, with an unusually thoughtful extension model. Commercially and operationally immature: the adoption signals, license ambiguity, dependency fan-out, and knowingly-red CI make this a pilot-and-wrap decision, not a platform commitment. Proceed only past the license gate and the production-build spike; adopt behind an internal wrapper layer so the exit cost stays bounded.
How can I help you explore Laravel packages today?