Download the PHP package vitisstudio/filament-hover-sidebar without Composer

On this page you can find all versions of the php package vitisstudio/filament-hover-sidebar. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package filament-hover-sidebar

Filament Hover Sidebar

<img alt="Hover Sidebar for Filament — an icon rail that expands on hover, over your content, never pushing it." src="https://raw.githubusercontent.com/VitisStudio/filament-hover-sidebar/main/art/hero.jpg" style="width: 100%; max-width: 100%;">

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

An icon-only sidebar for Filament panels that expands on hover, flies out over the content instead of pushing it, and can be pinned open as a normal drawer.

Filament v5 already gives you the collapsed rail (sidebarCollapsibleOnDesktop()) and group flyout menus. What it has no API for is hover-to-expand, and its desktop sidebar is lg:sticky — in the flex flow — so expanding it reflows the page. This plugin adds the first and fixes the second.

What it looks like

Collapsed, the sidebar is an icon rail and the table gets the width:

The sidebar collapsed to an icon rail beside a full-width Filament table.

Hover it and the full navigation flies out over the table. Owner, Stage, Value and Close date sit at exactly the same pixels in both shots — the sidebar moved, the content did not. That is the whole contract. (The second shot is dark mode; the flyout inherits the panel background, so themes need no configuration.)

The expanded sidebar flying out over the same table, whose columns have not moved.

Requirements

Supported
Filament v5 only (^5.0) — see below
Laravel 11.28+, 12, 13
PHP 8.2, 8.3, 8.4

Verified against filament/filament v5.7.7 with Livewire v4 on Laravel 13 and PHP 8.4; CI covers every Laravel and PHP combination above at both --prefer-lowest and --prefer-stable.

On Filament v4. The package runs there unmodified — the whole API surface and every CSS hook it depends on exist in v4.12.7, and its sidebar stylesheet differs from v5's only in using a --topbar-height variable where v5 hardcodes 4rem. Support is still declared as ^5.0 deliberately: this plugin overrides core sidebar internals, so it carries real version risk, and promising two majors doubles the surface that has to be re-checked on every Filament release. If you need v4, widening the constraint locally is likely to work, but it is untested territory as far as this package is concerned.

How it works

The plugin owns a pinned flag (an Alpine $persist key — the user's actual preference) and treats core's $store.sidebar.isOpen as pure presentation, driving it from pinned || peeking.

That one flag is what makes this small. Core gates labels, badges, the logo, global search, group headers, item tooltips (via x-effect), aria-expanded, and whether a nav group renders as an inline list or a dropdown — all on isOpen. Flipping it makes the whole sidebar internally consistent for free, with no forked Blade view.

Ships as plain CSS and plain JS. No npm, no Tailwind build, no custom theme required.

Installation

Register the plugin on a panel:

sidebarCollapsibleOnDesktop() is applied by the plugin's register(), so you do not need it.

The CSS and JS are registered panel-agnostically and load everywhere, but nothing activates until a panel adds the plugin — the JS no-ops without its config object, and the CSS is gated on an fhs body class the plugin adds.

Configuration

Method Default Purpose
openDelay(int $ms) 90 How long the pointer must rest on the rail before it expands. Below ~60ms the rail twitches on every pointer transit across the viewport edge.
closeDelay(int $ms) 180 Grace period before a departing pointer collapses the rail.
pinnable(bool) true Renders the topbar pin toggle. Set false for hover-only.
pinnedByDefault(bool) false Initial value of the persisted pinned preference.
unpinnedIcon(...) phosphor-sidebar-simple-light Toggle icon while the sidebar is a rail — click to pin it open.
pinnedIcon(...) phosphor-sidebar-simple-fill Toggle icon while the sidebar is pinned — click to collapse it.

Both icons accept anything Filament's icon components take — a Blade Icons name, a BackedEnum, or an Htmlable. Pass null to restore the packaged default:

The defaults come from Phosphor via codeat3/blade-phosphor-icons, which the package requires — no Heroicon set ships a sidebar panel glyph. Override both if you would rather not render Phosphor at all.

The flyout inherits the panel's own background, so custom themes and dark mode are picked up with no configuration. Override only if you want the flyout to differ from the panel:

Translations for the pin button live in filament-hover-sidebar::hover-sidebar and can be published:

What you get

Gotchas worth knowing before you debug them

Try it without an app

The package ships a Testbench workbench — a throwaway Filament panel wired to the plugin, with no authentication, so /admin opens straight onto the dashboard.

That builds the workbench (sqlite, migrations, filament:assets) and serves it at http://127.0.0.1:8000/admin. composer build runs the build alone.

The panel is defined in workbench/app/Providers/AdminPanelProvider.php at a 4.5rem collapsed rail and 17rem open width, with filler navigation chosen to exercise the parts of the sidebar that are gated on isOpen: long and short labels, badges, a group without an icon (inline list, gated header) and two groups with icons (core's dropdown flyout). Two extra pages are there to test SPA navigation, which replaces the sidebar node and forces the JS to rebind.

The Settings page prints $store.fhs.pinned, $store.fhs.peeking, $store.sidebar.isOpen and the fhs-pinned body class live. The Reports page holds a wide table and prints .fi-main-ctn's left edge, which must not move while the sidebar is open.

Local development against a real app

filament:assets must be rerun after any edit to the two resources/dist files — Filament copies them into public/js and public/css.

Testing

The package suite covers the PHP surface: plugin defaults, fluent configuration, the sidebarCollapsibleOnDesktop() side effect, the render-hook payload and its scoping, panel isolation, and asset registration.

Note that the render-hook tests deliberately render each hook the way core renders it — BODY_START with a page class as its scope, TOPBAR_START with no scopes — rather than with the scope the plugin registered under. Asserting against the plugin's own scope is self-consistent and proves nothing.

The layout contract itself is browser-level, and a Pest v4 browser test in a host application is the only meaningful coverage:

Assert against the content box, not the sidebar's — the sidebar moving is the feature, the content staying put is the contract.

Relationship to other packages

Deliberately not part of vitisstudio/filament-custom-layout — that package is a record-page content contract (regions, presenters, descriptors); this one is panel chrome. No shared abstraction, disjoint install surface, and the CSS here overrides core internals so it carries the fragile half of the version risk.

Upstream references

Changelog

Please see CHANGELOG for what has changed recently.

Credits

License

The MIT License (MIT). Please see License File for more information.


All versions of filament-hover-sidebar with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
codeat3/blade-phosphor-icons Version ^2.4
filament/filament Version ^5.0
spatie/laravel-package-tools Version ^1.15.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package vitisstudio/filament-hover-sidebar contains the following files

Loading the files please wait ...