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

Drawer Laravel Package

mrshanebarron/drawer

Drawer is a Laravel/PHP package that simplifies adding slide-out drawer panels to your application. Use it to create off-canvas navigation, filters, or settings with minimal setup, keeping your UI clean and your implementation lightweight. It is intended for Laravel projects that want a simple, reus...

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit This is a presentation-layer dependency, not a service integration. mrshanebarron/drawer provides Blade components for slide-out panels (off-canvas navigation, filters, carts, settings) — markup, slots, and configurable position/size/overlay behavior — with no backend contracts, no drivers, no external I/O. That is a meaningful architectural simplification: adopting it does not touch the domain layer, does not require container bindings, and cannot block a queue, route, or data migration. It competes with hand-rolled Blade partials and with heavier frontend frameworks (Alpine/Tailwind/Filament). The TPM decision therefore is not "can we integrate this" but "do we standardise drawer behaviour across our Blade views on this package versus our own partials." The v1.0.1 change (config renamed to the sb- prefix) is a packaging concern that affects the publish step and config key namespace — nothing about the component's runtime surface. Note the package is unstarred with a single maintainer; treat the entire component API as an external contract you do not control.

Integration feasibility High for a Laravel 9/10/11 Blade application on PHP 8.1+. The integration surface is: composer require, service provider auto-discovery, vendor:publish for the sb--prefixed config, and then using the Blade component tags in layouts. There is no migration, no queue, no credential. The realistic friction is not technical — it is design consistency and accessibility. Your existing layouts have an established z-index/overlay/scroll-lock convention; a third-party drawer will impose its own, and reconciling those across modals, toasts, and dropdowns is the actual workstream. Confirm the component renders without a JS framework dependency and check whether it ships compiled assets requiring a build step.

Technical risk Low-to-moderate, concentrated in three areas rather than in code correctness.

  • Supply chain and longevity. Zero stars, one maintainer, no visible test suite or support matrix in the notes. If the package is abandoned mid-project, you inherit a Blade partial you did not write. Mitigate by vendoring or forking the component views into your app, or by treating it as a reference implementation you copy rather than a live dependency.
  • Silent config fallback. As with any Laravel package, a stale or misnamed published config reverts to internal defaults with no error — for a UI package this manifests as a drawer that renders at the wrong position or without an overlay, which QA may log as a styling bug rather than a config bug.
  • Semantic versioning. A config filename change shipped as 1.0.1 is arguable as a breaking change for anyone who published under the old name. Automated dependency tooling will not flag it. Pin the version explicitly.
  • Accessibility and cross-browser. Off-canvas panels are a classic a11y trap: focus trapping, aria-hidden on the background, Escape-to-close, mobile viewport behaviour. The notes say nothing about this. Assume you must audit and possibly extend.

Key questions

  1. Does v1.0.1 dual-read the old and new config filenames, or is the old path hard-dropped — i.e. is this genuinely a patch?
  2. What is the supported Laravel/PHP matrix, and is there CI?
  3. Does the component ship its own JS for open/close/scroll-lock, or does it rely on your app's frontend stack?
  4. What is the accessibility posture — focus trap, keyboard dismissal, ARIA attributes, reduced-motion — and is it documented?
  5. Does the sb- prefix imply a family of sibling packages (a draw-er/UI kit), and is that family maintained?
  6. What is the maintenance signal: release cadence, issue responsiveness, commit history?

Integration Approach

Stack fit Straightforward for Blade-first Laravel apps: compose the drawer into your existing layout, publish the sb- config, and drive position/size/overlay through config plus component attributes. It fits cleanly if your frontend is server-rendered Blade. If your team has standardised on Livewire, Inertia/React/Vue, or Filament, a standalone Blade drawer is a parallel pattern and will create divergence — evaluate it only against the framework's native modal/drawer primitives first. Treat the drawer as a design-system asset, not an application utility.

