CI (.github/workflows/tests.yml) reuses docker-compose.test.yml verbatim for the Postgres job rather than re-describing that environment in YAML, so the Docker image stays the single source of truth for it. Fixes a real mismatch found while wiring PHP versions into the workflow: composer.json declared "php": "^8.3", but the locked Symfony packages require >=8.4.1 — installing on 8.3 would fail at `composer install`, exactly what the Dockerfile's own comment already warned about. Bumped the constraint and resynced composer.lock's content-hash (no package versions changed). The pre-commit hook (.githooks/pre-commit, activated via `git config core.hooksPath` in post-autoload-dump) runs `pint --dirty --test` and refuses to commit unformatted files rather than silently rewriting them. The accessibility pass only touches this app's own hand-written Blade views, not Filament's components: aria-hidden on icons that repeat adjacent text, an aria-label on the one icon that is the only signal of a health check's severity, rel="noopener" and a labelled announcement on preview links that open in a new tab. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
67 lines
2.7 KiB
PHP
67 lines
2.7 KiB
PHP
<x-filament-panels::page>
|
|
{{-- Current state, stated plainly. Whether the public site is down is the
|
|
one thing this page must never leave ambiguous.
|
|
|
|
The icons beside it are `aria-hidden`: what they say is already in
|
|
the text next to them, so a screen reader announcing "warning
|
|
triangle icon" would be noise repeating what it is about to read
|
|
anyway. --}}
|
|
@if ($this->isEnabled())
|
|
<div class="rounded-xl border border-danger-300 bg-danger-50 p-4 dark:border-danger-700/50 dark:bg-danger-500/10">
|
|
<div class="flex items-start gap-3">
|
|
<x-filament::icon
|
|
icon="heroicon-o-exclamation-triangle"
|
|
aria-hidden="true"
|
|
class="mt-0.5 h-5 w-5 shrink-0 text-danger-600 dark:text-danger-400"
|
|
/>
|
|
|
|
<div class="space-y-1">
|
|
<p class="font-semibold text-danger-800 dark:text-danger-300">
|
|
{{ __('maintenance.status_down') }}
|
|
</p>
|
|
|
|
<p class="text-sm text-danger-700 dark:text-danger-400">
|
|
@if ($this->startedAt())
|
|
{{ __('maintenance.since', ['time' => $this->startedAt()]) }}
|
|
@endif
|
|
|
|
@if ($this->endsAt())
|
|
· {{ __('maintenance.lifts_at', ['time' => $this->endsAt()]) }}
|
|
@endif
|
|
</p>
|
|
|
|
<p class="text-sm text-danger-700 dark:text-danger-400">
|
|
{{ __('maintenance.panel_unaffected') }}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@else
|
|
<div class="rounded-xl border border-success-300 bg-success-50 p-4 dark:border-success-700/50 dark:bg-success-500/10">
|
|
<div class="flex items-center gap-3">
|
|
<x-filament::icon
|
|
icon="heroicon-o-check-circle"
|
|
aria-hidden="true"
|
|
class="h-5 w-5 shrink-0 text-success-600 dark:text-success-400"
|
|
/>
|
|
|
|
<p class="font-semibold text-success-800 dark:text-success-300">
|
|
{{ __('maintenance.status_up') }}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
|
|
{{ $this->form }}
|
|
|
|
<div class="text-sm text-gray-500 dark:text-gray-400">
|
|
<p>{{ __('maintenance.bypass_hint') }}</p>
|
|
</div>
|
|
|
|
@unless ($this->canToggle())
|
|
<div class="rounded-lg border border-gray-200 p-4 text-sm text-gray-500 dark:border-white/10 dark:text-gray-400">
|
|
{{ __('maintenance.no_permission') }}
|
|
</div>
|
|
@endunless
|
|
</x-filament-panels::page>
|