Deploy Ladill QR Plus / deploy (push) Failing after 1s
Utility QR types only (URL, WiFi, link list, business, app download) with SSO, Billing API integration, public /q resolver, and qr-plus:import for platform migration. vCard and commerce types stay on the platform. Co-authored-by: Cursor <cursoragent@cursor.com>
74 lines
4.1 KiB
PHP
74 lines
4.1 KiB
PHP
<!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() }}">
|
|
@include('partials.favicon')
|
|
<title>{{ $title ?? 'Hosting Panel' }} - Ladill</title>
|
|
<link rel="preconnect" href="https://fonts.bunny.net">
|
|
<link href="https://fonts.bunny.net/css?family=figtree:400,500,600&display=swap" rel="stylesheet" />
|
|
@vite(['resources/css/app.css', 'resources/js/app.js'])
|
|
</head>
|
|
@php
|
|
$canViewAccountDetails = auth()->check() && auth()->user()->can('viewAccount', $account);
|
|
$exitUrl = $canViewAccountDetails
|
|
? route('hosting.accounts.show', $account)
|
|
: route('hosting.single-domain');
|
|
@endphp
|
|
<body class="bg-slate-100 font-sans antialiased" x-data="{ sidebarOpen: false }">
|
|
<div class="min-h-screen flex">
|
|
{{-- Mobile sidebar overlay --}}
|
|
<div x-show="sidebarOpen" x-cloak class="fixed inset-0 z-30 bg-black/50 lg:hidden" @click="sidebarOpen = false"></div>
|
|
|
|
{{-- Sidebar --}}
|
|
<aside class="fixed inset-y-0 left-0 z-40 w-64 transform transition-transform lg:translate-x-0 bg-white border-r border-slate-200"
|
|
:class="sidebarOpen ? 'translate-x-0' : '-translate-x-full'">
|
|
@include('hosting.panel.partials.sidebar')
|
|
</aside>
|
|
|
|
{{-- Main content --}}
|
|
<div class="flex-1 flex flex-col min-w-0 lg:pl-64">
|
|
{{-- Top bar --}}
|
|
<header class="sticky top-0 z-20 flex h-14 items-center gap-4 border-b border-slate-200 bg-white/95 backdrop-blur px-4 lg:px-6">
|
|
<button type="button" @click="sidebarOpen = true" class="lg:hidden -ml-2 p-2 text-slate-500 hover:text-slate-700">
|
|
<svg class="h-5 w-5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"/></svg>
|
|
</button>
|
|
<div class="flex-1">
|
|
<h1 class="text-sm font-semibold text-slate-800 truncate">{{ $header ?? 'Hosting Panel' }}</h1>
|
|
@unless ($canViewAccountDetails)
|
|
<p class="text-xs text-slate-500">Developer access</p>
|
|
@endunless
|
|
</div>
|
|
<a href="{{ $exitUrl }}" class="inline-flex items-center gap-1.5 rounded-lg border border-slate-200 bg-white px-3 py-1.5 text-xs font-medium text-slate-600 hover:bg-slate-50 transition">
|
|
<svg class="h-3.5 w-3.5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/></svg>
|
|
Exit Panel
|
|
</a>
|
|
</header>
|
|
|
|
{{-- Flash messages --}}
|
|
@include('partials.flash')
|
|
|
|
{{-- Expired Account Banner --}}
|
|
@if ($account->isExpired() && $account->isInGracePeriod())
|
|
<div class="mx-4 mt-4 lg:mx-6 lg:mt-6 rounded-lg border border-red-200 bg-red-50 px-4 py-3">
|
|
<div class="flex items-center gap-2.5">
|
|
<svg class="h-4.5 w-4.5 shrink-0 text-red-500" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z"/></svg>
|
|
<p class="text-sm text-red-800"><span class="font-semibold">Account expired.</span> Your site is offline. Files are preserved until {{ $account->gracePeriodEndsAt()->format('M d, Y') }}.
|
|
<a href="{{ route('hosting.accounts.show', $account) }}" class="underline font-medium hover:text-red-900">Renew now</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
|
|
{{-- Page content --}}
|
|
<main class="flex-1 p-4 lg:p-6">
|
|
{{ $slot }}
|
|
</main>
|
|
</div>
|
|
</div>
|
|
|
|
@stack('scripts')
|
|
</body>
|
|
</html>
|