mirror of
https://github.com/tiennm99/coolify.git
synced 2026-10-19 06:15:00 +00:00
feat(ui): Shadow UI redesign, domain management, and DNS autoconfigure (#11119)
Co-authored-by: ShadowArcanist <162910371+ShadowArcanist@users.noreply.github.com>
This commit is contained in:
1 parent
0b843bb07c
commit
8ae56587d5
497 files changed
+44045
-22630
No files matched your search
@@ -2,56 +2,87 @@
|
||||
<x-slot:title>
|
||||
Proxy Dynamic Configuration | Coolify
|
||||
</x-slot>
|
||||
|
||||
<livewire:server.navbar :server="$server" />
|
||||
<div class="flex flex-col h-full gap-4 md:gap-8 md:flex-row">
|
||||
|
||||
<div
|
||||
class="server-settings-workspace application-settings-workspace mt-4 grid w-full max-w-[1180px] min-w-0 gap-8 lg:mt-0 xl:grid-cols-[210px_minmax(0,1fr)] xl:gap-10">
|
||||
<x-server.sidebar-proxy :server="$server" :parameters="$parameters" />
|
||||
@if ($server->isFunctional())
|
||||
<div class="w-full">
|
||||
<div class="flex gap-2">
|
||||
|
||||
<div class="application-settings-form flex w-full flex-col gap-6">
|
||||
@if ($server->isFunctional())
|
||||
<div class="flex flex-wrap items-start justify-between gap-3 px-1">
|
||||
<div>
|
||||
<div class="flex gap-2">
|
||||
<h2>Dynamic Configurations</h2>
|
||||
<x-forms.button wire:click="loadDynamicConfigurations">Reload</x-forms.button>
|
||||
@can('update', $server)
|
||||
<x-modal-input buttonTitle="+ Add" title="New Dynamic Configuration">
|
||||
<livewire:server.proxy.new-dynamic-configuration :server_id="$server->id" />
|
||||
</x-modal-input>
|
||||
@endcan
|
||||
</div>
|
||||
<div class='pb-4'>You can add dynamic proxy configurations here.</div>
|
||||
<h2 class="text-sm! font-medium text-neutral-950 dark:text-fg">
|
||||
Dynamic configurations
|
||||
</h2>
|
||||
<p class="mt-1 text-xs text-neutral-500 dark:text-fg-dim">
|
||||
Manage additional proxy routes, middleware, and services loaded at runtime.
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<x-forms.button wire:click="loadDynamicConfigurations">
|
||||
<x-reicon name="refresh" class="size-3.5" />
|
||||
Reload
|
||||
</x-forms.button>
|
||||
@can('update', $server)
|
||||
<x-modal-input buttonTitle="+ Add" title="New Dynamic Configuration">
|
||||
<livewire:server.proxy.new-dynamic-configuration :server_id="$server->id" />
|
||||
</x-modal-input>
|
||||
@endcan
|
||||
</div>
|
||||
</div>
|
||||
<div wire:loading wire:target="initLoadDynamicConfigurations">
|
||||
<x-loading text="Loading dynamic configurations..." />
|
||||
</div>
|
||||
<div x-init="$wire.initLoadDynamicConfigurations" class="flex flex-col gap-4">
|
||||
|
||||
<div x-init="$wire.initLoadDynamicConfigurations" class="contents">
|
||||
<div wire:loading wire:target="initLoadDynamicConfigurations"
|
||||
class="rounded-lg border border-neutral-200 p-6 dark:border-white/[0.08]">
|
||||
<x-loading text="Loading dynamic configurations…" />
|
||||
</div>
|
||||
|
||||
@if ($contents?->isNotEmpty())
|
||||
@foreach ($contents as $fileName => $value)
|
||||
<div class="flex flex-col gap-2 py-2">
|
||||
@if (str_replace('|', '.', $fileName) === 'coolify.yaml' ||
|
||||
str_replace('|', '.', $fileName) === 'Caddyfile' ||
|
||||
str_replace('|', '.', $fileName) === 'coolify.caddy' ||
|
||||
str_replace('|', '.', $fileName) === 'default_redirect_503.yaml' ||
|
||||
str_replace('|', '.', $fileName) === 'default_redirect_503.caddy')
|
||||
<div>
|
||||
<h3 class="dark:text-white">File: {{ str_replace('|', '.', $fileName) }}</h3>
|
||||
</div>
|
||||
<x-forms.textarea disabled name="proxy_settings"
|
||||
wire:model="contents.{{ $fileName }}" rows="5" />
|
||||
@else
|
||||
<livewire:server.proxy.dynamic-configuration-navbar :server_id="$server->id"
|
||||
:server="$server" :fileName="$fileName" :value="$value ?? ''" :newFile="false"
|
||||
wire:key="{{ $fileName }}-{{ $loop->index }}" />
|
||||
<x-forms.textarea disabled wire:model="contents.{{ $fileName }}"
|
||||
rows="10" />
|
||||
@endif
|
||||
</div>
|
||||
@php
|
||||
$displayName = str_replace('|', '.', $fileName);
|
||||
$isManagedConfiguration = in_array($displayName, [
|
||||
'coolify.yaml',
|
||||
'Caddyfile',
|
||||
'coolify.caddy',
|
||||
'default_redirect_503.yaml',
|
||||
'default_redirect_503.caddy',
|
||||
]);
|
||||
@endphp
|
||||
<x-application.settings-section :title="$displayName"
|
||||
wire:key="proxy-dynamic-configuration-{{ $fileName }}">
|
||||
<x-slot:actions>
|
||||
@if ($isManagedConfiguration)
|
||||
<x-status-badge status="Managed" type="neutral" />
|
||||
@else
|
||||
<livewire:server.proxy.dynamic-configuration-navbar
|
||||
:server_id="$server->id" :server="$server" :fileName="$fileName"
|
||||
:value="$value ?? ''" :newFile="false"
|
||||
wire:key="{{ $fileName }}-{{ $loop->index }}" />
|
||||
@endif
|
||||
</x-slot:actions>
|
||||
<x-forms.textarea disabled wire:model="contents.{{ $fileName }}"
|
||||
rows="8" />
|
||||
</x-application.settings-section>
|
||||
@endforeach
|
||||
@else
|
||||
<div wire:loading.remove> No dynamic configurations found.</div>
|
||||
<x-application.settings-section wire:loading.remove title="Dynamic configurations">
|
||||
<x-empty size="sm" title="No dynamic configurations"
|
||||
description="Add a configuration file to extend the proxy at runtime."
|
||||
icon-name="file-content" />
|
||||
</x-application.settings-section>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@else
|
||||
<x-application.settings-section title="Dynamic configurations"
|
||||
helper="Manage additional runtime proxy configuration.">
|
||||
<x-empty size="sm" title="Server validation required"
|
||||
description="Validate this server before loading proxy configuration."
|
||||
icon-name="file-content" />
|
||||
</x-application.settings-section>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Reference in new issue
Block a user