+
{{ $headerActions }}
@endisset
-
isset($headerActions),
+ ])
style="-webkit-overflow-scrolling: touch;">
{{ $slot }}
diff --git a/resources/views/livewire/project/service/edit-compose.blade.php b/resources/views/livewire/project/service/edit-compose.blade.php
index 78400cb76e..47b3e732f2 100644
--- a/resources/views/livewire/project/service/edit-compose.blade.php
+++ b/resources/views/livewire/project/service/edit-compose.blade.php
@@ -25,7 +25,7 @@
+ class="flex flex-col items-stretch gap-2 rounded-lg border border-neutral-200 bg-neutral-50 p-1 sm:flex-row sm:flex-wrap sm:items-center dark:border-white/[0.08] dark:bg-white/[0.025]">
diff --git a/resources/views/livewire/project/service/stack-form.blade.php b/resources/views/livewire/project/service/stack-form.blade.php
index 423ea0aaf8..d42c2a575d 100644
--- a/resources/views/livewire/project/service/stack-form.blade.php
+++ b/resources/views/livewire/project/service/stack-form.blade.php
@@ -14,7 +14,7 @@
+ @compose-save-finished.window="saving = false" class="flex w-full items-center gap-2 overflow-x-auto sm:w-auto">
diff --git a/tests/Feature/ComposeEditorLayoutTest.php b/tests/Feature/ComposeEditorLayoutTest.php
index d8538e82d7..d3fe92e45d 100644
--- a/tests/Feature/ComposeEditorLayoutTest.php
+++ b/tests/Feature/ComposeEditorLayoutTest.php
@@ -48,6 +48,27 @@ it('renders the compose editor with clear guidance settings and actions', functi
->not->toContain('Show Deployable Compose');
});
+it('keeps the compose modal usable on mobile screens', function () {
+ $stackForm = file_get_contents(resource_path('views/livewire/project/service/stack-form.blade.php'));
+ $editor = file_get_contents(resource_path('views/livewire/project/service/edit-compose.blade.php'));
+ $modal = file_get_contents(resource_path('views/components/modal-input.blade.php'));
+
+ expect($modal)
+ ->toContain('justify-center p-2')
+ ->toContain('sm:p-4')
+ ->toContain('flex-wrap! sm:flex-nowrap!')
+ ->toContain('order-3 w-full sm:order-none sm:w-auto')
+ ->toContain('order-2 sm:order-none')
+ ->toContain("'mt-2 sm:mt-0' => isset(\$headerActions)");
+
+ expect($stackForm)
+ ->toContain('w-full items-center gap-2 overflow-x-auto sm:w-auto');
+
+ expect($editor)
+ ->toContain('flex-col items-stretch')
+ ->toContain('sm:flex-row sm:flex-wrap sm:items-center');
+});
+
it('keeps the save button loading until the parent compose save finishes', function () {
$component = file_get_contents(app_path('Livewire/Project/Service/StackForm.php'));