From e4fa2b6964285a7f0340e6e90e60c54034a365a0 Mon Sep 17 00:00:00 2001
From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com>
Date: Thu, 6 Aug 2026 21:29:26 +0200
Subject: [PATCH] fix(ui): polish mobile layouts, error pages, and volume
backups
Keep error pages full-viewport, lift the unsaved bar above the
mobile keyboard, make status/heading layouts stack cleanly on small
screens, route service DB backups to volume-backups, and tighten
volume backup grid/forms. Cover with feature tests.
---
resources/css/app.css | 13 +++++++-
.../service-database/sidebar.blade.php | 6 ++--
.../views/components/status-summary.blade.php | 2 +-
.../views/components/unsaved-bar.blade.php | 25 +++++++++++++--
resources/views/errors/400.blade.php | 2 +-
resources/views/errors/401.blade.php | 2 +-
resources/views/errors/402.blade.php | 2 +-
resources/views/errors/403.blade.php | 2 +-
resources/views/errors/404.blade.php | 2 +-
resources/views/errors/419.blade.php | 2 +-
resources/views/errors/429.blade.php | 2 +-
resources/views/errors/500.blade.php | 2 +-
resources/views/errors/503.blade.php | 2 +-
.../project/application/general.blade.php | 4 +--
.../project/application/heading.blade.php | 15 ++-------
.../project/database/heading.blade.php | 13 ++------
.../project/service/heading.blade.php | 14 ++------
.../livewire/project/service/index.blade.php | 1 -
.../project/service/resource-card.blade.php | 32 ++++++++++---------
.../volume-backups/executions.blade.php | 8 ++---
.../volume-backups/retention.blade.php | 12 +++----
.../storages/volume-backups/s3.blade.php | 8 ++---
.../ApplicationInternalAccessSectionTest.php | 3 +-
tests/Feature/ErrorPagesRedesignTest.php | 1 +
.../PersistentStorageVolumesLayoutTest.php | 13 ++++++++
tests/Feature/PreviewStatusSummaryTest.php | 4 ++-
.../ResourceHeadingUnifiedNavbarTest.php | 21 ++++++++++++
tests/Feature/SentinelUnsavedBarFlashTest.php | 10 ++++++
...erviceComposeResourcesViewSwitcherTest.php | 5 ++-
.../ServiceDatabaseVerticalNavigationTest.php | 10 ++++++
tests/Feature/VolumeBackupTest.php | 17 ++++++++++
31 files changed, 172 insertions(+), 83 deletions(-)
diff --git a/resources/css/app.css b/resources/css/app.css
index 594e622e4..54150d1bb 100644
--- a/resources/css/app.css
+++ b/resources/css/app.css
@@ -1016,8 +1016,14 @@ html[data-theme="custom"] textarea:disabled {
}
/* Public error surfaces (401/404/500/…). Match auth shell canvas + accent. */
+.error-page-body {
+ width: 100vw;
+ height: 100dvh;
+ overflow: hidden;
+}
+
.error-shell {
- min-height: 100dvh;
+ height: 100%;
display: flex;
align-items: center;
justify-content: center;
@@ -2375,6 +2381,11 @@ input[type="search"]::-webkit-search-results-decoration {
grid-template-columns: 7.5rem minmax(9rem, 1fr) 8rem 6rem 5rem minmax(9rem, 1fr) minmax(9rem, auto);
}
+.volume-backup-executions-grid {
+ grid-template-columns: 7.5rem minmax(0, 1fr) 8.5rem 7rem 9rem minmax(9rem, 0.7fr);
+ min-width: 50rem;
+}
+
.clone-destinations-table-grid {
grid-template-columns: 2rem minmax(10rem, 1fr) minmax(10rem, 1fr);
}
diff --git a/resources/views/components/service-database/sidebar.blade.php b/resources/views/components/service-database/sidebar.blade.php
index 4a7813fec..610cbd949 100644
--- a/resources/views/components/service-database/sidebar.blade.php
+++ b/resources/views/components/service-database/sidebar.blade.php
@@ -5,6 +5,7 @@
])
@php
+ $serviceParameters = \Illuminate\Support\Arr::except($parameters, ['stack_service_uuid']);
$items = [
[
'label' => 'General',
@@ -20,7 +21,8 @@
],
[
'label' => 'Backups',
- 'route' => 'project.service.database.backups',
+ 'route' => 'project.service.volume-backups.index',
+ 'parameters' => $serviceParameters,
'icon' => 'storages',
'active' => request()->routeIs('project.service.database.backup*'),
'visible' => $serviceDatabase?->isBackupSolutionAvailable() || $serviceDatabase?->is_migrated,
@@ -54,7 +56,7 @@
'menu-item-active' => $item['active'],
])
@if ($item['navigate'] ?? true) {{ wireNavigate() }} @endif
- href="{{ route($item['route'], $parameters) }}">
+ href="{{ route($item['route'], $item['parameters'] ?? $parameters) }}">