diff --git a/resources/css/app.css b/resources/css/app.css index 24fd511489..acc9831ca9 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -2712,6 +2712,14 @@ input[type="search"]::-webkit-search-results-decoration { padding: 0; } +/* The well does not clip (floating panels must escape it), so a filled table + header row needs the well's inner top radius, or its corners poke out. */ +.application-settings-section-body.is-flush > :first-child, +.application-settings-section-body.is-flush > :first-child > :first-child { + border-top-left-radius: calc(0.5rem - 1px); + border-top-right-radius: calc(0.5rem - 1px); +} + /* Empty states inside cards keep the same inset as other card content. */ .application-settings-section-body:has(> .empty-state:only-child), .application-settings-section-body.is-flush:has(> .empty-state:only-child), @@ -2847,6 +2855,7 @@ input[type="search"]::-webkit-search-results-decoration { .dark .data-table-header { background: rgba(255, 255, 255, 0.02); + color: var(--color-fg-faint); } .data-table > .env-table-item { @@ -2868,7 +2877,6 @@ input[type="search"]::-webkit-search-results-decoration { .data-table-row:hover { background: rgba(0, 0, 0, 0.02); - color: var(--color-fg-faint); } .dark .data-table-row:hover { diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 07c8a79bf7..ed88a038f7 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -37,8 +37,8 @@ :class="{ 'z-[1000]': resourceActionsOpen }" class="app-topbar hidden lg:flex fixed top-0 inset-x-0 z-50 h-12 items-center bg-white/95 dark:bg-panel/95 backdrop-blur"> {{-- Brand (width tracks sidebar) --}} -
+
diff --git a/resources/views/livewire/project/service/configuration.blade.php b/resources/views/livewire/project/service/configuration.blade.php index a0dbc2bfb3..6b33ce5c45 100644 --- a/resources/views/livewire/project/service/configuration.blade.php +++ b/resources/views/livewire/project/service/configuration.blade.php @@ -30,55 +30,49 @@ localStorage.setItem('service-compose-resources-view', mode); } }"> -
-
-

Compose resources

-

- Applications and databases defined in this service. -

-
-
+ + Documentation + + +
+ @if ($applications->isNotEmpty() || $databases->isNotEmpty()) +
+
Resource
+
Image
+
Status
+
+
+ @endif + + @if ($applications->isEmpty() && $databases->isEmpty()) +
+ +
+ @endif + + @foreach ($applications as $application) + + @endforeach + @foreach ($databases as $database) + + @endforeach
-
- -
- @if ($applications->isNotEmpty() || $databases->isNotEmpty()) -
-
Resource
-
Image
-
Status
-
-
- @endif - - @if ($applications->isEmpty() && $databases->isEmpty()) -
- -
- @endif - - @foreach ($applications as $application) - - @endforeach - @foreach ($databases as $database) - - @endforeach -
+
@elseif ($currentRoute === 'project.service.analytics') @if ($server->isFunctional()) -
-
-

- Dynamic configurations -

-

- Manage additional proxy routes, middleware, and services loaded at runtime. -

-
+
diff --git a/tests/v4/Browser/ServiceConfigurationTest.php b/tests/v4/Browser/ServiceConfigurationTest.php index f6c55b994c..158a123255 100644 --- a/tests/v4/Browser/ServiceConfigurationTest.php +++ b/tests/v4/Browser/ServiceConfigurationTest.php @@ -258,7 +258,7 @@ it('keeps domain settings out of the overview and supports editing and removal', ->screenshot(filename: 'service-domain-removal-confirmation') ->click('button:has([x-text="step2ButtonText"]):visible') ->assertDontSee('https://long-public-domain-for-the-service.example.com') - ->assertSee('1 domain across 1 service') + ->assertSee('https://second.example.com') ->click('[aria-label="Settings for https://second.example.com"]') ->assertSee('www redirect') ->assertValue('#editingDomainParts-host', 'second.example.com')