khwr/filament-qt5-theme
A Filament PHP theme bringing a Qt5-inspired look to your admin panels, with styled components and a cohesive visual design for Laravel Filament applications.
composer require <vendor>/<qt5-theme> — the release notes don't name the package, so confirm the exact name from Packagist/the repo before writing it into your composer.json. It requires PHP ^8.2 and Filament ^4.0 | ^5.0, so check your panel's Filament constraint first (composer show filament/filament) — a v3 panel will not install.resources/ before touching your panel. The README should tell you whether the theme is registered as a Filament plugin (->plugin(Qt5ThemePlugin::make())) or as a Vite theme (->viteTheme('resources/css/filament/admin/theme.css')). Both are plausible for a CSS-heavy theme package; the presence of a Plugin class in src/ is the tell.npm run build — Filament will silently fall back to its default look if the compiled theme isn't registered.AdminPanelProvider) and check the login screen, the resource list table, and a create form — those three screens exercise buttons, inputs, selects, badges, tables, pagination, sections and the auth screens, i.e. most of the advertised surface area.Theme one panel, not all of them. Filament panels are independent; a common pattern is a Qt5-styled back-office panel while leaving a customer-facing panel on the stock theme. Register the theme only in the panel provider that needs it — this also makes it trivial to A/B the upgrade.
Treat dark mode as a first-class target. The package ships both variants, so verify your panel's ->darkMode() setting and your own custom CSS uses the same strategy (Filament v4 uses the .dark class). If you've layered brand colours on top, test them in both modes before rollout.
Layer your brand on top rather than editing the package. Prefer appending your own @layer rules / CSS variables in your theme file over publishing and editing the package's views. Published views become a fork you have to re-diff on every release — and v1.0.0 is the first release, so expect churn.
Publish views selectively, not wholesale. If a single component (say the topbar or the file-upload drop zone) needs a structural change, publish only that view via php artisan vendor:publish --tag=filament-views-style tags the package exposes, and record it in your upgrade checklist.
Auth screens come free. Because login/registration/password-reset/2FA are in scope, don't hand-roll auth views — point users at the panel's built-in auth pages and let the theme do the work. If you have Breeze/Jetstream alongside, keep the two visually separate on purpose.
Compose with other plugins cautiously. Third-party Filament plugins often ship their own views and Tailwind classes; check the ones you depend on (e.g. anything with custom modals, wizards, or charts) against the theme's component list — anything not listed is styled by Filament defaults and may look inconsistent next to themed chrome.
Pin the version in composer.json. For a 1.0.0 theme in a production panel, "^1.0" is fine, but lock it and read the changelog before bumping — visual packages don't follow semver guarantees the way libraries do.
npm run build ran after install, php artisan filament:assets (if applicable), php artisan view:clear, and browser cache. Tailwind's content scanning is the usual culprit — vendor view paths must be included (v4: @source directives; v3: content[] in tailwind.config.js), otherwise classes used only by the package's Blade get purged.!important in your theme file will collide with the next release. If you find yourself writing !important, that's a signal to publish the view instead.config/qt5-theme.php that doesn't exist.How can I help you explore Laravel packages today?