5.4: <x-portal.table-pagination> + 13 Wrapper ersetzt

Buendelt den 13-fach byte-identischen Paginierungs-Fuss (border-t + p-4 um
->links('components.portal.pagination')) in eine Component mit :paginator-
Prop. Erzeugt identisches HTML -> kein visuelles Risiko.

Ersetzt in: users, invoices/index, payments/index (4x: Bestandsschutz,
Subscriptions, Purchases, Invoices), contacts/index, legal-requests/index,
presets/index, companies/index, footer-codes/index, customer/invoices,
customer/press-releases/index.

Bewusst BARE gelassen (kein Wrapper im Original): press-releases/index,
categories/index, press-kits/index. Alle Views kompilieren, 251 Tests gruen.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-02 08:35:37 +00:00
parent 1c75e61179
commit 505852f29e
11 changed files with 25 additions and 39 deletions

View file

@ -0,0 +1,12 @@
@props([
/** Der Paginator (LengthAwarePaginator o. ä.), dessen Links gerendert werden */
'paginator',
])
{{--
Einheitlicher Paginierungs-Fuß unter Tabellen: abgesetzte Linie + Padding
um die Portal-Pagination. Ersetzt den mehrfach kopierten Wrapper.
--}}
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
{{ $paginator->links('components.portal.pagination') }}
</div>

View file

@ -543,8 +543,6 @@ new #[Layout('components.layouts.app'), Title('Firmen')] class extends Component
@endforelse
</flux:table.rows>
</flux:table>
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
{{ $companies->links('components.portal.pagination') }}
</div>
<x-portal.table-pagination :paginator="$companies" />
</article>
</div>

View file

@ -709,8 +709,6 @@ new #[Layout('components.layouts.app'), Title('Kontakte')] class extends Compone
</flux:table.rows>
</flux:table>
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
{{ $contacts->links('components.portal.pagination') }}
</div>
<x-portal.table-pagination :paginator="$contacts" />
</article>
</div>

View file

@ -241,8 +241,6 @@ new #[Layout('components.layouts.app'), Title('Footer-Codes')] class extends Com
</flux:table.rows>
</flux:table>
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
{{ $codes->links('components.portal.pagination') }}
</div>
<x-portal.table-pagination :paginator="$codes" />
</article>
</div>

View file

@ -323,8 +323,6 @@ new #[Layout('components.layouts.app'), Title('Legacy Rechnungen')] class extend
@endforelse
</flux:table>
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
{{ $invoices->links('components.portal.pagination') }}
</div>
<x-portal.table-pagination :paginator="$invoices" />
</article>
</div>

View file

@ -172,8 +172,6 @@ new #[Layout('components.layouts.app'), Title('Recht & Compliance')] class exten
</flux:table.rows>
</flux:table>
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
{{ $requests->links('components.portal.pagination') }}
</div>
<x-portal.table-pagination :paginator="$requests" />
</article>
</div>

View file

@ -336,9 +336,7 @@ new #[Layout('components.layouts.app'), Title('Zahlungen')] class extends Compon
@endforelse
</flux:table>
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
{{ $bestandsschutz->links('components.portal.pagination') }}
</div>
<x-portal.table-pagination :paginator="$bestandsschutz" />
</article>
{{-- ============== ABOS ============== --}}
@ -409,9 +407,7 @@ new #[Layout('components.layouts.app'), Title('Zahlungen')] class extends Compon
</flux:table.row>
@endforelse
</flux:table>
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
{{ $subscriptions->links('components.portal.pagination') }}
</div>
<x-portal.table-pagination :paginator="$subscriptions" />
</article>
{{-- ============== EINMALKÄUFE ============== --}}
@ -486,9 +482,7 @@ new #[Layout('components.layouts.app'), Title('Zahlungen')] class extends Compon
</flux:table.row>
@endforelse
</flux:table>
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
{{ $purchases->links('components.portal.pagination') }}
</div>
<x-portal.table-pagination :paginator="$purchases" />
</article>
{{-- ============== RECHNUNGEN (STR/MAN) ============== --}}
@ -564,8 +558,6 @@ new #[Layout('components.layouts.app'), Title('Zahlungen')] class extends Compon
</flux:table.row>
@endforelse
</flux:table>
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
{{ $invoices->links('components.portal.pagination') }}
</div>
<x-portal.table-pagination :paginator="$invoices" />
</article>
</div>

View file

@ -199,8 +199,6 @@ new #[Layout('components.layouts.app'), Title('Voreinstellungen')] class extends
@endforelse
</flux:table.rows>
</flux:table>
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
{{ $presets->links('components.portal.pagination') }}
</div>
<x-portal.table-pagination :paginator="$presets" />
</article>
</div>

View file

@ -570,9 +570,7 @@ new #[Layout('components.layouts.app'), Title('Benutzer')] class extends Compone
</flux:table.rows>
</flux:table>
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
{{ $users->links('components.portal.pagination') }}
</div>
<x-portal.table-pagination :paginator="$users" />
</article>
<flux:modal name="user-details" class="w-full max-w-5xl" scroll="body">

View file

@ -223,8 +223,6 @@ new #[Layout('components.layouts.app'), Title('Rechnungen')] class extends Compo
</flux:table.row>
@endforelse
</flux:table>
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
{{ $invoices->links('components.portal.pagination') }}
</div>
<x-portal.table-pagination :paginator="$invoices" />
</article>
</div>

View file

@ -538,9 +538,7 @@ new #[Layout('components.layouts.app'), Title('Meine Pressemitteilungen')] class
</flux:table.row>
@endforeach
</flux:table>
<div class="border-t border-[color:var(--color-bg-rule)] p-4">
{{ $pressReleases->links('components.portal.pagination') }}
</div>
<x-portal.table-pagination :paginator="$pressReleases" />
@elseif ($hasAnyPR && $search !== '')
{{-- Empty: Suche ohne Treffer --}}
<x-portal.empty-state