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

Filament Hover Sidebar Laravel Package

vitisstudio/filament-hover-sidebar

A Filament plugin that adds a hover-expandable sidebar to your admin panel, letting navigation stay compact until users hover to reveal full labels and menus. Keeps interfaces clean while improving access to resources, ready to install and configure in any Filament app.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. vitis-studio/filament-hover-sidebar is a Filament panel plugin: a service provider registers it on the Panel, and it ships CSS/JS/Alpine behaviour that overlays the core sidebar (hover-peek rail, pin control). The PHP footprint is essentially registration and asset publishing — the actual product value lives in the front-end layer. Architecturally it is additive but not isolated: rather than publishing overridden views, v0.1.3 explicitly reaches into core Filament behaviour with a capture-phase click listener on the sidebar and stopPropagation() to beat Alpine's navigate plugin. That means the dependency is not on Filament's public plugin API but on its rendered DOM, class names, and Alpine binding order. That is the single most important thing to understand about this package.

Integration feasibility. Low effort: composer require, one line in the PanelProvider, asset (re)publish, cache clear. No migrations, no config surface, no queue or storage. v0.1.3 removes a workaround rather than adding one — previously every rule was behind (hover: hover) and (pointer: fine), so tablets silently degraded to core Filament UI. That silent degradation is now gone, which is a genuine reduction in integration friction for any deployment with field/mobile hardware.

Technical risk. Medium, and concentrated in three places:

  1. Event interception is brittle by construction. preventDefault() on pointerdown does not cancel the subsequent click, so the package relies on a capture-phase listener above the link plus stopPropagation(). This is correct today but depends on Alpine's navigate plugin continuing to bind on the link element. A Filament major/minor upgrade can change that ordering without any notice in this package's changelog.
  2. Breakpoint substitutes for input modality. Gating on min-width: 1024px alone means a 1024px+ touch laptop (Surface, Chromebook) gets the two-press navigation, and a desktop browser window narrowed below 1024px loses the rail entirely and reverts to core. Both are defensible, neither is documented as intentional.
  3. Deliberate UX regression on touch. A press on a collapsed rail now expands instead of navigating — two taps per navigation on tablets. This is a reasonable call given icon-only labels, but it is a product decision that needs explicit sign-off from whoever owns the tablet workflow, not just a bug-fix label.

Secondary risks: pre-1.0 versioning with behaviour changes arriving in patch releases; no evidence of automated tests for the touch paths (the fix description reads as manual device testing); single-maintainer project.

Key questions.

  • Which Filament major/minor versions are supported and tested? Is v4 on the roadmap?
  • Is the capture-phase click interception scoped to this package's rail links, or does it catch all sidebar clicks — including third-party plugin nav items, tenant switchers, and logout?
  • Does the two-press rule apply inside collapsed nav groups, and does it interact correctly with wire:navigate back/forward?
  • Has the keyboard exemption (detail === 0) been verified alongside screen readers, not just keyboard-only?
  • Is there a test suite, and does it cover pointerType branches and the post-navigation collapse?
  • What is the support/ownership model — is there a maintainer SLA, or is this effectively fork-and-own?

Integration Approach

Stack fit. Laravel + Filament (Livewire/Alpine/Tailwind). Purely presentational: no database, no migrations, no background work, no outbound calls. That makes it acceptable in locked-down or audited environments where a package that touches persistence would need a review board. It also means it can be adopted or dropped per-panel without data consequences.

Migration path. From v0.1.2 to v0.1.3 this is a drop-in patch: no config keys, no public API, no asset-path changes. Mouse users see identical behaviour; only touch devices change. Upgrade is composer update → php artisan filament:assets (or vendor:publish --force for the tagged assets) → clear view/config cache → hard-refresh clients, since stale cached CSS is the most likely cause of "the fix didn't work." Rollback is pinning 0.1.2 and re-publishing assets; there is no state to unwind.

For a greenfield install, go straight to ^0.1.3 — there is no reason to carry the tablet fallback.

Compatibility. Pin the exact patch (0.1.3, not ^0.1) and record the Filament version you validated against. Because the fix increases reliance on core sidebar DOM and Alpine binding order, treat every Filament upgrade as requiring a re-test of this package — add it to the upgrade checklist next to your other UI plugins. Check for coexistence conflicts with any other plugin that binds on sidebar links or the topbar.

Sequencing.

  1. Pilot on a single non-critical panel; confirm mouse behaviour is unchanged (regression check, not a feature check).
  2. Validate on the actual tablet hardware and orientation used in the field — landscape iPad at ~1180px is the case this release targets, but portrait tablets still fall back to core and should be confirmed as acceptable.
  3. Keyboard-only and screen-reader pass on the sidebar.
  4. Confirm interactions with any third-party sidebar nav items you've installed.
  5. Roll to remaining panels; document the two-press touch behaviour in user-facing release notes.

Operational Impact

Maintenance. Small codebase, but you are inheriting a pre-1.0 dependency whose core mechanism is intercepting another framework's events. Budget a recurring re-validation task on Filament upgrades rather than assuming passive maintenance. Single-maintainer risk is real: if upstream goes quiet, the fallback is removing the plugin (clean, since there's no data) or forking a small CSS/JS bundle.

Support. Expect a new class of tickets: tablet users reporting "I have to tap twice to open a page." That is now designed behaviour, so it must be documented before rollout or it will read as a bug. Also expect reports from 1024px+ touch-laptop users and from desktop users who narrow their window below the breakpoint and lose the rail. Pre-empt all three with a short internal note.

Scaling. No server-side cost — static assets, cacheable, CDN-friendly, negligible per-request overhead. Risk scales with the number of panels/pages where it's enabled and, more importantly, with the number of sibling plugins that also touch sidebar click handling.

Failure modes.

  • Capture listener swallows a click and a nav link appears dead (highest severity, hardest to diagnose remotely).
  • Rail fails to collapse after navigation on touch, leaving a stale expanded state.
  • Conflict with another plugin binding sidebar clicks — order-dependent, may only appear on specific pages.
  • Breakpoint mismatch on unusual viewports (split-screen, zoomed browsers) causing rail-disappears or rail-inert.
  • Silent fallback to core Filament when the CSS gate doesn't match — historically the failure mode for all tablets, now narrowed to sub-1024px viewports but still silent.

Detection: a manual device matrix as a release gate, an automated click-through test on the collapsed rail (Playwright/Cypress) covering both pointer types, and client-side JS error monitoring to catch thrown exceptions inside the capture listener.

Ramp-up. Trivial to install — a developer is productive in under an hour. Non-trivial to debug: whoever owns front-end issues here needs comfort with Alpine, DOM event capture/bubbling order, and Filament's rendered sidebar structure. Identify that person before adoption rather than during the first incident.

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.
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
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