Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Ux Laravel Package

enabel/ux

Enabel UX is a Symfony bundle offering reusable Twig components and utilities for building consistent, maintainable user interfaces. Install it with Composer to streamline common UI patterns across Symfony applications and reduce repetitive template code. Documentation included.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — This is a Symfony UX/Twig bundle (@EnabelUx/layout/bootstrap/base.html.twig), not a Laravel package. There is no Blade view, service provider, config publish, or facade here. For a Laravel/PHP team the realistic value is twofold: (a) the Enabel Bootstrap theme consumed as an npm design-system dependency through Vite, and (b) a reference implementation of layout/asset wiring that a TPM can copy into a Blade layout. Direct in-app leverage requires a Twig bridge (e.g. rcrowe/twigbridge) and is only worth it if the organisation already runs Twig elsewhere.

Integration feasibility — High for the asset/theme path, low for the template path. v2.6.0 makes the package less coupled to its own rendering, which is good news for Laravel: the bundle no longer injects CDN CSS/JS into pages, so the host application owns the dependency graph (importmap('app') on their side, @vite(...) on ours). The upgrade note that matters to a Laravel team is the entrypoint contract — import 'bootstrap' and the theme CSS must be imported explicitly.

Technical risk — Moderate, concentrated in three places:

  1. Loss of window.bootstrap. The removed CDN script defined a global. Any inline script or Blade partial doing new bootstrap.Toast(...) or bootstrap.Modal will break silently (undefined reference at runtime, not build time). This is the highest-probability regression.
  2. Theme 4 drops Font Awesome and flag-icons. fa-* and fi fi-* classes will render nothing until those packages are imported. Visual-only failure, easy to ship unnoticed to production.
  3. importmap:update ignores version constraints. The notes explicitly warn it will pull theme 4 despite ^3.0.2 || ^4.0. Any automated dependency refresh can force an unplanned major theme bump — a supply-chain/change-control concern that a TPM should put behind an approval gate.

Offsetting positives: the release removes a GDPR exposure (visitor IPs sent to Google Fonts via theme 3.0.2) and eliminates double-loaded Bootstrap JS that was causing duplicate dropdown/collapse event handlers on login and password-reset pages. That is a real bug fix and a compliance win, not cosmetic.

Key questions for the maintainers / team

  • Is there any supported path for non-Twig consumers, or is the theme npm package the only sanctioned surface?
  • Will the bundle guarantee block-name stability (stylesheets, javascripts) across future majors? The notes promise this for 2.6.0 only.
  • What is the deprecation timeline for theme 3.x? ^3.0.2 || ^4.0 implies 3.x is on borrowed time.
  • Is there a documented migration guide for window.bootstrap consumers beyond the one-line note?

Integration Approach

Stack fit — Adopt the theme as an npm dependency, not the Twig templates. Laravel's Vite + resources/js/app.js is functionally equivalent to the Symfony entrypoint: import Bootstrap, import the theme CSS, and let Vite handle bundling and cache-busting. Skip the Twig bundle entirely unless a Twig bridge is already in the stack.

Migration path

  1. Audit the codebase for window.bootstrap, bootstrap. global usage in inline <script> tags and Blade partials; convert to import { Toast, Modal } from 'bootstrap' in the Vite entrypoint and expose only what is needed via a small module.
  2. If any fa-* or fi fi-* classes are in use (likely in nav, alerts, or auth screens), add explicit Font Awesome and flag-icons imports to the entrypoint before touching the theme version.
  3. Pin the theme in package.json to ^3.0.2 initially; treat theme 4 as a separate, deliberate change.
  4. Verify auth screens (login, password reset) specifically — the notes identify these as the pages that were silently double-loading.
  5. Only after 1–4, allow the theme 4 bump and re-run visual regression on iconography.

Compatibility — The block-preservation guarantee means existing overrides survive; that is the one backwards-compatible affordance here. Everything else in the release is a consumer-side responsibility.

Sequencing — Global-usage audit → icon imports → entrypoint consolidation → lockfile pin → theme 4 evaluation → CI gate on importmap:update equivalents (in Laravel terms: forbid unattended npm update on the theme package; require a lockfile diff review).

Operational Impact

Maintenance — Low ongoing cost once the entrypoint is consolidated: one CSS import, one JS import, one lockfile entry. The upgrade burden has shifted from the package to the application, which is the correct trade but means future theme majors land on us.

Support — Expect a short tail of "icons disappeared" and "dropdown opens twice / doesn't open" tickets around rollout. Both are cheap to diagnose if the entrypoint is a single documented file; both are expensive if asset imports are scattered across layouts.

Scaling — Improved. Removing the CDN eliminates a third-party origin from the critical path and a per-request DNS/TLS cost, reduces total bytes on auth pages (previously theme CSS and Bootstrap JS loaded twice), and removes an external privacy dependency. Fonts are now self-hosted under theme 4.

Failure modes

  • Silent runtime ReferenceError from removed window.bootstrap — no build failure, caught only by exercising interactive components.
  • Missing icons after the theme 4 bump — visual-only, will not trip tests.
  • Unplanned major version pull via dependency refresh tooling — highest-severity, mitigated by lockfile review gates.
  • Partial adoption: some pages using the bundle's layout, others using the app's own, reproducing the original double-load problem in reverse.

Ramp-up — Under a day for a developer familiar with Vite. The conceptual shift is small (CDN assets → bundled imports) but the audit step is the long pole and scales with how much inline JavaScript exists in Blade templates.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log