feat: restyle inventory, hospital, and jail pages with dark crime theme
Implement dark crime-themed redesign for three game pages using syndicate color tokens and dark typography. Updated inventory grid, hospital recovery status display, and jail sentence view with consistent styling. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
3326c73d10
commit
cad99125ce
@@ -4,38 +4,31 @@
|
|||||||
|
|
||||||
@section('game-content')
|
@section('game-content')
|
||||||
<div class="max-w-2xl mx-auto">
|
<div class="max-w-2xl mx-auto">
|
||||||
<div class="bg-white dark:bg-gray-800 overflow-hidden shadow-sm sm:rounded-lg">
|
<div class="bg-syndicate-800 border border-syndicate-700 rounded-lg">
|
||||||
<div class="p-8 text-center">
|
<div class="p-8 text-center">
|
||||||
<div class="mb-6">
|
<div class="mb-6">
|
||||||
<span class="text-6xl text-red-500">🏥</span>
|
<span class="text-6xl">🏥</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h1 class="text-2xl font-bold text-gray-800 dark:text-gray-200 mb-4">
|
<h1 class="font-display text-2xl font-bold text-gray-100 mb-4">You're in the Hospital</h1>
|
||||||
You're in the Hospital
|
<p class="text-gray-400 mb-6 text-sm">Your character has been injured and is currently recovering.</p>
|
||||||
</h1>
|
|
||||||
|
|
||||||
<p class="text-gray-600 dark:text-gray-400 mb-6">
|
<div class="bg-red-900/20 border border-red-800 rounded-lg p-6 mb-6 text-left">
|
||||||
Your character has been injured and is currently recovering in the hospital.
|
<h3 class="font-display text-base font-semibold text-red-300 mb-3">Your Status</h3>
|
||||||
</p>
|
<div class="space-y-2 text-sm">
|
||||||
|
<div class="flex justify-between">
|
||||||
<div class="bg-red-50 dark:bg-red-900/30 rounded-lg p-6 mb-6">
|
<span class="text-gray-400">Health</span>
|
||||||
<h3 class="text-lg font-medium text-red-800 dark:text-red-200 mb-3">
|
<span class="text-gray-200 font-medium">{{ $character->health }}/{{ $character->max_health }}</span>
|
||||||
Your Status
|
|
||||||
</h3>
|
|
||||||
<div class="space-y-2">
|
|
||||||
<div class="flex justify-between text-sm">
|
|
||||||
<span class="text-gray-600 dark:text-gray-400">Health</span>
|
|
||||||
<span class="font-medium">{{ $character->health }}/{{ $character->max_health }}</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-between text-sm">
|
<div class="flex justify-between">
|
||||||
<span class="text-gray-600 dark:text-gray-400">Status</span>
|
<span class="text-gray-400">Status</span>
|
||||||
<span class="font-medium text-red-600 dark:text-red-400">
|
<span class="text-red-400 font-medium">
|
||||||
@if($character->health <= 0) Dead @else In Hospital @endif
|
@if($character->health <= 0) Dead @else In Hospital @endif
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-between text-sm">
|
<div class="flex justify-between">
|
||||||
<span class="text-gray-600 dark:text-gray-400">Release Time</span>
|
<span class="text-gray-400">Release Time</span>
|
||||||
<span class="font-medium">{{ $releaseTime }}</span>
|
<span class="text-gray-200 font-medium">{{ $releaseTime }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -43,24 +36,18 @@
|
|||||||
<div class="space-y-4">
|
<div class="space-y-4">
|
||||||
<form action="{{ route('game.character.revive') }}" method="POST">
|
<form action="{{ route('game.character.revive') }}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
<button
|
<button type="submit"
|
||||||
type="submit"
|
class="w-full flex items-center justify-center px-6 py-4 bg-green-700 hover:bg-green-600 text-white font-medium rounded-lg transition">
|
||||||
class="w-full flex items-center justify-center px-6 py-4 bg-green-500 hover:bg-green-600 text-white font-medium rounded-lg transition"
|
|
||||||
>
|
|
||||||
<span class="mr-2">💵</span>
|
<span class="mr-2">💵</span>
|
||||||
Revive Now for ${{ number_format($reviveCost) }}
|
Revive Now for ${{ number_format($reviveCost) }}
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<p class="text-sm text-gray-500 dark:text-gray-400">
|
<p class="text-sm text-gray-600">Or wait to be automatically released when your health regenerates.</p>
|
||||||
Or wait to be automatically released when your health regenerates.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<a
|
<a href="{{ route('game.dashboard') }}"
|
||||||
href="{{ route('game.dashboard') }}"
|
class="inline-flex items-center text-gray-500 hover:text-gray-300 transition text-sm">
|
||||||
class="inline-flex items-center text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200 transition"
|
<svg class="w-4 h-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
>
|
|
||||||
<svg class="w-5 h-5 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7" />
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7" />
|
||||||
</svg>
|
</svg>
|
||||||
Back to Dashboard
|
Back to Dashboard
|
||||||
|
|||||||
@@ -4,69 +4,61 @@
|
|||||||
|
|
||||||
@section('game-content')
|
@section('game-content')
|
||||||
<div class="max-w-4xl mx-auto">
|
<div class="max-w-4xl mx-auto">
|
||||||
<div class="bg-white dark:bg-gray-800 overflow-hidden shadow-sm sm:rounded-lg">
|
<div class="bg-syndicate-800 border border-syndicate-700 rounded-lg">
|
||||||
<div class="p-6 border-b border-gray-200 dark:border-gray-700">
|
<div class="px-6 py-4 border-b border-syndicate-700">
|
||||||
<h1 class="text-xl font-semibold text-gray-800 dark:text-gray-200">Inventory</h1>
|
<h1 class="font-display text-xl font-semibold text-gray-100">Inventory</h1>
|
||||||
<p class="mt-2 text-sm text-gray-600 dark:text-gray-400">
|
<p class="mt-1 text-sm text-gray-400">Equip weapons and armor, or use consumables.</p>
|
||||||
Manage your items. Equip weapons and armor, or use consumables.
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="p-6">
|
<div class="p-6">
|
||||||
@if($inventory->isEmpty())
|
@if($inventory->isEmpty())
|
||||||
<p class="text-center text-gray-500 dark:text-gray-400 py-8">
|
<p class="text-center text-gray-500 py-8 text-sm">Your inventory is empty.</p>
|
||||||
Your inventory is empty.
|
|
||||||
</p>
|
|
||||||
@else
|
@else
|
||||||
<div class="space-y-4">
|
<div class="space-y-6">
|
||||||
@foreach($inventory->groupBy('item.type') as $type => $items)
|
@foreach($inventory->groupBy('item.type') as $type => $items)
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-lg font-medium text-gray-800 dark:text-gray-200 capitalizes mb-3">
|
<h3 class="font-display text-base font-semibold text-gray-300 capitalize mb-3">
|
||||||
{{ ucfirst($type) }}s ({{ $items->sum('quantity') }})
|
{{ ucfirst($type) }}s ({{ $items->sum('quantity') }})
|
||||||
</h3>
|
</h3>
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
||||||
@foreach($items as $item)
|
@foreach($items as $item)
|
||||||
<div class="bg-gray-50 dark:bg-gray-700 rounded-lg p-4 border border-gray-200 dark:border-gray-600">
|
<div class="bg-syndicate-700 border border-syndicate-600 rounded-lg p-4">
|
||||||
<div class="flex justify-between items-start mb-2">
|
<div class="flex justify-between items-start mb-2">
|
||||||
<div>
|
<div>
|
||||||
<h4 class="font-medium text-gray-800 dark:text-gray-200">{{ $item->item->name }}</h4>
|
<h4 class="font-medium text-gray-100">{{ $item->item->name }}</h4>
|
||||||
<p class="text-xs text-gray-500 dark:text-gray-400">
|
<p class="text-xs text-gray-500">x{{ $item->quantity }}</p>
|
||||||
x{{ $item->quantity }}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
@if($item->equipped)
|
@if($item->equipped)
|
||||||
<span class="text-xs px-2 py-1 bg-green-500 text-white rounded-full">Equipped</span>
|
<span class="text-xs px-2 py-1 bg-green-800/60 border border-green-700 text-green-400 rounded-full">Equipped</span>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if($item->item->description)
|
@if($item->item->description)
|
||||||
<p class="text-sm text-gray-600 dark:text-gray-400 mb-3">
|
<p class="text-sm text-gray-400 mb-3">{{ Str::limit($item->item->description, 80) }}</p>
|
||||||
{{ Str::limit($item->item->description, 80) }}
|
|
||||||
</p>
|
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
<div class="grid grid-cols-2 gap-2 text-xs mb-3">
|
<div class="grid grid-cols-2 gap-2 text-xs text-gray-400 mb-3">
|
||||||
@if($item->item->attack_bonus > 0)
|
@if($item->item->attack_bonus > 0)
|
||||||
<div class="flex items-center">
|
<div class="flex items-center space-x-1">
|
||||||
<span class="text-red-500 mr-1">⚔️</span>
|
<span class="text-crime-400">⚔️</span>
|
||||||
<span>+{{ $item->item->attack_bonus }} Attack</span>
|
<span>+{{ $item->item->attack_bonus }} Attack</span>
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
@if($item->item->defense_bonus > 0)
|
@if($item->item->defense_bonus > 0)
|
||||||
<div class="flex items-center">
|
<div class="flex items-center space-x-1">
|
||||||
<span class="text-blue-500 mr-1">🛡️</span>
|
<span class="text-blue-400">🛡️</span>
|
||||||
<span>+{{ $item->item->defense_bonus }} Defense</span>
|
<span>+{{ $item->item->defense_bonus }} Defense</span>
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
@if($item->item->health_bonus > 0)
|
@if($item->item->health_bonus > 0)
|
||||||
<div class="flex items-center">
|
<div class="flex items-center space-x-1">
|
||||||
<span class="text-green-500 mr-1">❤️</span>
|
<span class="text-green-400">❤️</span>
|
||||||
<span>+{{ $item->item->health_bonus }} Health</span>
|
<span>+{{ $item->item->health_bonus }} Health</span>
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
@if($item->item->energy_bonus > 0)
|
@if($item->item->energy_bonus > 0)
|
||||||
<div class="flex items-center">
|
<div class="flex items-center space-x-1">
|
||||||
<span class="text-yellow-500 mr-1">⚡</span>
|
<span class="text-yellow-400">⚡</span>
|
||||||
<span>+{{ $item->item->energy_bonus }} Energy</span>
|
<span>+{{ $item->item->energy_bonus }} Energy</span>
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
@@ -77,20 +69,16 @@
|
|||||||
@if($item->equipped)
|
@if($item->equipped)
|
||||||
<form action="{{ route('game.inventory.unequip', $item) }}" method="POST">
|
<form action="{{ route('game.inventory.unequip', $item) }}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
<button
|
<button type="submit"
|
||||||
type="submit"
|
class="px-3 py-1 text-xs bg-syndicate-600 hover:bg-syndicate-500 text-gray-300 rounded transition">
|
||||||
class="px-3 py-1 text-xs bg-gray-400 hover:bg-gray-500 text-white rounded transition"
|
|
||||||
>
|
|
||||||
Unequip
|
Unequip
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
@else
|
@else
|
||||||
<form action="{{ route('game.inventory.equip', $item) }}" method="POST">
|
<form action="{{ route('game.inventory.equip', $item) }}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
<button
|
<button type="submit"
|
||||||
type="submit"
|
class="px-3 py-1 text-xs bg-crime-600 hover:bg-crime-500 text-white rounded transition">
|
||||||
class="px-3 py-1 text-xs bg-blue-500 hover:bg-blue-600 text-white rounded transition"
|
|
||||||
>
|
|
||||||
Equip
|
Equip
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
@@ -100,10 +88,8 @@
|
|||||||
@if($item->item->canUse())
|
@if($item->item->canUse())
|
||||||
<form action="{{ route('game.inventory.use', $item) }}" method="POST">
|
<form action="{{ route('game.inventory.use', $item) }}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
<button
|
<button type="submit"
|
||||||
type="submit"
|
class="px-3 py-1 text-xs bg-green-700 hover:bg-green-600 text-white rounded transition">
|
||||||
class="px-3 py-1 text-xs bg-green-500 hover:bg-green-600 text-white rounded transition"
|
|
||||||
>
|
|
||||||
Use
|
Use
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
@@ -112,10 +98,8 @@
|
|||||||
<form action="{{ route('game.inventory.drop', $item) }}" method="POST">
|
<form action="{{ route('game.inventory.drop', $item) }}" method="POST">
|
||||||
@csrf
|
@csrf
|
||||||
<input type="number" name="quantity" value="1" min="1" max="{{ $item->quantity }}" class="hidden">
|
<input type="number" name="quantity" value="1" min="1" max="{{ $item->quantity }}" class="hidden">
|
||||||
<button
|
<button type="submit"
|
||||||
type="submit"
|
class="px-3 py-1 text-xs bg-red-900/60 hover:bg-red-800/80 border border-red-800 text-red-400 rounded transition">
|
||||||
class="px-3 py-1 text-xs bg-red-500 hover:bg-red-600 text-white rounded transition"
|
|
||||||
>
|
|
||||||
Drop
|
Drop
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -4,46 +4,35 @@
|
|||||||
|
|
||||||
@section('game-content')
|
@section('game-content')
|
||||||
<div class="max-w-2xl mx-auto">
|
<div class="max-w-2xl mx-auto">
|
||||||
<div class="bg-white dark:bg-gray-800 overflow-hidden shadow-sm sm:rounded-lg">
|
<div class="bg-syndicate-800 border border-syndicate-700 rounded-lg">
|
||||||
<div class="p-8 text-center">
|
<div class="p-8 text-center">
|
||||||
<div class="mb-6">
|
<div class="mb-6">
|
||||||
<span class="text-6xl text-yellow-500">🚔</span>
|
<span class="text-6xl">🚔</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h1 class="text-2xl font-bold text-gray-800 dark:text-gray-200 mb-4">
|
<h1 class="font-display text-2xl font-bold text-gray-100 mb-4">You're in Jail</h1>
|
||||||
You're in Jail
|
<p class="text-gray-400 mb-6 text-sm">Your character has been arrested and is currently serving time.</p>
|
||||||
</h1>
|
|
||||||
|
|
||||||
<p class="text-gray-600 dark:text-gray-400 mb-6">
|
<div class="bg-yellow-900/20 border border-yellow-800 rounded-lg p-6 mb-6 text-left">
|
||||||
Your character has been arrested and is currently serving time in jail.
|
<h3 class="font-display text-base font-semibold text-yellow-300 mb-3">Your Status</h3>
|
||||||
</p>
|
<div class="space-y-2 text-sm">
|
||||||
|
<div class="flex justify-between">
|
||||||
<div class="bg-yellow-50 dark:bg-yellow-900/30 rounded-lg p-6 mb-6">
|
<span class="text-gray-400">Status</span>
|
||||||
<h3 class="text-lg font-medium text-yellow-800 dark:text-yellow-200 mb-3">
|
<span class="text-yellow-400 font-medium">In Jail</span>
|
||||||
Your Status
|
|
||||||
</h3>
|
|
||||||
<div class="space-y-2">
|
|
||||||
<div class="flex justify-between text-sm">
|
|
||||||
<span class="text-gray-600 dark:text-gray-400">Status</span>
|
|
||||||
<span class="font-medium text-yellow-600 dark:text-yellow-400">In Jail</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-between text-sm">
|
<div class="flex justify-between">
|
||||||
<span class="text-gray-600 dark:text-gray-400">Release Time</span>
|
<span class="text-gray-400">Release Time</span>
|
||||||
<span class="font-medium">{{ $releaseTime }}</span>
|
<span class="text-gray-200 font-medium">{{ $releaseTime }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="space-y-4">
|
<div class="space-y-4">
|
||||||
<p class="text-sm text-gray-500 dark:text-gray-400">
|
<p class="text-sm text-gray-600">You must wait for your sentence to complete.</p>
|
||||||
You must wait for your sentence to complete. There is no way to reduce your jail time.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<a
|
<a href="{{ route('game.dashboard') }}"
|
||||||
href="{{ route('game.dashboard') }}"
|
class="inline-flex items-center text-gray-500 hover:text-gray-300 transition text-sm">
|
||||||
class="inline-flex items-center text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200 transition"
|
<svg class="w-4 h-4 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
>
|
|
||||||
<svg class="w-5 h-5 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7" />
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7" />
|
||||||
</svg>
|
</svg>
|
||||||
Back to Dashboard
|
Back to Dashboard
|
||||||
|
|||||||
Reference in New Issue
Block a user