blemli/pwa-for-filament
Add progressive web app (PWA) support to your Filament admin panels. This package makes Filament panels installable on desktop and mobile via a web app manifest and service worker, so users can launch the admin from their home screen like a native app.
composer require the package and register the plugin on each panel you want it active for, in the panel provider (->plugin(OfflinePagePlugin::make())). No extra route or middleware wiring should be needed for the default case.colors(), font() and darkMode() calls — as of v0.1.2 the offline page is a direct projection of these; (2) the package config if it exposes route/path or cache settings; (3) the published Blade view if you need to change copy or markup.->colors(['primary' => ..., 'gray' => ...]) and ->font('Inter') on the panel, load a page, then toggle DevTools → Network → Offline and reload. The offline page should render with the same background, surface, text, ring and retry button color as the panel, in both light and dark mode, without writing any CSS.app and admin), you get per-panel offline pages for free after v0.1.2 — each derives from that panel's own theme rather than a shared hardcoded style.primary, gray and font once in the panel provider; resist adding a stylesheet for the offline view. This keeps the page correct when the theme changes later.->darkMode(false) → offline page must stay light regardless of OS preference.->darkMode('forced') (or boolean true if your Filament version uses that form) → offline page must stay dark.localStorage.theme, mirroring Filament's own bootstrap, and falls back to prefers-color-scheme when the key is absent.gray palette, do it as a full 50–950 scale. The offline page pulls background, surface, text and ring from it, so partial scales produce gaps or fall through to defaults in one mode only.location.reload()-style handler if the published view doesn't already do so; a reload while the network is still down will simply re-render the offline page, which is the expected UX.localStorage.theme set to the opposite of the OS preference.localStorage.theme specifically to stay in sync with Filament's bootstrap. If a custom theme-toggle script writes to a different key or sets data-theme attributes only, the offline page and the app will disagree on dark mode.gray, a custom palette that is low-contrast in the 700–900 range will make the retry button's ring or the body text nearly invisible in dark mode. Check both extremes of your palette, not just the mid tones.darkMode('forced') on one panel and default on another, screenshot tests and any shared layout assumptions may diverge; test each panel in isolation rather than assuming the app's default.How can I help you explore Laravel packages today?