# 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)

```bash
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)

```bash
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](../CHANGELOG.md)), re-publish with `--force` and re-apply your changes:

```bash
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.