Migration path Greenfield is trivial: publish config, render one drawer in a non-critical page, verify visually and by keyboard. For teams that already have hand-rolled drawer partials, migrate one pattern at a time — start with the least-trafficked instance (e.g. an admin filter panel) to establish the visual and behavioural contract, then replace the rest. If you previously published config under the pre-1.0.1 filename, git mv the customised file to the new sb- name rather than re-publishing (publishing never overwrites, and re-publishing leaves you with an orphaned stale file the package ignores), then run php artisan config:clear.

Compatibility Verify composer.json constraints before committing. The config rename is framework-version-agnostic, but the component markup may assume a specific Blade component API (class-based vs anonymous). Test in the oldest and newest Laravel versions you support, and test in the browsers your users actually run — off-canvas panels are disproportionately affected by iOS Safari viewport quirks.

Sequencing Low-coupling, so schedule it as a normal UI work item rather than a dependency upgrade. Recommended order: (1) design/spike the drawer behaviour against your design system in a scratch page; (2) publish sb- config and confirm keys resolve in tinker; (3) replace one existing drawer in production behind normal review; (4) after a stable week, roll out to remaining instances; (5) only then consider updating the shared base template if you run multiple apps. Keep this out of any release that also contains framework or major dependency churn — you want any regression attributable.

Operational Impact

Maintenance Low if the package stays stable; higher than it looks if it does not. You own the visual behaviour, the a11y remediation, and the config hygiene. Establish a post-upgrade checklist: diff published sb- config against the package stub, confirm no orphaned pre-rename config file exists, and re-run config:cache in deploy. Pin ^1.0 (or an exact version) so a patch cannot land unreviewed — v1.0.1 is precisely the kind of change that argues for pinning. Because the package is a UI component, maintenance also means design-system upkeep: if your brand tokens, spacing scale, or z-index layers change, you are editing the drawer too.

Support Upstream support is effectively zero for an unstarred single-maintainer package; plan to be self-sufficient. Internally, the predicted support tail is not "package broken" but "drawer looks wrong / doesn't close / sits behind the modal." Pre-empt with a runbook entry covering the debug order — provider discovered, config('sb-<name>') returns the file contents, expected keys present, component rendered in the right layer — and a note that most of these are config filename or config-cache issues rather than component bugs. If the drawer is customer-facing, an a11y regression is a support and compliance risk, so route accessibility fixes through a named owner.

Scaling No runtime or performance scaling concern: no request-time I/O, no queue, no external service, config resolved once per request and cached. The scaling consideration is organisational — every Blade view that adopts the drawer must use the same config and the same accessibility contract, so centralise the component usage in a shared layout/partial rather than copy-pasting across views. If multiple applications adopt it, the config-migration and version-pinning discipline must be repeated per app; roll it through a shared template or starter kit.

Failure modes

  • Silent default fallback — stale or orphaned config means the drawer renders with package defaults (wrong position, missing overlay) with no error. Detect with a boot-time config assertion and a visual smoke test.
  • Config cache staleness — deploy does not clear cache; the rename appears not to apply. Add config:clear + config:cache to the pipeline after the config file is present on the server.
  • Z-index / stacking conflict — the drawer sits behind bootstrap modals, toasts, or fixed headers. Highest-probability product failure; resolve in the design-system layer, not per view.
  • Accessibility regression — no focus trap, background scroll not locked, Escape does not close, screen-reader users trapped or stranded. Audit before shipping to customer-facing surfaces.
  • Upstream abandonment — maintainer stops releasing; you are on a fork whether you planned to be or not. Mitigate by vendoring the component views.
  • Undocumented breaking change — a config rename shipped as a patch is invisible to automated dependency tooling; only the pinned version and a post-upgrade diff catch it.

Ramp-up Negligible for a Laravel developer — Blade components are idiomatic, and the first drawer can be live in under an hour. Budget half a day for a first integration including visual and keyboard verification, and one to two hours per additional adoption. The real cost is not learning the package but validating it: an accessibility pass, a cross-browser check on mobile Safari, and a design-system reconciliation against your existing modals and overlays. Obtain the README, a working example, and the supported-version matrix before the team commits; if the package cannot supply these, treat it as a copy-paste reference implementation rather than a live dependency and budget the time to own the code.

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.
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
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