Rebrand Hub+Flux
Some checks are pending
linter / quality (push) Waiting to run
tests / ci (push) Waiting to run

This commit is contained in:
Kevin Adametz 2026-05-20 15:44:15 +02:00
parent 0a3e52d603
commit 9b47296cea
130 changed files with 9357 additions and 3345 deletions

View file

@ -15,6 +15,25 @@
<link rel="stylesheet" href="{{ asset('vendor/livewire/livewire.css') }}">
@fluxAppearance
{{-- Phase 5 Anti-Flash-Bridge: siehe partials/head.blade.php. Identische
Cookie-Logik, damit Controller+Blade Admin-Pages denselben Mechanismus
bekommen wie Volt-Pages. --}}
<script>
(function () {
if (typeof window.Flux === 'undefined') return;
const writeCookie = () => {
const applied = document.documentElement.classList.contains('dark') ? 'dark' : 'light';
document.cookie = 'flux_appearance=' + applied + '; path=/; max-age=31536000; SameSite=Lax';
};
const original = window.Flux.applyAppearance;
window.Flux.applyAppearance = function (appearance) {
original.call(this, appearance);
writeCookie();
};
writeCookie();
})();
</script>
<!-- Debug: Asset-Status -->
<script>
console.log('Admin Head geladen');

View file

@ -20,3 +20,25 @@
Für x-data im Portal greift Alpine aus @fluxScripts. --}}
@vite(['resources/css/portal.css'], 'build/portal')
@fluxAppearance
{{-- Phase 5 Anti-Flash-Bridge: FluxUI speichert die Erscheinung nur in
LocalStorage. Bei wire:navigate morpht Livewire das DOM und das neue
HTML kommt vom Server OHNE class="dark" kurzer weißer Flash, bis das
JS die Klasse wieder anhängt. Wir spiegeln den effektiv applizierten
Modus in ein Cookie, das der Server beim nächsten Render liest und
class="dark" direkt im <html>-Tag setzt (siehe Layout-Files). --}}
<script>
(function () {
if (typeof window.Flux === 'undefined') return;
const writeCookie = () => {
const applied = document.documentElement.classList.contains('dark') ? 'dark' : 'light';
document.cookie = 'flux_appearance=' + applied + '; path=/; max-age=31536000; SameSite=Lax';
};
const original = window.Flux.applyAppearance;
window.Flux.applyAppearance = function (appearance) {
original.call(this, appearance);
writeCookie();
};
writeCookie();
})();
</script>

View file

@ -1,5 +1,15 @@
<div class="relative mb-6 w-full">
<flux:heading size="xl" level="1">{{ __('Settings') }}</flux:heading>
<flux:subheading size="lg" class="mb-6">{{ __('Manage your profile and account settings') }}</flux:subheading>
<flux:separator variant="subtle" />
</div>
{{-- Hub-style settings page header (used by all /settings/* pages) --}}
<header class="mb-8 grid items-end gap-8" style="grid-template-columns:1fr auto;">
<div class="min-w-0">
<div class="flex items-center gap-3 mb-3 flex-nowrap whitespace-nowrap">
<span class="badge hub dot">{{ __('Admin Backend') }}</span>
<span class="eyebrow muted">{{ __('Mein Konto · Einstellungen') }}</span>
</div>
<h1 class="text-[30px] font-bold tracking-[-0.6px] leading-[1.15] m-0 text-[color:var(--color-ink)]">
{{ __('Settings') }}
</h1>
<p class="text-[13px] leading-[1.55] mt-2 m-0 max-w-[640px] text-[color:var(--color-ink-2)]">
{{ __('Manage your profile and account settings') }}
</p>
</div>
</header>