Rebrand Hub+Flux
This commit is contained in:
parent
0a3e52d603
commit
9b47296cea
130 changed files with 9357 additions and 3345 deletions
|
|
@ -75,31 +75,35 @@ new #[Layout('components.layouts.app'), Title('Footer-Code anlegen')] class exte
|
|||
}
|
||||
}; ?>
|
||||
|
||||
<div class="space-y-6">
|
||||
<flux:card>
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<flux:heading size="xl">{{ __('Footer-Code anlegen') }}</flux:heading>
|
||||
<flux:subheading>
|
||||
{{ __('Snippet, das unter Pressemitteilungen ausgespielt wird.') }}
|
||||
</flux:subheading>
|
||||
<div class="space-y-8">
|
||||
{{-- ============== PAGE HEADER ============== --}}
|
||||
<header class="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">{{ __('Administration · Footer-Codes') }}</span>
|
||||
</div>
|
||||
<flux:button
|
||||
variant="ghost"
|
||||
icon="arrow-left"
|
||||
:href="route('admin.footer-codes.index')"
|
||||
wire:navigate
|
||||
>
|
||||
<h1 class="text-[30px] font-bold tracking-[-0.6px] leading-[1.15] m-0 text-[color:var(--color-ink)]">
|
||||
{{ __('Footer-Code anlegen') }}
|
||||
</h1>
|
||||
<p class="text-[13px] leading-[1.55] mt-2 m-0 max-w-[640px] text-[color:var(--color-ink-2)]">
|
||||
{{ __('Snippet, das unter Pressemitteilungen ausgespielt wird.') }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-2 flex-shrink-0">
|
||||
<flux:button variant="ghost" icon="arrow-left" :href="route('admin.footer-codes.index')" wire:navigate>
|
||||
{{ __('Zurück') }}
|
||||
</flux:button>
|
||||
</div>
|
||||
</flux:card>
|
||||
</header>
|
||||
|
||||
<form wire:submit="save" class="space-y-6">
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Stammdaten') }}</flux:heading>
|
||||
|
||||
<div class="mt-4 space-y-4">
|
||||
<article class="panel">
|
||||
<div class="panel-head">
|
||||
<span class="section-eyebrow">{{ __('Stammdaten') }}</span>
|
||||
</div>
|
||||
<div class="p-5 space-y-4">
|
||||
<flux:input
|
||||
wire:model="title"
|
||||
:label="__('Titel')"
|
||||
|
|
@ -115,7 +119,7 @@ new #[Layout('components.layouts.app'), Title('Footer-Code anlegen')] class exte
|
|||
|
||||
<div class="grid grid-cols-1 gap-4 md:grid-cols-3">
|
||||
<flux:select wire:model="portal" :label="__('Portal')">
|
||||
@foreach($portalOptions as $option)
|
||||
@foreach ($portalOptions as $option)
|
||||
<option value="{{ $option->value }}">{{ $option->label() }}</option>
|
||||
@endforeach
|
||||
</flux:select>
|
||||
|
|
@ -136,12 +140,13 @@ new #[Layout('components.layouts.app'), Title('Footer-Code anlegen')] class exte
|
|||
/>
|
||||
</div>
|
||||
</div>
|
||||
</flux:card>
|
||||
</article>
|
||||
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Sichtbarkeit') }}</flux:heading>
|
||||
|
||||
<div class="mt-4 space-y-4">
|
||||
<article class="panel">
|
||||
<div class="panel-head">
|
||||
<span class="section-eyebrow">{{ __('Sichtbarkeit') }}</span>
|
||||
</div>
|
||||
<div class="p-5 space-y-4">
|
||||
<flux:switch
|
||||
wire:model.live="isGlobal"
|
||||
:label="__('Global ausspielen')"
|
||||
|
|
@ -154,48 +159,48 @@ new #[Layout('components.layouts.app'), Title('Footer-Code anlegen')] class exte
|
|||
:description="__('Inaktive Codes werden niemals ausgespielt.')"
|
||||
/>
|
||||
</div>
|
||||
</flux:card>
|
||||
</article>
|
||||
|
||||
@if(! $isGlobal)
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Kategorie-Zuordnung') }}</flux:heading>
|
||||
<flux:subheading>
|
||||
{{ __('Nur Pressemitteilungen in diesen Kategorien zeigen den Footer-Code.') }}
|
||||
</flux:subheading>
|
||||
|
||||
<div class="mt-4 grid grid-cols-1 gap-2 md:grid-cols-2 lg:grid-cols-3">
|
||||
@forelse($categoryOptions as $option)
|
||||
<label class="flex items-center gap-2 rounded border border-zinc-200 px-3 py-2 dark:border-zinc-700">
|
||||
<input
|
||||
type="checkbox"
|
||||
wire:model="categoryIds"
|
||||
value="{{ $option['id'] }}"
|
||||
class="rounded border-zinc-300"
|
||||
/>
|
||||
<span class="text-sm">{{ $option['name'] }}</span>
|
||||
</label>
|
||||
@empty
|
||||
<flux:text class="text-zinc-500">
|
||||
{{ __('Keine Kategorien vorhanden.') }}
|
||||
</flux:text>
|
||||
@endforelse
|
||||
@if (! $isGlobal)
|
||||
<article class="panel">
|
||||
<div class="panel-head">
|
||||
<span class="section-eyebrow">{{ __('Kategorie-Zuordnung') }}</span>
|
||||
</div>
|
||||
</flux:card>
|
||||
<div class="p-5 space-y-4">
|
||||
<p class="text-[12.5px] text-[color:var(--color-ink-3)] m-0">
|
||||
{{ __('Nur Pressemitteilungen in diesen Kategorien zeigen den Footer-Code.') }}
|
||||
</p>
|
||||
|
||||
<div class="grid grid-cols-1 gap-2 md:grid-cols-2 lg:grid-cols-3">
|
||||
@forelse ($categoryOptions as $option)
|
||||
<label class="flex items-center gap-2 rounded-[5px] border border-[color:var(--color-bg-rule)] bg-[color:var(--color-bg-elev)] px-3 py-2 hover:border-[color:var(--color-hub)]/30 cursor-pointer">
|
||||
<input
|
||||
type="checkbox"
|
||||
wire:model="categoryIds"
|
||||
value="{{ $option['id'] }}"
|
||||
class="rounded border-[color:var(--color-bg-rule)]"
|
||||
/>
|
||||
<span class="text-[12.5px] text-[color:var(--color-ink)]">{{ $option['name'] }}</span>
|
||||
</label>
|
||||
@empty
|
||||
<p class="text-[12.5px] text-[color:var(--color-ink-3)] m-0">
|
||||
{{ __('Keine Kategorien vorhanden.') }}
|
||||
</p>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@endif
|
||||
|
||||
<flux:card>
|
||||
<div class="flex items-center justify-end gap-2">
|
||||
<flux:button
|
||||
variant="ghost"
|
||||
:href="route('admin.footer-codes.index')"
|
||||
wire:navigate
|
||||
>
|
||||
<article class="panel">
|
||||
<div class="p-5 flex items-center justify-end gap-2">
|
||||
<flux:button variant="ghost" :href="route('admin.footer-codes.index')" wire:navigate>
|
||||
{{ __('Abbrechen') }}
|
||||
</flux:button>
|
||||
<flux:button type="submit" variant="primary" icon="check">
|
||||
{{ __('Speichern') }}
|
||||
</flux:button>
|
||||
</div>
|
||||
</flux:card>
|
||||
</article>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -106,29 +106,42 @@ new #[Layout('components.layouts.app'), Title('Footer-Code bearbeiten')] class e
|
|||
}
|
||||
}; ?>
|
||||
|
||||
<div class="space-y-6">
|
||||
<flux:card>
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<flux:heading size="xl">{{ __('Footer-Code bearbeiten') }}</flux:heading>
|
||||
<flux:subheading>#{{ $id }} – {{ $title }}</flux:subheading>
|
||||
<div class="space-y-8">
|
||||
{{-- ============== PAGE HEADER ============== --}}
|
||||
<header class="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-wrap">
|
||||
<span class="badge hub dot">{{ __('Admin Backend') }}</span>
|
||||
<span class="eyebrow muted">{{ __('Administration · Footer-Codes') }}</span>
|
||||
<span class="badge hub">ID #{{ $id }}</span>
|
||||
@if ($isGlobal)
|
||||
<span class="badge hub dot">{{ __('Global') }}</span>
|
||||
@endif
|
||||
@if ($isActive)
|
||||
<span class="badge ok dot">{{ __('Aktiv') }}</span>
|
||||
@else
|
||||
<span class="badge dot">{{ __('Inaktiv') }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<flux:button
|
||||
variant="ghost"
|
||||
icon="arrow-left"
|
||||
:href="route('admin.footer-codes.index')"
|
||||
wire:navigate
|
||||
>
|
||||
<h1 class="text-[30px] font-bold tracking-[-0.6px] leading-[1.15] m-0 text-[color:var(--color-ink)] break-words">
|
||||
{{ __('Footer-Code bearbeiten') }}
|
||||
</h1>
|
||||
<p class="text-[13px] leading-[1.55] mt-2 m-0 max-w-[640px] text-[color:var(--color-ink-2)]">{{ $title }}</p>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-2 flex-shrink-0">
|
||||
<flux:button variant="ghost" icon="arrow-left" :href="route('admin.footer-codes.index')" wire:navigate>
|
||||
{{ __('Zurück') }}
|
||||
</flux:button>
|
||||
</div>
|
||||
</flux:card>
|
||||
</header>
|
||||
|
||||
<form wire:submit="save" class="space-y-6">
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Stammdaten') }}</flux:heading>
|
||||
|
||||
<div class="mt-4 space-y-4">
|
||||
<article class="panel">
|
||||
<div class="panel-head">
|
||||
<span class="section-eyebrow">{{ __('Stammdaten') }}</span>
|
||||
</div>
|
||||
<div class="p-5 space-y-4">
|
||||
<flux:input wire:model="title" :label="__('Titel')" />
|
||||
|
||||
<flux:textarea
|
||||
|
|
@ -139,7 +152,7 @@ new #[Layout('components.layouts.app'), Title('Footer-Code bearbeiten')] class e
|
|||
|
||||
<div class="grid grid-cols-1 gap-4 md:grid-cols-3">
|
||||
<flux:select wire:model="portal" :label="__('Portal')">
|
||||
@foreach($portalOptions as $option)
|
||||
@foreach ($portalOptions as $option)
|
||||
<option value="{{ $option->value }}">{{ $option->label() }}</option>
|
||||
@endforeach
|
||||
</flux:select>
|
||||
|
|
@ -159,12 +172,13 @@ new #[Layout('components.layouts.app'), Title('Footer-Code bearbeiten')] class e
|
|||
/>
|
||||
</div>
|
||||
</div>
|
||||
</flux:card>
|
||||
</article>
|
||||
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Sichtbarkeit') }}</flux:heading>
|
||||
|
||||
<div class="mt-4 space-y-4">
|
||||
<article class="panel">
|
||||
<div class="panel-head">
|
||||
<span class="section-eyebrow">{{ __('Sichtbarkeit') }}</span>
|
||||
</div>
|
||||
<div class="p-5 space-y-4">
|
||||
<flux:switch
|
||||
wire:model.live="isGlobal"
|
||||
:label="__('Global ausspielen')"
|
||||
|
|
@ -176,34 +190,38 @@ new #[Layout('components.layouts.app'), Title('Footer-Code bearbeiten')] class e
|
|||
:label="__('Aktiv')"
|
||||
/>
|
||||
</div>
|
||||
</flux:card>
|
||||
</article>
|
||||
|
||||
@if(! $isGlobal)
|
||||
<flux:card>
|
||||
<flux:heading size="lg">{{ __('Kategorie-Zuordnung') }}</flux:heading>
|
||||
|
||||
<div class="mt-4 grid grid-cols-1 gap-2 md:grid-cols-2 lg:grid-cols-3">
|
||||
@forelse($categoryOptions as $option)
|
||||
<label class="flex items-center gap-2 rounded border border-zinc-200 px-3 py-2 dark:border-zinc-700">
|
||||
@if (! $isGlobal)
|
||||
<article class="panel">
|
||||
<div class="panel-head">
|
||||
<span class="section-eyebrow">{{ __('Kategorie-Zuordnung') }}</span>
|
||||
</div>
|
||||
<div class="p-5 grid grid-cols-1 gap-2 md:grid-cols-2 lg:grid-cols-3">
|
||||
@forelse ($categoryOptions as $option)
|
||||
<label class="flex items-center gap-2 rounded-[5px] border border-[color:var(--color-bg-rule)] bg-[color:var(--color-bg-elev)] px-3 py-2 hover:border-[color:var(--color-hub)]/30 cursor-pointer">
|
||||
<input
|
||||
type="checkbox"
|
||||
wire:model="categoryIds"
|
||||
value="{{ $option['id'] }}"
|
||||
class="rounded border-zinc-300"
|
||||
class="rounded border-[color:var(--color-bg-rule)]"
|
||||
/>
|
||||
<span class="text-sm">{{ $option['name'] }}</span>
|
||||
<span class="text-[12.5px] text-[color:var(--color-ink)]">{{ $option['name'] }}</span>
|
||||
</label>
|
||||
@empty
|
||||
<flux:text class="text-zinc-500">
|
||||
<p class="text-[12.5px] text-[color:var(--color-ink-3)] m-0">
|
||||
{{ __('Keine Kategorien vorhanden.') }}
|
||||
</flux:text>
|
||||
</p>
|
||||
@endforelse
|
||||
</div>
|
||||
</flux:card>
|
||||
</article>
|
||||
@endif
|
||||
|
||||
<flux:card>
|
||||
<div class="flex items-center justify-between gap-2">
|
||||
<article class="panel" style="border-left:3px solid var(--color-err);">
|
||||
<div class="panel-head">
|
||||
<span class="section-eyebrow" style="color:var(--color-err);">{{ __('Danger Zone & Aktionen') }}</span>
|
||||
</div>
|
||||
<div class="p-5 flex items-center justify-between gap-2 flex-wrap">
|
||||
<flux:button
|
||||
type="button"
|
||||
variant="danger"
|
||||
|
|
@ -215,11 +233,7 @@ new #[Layout('components.layouts.app'), Title('Footer-Code bearbeiten')] class e
|
|||
</flux:button>
|
||||
|
||||
<div class="flex items-center gap-2">
|
||||
<flux:button
|
||||
variant="ghost"
|
||||
:href="route('admin.footer-codes.index')"
|
||||
wire:navigate
|
||||
>
|
||||
<flux:button variant="ghost" :href="route('admin.footer-codes.index')" wire:navigate>
|
||||
{{ __('Abbrechen') }}
|
||||
</flux:button>
|
||||
<flux:button type="submit" variant="primary" icon="check">
|
||||
|
|
@ -227,6 +241,6 @@ new #[Layout('components.layouts.app'), Title('Footer-Code bearbeiten')] class e
|
|||
</flux:button>
|
||||
</div>
|
||||
</div>
|
||||
</flux:card>
|
||||
</article>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -76,80 +76,77 @@ new #[Layout('components.layouts.app'), Title('Footer-Codes')] class extends Com
|
|||
}
|
||||
}; ?>
|
||||
|
||||
<div class="space-y-6">
|
||||
@if(session('success'))
|
||||
<flux:callout color="green" icon="check-circle">{{ session('success') }}</flux:callout>
|
||||
@endif
|
||||
@if(session('error'))
|
||||
<flux:callout color="red" icon="exclamation-triangle">{{ session('error') }}</flux:callout>
|
||||
@endif
|
||||
|
||||
<flux:card>
|
||||
<div class="flex flex-wrap items-center justify-between gap-3">
|
||||
<div>
|
||||
<flux:heading size="xl">{{ __('Footer-Codes') }}</flux:heading>
|
||||
<flux:subheading>
|
||||
{{ __('Snippets, die unter Pressemitteilungen ausgespielt werden.') }}
|
||||
</flux:subheading>
|
||||
<div class="space-y-8">
|
||||
{{-- ============== PAGE HEADER ============== --}}
|
||||
<header class="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">{{ __('Administration · Operations') }}</span>
|
||||
</div>
|
||||
<flux:button
|
||||
variant="primary"
|
||||
icon="plus"
|
||||
:href="route('admin.footer-codes.create')"
|
||||
wire:navigate
|
||||
>
|
||||
<h1 class="text-[30px] font-bold tracking-[-0.6px] leading-[1.15] m-0 text-[color:var(--color-ink)]">
|
||||
{{ __('Footer-Codes') }}
|
||||
</h1>
|
||||
<p class="text-[13px] leading-[1.55] mt-2 m-0 max-w-[640px] text-[color:var(--color-ink-2)]">
|
||||
{{ __('Snippets, die unter Pressemitteilungen ausgespielt werden.') }}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-2 flex-shrink-0">
|
||||
<flux:button variant="primary" icon="plus" :href="route('admin.footer-codes.create')" wire:navigate>
|
||||
{{ __('Footer-Code anlegen') }}
|
||||
</flux:button>
|
||||
</div>
|
||||
</flux:card>
|
||||
</header>
|
||||
|
||||
<div class="grid grid-cols-1 gap-4 sm:grid-cols-3">
|
||||
<flux:card>
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<flux:text class="text-sm text-zinc-500">{{ __('Gesamt') }}</flux:text>
|
||||
<flux:text size="xl" weight="bold">{{ $totals['total'] }}</flux:text>
|
||||
</div>
|
||||
<flux:icon.code-bracket-square class="size-8 text-blue-500" />
|
||||
</div>
|
||||
</flux:card>
|
||||
@if (session('success'))
|
||||
<div class="px-4 py-3 rounded-[5px] border text-[12.5px] flex items-center gap-2
|
||||
bg-[color:var(--color-ok-soft)] border-[color:var(--color-ok)]/30 text-[color:var(--color-gain-deep)]">
|
||||
<flux:icon.check-circle class="size-[16px] flex-shrink-0" />
|
||||
{{ session('success') }}
|
||||
</div>
|
||||
@endif
|
||||
@if (session('error'))
|
||||
<div class="px-4 py-3 rounded-[5px] border text-[12.5px] flex items-start gap-3
|
||||
bg-[color:var(--color-err-soft)] border-[color:var(--color-err)]/30 text-[color:var(--color-ink-2)]">
|
||||
<flux:icon.exclamation-triangle class="size-[16px] flex-shrink-0 mt-0.5 text-[color:var(--color-err)]" />
|
||||
<div class="flex-1">{{ session('error') }}</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<flux:card>
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<flux:text class="text-sm text-zinc-500">{{ __('Aktiv') }}</flux:text>
|
||||
<flux:text size="xl" weight="bold">{{ $totals['active'] }}</flux:text>
|
||||
</div>
|
||||
<flux:icon.bolt class="size-8 text-green-500" />
|
||||
</div>
|
||||
</flux:card>
|
||||
{{-- ============== KPI-Reihe ============== --}}
|
||||
<section class="grid grid-cols-1 gap-4 sm:grid-cols-3">
|
||||
<x-portal.stat-card variant="primary" :label="__('Gesamt')" :value="number_format($totals['total'])">
|
||||
<x-slot:meta>{{ __('Snippets') }}</x-slot:meta>
|
||||
<x-slot:trend>{{ __('alle Portale') }}</x-slot:trend>
|
||||
</x-portal.stat-card>
|
||||
<x-portal.stat-card variant="ok" :label="__('Aktiv')" :value="number_format($totals['active'])">
|
||||
<x-slot:meta>{{ __('live ausgespielt') }}</x-slot:meta>
|
||||
<x-slot:trend>{{ __('in PMs sichtbar') }}</x-slot:trend>
|
||||
</x-portal.stat-card>
|
||||
<x-portal.stat-card variant="muted" :label="__('Global')" :value="number_format($totals['global'])">
|
||||
<x-slot:meta>{{ __('portalübergreifend') }}</x-slot:meta>
|
||||
<x-slot:trend>{{ __('ohne Kategorie-Bindung') }}</x-slot:trend>
|
||||
</x-portal.stat-card>
|
||||
</section>
|
||||
|
||||
<flux:card>
|
||||
<div class="flex items-center justify-between">
|
||||
<div>
|
||||
<flux:text class="text-sm text-zinc-500">{{ __('Global') }}</flux:text>
|
||||
<flux:text size="xl" weight="bold">{{ $totals['global'] }}</flux:text>
|
||||
</div>
|
||||
<flux:icon.globe-alt class="size-8 text-purple-500" />
|
||||
</div>
|
||||
</flux:card>
|
||||
</div>
|
||||
|
||||
<flux:card>
|
||||
<div class="grid gap-3 md:grid-cols-[1fr,auto,auto]">
|
||||
{{-- ============== FILTER ============== --}}
|
||||
<article class="panel">
|
||||
<div class="panel-head">
|
||||
<span class="section-eyebrow">{{ __('Filter & Suche') }}</span>
|
||||
</div>
|
||||
<div class="p-5 grid gap-3 md:grid-cols-[1fr,auto,auto]">
|
||||
<flux:input
|
||||
wire:model.live.debounce.300ms="search"
|
||||
placeholder="{{ __('Titel oder Inhalt suchen…') }}"
|
||||
icon="magnifying-glass"
|
||||
/>
|
||||
|
||||
<flux:select wire:model.live="portalFilter">
|
||||
<option value="all">{{ __('Alle Portale') }}</option>
|
||||
@foreach($portalOptions as $option)
|
||||
@foreach ($portalOptions as $option)
|
||||
<option value="{{ $option->value }}">{{ $option->label() }}</option>
|
||||
@endforeach
|
||||
</flux:select>
|
||||
|
||||
<flux:select wire:model.live="statusFilter">
|
||||
<option value="all">{{ __('Alle Status') }}</option>
|
||||
<option value="active">{{ __('Aktiv') }}</option>
|
||||
|
|
@ -157,9 +154,16 @@ new #[Layout('components.layouts.app'), Title('Footer-Codes')] class extends Com
|
|||
<option value="global">{{ __('Global') }}</option>
|
||||
</flux:select>
|
||||
</div>
|
||||
</flux:card>
|
||||
</article>
|
||||
|
||||
<flux:card>
|
||||
{{-- ============== TABELLE ============== --}}
|
||||
<article class="panel overflow-hidden">
|
||||
<div class="panel-head">
|
||||
<span class="section-eyebrow">{{ __('Alle Footer-Codes') }}</span>
|
||||
<span class="text-[11.5px] text-[color:var(--color-ink-3)]">
|
||||
{{ __(':count Einträge', ['count' => $codes->total()]) }}
|
||||
</span>
|
||||
</div>
|
||||
<flux:table>
|
||||
<flux:table.columns>
|
||||
<flux:table.column>{{ __('Titel') }}</flux:table.column>
|
||||
|
|
@ -172,34 +176,40 @@ new #[Layout('components.layouts.app'), Title('Footer-Codes')] class extends Com
|
|||
</flux:table.columns>
|
||||
|
||||
<flux:table.rows>
|
||||
@forelse($codes as $code)
|
||||
@forelse ($codes as $code)
|
||||
<flux:table.row :key="'fc-'.$code->id">
|
||||
<flux:table.cell>
|
||||
<div class="flex items-center gap-2">
|
||||
@if($code->is_global)
|
||||
<flux:badge color="purple" size="xs" icon="globe-alt">{{ __('Global') }}</flux:badge>
|
||||
@if ($code->is_global)
|
||||
<span class="badge hub dot">{{ __('Global') }}</span>
|
||||
@endif
|
||||
<span class="font-medium">{{ $code->title }}</span>
|
||||
<span class="text-[13px] font-semibold text-[color:var(--color-ink)]">{{ $code->title }}</span>
|
||||
</div>
|
||||
</flux:table.cell>
|
||||
<flux:table.cell>
|
||||
<flux:badge color="zinc" size="sm">{{ $code->portal->label() }}</flux:badge>
|
||||
<span class="badge hub">{{ $code->portal->label() }}</span>
|
||||
</flux:table.cell>
|
||||
<flux:table.cell>
|
||||
{{ $code->language ? strtoupper($code->language) : '–' }}
|
||||
<span class="text-[12px] text-[color:var(--color-ink-2)] font-mono">
|
||||
{{ $code->language ? strtoupper($code->language) : '–' }}
|
||||
</span>
|
||||
</flux:table.cell>
|
||||
<flux:table.cell>
|
||||
@if($code->is_global)
|
||||
<span class="text-zinc-500">{{ __('alle') }}</span>
|
||||
@if ($code->is_global)
|
||||
<span class="text-[12px] text-[color:var(--color-ink-3)]">{{ __('alle') }}</span>
|
||||
@else
|
||||
{{ $code->categories_count }}
|
||||
<span class="text-[12.5px] text-[color:var(--color-ink)] tabular-nums">{{ $code->categories_count }}</span>
|
||||
@endif
|
||||
</flux:table.cell>
|
||||
<flux:table.cell>{{ $code->priority }}</flux:table.cell>
|
||||
<flux:table.cell>
|
||||
<flux:badge :color="$code->is_active ? 'green' : 'zinc'" size="sm">
|
||||
{{ $code->is_active ? __('Aktiv') : __('Inaktiv') }}
|
||||
</flux:badge>
|
||||
<span class="text-[12.5px] text-[color:var(--color-ink)] tabular-nums">{{ $code->priority }}</span>
|
||||
</flux:table.cell>
|
||||
<flux:table.cell>
|
||||
@if ($code->is_active)
|
||||
<span class="badge ok dot">{{ __('Aktiv') }}</span>
|
||||
@else
|
||||
<span class="badge dot">{{ __('Inaktiv') }}</span>
|
||||
@endif
|
||||
</flux:table.cell>
|
||||
<flux:table.cell align="end">
|
||||
<div class="flex items-center justify-end gap-1">
|
||||
|
|
@ -224,8 +234,14 @@ new #[Layout('components.layouts.app'), Title('Footer-Codes')] class extends Com
|
|||
@empty
|
||||
<flux:table.row>
|
||||
<flux:table.cell :colspan="7">
|
||||
<div class="py-8 text-center text-zinc-500">
|
||||
{{ __('Keine Footer-Codes gefunden.') }}
|
||||
<div class="flex flex-col items-center justify-center px-4 py-10 text-center">
|
||||
<div class="w-14 h-14 rounded-[6px] flex items-center justify-center mb-3
|
||||
bg-[color:var(--color-hub-soft)] border border-[color:var(--color-hub-soft-2)] text-[color:var(--color-hub)]">
|
||||
<flux:icon.code-bracket-square class="size-6" />
|
||||
</div>
|
||||
<div class="text-[14px] font-semibold text-[color:var(--color-ink)] mb-1">
|
||||
{{ __('Keine Footer-Codes gefunden.') }}
|
||||
</div>
|
||||
</div>
|
||||
</flux:table.cell>
|
||||
</flux:table.row>
|
||||
|
|
@ -233,8 +249,8 @@ new #[Layout('components.layouts.app'), Title('Footer-Codes')] class extends Com
|
|||
</flux:table.rows>
|
||||
</flux:table>
|
||||
|
||||
<div class="mt-4">
|
||||
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
|
||||
{{ $codes->links() }}
|
||||
</div>
|
||||
</flux:card>
|
||||
</article>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue