@php use App\Support\Bytes; use Illuminate\Support\Number; $locale = app()->getLocale(); $money = fn (int $cents, string $currency) => Number::currency($cents / 100, in: $currency, locale: $locale); @endphp
{{-- Page head. The same pill the public site uses to label a section, so a customer meets one vocabulary on both sides of the login. --}}

{{ __('dashboard.sheet', ['when' => $asOf->local()->locale($locale)->isoFormat('LL, LT')]) }}

{{ $instance !== null ? __('dashboard.title_running') : __('dashboard.title_pending') }}

@if ($instance !== null) $instance->status === 'active', 'border-warning-border bg-warning-bg text-warning' => $instance->status !== 'active', ])> {{ __('dashboard.instance_status.'.$instance->status) }} @if ($domain) {{ __('dashboard.cloud.open') }} @endif @endif
{{-- Live provisioning progress (only while a run is in flight) --}} @if ($instance === null) {{-- Said plainly rather than papered over with an empty record: a page of dashes reads as broken, and "we are still setting it up" and "you have not ordered yet" are different things. --}}

{{ __('dashboard.no_instance_label') }}

{{ __('dashboard.no_instance_body') }}

{{ __('dashboard.no_instance_cta') }} {{ __('dashboard.nav.support') }}
@else {{-- ── The four cards, in the template's order and form ────────── Speicher · Benutzer · Datenvolumen · Verfügbarkeit. Figure, unit beside it, a line of context, the visual — ring, bar, sparkline. Every number below is measured; nothing is drawn at a level nobody read. --}}
@if ($disk) @elseif ($instance->quota_gb) @endif @if ($seats['total'])
{{-- R4: width is data, not decoration. --}}
@endif @if ($seatBreakdown !== [])

{{ collect($seatBreakdown) ->map(fn (int $n, string $role) => trans_choice('users.role_count.'.$role, $n, ['count' => $n])) ->join(' · ') }}

@endif
@if ($traffic) @php $state = $traffic->state(); @endphp @if (count($trend) > 2) {{-- Orange because this is the metric with an action attached: when it runs out, something can be done about it. Observed figures stay grey. --}} @endif @if ($state !== 'ok') {{ __('dashboard.traffic.buy') }} @endif @endif {{-- Availability, counted from our own monitoring answers. Absent rather than 100 % when nothing has been checked: reporting an unmonitored instance as perfect is the single most dishonest number this page could carry. --}} @if ($availability !== null) @if (count($availabilityTrend) > 2) @endif @elseif ($location) @endif
{{-- ── The proof register ────────────────────────────────────── --}}

{{ __('dashboard.proofs.label') }}

{{ __('dashboard.proofs.all') }}
@if ($proofs === [])

{{ __('dashboard.proofs.empty') }}

@else
@foreach ($proofs as $proof) @endforeach
{{ __('dashboard.proofs.item.'.$proof['key']) }} {{ $proof['at']?->local()->locale($locale)->isoFormat('DD.MM. HH:mm') ?? '—' }}@if ($proof['note']) · {{ $proof['note'] }}@endif $proof['state'] === 'ok', 'border-info-border bg-info-bg text-info' => $proof['state'] === 'planned', 'border-danger-border bg-danger-bg text-danger' => $proof['state'] === 'attention', ])> {{ __('dashboard.proofs.state.'.$proof['state']) }}
@endif
{{-- ── The contract ───────────────────────────────────────── --}}

{{ __('dashboard.master.label') }}

{{ __('dashboard.master.package') }}
{{ __('billing.plan.'.($instance->plan ?: 'team')) }} @if ($planPrice) {{ __('dashboard.master.per_'.($planPrice['term'] === 'yearly' ? 'year' : 'month'), ['amount' => $money($planPrice['cents'], $planPrice['currency'])]) }} @endif
@if ($contract?->performance)
{{ __('dashboard.master.operation') }}
{{ __('billing.perf.'.$contract->performance) }}
@endif @if ($domain)
{{ __('dashboard.master.address') }}
{{ $domain }}
@endif
@if ($nextInvoice)

{{ __('dashboard.invoice.label') }}

@if ($nextInvoice['addons'] > 0) {{-- Broken out only when there is something to break out: a "Module 0,00 €" line on every other customer's sheet is noise. --}}
{{ __('dashboard.invoice.plan') }}
{{ $money($nextInvoice['plan'], $nextInvoice['currency']) }}
{{ __('dashboard.invoice.addons') }}
{{ $money($nextInvoice['addons'], $nextInvoice['currency']) }}
@endif
{{ __('dashboard.invoice.amount') }}
{{ $money($nextInvoice['total'], $nextInvoice['currency']) }} {{ __('dashboard.invoice.net') }}
{{ __('dashboard.invoice.due') }}
{{ $nextInvoice['due']?->local()->locale($locale)->isoFormat('LL') ?? '—' }}
{{ __('dashboard.invoice.all') }}
@endif @if ($openTasks > 0) {{-- Only while there is something outstanding. A permanently green checklist is furniture; one with work left on it is a reason to open this page. --}} @endif
{{-- ── The three things customers come here to do ─────────────────── --}}
@foreach ([ ['users', 'users', 'add_user'], ['backups', 'rotate-ccw', 'restore'], ['billing', 'plus', 'grow'], ] as [$route, $icon, $key]) {{ __('dashboard.quick.'.$key.'_title') }} {{ __('dashboard.quick.'.$key.'_body') }} @endforeach
@endif