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.
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:
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.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.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.
wire:navigate back/forward?detail === 0) been verified alongside screen readers, not just keyboard-only?pointerType branches and the post-navigation collapse?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.
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.
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.
How can I help you explore Laravel packages today?