Improve overall CMS styling: refined design tokens, improved card/button/input components, circular avatars on me page

This commit is contained in:
root
2026-06-26 19:38:06 +02:00
parent 0ac3a5ea21
commit 5bd7b2333f
18 changed files with 300 additions and 513 deletions
@@ -1,21 +1,23 @@
@props(['icon' => '', 'classes' => ''])
<div class="w-full flex flex-col gap-y-4 rounded overflow-hidden pb-3 shadow-sm {{ $classes }}" style="background-color: var(--color-surface); color: var(--color-text);">
<div class="flex gap-x-2 border-b p-3" style="border-color: color-mix(in srgb, var(--color-primary) 30%, transparent)">
<div class="w-full flex flex-col gap-y-4 rounded-xl overflow-hidden pb-4 shadow-sm border {{ $classes }}"
style="background-color: var(--color-surface); color: var(--color-text); border-color: color-mix(in srgb, var(--color-text-muted) 15%, transparent);">
<div class="flex gap-x-2.5 p-3.5 rounded-t-xl"
style="background-color: color-mix(in srgb, var(--color-primary) 8%, var(--color-surface)); border-bottom: 1px solid color-mix(in srgb, var(--color-primary) 20%, transparent);">
@if (empty($icon) === false)
<div class="max-w-[50px] max-h-[50px] min-w-[50px] min-h-[50px] rounded-full relative flex items-center justify-center {{ $icon }}"></div>
<div class="w-[50px] h-[50px] min-w-[50px] rounded-full flex items-center justify-center {{ $icon }} shadow-sm"></div>
@endif
<div class="flex flex-col justify-center text-sm">
<p class="font-semibold" style="color: var(--color-text)">{{ $title }}</p>
@if(isset($underTitle))
<p style="color: var(--color-text-muted)">{{ $underTitle }}</p>
<p class="text-xs mt-0.5" style="color: var(--color-text-muted)">{{ $underTitle }}</p>
@endif
</div>
</div>
<section class="h-full flex flex-col px-3" style="color: var(--color-text)">
<section class="h-full flex flex-col px-4" style="color: var(--color-text)">
{{ $slot }}
</section>
</div>
@@ -1,7 +1,9 @@
@props(['classes' => '', 'type' => 'submit'])
<button type="{{ $type }}"
class="w-full rounded bg-[var(--button-danger-color)]! hover:bg-[var(--button-danger-hover-color)]! text-[var(--button-danger-text-color)]! border-2 border-[var(--button-danger-border-color)]! transition! ease-in-out! duration-150! font-semibold px-6! py-2! {{ $classes }}"
style="border-radius: var(--border-radius)">
class="w-full bg-[var(--button-danger-color)]! hover:bg-[var(--button-danger-hover-color)]! text-[var(--button-danger-text-color)]! border-2 border-[var(--button-danger-border-color)]! transition-all! ease-in-out! duration-200! font-semibold px-6! py-2.5! {{ $classes }}"
style="border-radius: var(--border-radius); box-shadow: var(--shadow-btn);"
onmouseover="this.style.boxShadow='var(--shadow-btn-hover)'; this.style.transform='translateY(-1px)'"
onmouseout="this.style.boxShadow='var(--shadow-btn)'; this.style.transform='translateY(0)'">
{{ $slot }}
</button>
@@ -1,17 +1,17 @@
@props(['errorBag' => '', 'classes' => '', 'name', 'type' => 'text', 'value' => '', 'placeholder' => '', 'required' => true, 'autofocus' => false, 'readonly' => false])
<input
class="{{ $classes }} focus:ring-0 border-2 rounded w-full -sm @error($name, $errorBag) border-red-600 ring-red-500 @enderror"
style="background-color: var(--color-background); color: var(--color-text); border-color: var(--input-border-color, var(--color-text-muted)); --tw-ring-color: var(--color-primary); --tw-border-opacity: 1; border-color: var(--color-primary);"
class="{{ $classes }} focus:ring-0 border-2 rounded-lg w-full px-4 py-2.5 transition-all duration-200 @error($name, $errorBag) border-red-500 ring-red-500 @enderror"
style="background-color: var(--color-background); color: var(--color-text); border-color: var(--input-border-color, var(--color-text-muted)); --tw-ring-color: var(--color-primary);"
id="{{ $name }}" type="{{ $type }}" name="{{ $name }}" value="{{ $value }}"
autocomplete="{{ $name }}" placeholder="{{ $placeholder }}" @if ($readonly) required @endif
autocomplete="{{ $name }}" placeholder="{{ $placeholder }}" @if ($required) required @endif
@if ($autofocus) autofocus="{{ $name }}" @endif
@if ($readonly) readonly @endif
onfocus="this.style.borderColor='var(--color-primary)'"
onblur="this.style.borderColor='var(--input-border-color, var(--color-text-muted))'">
onfocus="this.style.borderColor='var(--color-primary)'; this.style.boxShadow='0 0 0 3px color-mix(in srgb, var(--color-primary) 20%, transparent)'"
onblur="this.style.borderColor='var(--input-border-color, var(--color-text-muted))'; this.style.boxShadow='none'">
@error($name, $errorBag)
<p class="mt-1 text-xs italic" style="color: var(--button-danger-color, #ef4444);">
<p class="mt-1.5 text-xs font-medium" style="color: var(--button-danger-color, #ef4444);">
{{ $message }}
</p>
@enderror
@@ -1,7 +1,9 @@
@props(['classes' => '', 'type' => 'submit'])
<button type="{{ $type }}"
class="w-full rounded bg-transparent! hover:bg-[var(--button-outline-hover-color)]! text-[var(--button-outline-text-color)]! border-2 border-[var(--button-outline-color)]! transition! ease-in-out! duration-150! font-semibold px-6! py-2! {{ $classes }}"
style="border-radius: var(--border-radius)">
class="w-full bg-transparent! hover:bg-[var(--button-outline-hover-color)]! text-[var(--button-outline-text-color)]! border-2 border-[var(--button-outline-color)]! transition-all! ease-in-out! duration-200! font-semibold px-6! py-2.5! {{ $classes }}"
style="border-radius: var(--border-radius); box-shadow: var(--shadow-btn);"
onmouseover="this.style.boxShadow='var(--shadow-btn-hover)'; this.style.transform='translateY(-1px)'"
onmouseout="this.style.boxShadow='var(--shadow-btn)'; this.style.transform='translateY(0)'">
{{ $slot }}
</button>
@@ -1,7 +1,9 @@
@props(['classes' => '', 'type' => 'submit'])
<button type="{{ $type }}"
class="w-full rounded bg-[var(--button-color)]! text-[var(--button-text-color)]! border-2 border-[var(--button-color)]! transition! ease-in-out! duration-200! hover:opacity-90! font-semibold px-6! py-2! {{ $classes }}"
style="border-radius: var(--border-radius)">
class="w-full bg-[var(--button-color)]! text-[var(--button-text-color)]! border-2 border-[var(--button-color)]! transition-all! ease-in-out! duration-200! font-semibold px-6! py-2.5! {{ $classes }}"
style="border-radius: var(--border-radius); box-shadow: var(--shadow-btn);"
onmouseover="this.style.boxShadow='var(--shadow-btn-hover)'; this.style.transform='translateY(-1px)'"
onmouseout="this.style.boxShadow='var(--shadow-btn)'; this.style.transform='translateY(0)'">
{{ $slot }}
</button>
@@ -1,7 +1,9 @@
@props(['classes' => '', 'type' => 'submit'])
<button type="{{ $type }}"
class="w-full rounded bg-[var(--button-secondary-color)]! hover:bg-[var(--button-secondary-hover-color)]! text-[var(--button-secondary-text-color)]! border-2 border-[var(--button-secondary-border-color)]! transition! ease-in-out! duration-150! font-semibold px-6! py-2! {{ $classes }}"
style="border-radius: var(--border-radius)">
class="w-full bg-[var(--button-secondary-color)]! hover:bg-[var(--button-secondary-hover-color)]! text-[var(--button-secondary-text-color)]! border-2 border-[var(--button-secondary-border-color)]! transition-all! ease-in-out! duration-200! font-semibold px-6! py-2.5! {{ $classes }}"
style="border-radius: var(--border-radius); box-shadow: var(--shadow-btn);"
onmouseover="this.style.boxShadow='var(--shadow-btn-hover)'; this.style.transform='translateY(-1px)'"
onmouseout="this.style.boxShadow='var(--shadow-btn)'; this.style.transform='translateY(0)'">
{{ $slot }}
</button>
@@ -5,10 +5,11 @@
<div>
<a href="{{ route('profile.show', $user) }}"
class="absolute -bottom-12 left-0 transition duration-300 ease-in-out hover:scale-105 group">
<div class="rounded-full overflow-hidden border-4 border-gray-800 group-hover:border-[var(--border-color)] transition-colors">
<img style="image-rendering: pixelated;"
src="{{ setting('avatar_imager') }}{{ $user->look }}&direction=2&head_direction=3&gesture=sml&action=wav&size=l"
alt="{{ $user->username }}"
class="border-4 border-gray-800 group-hover:border-[var(--border-color)] transition-colors rounded-xl">
alt="{{ $user->username }}">
</div>
</a>
</div>