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

Blade Laravel Package

solar-icons/blade

solar-icons/blade provides Laravel Blade components for rendering Solar icon sets, making it easy to drop scalable SVG icons into your views with simple, expressive tags and minimal setup.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit This is a Laravel Composer package that registers an icon set as Blade components (<x-solar-*>) plus an svg() helper and a publishable set of raw SVG assets. It emits inline SVG, so it slots into any Laravel rendering path (Blade views, Livewire, Inertia SSR output, mail templates) without touching the build pipeline. The v2.0.1 change moves stroke-width from per-file markup into a single package config value that is applied at render time by Blade Icons. Architecturally this is the right direction: one source of truth, styling controlled centrally rather than through per-asset duplication.

Integration feasibility Low effort. composer require, optional vendor:publish for config and/or raw assets, then use the components. No JS dependency, no asset compilation step unless the team chooses to consume the published raw SVGs. The only new integration decision introduced by this release is whether the app depends on inline components (affected by the config) or on published raw SVG assets (no longer carries a baked stroke-width).

Technical risk Moderate, and non-obvious for a patch-level release. The prior behavior produced a duplicate stroke-width attribute whenever a caller overrode stroke width on a static component or via svg(). Duplicate attributes are invalid markup and browsers honor the first occurrence, so overrides were silently ignored — the fix is real and valuable. However, two behavioral consequences follow:

  • Rendering now depends on package config being present and correct. A missing or diverged config yields a different visual weight than before.
  • Raw SVGs published as assets deliberately ship without stroke-width and fall back to the SVG default (1). Any consumer that publishes assets and renders them standalone — email templates, <img> tags, CDN-served sprites, Figma handoffs — will see thinner strokes than in v2.0.0. Visual regression risk is the dominant concern, not runtime failure. Nothing throws; icons just look different.

Key questions

  • What is the config key, its default value, and does it match the stroke width previously baked into the files?
  • Is the config auto-merged with a safe default, or does an absent config key produce an unstyled/default-weight icon?
  • Does the new stroke-width land on the root <svg> and inherit, or is it applied per-path? Inheritance behavior matters for multi-path icons and for CSS overrides.
  • Are published raw assets regenerated with a documented guidance note, or left to the consumer to set stroke width themselves?
  • Is the published-asset behavior change documented as breaking for asset consumers, and is there a recommended pattern (e.g. a wrapping CSS rule or a build-time substitution)?
  • Which blade-ui-kit/blade-icons versions are required, and is that constraint tight enough to guarantee the new attribute-resolution path?

Integration Approach

Stack fit Standard Laravel service-provider + Blade component registration; no framework version coupling beyond normal requirements. Fits apps on Blade, Livewire, Filament, and Inertia equally. Teams rendering icons in outbound email or static HTML should treat the published-asset path as a separate integration with its own styling contract.

Migration path For most consumers this is a composer update with a visual diff. Recommended sequence:

  1. Read the config key and default; confirm the default equals the stroke width the app currently renders.
  2. Diff the existing published config against the package config to catch overrides that would now be the only thing controlling stroke weight.
  3. If raw assets are published, decide explicitly between re-publishing (accepting SVG-default weight) or setting stroke width downstream in CSS/presentation attributes.
  4. Run visual regression on a representative icon-heavy page before promoting.

Compatibility Two compatibility surfaces: the Blade Icons constraint (must support config-driven stroke-width emission) and the app's own published assets, which are effectively forked at publish time. Published assets do not auto-upgrade — they are a manual migration even though the package version is a patch. Teams that pin the package but consume assets from a CDN or a checked-in directory have a split-brain risk between the component output and the asset output.

Sequencing Pin the dependency, update in a dev branch, capture before/after screenshots of the top icon surfaces, verify override behavior (stroke-width passed on a static component and via svg()) now takes effect, then roll to staging and production. Treat the published-asset decision as a separate change ticket so the two behavioral changes are not diagnosed simultaneously.

Operational Impact

Maintenance Net positive. Stroke width becomes one config line instead of a property smeared across every generated file, so design-system changes no longer require republishing. The offsetting cost is that the config file is now load-bearing: it must live in version control, be present in every environment, and be reviewed when changed. Add it to the set of files checked during environment parity audits.

Support Expect a small wave of "icons look thinner" reports after upgrade, concentrated among teams using published assets or email templates. Support guidance should lead with the two-line explanation (config controls components; raw assets intentionally have no baked width). The duplicate-attribute fix should reduce a prior class of tickets — "my stroke-width override does nothing."

Scaling No meaningful runtime scaling change: same inline SVG payload, same component resolution path. A config-driven attribute is marginally cheaper than duplicated attributes per file and reduces published-asset bytes. For icon-dense UIs, the usual advice still applies — consider sprites or caching rendered partials rather than thousands of inline SVGs.

Failure modes

  • Config missing or diverged → icons render at the wrong weight, silently, across the whole app.
  • Config cached → edits require config:cache refresh; a stale cache looks like a broken upgrade.
  • Published raw assets rendered standalone → SVG-default weight, visibly lighter than the component-rendered equivalent.
  • Partial migration → some surfaces use components (config weight) and others use published assets (default weight), producing inconsistency that is hard to attribute.
  • Visual regression suites without icons in snapshots → change ships undetected until a design review.

Ramp-up Near zero for developers using components — the API surface is unchanged. The ramp-up burden falls on whoever owns the design system: understanding the config key, owning the value, and deciding the published-asset contract. Budget a short pairing session with design to confirm the new default matches the intended visual spec before the upgrade goes wide.

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.
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle
glavweb/extra-bundle
glavweb/api-bundle
glavweb/admin-bundle
adachsoft/api-version-bundle
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager