From 3ffb54503f6c920c754b76a956220f0ad63cb3c6 Mon Sep 17 00:00:00 2001 From: Boy132 Date: Tue, 10 Dec 2024 23:42:43 +0100 Subject: [PATCH] Custom error pages (#810) * add custom error pages * move icon in front of header text * show exception message if user is root admin * add missing page for very important error: 418 * Update resources/views/errors/layout.blade.php * Update resources/views/errors/layout.blade.php * add dark mode to error pages --------- Co-authored-by: Lance Pioch --- resources/views/errors/401.blade.php | 8 +++ resources/views/errors/403.blade.php | 8 +++ resources/views/errors/404.blade.php | 8 +++ resources/views/errors/418.blade.php | 8 +++ resources/views/errors/500.blade.php | 8 +++ resources/views/errors/503.blade.php | 8 +++ resources/views/errors/layout.blade.php | 82 +++++++++++++++++++++++++ 7 files changed, 130 insertions(+) create mode 100644 resources/views/errors/401.blade.php create mode 100644 resources/views/errors/403.blade.php create mode 100644 resources/views/errors/404.blade.php create mode 100644 resources/views/errors/418.blade.php create mode 100644 resources/views/errors/500.blade.php create mode 100644 resources/views/errors/503.blade.php create mode 100644 resources/views/errors/layout.blade.php diff --git a/resources/views/errors/401.blade.php b/resources/views/errors/401.blade.php new file mode 100644 index 000000000..a6f5e4edf --- /dev/null +++ b/resources/views/errors/401.blade.php @@ -0,0 +1,8 @@ +@props([ +'code' => '401', +'title' => 'Unauthorized', +'subtitle' => 'You are not authorized to access this resource.', +'icon' => 'tabler-exclamation-circle' +]) + +@extends('errors::layout') \ No newline at end of file diff --git a/resources/views/errors/403.blade.php b/resources/views/errors/403.blade.php new file mode 100644 index 000000000..ef832ee42 --- /dev/null +++ b/resources/views/errors/403.blade.php @@ -0,0 +1,8 @@ +@props([ +'code' => '403', +'title' => 'Forbidden', +'subtitle' => $exception->getMessage(), +'icon' => 'tabler-exclamation-circle' +]) + +@extends('errors::layout') \ No newline at end of file diff --git a/resources/views/errors/404.blade.php b/resources/views/errors/404.blade.php new file mode 100644 index 000000000..736e725d5 --- /dev/null +++ b/resources/views/errors/404.blade.php @@ -0,0 +1,8 @@ +@props([ +'code' => '404', +'title' => 'Not found', +'subtitle' => 'The requested resource was not found.', +'icon' => 'tabler-zoom-question' +]) + +@extends('errors::layout') \ No newline at end of file diff --git a/resources/views/errors/418.blade.php b/resources/views/errors/418.blade.php new file mode 100644 index 000000000..447e40a24 --- /dev/null +++ b/resources/views/errors/418.blade.php @@ -0,0 +1,8 @@ +@props([ +'code' => '418', +'title' => 'I am a teapot', +'subtitle' => 'What happened?', +'icon' => 'tabler-teapot' +]) + +@extends('errors::layout') \ No newline at end of file diff --git a/resources/views/errors/500.blade.php b/resources/views/errors/500.blade.php new file mode 100644 index 000000000..cbb68a08d --- /dev/null +++ b/resources/views/errors/500.blade.php @@ -0,0 +1,8 @@ +@props([ +'code' => '500', +'title' => 'Server Error', +'subtitle' => fn () => auth()->user()?->isRootAdmin() ? $exception->getMessage() : 'Something went wrong.', +'icon' => 'tabler-bug' +]) + +@extends('errors::layout') \ No newline at end of file diff --git a/resources/views/errors/503.blade.php b/resources/views/errors/503.blade.php new file mode 100644 index 000000000..52ac00e53 --- /dev/null +++ b/resources/views/errors/503.blade.php @@ -0,0 +1,8 @@ +@props([ +'code' => '503', +'title' => 'Maintenance', +'subtitle' => 'This site is currently down for maintenance.', +'icon' => 'tabler-traffic-cone' +]) + +@extends('errors::layout') \ No newline at end of file diff --git a/resources/views/errors/layout.blade.php b/resources/views/errors/layout.blade.php new file mode 100644 index 000000000..6e6048fbe --- /dev/null +++ b/resources/views/errors/layout.blade.php @@ -0,0 +1,82 @@ + + filament()->hasDarkModeForced(), + ])> + + + + + + + + + {{ $title }} - {{ config('app.name') }} + + + @filamentStyles + + {{ filament()->getTheme()->getHtml() }} + {{ filament()->getFontHtml() }} + + + + @if (! filament()->hasDarkMode()) + + @elseif (filament()->hasDarkModeForced()) + + @else + + @endif + + + +
+
+
+
+
+
+

+ @if(filled($icon)) + + @endif + + {{$code}} | {{ $title }} +

+ +

+ {{ $subtitle instanceof \Closure ? $subtitle() : $subtitle }} +

+
+
+
+
+
+
+ + +