--- title: "Livewire Kit Pages & Routes" description: "Every page in the Livewire kit with its Livewire component, view, route, access rules and purpose, from sign-in and settings pages to tenants, users and setup." --- # Pages All page views are in `resources/views/pages`, and the component that renders a page is in `Modules//Livewire`: ```text Route::livewire('users', Modules\User\Livewire\Index::class) → view('pages.users.index') → resources/views/pages/users/index.blade.php ``` Routes are in each module's `routes/web.php` (and `routes/tenant.php` for tenant-only routes). For how layouts are picked, see [Layouts](/docs/livewire/layouts). ::: info Routes marked **central** exist only on the central domain (`APP_DOMAIN`, `central.only` middleware). The rest work on both the central domain and tenant domains, which is why their permission names list both variants (for example `View Users|View Tenant Users`). ::: ## Public and auth pages Fortify registers the auth routes, and `Modules/Auth/Providers/AuthServiceProvider.php` points them at these views. They're plain Blade views with `POST` forms, wrapped in ``. The invitation pages are Livewire components. | View | Rendered by | Route | Purpose | | --- | --- | --- | --- | | `pages/home.blade.php` | `Dashboard\Livewire\Home` | `GET /` (`home`) | Landing page on the central domain. Tenant domains redirect to `login`. Uses `layouts::base`. | | `pages/auth/login.blade.php` | Fortify | `GET /login` (`login`) | Email + password login, passkey login, links to reset/register when enabled for the domain | | `pages/auth/register.blade.php` | Fortify | `GET /register` (`register`) | Registration, when enabled for the domain | | `pages/auth/forgot-password.blade.php` | Fortify | `GET /forgot-password` (`password.request`) | Request a reset link | | `pages/auth/reset-password.blade.php` | Fortify | `GET /reset-password/{token}` (`password.reset`) | Set a new password | | `pages/auth/verify-email.blade.php` | Fortify | `GET /email/verify` (`verification.notice`) | Resend the verification email | | `pages/auth/confirm-password.blade.php` | Fortify | `GET /user/confirm-password` (`password.confirm`) | Re-enter password (or use a passkey) before sensitive pages | | `pages/auth/two-factor-challenge.blade.php` | Fortify | `GET /two-factor-challenge` (`two-factor.login`) | TOTP code or recovery code, switched with Alpine | | `pages/auth/accept-invitation.blade.php` | `Tenant\Livewire\AcceptInvitation` | `GET /invitation/accept` (`tenant.invitation.show`, tenant, guest, signed) | Invited tenant admin sets a password | | `pages/auth/accept-invitation.blade.php` | `User\Livewire\AcceptInvitation` | `GET /users/invitation/{user}` (`users.invitation.show`, guest, signed) | Invited user sets a password, then is signed in | | `pages/auth/maintenance.blade.php` | `EnsureTenantIsNotInMaintenance` | Any tenant route while in maintenance | Animated maintenance page with the custom message. Uses `layouts::base`. | | `pages/auth/suspended.blade.php` | `EnsureTenantIsNotSuspended` | Any tenant route while suspended | Suspended workspace notice with the custom message. Uses `layouts::base`. | ## App pages App pages render inside `layouts::app`, and you need to pass `auth` + `verified` to reach them. | View | Component | Route | Permission | Purpose | | --- | --- | --- | --- | --- | | `pages/dashboard.blade.php` | `Dashboard\Livewire\Dashboard` | `GET /dashboard` (`dashboard`) | `View Analytics Dashboard\|View Tenant Dashboard` | Dashboard placeholder grid | | `pages/users/index.blade.php` | `User\Livewire\Index` | `GET /users` (`users.index`) | `View Users\|View Tenant Users` | User list with search, stats, pagination, create/edit/delete, invitations, permission assignment | | `pages/roles/index.blade.php` | `RolePermission\Livewire\Index` | `GET /roles` (`roles.index`) | `View Roles\|View Tenant Roles` | Role list and create/edit/delete (system roles protected) | | `pages/notifications/index.blade.php` | `Notification\Livewire\Index` | `GET /notifications` (`notifications.index`) | None | All notifications with a filter, mark as read, delete and clear all. See [Notifications](/docs/core/notifications) | | `pages/tenants/index.blade.php` | `Tenant\Livewire\Index` | `GET /tenants` (`tenants.index`), central | `View Tenants` | Tenant list with search, status filter and stats | | `pages/tenants/create.blade.php` | `Tenant\Livewire\Create` | `GET /tenants/create` (`tenants.create`), central | `Create Tenant` | Create a tenant (company, subdomain, admin, profile data, status) | | `pages/tenants/show.blade.php` | `Tenant\Livewire\Show` | `GET /tenants/{tenant}` (`tenants.show`), central | `View Tenants` | Tenant detail: edit, domains, reset admin password, resend invitation, delete | | `pages/tenants/domains.blade.php` | `Tenant\Livewire\Domains` | `GET /tenants/domains` (`tenants.domains`), central | `View Tenants` | All domains: filters, search, add, set primary, delete, per-domain settings and auth features | ## Settings pages Settings views wrap their content in ``, which adds the Profile / Security / Appearance / Layout sub-navigation. Visiting `GET /settings` sends you to `/settings/profile`. | View | Component | Route | Purpose | | --- | --- | --- | --- | | `pages/settings/profile.blade.php` | `Settings\Livewire\Profile` | `GET /settings/profile` (`profile.edit`), `auth` only | Name, email, language ("Default" follows the domain), email verification notice, delete account | | `pages/settings/security.blade.php` | `Settings\Livewire\Security` | `GET /settings/security` (`security.edit`), requires password confirmation | Change password, two-factor authentication, passkeys | | `pages/settings/appearance.blade.php` | `Settings\Livewire\Appearance` | `GET /settings/appearance` (`appearance.edit`) | Light / dark / system, stored by Flux in the browser | | `pages/settings/layout.blade.php` | `Settings\Livewire\Layout` | `GET /settings/layout` (`layout.edit`) | Personal layout: app layout, sidebar variant, collapsible mode | ## Setup pages Setup pages use the plain app layout, but the sidebar shows the setup menu for as long as the URL starts with `/setup`. `GET /setup` redirects to `/setup/menus`. | View | Component | Route | Permission | Purpose | | --- | --- | --- | --- | --- | | `pages/setup/menus.blade.php` | `Menu\Livewire\Index` | `GET /setup/menus` (`setup.menus.index`) | `View Navigation Menus\|View Tenant Menus` | Drag and drop menu order (`wire:sort`), reset to defaults | | `pages/setup/layout.blade.php` | `Settings\Livewire\DefaultLayout` | `GET /setup/layout` (`setup.layout.index`) | `Update Layout Settings\|Update Tenant Layout` | Global default app and auth layout | | `pages/setup/tenant-settings.blade.php` | `Tenant\Livewire\TenantSettings` | `GET /setup/tenant-settings` (`setup.tenant-settings.edit`), central | `Manage Tenant Maintenance` | Global maintenance mode for tenant workspaces | ## Error pages | View | Purpose | | --- | --- | | `errors/403.blade.php`, `404`, `500`, `503` | Render `x-error-status`, inside `layouts::app` for signed-in users and `layouts::base` for guests | ## Partials Modals and pieces that belong to one area sit in a `partials/` folder next to its pages. Modals with their own state are Livewire components; the rest are Blade components used as `.partials. />`. | View | Rendered by | Used by | | --- | --- | --- | | `users/partials/user-form-modal.blade.php` | `` | Create/edit user, "Send invitation email" | | `users/partials/assign-permissions-modal.blade.php` | `` | Grouped permission checkboxes for one user | | `roles/partials/role-form-modal.blade.php` | `` | Create/edit role | | `tenants/partials/edit-tenant-modal.blade.php` | `` | Edit tenant details and status | | `tenants/partials/reset-password-modal.blade.php` | `` | Send a reset link or set the tenant admin password | | `tenants/partials/domain-form-modal.blade.php` | `` | Add a domain | | `tenants/partials/domain-settings-modal.blade.php` | `` | Per-domain App name and default language | | `tenants/partials/domain-auth-features-modal.blade.php` | `` | Per-domain registration / password reset / verification / 2FA / passkeys toggles | | `tenants/partials/domain-modals.blade.php` | `` | Domain delete dialog plus the three domain modals, on tenant detail and Domains | | `tenants/partials/delete-tenant-modal.blade.php` | `` | Delete tenant confirm dialog | | `tenants/partials/status-badge.blade.php`, `domain-type-badge`, `domain-actions`, `selects`, `detail-card`, `show-*` | Blade components | Tenant pages, see [Components → Area partials](/docs/livewire/components#area-partials) | | `settings/partials/option-cards.blade.php`, `layout-preview` | Blade components | Settings → Layout and Setup → Layout | | `notifications/partials/item.blade.php`, `icon`, `empty` | Blade components | Notifications page and the notification bell | The shared widgets that more than one page uses live in `resources/views/livewire` instead: `delete-account`, `passkeys`, `two-factor-setup-modal`, `two-factor-recovery-codes`, `language-switcher` and `notification-bell`. ::: tip Want to add your own page? Follow [Development → Adding a page](/docs/livewire/development#adding-a-page). :::