Warenwirtschaft: einheitliches UI-Design (AP-19)

- Zentrale, wiederverwendbare Design-Partial wawi-ui.blade.php (gescoptes Inline-CSS, kein Build noetig)
- Bausteine: Seitenkopf, Kennzahlen-Kacheln, Karten, Toolbar/Suche, aufgeraeumte Tabellen, Status-Pills, Datenblatt-Definitionsliste, Name-Zelle mit fester Icon-Spalte, Leer-Zustaende
- Umgestellt: alle Uebersicht-/Listen- und Detailseiten unter admin/inventory
- Responsive: Detail-Datenblaetter brechen unter 768px gestapelt um (Label oben, Wert linksbuendig); Icon-Spalte verhindert Versatz bei Zeilenumbruch
- Entwicklungsplan um AP-19 + UI-Konvention ergaenzt

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Kevin Adametz 2026-06-03 13:09:55 +00:00
parent 3ee2d756e9
commit a8f6fef38e
21 changed files with 1609 additions and 955 deletions

View file

@ -1,118 +1,123 @@
@extends('layouts.layout-2')
@section('content')
@include('admin.inventory.partials.table-actions-style')
@include('admin.inventory.partials.wawi-ui')
<div class="card mb-4">
<h6 class="card-header d-flex justify-content-between align-items-center">
<span>{{ __('Umsatzsteuersätze') }}</span>
<a href="{{ route('admin.inventory.tax-rates.create') }}"
class="btn btn-sm btn-primary">{{ __('Neu anlegen') }}</a>
</h6>
<div class="card-datatable table-responsive">
<table class="table table-striped table-bordered wawi-table mb-0">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{ __('Name') }}</th>
<th>{{ __('Satz') }}</th>
<th>{{ __('Status') }}</th>
<th></th>
</tr>
</thead>
<tbody>
@forelse($taxRates as $taxRate)
<tr>
<td>
<a href="{{ route('admin.inventory.tax-rates.edit', $taxRate) }}"
class="btn icon-btn btn-sm btn-primary">
<span class="far fa-edit"></span>
</a>
</td>
<td>{{ $taxRate->name }}</td>
<td>{{ number_format($taxRate->percent, 2, ',', '.') }}&nbsp;%</td>
<td>
@if ($taxRate->active)
<span class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>
@else
<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>
@endif
</td>
<td>
<form action="{{ route('admin.inventory.tax-rates.destroy', $taxRate) }}" method="post"
class="d-inline" onsubmit="return confirm('{{ __('Really delete entry?') }}');">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-link text-danger p-0"
title="{{ __('Delete') }}"><i class="far fa-trash-alt"></i></button>
</form>
</td>
</tr>
@empty
<tr>
<td colspan="5" class="text-center text-muted">
{{ __('Noch keine Umsatzsteuersätze angelegt.') }}</td>
</tr>
@endforelse
</tbody>
</table>
<div class="wawi-page">
<div class="wawi-page-head">
<div>
<h1 class="wawi-page-head__title">{{ __('Einstellungen') }}</h1>
<p class="wawi-page-head__subtitle">{{ __('Umsatzsteuersätze und Lieferzeit-Vorlagen') }}</p>
</div>
</div>
</div>
<div class="card">
<h6 class="card-header d-flex justify-content-between align-items-center">
<span>{{ __('Lieferzeit-Vorlagen') }}</span>
<a href="{{ route('admin.inventory.delivery-times.create') }}"
class="btn btn-sm btn-primary">{{ __('Neu anlegen') }}</a>
</h6>
<div class="card-datatable table-responsive">
<table class="table table-striped table-bordered wawi-table mb-0">
<thead>
<tr>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{ __('Bezeichnung') }}</th>
<th>{{ __('Tage') }}</th>
<th>{{ __('Status') }}</th>
<th></th>
</tr>
</thead>
<tbody>
@forelse($deliveryTimes as $deliveryTime)
<div class="wawi-card">
<div class="wawi-card__header">
<span>{{ __('Umsatzsteuersätze') }}</span>
<a href="{{ route('admin.inventory.tax-rates.create') }}" class="btn btn-sm btn-primary">{{ __('Neu anlegen') }}</a>
</div>
<div class="table-responsive">
<table class="table wawi-table">
<thead>
<tr>
<td>
<a href="{{ route('admin.inventory.delivery-times.edit', $deliveryTime) }}"
class="btn icon-btn btn-sm btn-primary">
<span class="far fa-edit"></span>
</a>
</td>
<td>{{ $deliveryTime->label }}</td>
<td>{{ $deliveryTime->days !== null ? $deliveryTime->days : '' }}</td>
<td>
@if ($deliveryTime->active)
<span class="badge badge-pill badge-success"><i class="fa fa-check"></i></span>
@else
<span class="badge badge-pill badge-danger"><i class="fa fa-times"></i></span>
@endif
</td>
<td>
<form action="{{ route('admin.inventory.delivery-times.destroy', $deliveryTime) }}"
method="post" class="d-inline"
onsubmit="return confirm('{{ __('Really delete entry?') }}');">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-link text-danger p-0"
title="{{ __('Delete') }}"><i class="far fa-trash-alt"></i></button>
</form>
</td>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{ __('Name') }}</th>
<th>{{ __('Satz') }}</th>
<th>{{ __('Status') }}</th>
<th></th>
</tr>
@empty
</thead>
<tbody>
@forelse($taxRates as $taxRate)
<tr>
<td>
<a href="{{ route('admin.inventory.tax-rates.edit', $taxRate) }}"
class="btn icon-btn btn-sm btn-primary">
<span class="far fa-edit"></span>
</a>
</td>
<td>{{ $taxRate->name }}</td>
<td>{{ number_format($taxRate->percent, 2, ',', '.') }}&nbsp;%</td>
<td>
@if ($taxRate->active)
<span class="wawi-pill wawi-pill--ok">{{ __('Aktiv') }}</span>
@else
<span class="wawi-pill wawi-pill--danger">{{ __('Inaktiv') }}</span>
@endif
</td>
<td>
<form action="{{ route('admin.inventory.tax-rates.destroy', $taxRate) }}" method="post"
class="d-inline" onsubmit="return confirm('{{ __('Really delete entry?') }}');">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-link text-danger p-0"
title="{{ __('Delete') }}"><i class="far fa-trash-alt"></i></button>
</form>
</td>
</tr>
@empty
<tr>
<td colspan="5"><div class="wawi-empty">{{ __('Noch keine Umsatzsteuersätze angelegt.') }}</div></td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
<div class="wawi-card">
<div class="wawi-card__header">
<span>{{ __('Lieferzeit-Vorlagen') }}</span>
<a href="{{ route('admin.inventory.delivery-times.create') }}" class="btn btn-sm btn-primary">{{ __('Neu anlegen') }}</a>
</div>
<div class="table-responsive">
<table class="table wawi-table">
<thead>
<tr>
<td colspan="5" class="text-center text-muted">
{{ __('Noch keine Lieferzeit-Vorlagen angelegt.') }}</td>
<th style="max-width: 60px;">&nbsp;</th>
<th>{{ __('Bezeichnung') }}</th>
<th>{{ __('Tage') }}</th>
<th>{{ __('Status') }}</th>
<th></th>
</tr>
@endforelse
</tbody>
</table>
</thead>
<tbody>
@forelse($deliveryTimes as $deliveryTime)
<tr>
<td>
<a href="{{ route('admin.inventory.delivery-times.edit', $deliveryTime) }}"
class="btn icon-btn btn-sm btn-primary">
<span class="far fa-edit"></span>
</a>
</td>
<td>{{ $deliveryTime->label }}</td>
<td>{{ $deliveryTime->days !== null ? $deliveryTime->days : '' }}</td>
<td>
@if ($deliveryTime->active)
<span class="wawi-pill wawi-pill--ok">{{ __('Aktiv') }}</span>
@else
<span class="wawi-pill wawi-pill--danger">{{ __('Inaktiv') }}</span>
@endif
</td>
<td>
<form action="{{ route('admin.inventory.delivery-times.destroy', $deliveryTime) }}"
method="post" class="d-inline"
onsubmit="return confirm('{{ __('Really delete entry?') }}');">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-link text-danger p-0"
title="{{ __('Delete') }}"><i class="far fa-trash-alt"></i></button>
</form>
</td>
</tr>
@empty
<tr>
<td colspan="5"><div class="wawi-empty">{{ __('Noch keine Lieferzeit-Vorlagen angelegt.') }}</div></td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
@endsection