mirror of
https://github.com/tiennm99/coolify.git
synced 2026-10-14 02:15:51 +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,57 +2,117 @@
|
||||
<x-slot:title>
|
||||
Sources | Coolify
|
||||
</x-slot>
|
||||
<div class="flex items-center gap-2">
|
||||
<h1>Sources</h1>
|
||||
@can('createAnyResource')
|
||||
<x-modal-input buttonTitle="+ Add GitHub" title="New GitHub App" :closeOutside="false">
|
||||
<livewire:source.github.create />
|
||||
</x-modal-input>
|
||||
<x-modal-input buttonTitle="+ Add GitLab" title="New GitLab App" :closeOutside="false">
|
||||
<livewire:source.gitlab.create />
|
||||
</x-modal-input>
|
||||
@endcan
|
||||
</div>
|
||||
<div class="subtitle">Git sources for your applications.</div>
|
||||
<div class="grid gap-4 lg:grid-cols-2 -mt-1">
|
||||
@forelse ($sources as $source)
|
||||
@if ($source->getMorphClass() === 'App\Models\GithubApp')
|
||||
<a class="flex gap-2 text-center hover:no-underline coolbox group"
|
||||
{{ wireNavigate() }}
|
||||
href="{{ route('source.github.show', ['github_app_uuid' => data_get($source, 'uuid')]) }}">
|
||||
<div class="text-left dark:group-hover:text-white flex flex-col justify-center mx-6">
|
||||
<div class="box-title">
|
||||
<x-git-icon class="inline-block w-4 h-4 mr-1" git="App\Models\GithubApp" />
|
||||
{{ $source->name }}
|
||||
</div>
|
||||
@if ($source->isConnected())
|
||||
<span class="box-description text-success">Connected</span>
|
||||
@else
|
||||
<span class="box-description text-warning">Setup required</span>
|
||||
@endif
|
||||
</div>
|
||||
</a>
|
||||
@elseif ($source->getMorphClass() === 'App\Models\GitlabApp')
|
||||
<a class="flex gap-2 text-center hover:no-underline coolbox group"
|
||||
{{ wireNavigate() }}
|
||||
href="{{ route('source.gitlab.show', ['gitlab_app_uuid' => data_get($source, 'uuid')]) }}">
|
||||
<div class="text-left dark:group-hover:text-white flex flex-col justify-center mx-6">
|
||||
<div class="box-title">
|
||||
<x-git-icon class="inline-block w-4 h-4 mr-1" git="App\Models\GitlabApp" />
|
||||
{{ $source->name }}
|
||||
</div>
|
||||
@if ($source->isConnected())
|
||||
<span class="box-description text-success">Connected</span>
|
||||
@else
|
||||
<span class="box-description text-warning">Setup required</span>
|
||||
@endif
|
||||
</div>
|
||||
</a>
|
||||
@endif
|
||||
@empty
|
||||
<div>
|
||||
<div>No sources found.</div>
|
||||
|
||||
<div class="application-settings-form w-full">
|
||||
<header class="mb-5 flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between">
|
||||
<div class="min-w-0">
|
||||
<h1 class="truncate text-[24px]! leading-7! font-semibold! tracking-tight!">Sources</h1>
|
||||
<p class="mt-1 text-[13px] text-neutral-500 dark:text-fg-dim">
|
||||
{{ $sources->count() }} {{ Str::plural('Git source', $sources->count()) }} connected to your team
|
||||
</p>
|
||||
</div>
|
||||
@endforelse
|
||||
@can('createAnyResource')
|
||||
<div x-data="{ dropdownOpen: false }" class="relative w-fit shrink-0"
|
||||
@click.outside="dropdownOpen = false" @keydown.escape.window="dropdownOpen = false">
|
||||
<button type="button" @click="dropdownOpen = !dropdownOpen"
|
||||
class="button bg-coollabs/10! text-coollabs! ring-1 ring-coollabs/25 hover:bg-coollabs/15! dark:bg-warning/15! dark:text-warning! dark:ring-warning/25 dark:hover:bg-warning/20!"
|
||||
aria-haspopup="menu" :aria-expanded="dropdownOpen">
|
||||
<x-reicon name="plus" class="size-3.5" />
|
||||
New source
|
||||
<x-reicon name="chevron-down" class="size-3 opacity-55" />
|
||||
</button>
|
||||
|
||||
<div x-cloak x-show="dropdownOpen" x-transition.origin.top.right role="menu"
|
||||
class="listbox-panel left-auto! right-0! z-[90]! w-52! min-w-52!">
|
||||
<x-modal-input title="New GitHub App" :closeOutside="false">
|
||||
<x-slot:content>
|
||||
<button type="button" @click="dropdownOpen = false"
|
||||
class="listbox-option justify-start! gap-2.5!" role="menuitem">
|
||||
<x-git-icon class="size-3.5 shrink-0 opacity-70" git="App\Models\GithubApp" />
|
||||
GitHub App
|
||||
</button>
|
||||
</x-slot:content>
|
||||
<livewire:source.github.create />
|
||||
</x-modal-input>
|
||||
<x-modal-input title="New GitLab App" :closeOutside="false">
|
||||
<x-slot:content>
|
||||
<button type="button" @click="dropdownOpen = false"
|
||||
class="listbox-option justify-start! gap-2.5!" role="menuitem">
|
||||
<x-git-icon class="size-3.5 shrink-0 opacity-70" git="App\Models\GitlabApp" />
|
||||
GitLab App
|
||||
</button>
|
||||
</x-slot:content>
|
||||
<livewire:source.gitlab.create />
|
||||
</x-modal-input>
|
||||
</div>
|
||||
</div>
|
||||
@endcan
|
||||
</header>
|
||||
|
||||
@if ($sources->isEmpty())
|
||||
<x-empty title="No sources yet"
|
||||
description="Connect a Git provider to deploy applications directly from your repositories."
|
||||
icon-name="sources" />
|
||||
@else
|
||||
<div class="grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-4">
|
||||
@foreach ($sources as $source)
|
||||
@if ($source->getMorphClass() === 'App\Models\GithubApp')
|
||||
<a class="group flex min-h-28 flex-col rounded-xl border border-neutral-200 bg-white p-3 shadow-sm transition-all hover:-translate-y-px hover:border-neutral-300 hover:no-underline hover:shadow-md dark:border-white/[0.08] dark:bg-white/[0.025] dark:hover:border-white/[0.14]"
|
||||
{{ wireNavigate() }}
|
||||
href="{{ route('source.github.show', ['github_app_uuid' => data_get($source, 'uuid')]) }}">
|
||||
<div class="flex items-start gap-3">
|
||||
<div
|
||||
class="flex size-8 shrink-0 items-center justify-center rounded-lg border border-neutral-200 bg-neutral-50 text-neutral-500 dark:border-white/[0.08] dark:bg-white/[0.04] dark:text-fg-dim">
|
||||
<x-git-icon class="size-4" git="App\Models\GithubApp" />
|
||||
</div>
|
||||
<div class="min-w-0 flex-1">
|
||||
<h2 class="truncate text-[13px]! leading-4! font-semibold! text-black dark:text-fg">
|
||||
{{ $source->name }}
|
||||
</h2>
|
||||
<p class="mt-0.5 truncate text-[11px] text-neutral-500 dark:text-fg-faint">
|
||||
{{ $source->organization ? "GitHub · {$source->organization}" : 'GitHub' }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-auto pt-4">
|
||||
@if ($source->isConnected())
|
||||
<x-status-badge label="Connected" type="success" />
|
||||
@else
|
||||
<x-status-badge label="Setup incomplete" type="warning" />
|
||||
@endif
|
||||
</div>
|
||||
</a>
|
||||
@elseif ($source->getMorphClass() === 'App\Models\GitlabApp')
|
||||
<a class="group flex min-h-28 flex-col rounded-xl border border-neutral-200 bg-white p-3 shadow-sm transition-all hover:-translate-y-px hover:border-neutral-300 hover:no-underline hover:shadow-md dark:border-white/[0.08] dark:bg-white/[0.025] dark:hover:border-white/[0.14]"
|
||||
{{ wireNavigate() }}
|
||||
href="{{ route('source.gitlab.show', ['gitlab_app_uuid' => data_get($source, 'uuid')]) }}">
|
||||
<div class="flex items-start gap-3">
|
||||
<div
|
||||
class="flex size-8 shrink-0 items-center justify-center rounded-lg border border-neutral-200 bg-neutral-50 text-neutral-500 dark:border-white/[0.08] dark:bg-white/[0.04] dark:text-fg-dim">
|
||||
<x-git-icon class="size-4" git="App\Models\GitlabApp" />
|
||||
</div>
|
||||
<div class="min-w-0 flex-1">
|
||||
<h2 class="truncate text-[13px]! leading-4! font-semibold! text-black dark:text-fg">
|
||||
{{ $source->name }}
|
||||
</h2>
|
||||
<p class="mt-0.5 truncate text-[11px] text-neutral-500 dark:text-fg-faint">
|
||||
{{ $source->group_name ? "GitLab · {$source->group_name}" : 'GitLab' }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-auto pt-4">
|
||||
@if ($source->isConnected())
|
||||
<x-status-badge label="Connected" type="success" />
|
||||
@else
|
||||
<x-status-badge label="Setup required" type="warning" />
|
||||
@endif
|
||||
</div>
|
||||
</a>
|
||||
@endif
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</x-layout>
|
||||
Reference in new issue
Block a user