awcodes/filament-sticky-header
Makes Filament panel page headers sticky on scroll, with an optional floating theme and colored variant. Install via Composer, add the plugin to your panel provider, and import the provided CSS into your theme. Supports Filament 2.x through 5.x depending on package version.
Architecture fit
StickyHeaderPlugin object. No models, migrations, routes, config publishing, or database footprint.position: sticky plus theme variants) backed by a small amount of JavaScript (intersection observation to prevent header bounce, re-initialization on Livewire wire:navigated SPA transitions).floating(), colored(), stickOnListPages(), disabledOn()), including Closure support for per-user or runtime-conditional behavior. This fits the Filament idiom cleanly and keeps decisions in version control rather than in a settings UI.Integration feasibility
@import '../../../../vendor/awcodes/filament-sticky-header/resources/css/plugin.css'). Panels using Filament's default compiled theme cannot consume it without first standing up a theme build.composer require awcodes/filament-sticky-header and StickyHeaderPlugin::make() in the panel's plugins() array.Technical risk
scroll-margin-top guidance, reduced-motion consideration, or mobile viewport handling (notably iOS dynamic viewport height).Key questions
wire:navigated re-initialization hold across our page types (resources, custom pages, relation managers)?stickOnListPages(false) be the default to avoid perceived scroll jank?disabledOn() exemptions?Stack fit
Migration path
^4.2), committed lockfile.@import to the theme CSS and rebuild; verify assets appear only in panel context (the v3.1.0/v4.1.0 fix scoped JS registration to panels — confirm this holds for our multi-panel setup).StickyHeaderPlugin::make() with no theme options first; smoke-test scrolling on a long resource edit page and a list page.floating()/colored() behind a preference or flag; validate against modals, notifications, and the topbar.stickOnListPages(false) and disabledOn([...]) exemptions based on QA findings.Compatibility
Sequencing relative to other work
Maintenance
Support
Scaling
stickOnListPages(false) is the safer posture for data-heavy panels.Failure modes
| Failure | Symptom | Detection | Mitigation |
|---|---|---|---|
| Filament DOM/CSS change | Header overlaps content or stops sticking | Visual QA post-upgrade | Pin Filament minor; regression checklist |
| Theme build purge/misorder | Plugin installed but no effect | Preview build diff | Verify compiled CSS contains plugin rules |
| Z-index conflict | Notifications/modals hidden or clipped behind header | Manual interaction test | disabledOn(); scoped CSS overrides |
| SPA navigation regression | Sticky lost after Livewire navigation | Navigate between resources | Confirm wire:navigated re-init; test SPA mode |
| Header bounce | Jitter at scroll threshold | Scroll pass on long pages | Already addressed upstream; re-verify per release |
| Accessibility occlusion | Focused field hidden under header | Keyboard-only walkthrough | Add scroll-margin-top in theme CSS |
| Abandonment | No fixes for a future Filament major | Watch release cadence | Pre-scoped in-house CSS fallback |
Ramp-up
How can I help you explore Laravel packages today?