Add M3 error pages and the Markdown mail theme
tests / feature (8.5) (push) Successful in 1m8s
tests / browser (safari, webkit) (push) Has been cancelled
tests / browser (firefox, firefox) (push) Has been cancelled
tests / lint (push) Successful in 1m5s
tests / feature (8.4) (push) Successful in 1m11s
tests / browser (chrome, chromium) (push) Failing after 6m9s

Error pages for 401 to 503 in an error-view root appended to view.paths,
with an inline fallback when the Vite build is missing, and a mail theme
rendered from the application's scheme JSON, with opt-in header and
message components. Completes Phase 9.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9NnLxnPp8vaaurb3Z1MFy
This commit is contained in:
Andreas Reinhold / reini
2026-09-13 08:55:58 +02:00
co-authored by Claude Opus 5
parent ab692b66bb
commit 8f174520eb
29 changed files with 1595 additions and 2 deletions
@@ -0,0 +1,37 @@
<?php
namespace NoNameWeb\LivewireMaterial\Http\Controllers;
use Illuminate\Http\Response;
use Illuminate\Mail\Markdown;
use NoNameWeb\LivewireMaterial\LivewireMaterialServiceProvider;
/**
* Previews of the pages the showcase cannot draw inline: an error page, raised for real so the
* exception handler picks the view exactly as it would in the application (an app's own
* `resources/views/errors` included), and a sample Markdown mail in the package theme.
*/
class ShowcasePageController
{
public function error(string $code): never
{
abort((int) $code);
}
/**
* The sample mail, with the package's header and message after the application's own mail
* components — what an application gets with `livewire-material.mail.components` on.
*/
public function mail(): Response
{
$markdown = new Markdown(view(), [
'theme' => 'livewire-material::mail.theme',
'paths' => array_values(array_unique([
...(array) config('mail.markdown.paths', []),
LivewireMaterialServiceProvider::mailComponentPath(),
])),
]);
return response($markdown->render('livewire-material::showcase.mail')->toHtml());
}
}