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

lyra-ds/blade

Lyra DS Blade offers reusable Laravel Blade components for building consistent, accessible interfaces with the Lyra design system. Compose layouts, forms, and UI elements faster without repeating markup.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • lyra-ds/blade is a server-rendered Blade component library with a hard runtime coupling to two front-end packages: @lyra-ds/alpine ^1.1 and @lyra-ds/styles ^1.1. It is not a self-contained PHP package — adopting v1.0.0 means a coordinated three-artifact upgrade (Composer + npm).
  • v1.0.0 formalizes an owned-root x-data policy: Alpine-bound components own their x-data and no longer forward consumer state. Cleaner contract, but it removes the escape hatch teams used for cross-component coordination. Consumers must wrap components in their own <div x-data> instead.
  • The release is a DOM-contract release, not a PHP-API release. Every breaking change is markup, ARIA, CSS-selector, or JS-event surface. Plan the upgrade as a front-end migration with a Composer bump attached, not the reverse.
  • New event surface is now part of the architecture. file-manager dispatches open and navigate events, and tag/toast/action-bar gain interactive remove/close/clear actions. These are the intended integration points for routing, analytics, and state sync — treat them as public API and document them internally.
  • Accessibility posture improved materially (restored focus for dialog/drawer/bottom-sheet/command-palette/date-picker overlays, disclosure semantics for workspace switcher, real anchors in navigation, live-region split for toasts, skip link + focusable <main>, focusable tooltip descriptions, data-table and date-range-picker a11y work). Net positive for procurement/audit review, but it shifts DOM contracts and tab order.

