mirror of
https://github.com/vitodeploy/vito.git
synced 2025-07-07 08:52:35 +00:00
init
This commit is contained in:
57
resources/views/layouts/app.blade.php
Normal file
57
resources/views/layouts/app.blade.php
Normal file
@ -0,0 +1,57 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>
|
||||
@if(isset($pageTitle))
|
||||
{{ $pageTitle }} -
|
||||
@endif
|
||||
{{ config('app.name', 'Laravel') }}
|
||||
</title>
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.bunny.net">
|
||||
<link href="https://fonts.bunny.net/css?family=figtree:400,500,600&display=swap" rel="stylesheet" />
|
||||
|
||||
<!-- Scripts -->
|
||||
@vite(['resources/css/app.css', 'resources/js/app.js'])
|
||||
|
||||
@livewireStyles
|
||||
|
||||
<script src="{{ asset('static/libs/ace/ace.js') }}"></script>
|
||||
<script src="{{ asset('static/libs/ace/theme-github.js') }}"></script>
|
||||
<script src="{{ asset('static/libs/ace/theme-one-dark.js') }}"></script>
|
||||
<script src="{{ asset('static/libs/ace/mode-sh.js') }}"></script>
|
||||
</head>
|
||||
<body class="font-sans antialiased bg-gray-100 dark:bg-gray-900 dark:text-gray-300 min-h-screen">
|
||||
<div class="min-h-screen bg-gray-100 dark:bg-gray-900">
|
||||
@include('layouts.navigation')
|
||||
|
||||
<!-- Page Heading -->
|
||||
@if (isset($header))
|
||||
<header class="bg-white dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700">
|
||||
<div class="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8">
|
||||
{{ $header }}
|
||||
</div>
|
||||
</header>
|
||||
@endif
|
||||
|
||||
<!-- Page Content -->
|
||||
<main>
|
||||
{{ $slot }}
|
||||
</main>
|
||||
</div>
|
||||
<x-toast />
|
||||
@livewireScripts
|
||||
<script>
|
||||
document.addEventListener('livewire:load', () => {
|
||||
Livewire.onPageExpired((response, message) => {
|
||||
({href: window.location.href} = window.location);
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
30
resources/views/layouts/guest.blade.php
Normal file
30
resources/views/layouts/guest.blade.php
Normal file
@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>{{ config('app.name', 'Laravel') }}</title>
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.bunny.net">
|
||||
<link href="https://fonts.bunny.net/css?family=figtree:400,500,600&display=swap" rel="stylesheet" />
|
||||
|
||||
<!-- Scripts -->
|
||||
@vite(['resources/css/app.css', 'resources/js/app.js'])
|
||||
</head>
|
||||
<body class="font-sans text-gray-900 antialiased">
|
||||
<div class="min-h-screen flex flex-col sm:justify-center items-center pt-6 sm:pt-0 bg-gray-100 dark:bg-gray-900">
|
||||
<div>
|
||||
<a href="/">
|
||||
<x-application-logo class="w-20 h-20 fill-current text-gray-500 rounded-lg" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="w-full sm:max-w-md mt-6 px-6 py-4 bg-white dark:bg-gray-800 shadow-md overflow-hidden rounded-lg">
|
||||
{{ $slot }}
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
63
resources/views/layouts/navigation.blade.php
Normal file
63
resources/views/layouts/navigation.blade.php
Normal file
@ -0,0 +1,63 @@
|
||||
<nav x-data="{ open: false }" class="bg-white dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700">
|
||||
<!-- Primary Navigation Menu -->
|
||||
<div class="max-w-7xl mx-auto px-6">
|
||||
<div class="flex justify-between h-16">
|
||||
<div class="flex">
|
||||
<!-- Logo -->
|
||||
<div class="shrink-0 flex items-center">
|
||||
<x-application-logo class="block h-9 w-auto fill-current text-gray-800 dark:text-gray-200 rounded-lg" />
|
||||
</div>
|
||||
|
||||
<!-- Navigation Links -->
|
||||
<div class="hidden space-x-8 sm:-my-px sm:ml-10 sm:flex">
|
||||
<x-nav-link :href="route('servers')" :active="request()->routeIs('servers') || request()->is('servers/*')">
|
||||
<x-heroicon-o-server-stack class="w-6 h-6 mr-1" />
|
||||
{{ __('Servers') }}
|
||||
</x-nav-link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Settings Dropdown -->
|
||||
<livewire:user-dropdown />
|
||||
|
||||
<!-- Hamburger -->
|
||||
<div class="-mr-2 flex items-center sm:hidden">
|
||||
<button @click="open = ! open" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 dark:text-gray-500 hover:text-gray-500 dark:hover:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-900 focus:outline-none focus:bg-gray-100 dark:focus:bg-gray-900 focus:text-gray-500 dark:focus:text-gray-400 transition duration-150 ease-in-out">
|
||||
<svg class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 24 24">
|
||||
<path :class="{'hidden': open, 'inline-flex': ! open }" class="inline-flex" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
|
||||
<path :class="{'hidden': ! open, 'inline-flex': open }" class="hidden" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Responsive Navigation Menu -->
|
||||
<div :class="{'block': open, 'hidden': ! open}" class="hidden sm:hidden">
|
||||
<!-- Responsive Settings Options -->
|
||||
<div class="pt-4 pb-1 border-t border-gray-200 dark:border-gray-600">
|
||||
<div class="px-4">
|
||||
<div class="font-medium text-base text-gray-800 dark:text-gray-200">{{ Auth::user()->name }}</div>
|
||||
<div class="font-medium text-sm text-gray-500">{{ Auth::user()->email }}</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-3 space-y-1">
|
||||
<x-responsive-nav-link :href="route('profile')">
|
||||
{{ __('Profile') }}
|
||||
</x-responsive-nav-link>
|
||||
|
||||
<x-responsive-nav-link :href="route('profile')">
|
||||
{{ __('Settings') }}
|
||||
</x-responsive-nav-link>
|
||||
|
||||
<!-- Authentication -->
|
||||
<form method="POST" action="{{ route('logout') }}">
|
||||
@csrf
|
||||
<x-responsive-nav-link :href="route('logout')" onclick="event.preventDefault(); this.closest('form').submit();">
|
||||
{{ __('Log Out') }}
|
||||
</x-responsive-nav-link>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
34
resources/views/layouts/profile.blade.php
Normal file
34
resources/views/layouts/profile.blade.php
Normal file
@ -0,0 +1,34 @@
|
||||
<x-app-layout>
|
||||
@if(isset($pageTitle))
|
||||
<x-slot name="pageTitle">{{ $pageTitle }}</x-slot>
|
||||
@endif
|
||||
|
||||
<x-container class="flex">
|
||||
<div class="hidden lg:block lg:flex-none w-64">
|
||||
<x-sidebar-link :href="route('profile')" :active="request()->routeIs('profile')">
|
||||
<x-heroicon-o-user class="w-6 h-6 mr-1" />
|
||||
{{ __('Profile') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('server-providers')" :active="request()->routeIs('server-providers')">
|
||||
<x-heroicon-o-server-stack class="w-6 h-6 mr-1" />
|
||||
{{ __('Server Providers') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('source-controls')" :active="request()->routeIs('source-controls')">
|
||||
<x-heroicon-o-code-bracket class="w-6 h-6 mr-1" />
|
||||
{{ __('Source Controls') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('notification-channels')" :active="request()->routeIs('notification-channels')">
|
||||
<x-heroicon-o-bell class="w-6 h-6 mr-1" />
|
||||
{{ __('Notification Channels') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('ssh-keys')" :active="request()->routeIs('ssh-keys')">
|
||||
<x-heroicon-o-key class="w-6 h-6 mr-1" />
|
||||
{{ __('SSH Keys') }}
|
||||
</x-sidebar-link>
|
||||
</div>
|
||||
|
||||
<div class="w-full">
|
||||
{{ $slot }}
|
||||
</div>
|
||||
</x-container>
|
||||
</x-app-layout>
|
60
resources/views/layouts/server.blade.php
Normal file
60
resources/views/layouts/server.blade.php
Normal file
@ -0,0 +1,60 @@
|
||||
<x-app-layout>
|
||||
@if(isset($pageTitle))
|
||||
<x-slot name="pageTitle">{{ $pageTitle }} - {{ $server->name }}</x-slot>
|
||||
@endif
|
||||
|
||||
<x-container class="flex">
|
||||
@if(in_array($server->status, [\App\Enums\ServerStatus::READY, \App\Enums\ServerStatus::DISCONNECTED]))
|
||||
<div class="hidden lg:block lg:flex-none w-64">
|
||||
<x-sidebar-link :href="route('servers.show', ['server' => $server])" :active="request()->routeIs('servers.show')">
|
||||
<x-heroicon-o-home class="w-6 h-6 mr-1" />
|
||||
{{ __('Overview') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('servers.sites', ['server' => $server])" :active="request()->routeIs('servers.sites') || request()->is('servers/*/sites/*')">
|
||||
<x-heroicon-o-globe-alt class="w-6 h-6 mr-1" />
|
||||
{{ __('Sites') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('servers.databases', ['server' => $server])" :active="request()->routeIs('servers.databases')">
|
||||
<x-heroicon-o-circle-stack class="w-6 h-6 mr-1" />
|
||||
{{ __('Databases') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('servers.php', ['server' => $server])" :active="request()->routeIs('servers.php')">
|
||||
<x-heroicon-o-code-bracket class="w-6 h-6 mr-1" />
|
||||
{{ __('PHP') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('servers.firewall', ['server' => $server])" :active="request()->routeIs('servers.firewall')">
|
||||
<x-heroicon-o-fire class="w-6 h-6 mr-1" />
|
||||
{{ __('Firewall') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('servers.cronjobs', ['server' => $server])" :active="request()->routeIs('servers.cronjobs')">
|
||||
<x-heroicon-o-clock class="w-6 h-6 mr-1" />
|
||||
{{ __('Cronjobs') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('servers.ssh-keys', ['server' => $server])" :active="request()->routeIs('servers.ssh-keys')">
|
||||
<x-heroicon-o-key class="w-6 h-6 mr-1" />
|
||||
{{ __('SSH Keys') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('servers.services', ['server' => $server])" :active="request()->routeIs('servers.services')">
|
||||
<x-heroicon-o-cog class="w-6 h-6 mr-1" />
|
||||
{{ __('Services') }}
|
||||
</x-sidebar-link>
|
||||
{{--<x-sidebar-link :href="route('servers.daemons', ['server' => $server])" :active="request()->routeIs('servers.daemons')">--}}
|
||||
{{-- <x-heroicon-o-queue-list class="w-6 h-6 mr-1" />--}}
|
||||
{{-- {{ __('Daemons') }}--}}
|
||||
{{--</x-sidebar-link>--}}
|
||||
<x-sidebar-link :href="route('servers.settings', ['server' => $server])" :active="request()->routeIs('servers.settings')">
|
||||
<x-heroicon-o-cog-6-tooth class="w-6 h-6 mr-1" />
|
||||
{{ __('Settings') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('servers.logs', ['server' => $server])" :active="request()->routeIs('servers.logs')">
|
||||
<x-heroicon-o-square-3-stack-3d class="w-6 h-6 mr-1" />
|
||||
{{ __('Logs') }}
|
||||
</x-sidebar-link>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="w-full space-y-10">
|
||||
{{ $slot }}
|
||||
</div>
|
||||
</x-container>
|
||||
</x-app-layout>
|
44
resources/views/layouts/site.blade.php
Normal file
44
resources/views/layouts/site.blade.php
Normal file
@ -0,0 +1,44 @@
|
||||
<x-app-layout>
|
||||
@if(isset($pageTitle))
|
||||
<x-slot name="pageTitle">{{ $site->domain }} - {{ $pageTitle }}</x-slot>
|
||||
@endif
|
||||
|
||||
<x-container class="flex">
|
||||
@if($site->status == \App\Enums\SiteStatus::READY)
|
||||
<div class="hidden lg:block lg:flex-none w-64">
|
||||
<x-sidebar-link :href="route('servers.sites.show', ['server' => $site->server, 'site' => $site])" :active="request()->routeIs('servers.sites.show')">
|
||||
<x-heroicon-o-home class="w-6 h-6 mr-1" />
|
||||
{{ __('Overview') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('servers.sites.application', ['server' => $site->server, 'site' => $site])" :active="request()->routeIs('servers.sites.application')">
|
||||
<x-heroicon-o-window class="w-6 h-6 mr-1" />
|
||||
{{ __('Application') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('servers.sites.ssl', ['server' => $site->server, 'site' => $site])" :active="request()->routeIs('servers.sites.ssl')">
|
||||
<x-heroicon-o-lock-closed class="w-6 h-6 mr-1" />
|
||||
{{ __('SSL') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('servers.sites.queues', ['server' => $site->server, 'site' => $site])" :active="request()->routeIs('servers.sites.queues')">
|
||||
<x-heroicon-o-queue-list class="w-6 h-6 mr-1" />
|
||||
{{ __('Queues') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('servers.sites.settings', ['server' => $site->server, 'site' => $site])" :active="request()->routeIs('servers.sites.settings')">
|
||||
<x-heroicon-o-cog-6-tooth class="w-6 h-6 mr-1" />
|
||||
{{ __('Settings') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('servers.sites.logs', ['server' => $site->server, 'site' => $site])" :active="request()->routeIs('servers.sites.logs')">
|
||||
<x-heroicon-o-square-3-stack-3d class="w-6 h-6 mr-1" />
|
||||
{{ __('Logs') }}
|
||||
</x-sidebar-link>
|
||||
<x-sidebar-link :href="route('servers.sites', ['server' => $site->server])">
|
||||
<x-heroicon-o-arrow-left class="w-6 h-6 mr-1" />
|
||||
{{ __('Go Back') }}
|
||||
</x-sidebar-link>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="w-full space-y-10">
|
||||
{{ $slot }}
|
||||
</div>
|
||||
</x-container>
|
||||
</x-app-layout>
|
Reference in New Issue
Block a user