Customizing the UI
Every user-facing surface the package ships — the provisioning "waiting room", the billing stub page, and all wizard/profile/notification wording — can be customized without forking: views are publishable, and every string flows through the packstub-tenancy:: translation namespace. Change wording with translation overrides; change markup or styling with published views. Prefer translations when wording is all you need — published views shadow future view fixes, translations don't.
Changing the wording (translations)
php artisan vendor:publish --tag=packstub-tenancy-translations
This copies the language files to lang/vendor/packstub-tenancy/en/:
| File | What it covers |
|---|---|
onboarding.php |
The "create your organization" wizard: titles, field labels, notifications |
profile.php |
The tenant profile page |
provisioning.php |
The waiting room: progress, slow-queue hint, failure state |
billing.php |
The billing stub page |
pool.php |
Database-pool widget strings (tenant counts) |
Edit any string and delete the ones you don't override — Laravel falls back to the package copy per key. For example, to call tenants "workspaces" on the onboarding wizard, override the relevant onboarding.php strings.
Adding a locale
Create a sibling directory named after the locale and translate the same files:
lang/vendor/packstub-tenancy/de/onboarding.php
lang/vendor/packstub-tenancy/de/provisioning.php
...
Any key you don't translate falls back to the package's English string.
Changing markup or styling (views)
php artisan vendor:publish --tag=packstub-tenancy-views
This copies the Blade views to resources/views/vendor/packstub-tenancy/:
| View | What it renders |
|---|---|
filament/pages/tenant-provisioning.blade.php |
The waiting room shown while a tenant provisions (and its failure state) |
filament/pages/tenant-provisioning-layout.blade.php |
The standalone layout around it — self-contained styles, no app Vite build required |
filament/pages/null-billing.blade.php |
The stub billing page |
To restyle the waiting room — your logo, brand colors, different copy layout — edit the published tenant-provisioning views. They are deliberately self-contained (inline styles, no dependency on your app's Vite/Tailwind build), because they render mid-signup when the tenant context may have no compiled assets; keep that property if you rework them.
Caveat: a published view shadows the package copy permanently. When an update changes the shipped views (see the CHANGELOG), re-publish with --force and re-apply your changes:
php artisan vendor:publish --tag=packstub-tenancy-views --force
Published views and the translation namespace are public API — view data and translation keys follow semver like config keys do.