Integration feasibility

  • No database migrations or PHP service-provider changes are indicated; the integration surface is markup, CSS selectors, and JS event contracts. Mechanically simple, test-fragile.
  • New components (OTP input, CalendarView, CreateWorkspaceDialog) are additive and can be adopted independently of the migration.
  • Requires an asset pipeline (Vite/Mix) and version alignment; apps that vendor compiled CSS or use CDN-hosted styles need explicit version pinning.
  • Several changes are not enumerated at selector granularity in the release notes — data-table/date-range-picker a11y (#55), dropdown/tooltip item ids and Button-styled trigger (#49), tag/action-bar interactive actions (#61), file-upload controlled lifecycle (#54). These must be diffed from commits/rendered output before scoping.

Technical risk

  • High selector/test breakage. [role=status] on toast rows, button.lyra-sbgroup__item, #id as tablist, [role=listbox]/[role=option]/[aria-selected] in the workspace switcher, a[href="#"] breadcrumbs. Browser tests (Dusk, Playwright) and custom CSS are the primary blast radius.
  • Silent-failure mode. The tabs tablist ships hidden with no static role/aria-selected; if Alpine 1.1+ is absent or misconfigured, tabs render as an empty shell rather than degrading visibly. Highest-severity risk. File-upload's controlled lifecycle carries the same class of risk.
  • Behavioral regression in workspace switcher. Anchor-based workspace items now navigate natively instead of dispatching lyra:change. Any integration that intercepted that event (analytics, unsaved-changes guards, SPA-style routing) quietly stops firing.
  • Undeclared-scope risk in secondary components. dropdown/tooltip id passthrough and Button-styled triggers, tag/toast/action-bar interactive buttons, and data-table/date-range-picker semantics are all DOM changes described only at a headline level. Budget discovery time rather than assuming "no impact."
  • Layout-level regression from container fixes. container max keywords now map to pixel widths (max="*" behavior change) and brand mark is optional with an aria-label initial fallback. These escape the component blast radius and can shift global page layouts and visual snapshots.
  • Tab-order change. Focusable tooltip descriptions and the skip link / <main tabindex="-1"> add new tab stops. Any test asserting keyboard sequence or first-focusable-element will fail.
  • Version coupling. Peer requirements are ^1.1 on two packages; partial upgrades produce hard-to-diagnose rendering faults rather than clean errors.
  • Maturity signal. v1.0.0 tagged 2026-09-29, published 2026-10-14, with no patch release yet on a release of this breadth. Assume at least one follow-up fix release.

Key questions

  • Do we have an inventory of CSS/JS/test selectors touching the affected components, including data-table, date-range-picker, dropdown, tooltip, tag, and action-bar?
  • Is Alpine 1.1 adoptable now, or are we pinned by another library?
  • Does any code depend on lyra:change from anchor-based workspace items?
  • Do we pass x-data into <x-lyra::toast-stack> today (now unsupported)?
  • What exactly changed in data-table/date-range-picker markup and in dropdown/tooltip ids? (Requires commit-level review; not in the notes.)
  • Do we use container max keywords, and will the pixel mapping shift our page gutters/widths?
  • Do we rely on <x-lyra::brand> always rendering a logo image?
  • Are file-manager open/navigate events something we should now consume for routing/analytics, or ignore for this cycle?
  • Do any E2E tests assert keyboard tab order or first-focusable element?
  • Is v1.0.0 covered by the vendor's a11y conformance statement (WCAG 2.2 AA)?

Integration Approach

Stack fit

  • Laravel + Blade + Alpine + Vite is the intended stack; the package assumes Tailwind-adjacent styling via @lyra-ds/styles.
  • Owned-root x-data encapsulates component state — good for isolation, requiring an explicit wrapper pattern for shared state.
  • New event contracts (file-manager open/navigate; lyra:change on button-type switcher items and create action) are the sanctioned hooks; prefer them over DOM scraping.

Migration path

  1. Pin lyra-ds/blade to 0.10.x in composer.json; snapshot current rendered markup for the affected component families (tabs, toast-stack, file-upload, workspace switcher, navigation, data-table, date-range-picker, dropdown, tooltip, tag, action-bar) as a baseline.
  2. Diff 0.10.0...1.0.0 at commit level for the components whose changes are only summarized: #55 (data-table/date-range-picker), #49 (dropdown/tooltip), #61 (tag/toast/action-bar), #54 (file-upload lifecycle). Extend the selector inventory accordingly.
  3. Upgrade @lyra-ds/alpine and @lyra-ds/styles to ^1.1 together in a branch; verify tabs, toast-stack, file-upload, and workspace switcher render enhanced (non-hidden) markup.
  4. Rewrite selectors: [data-lyra-toast-region] .lyra-toast (and ="assertive" for danger), .lyra-sbgroup__item / .lyra-bottomnav__item without element qualifiers, #id [data-lyra-tabs-enhanced], [data-lyra-tabs] button[data-value], section[data-value], .lyra-wssw__pop / .lyra-wssw__item[data-id] / [aria-current].
  5. Audit lyra:change consumers in the workspace switcher; convert anchor items to native navigation or explicit button items.
  6. Replace x-data passed to <x-lyra::toast-stack> with an outer wrapper div.
  7. Verify container max keyword→pixel mapping and the optional brand mark against real page layouts and visual snapshots; fix reset styles for anchors (text-decoration, color).
  8. Review keyboard/tab-order tests given the added skip link, <main tabindex="-1">, focusable tooltip descriptions, and new interactive buttons on tag/toast/action-bar.
  9. Run a11y and visual regression suites, then upgrade the Composer package to ^1.0.

Compatibility

  • No PHP/Laravel version constraints are disclosed in these notes — confirm against the package's composer.json before scheduling.
  • Reset styles for a may need review now that navigation items render anchors; same for any CSS targeting button.lyra-*.
  • If we consume file-manager or tag/action-bar events, confirm event names/payloads against the source rather than the changelog.

Sequencing

  • Front-end dependency upgrade → commit-level diff of under-specified components → selector/test rewrite → Composer bump → new component adoption (OTP, CalendarView, CreateWorkspaceDialog) → optional adoption of new event hooks (file-manager open/navigate, interactive clear/remove actions).
  • Ship as one PR per component family rather than a single large change, and land container max/brand verification as its own PR so layout diffs aren't conflated with component diffs.
  • Consider a short soak on v1.0.0 or waiting for the first patch release before merging to main, given the release breadth and zero patch releases to date.

Operational Impact

Maintenance

  • Three artifacts to keep in lockstep; configure a Renovate/Dependabot grouping rule for lyra-ds/* (Composer and npm) to prevent drift.
  • Selector-based tests are the recurring maintenance tax; prefer role/data-*-attribute queries aligned to the new markup.
  • New interactive affordances (tag/toast/action-bar remove/close/clear, focusable tooltip descriptions) mean component DOM will keep growing; snapshots over full markup will churn. Prefer targeted assertions.

Support

  • Support burden concentrates on "component renders empty/hidden" tickets caused by version mismatch. Document required @lyra-ds/alpine and @lyra-ds/styles versions in the app README and onboarding.
  • The x-data ownership policy needs a short internal guideline with the wrapper pattern.
  • Publish an internal note that anchor-based workspace items no longer emit lyra:change — otherwise teams will debug analytics gaps as data issues.

Scaling

  • Blade components are stateless server-side; no scaling concern beyond normal asset caching. Ensure compiled assets are cache-busted per release, since CSS class contracts changed.
  • Toast region split (polite/assertive) and the data-table/date-range-picker a11y work are improvements at scale for assistive-tech behavior under load.
  • New file-manager events add a lightweight, non-polling integration path — cheaper than DOM observation if we need navigation telemetry.

Failure modes

  • Missing/mismatched Alpine 1.1 → tabs and other enhanced components render inert (tablist hidden), file-upload lifecycle misbehaves.
  • Stale custom CSS targeting button.lyra-* → unstyled navigation items and anchors with browser-default underlines/colors.
  • Unmigrated E2E tests → CI red on [role=listbox], [role=status], a[href="#"], and tab-order assertions.
  • Lost lyra:change events → silent analytics/guard regressions, no error surfaced.
  • container max keyword mapping → page-level width shifts that look like a design regression rather than a package upgrade.
  • Brand mark now optional → header renders an initial instead of a logo in environments where the mark isn't supplied.
  • Under-scoped secondary components (dropdown/tooltip/data-table/tag) → late-discovery selector and snapshot failures mid-migration.

Ramp-up

  • Low for day-to-day usage (Blade tags unchanged for most components); moderate for the migration (roughly 1–2 engineer-days for a mid-size app with a component test suite, plus 0.5–1 day for the commit-level diff on under-specified components and layout/brand verification).
  • New components are drop-in and low risk; adopt them after the migration lands to avoid confounding regressions.
  • New event hooks are optional and low-cost; defer to a follow-up cycle to keep the upgrade PR reviewable.
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.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console