Initial commit - Car Rental Management System
This commit is contained in:
commit
f72173377a
100 files changed
+15201
No files matched your search
@@ -0,0 +1,63 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Add Car')
|
||||
|
||||
@section('content')
|
||||
<div class="mb-8">
|
||||
<a href="{{ route('cars.index') }}" class="text-blue-600 hover:text-blue-800 flex items-center gap-2 mb-4">
|
||||
<i class="fas fa-arrow-left"></i> Back to Fleet
|
||||
</a>
|
||||
<h2 class="text-3xl font-bold text-gray-800">Add New Car</h2>
|
||||
<p class="text-gray-500">Add a new car to your fleet</p>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-2xl shadow-sm border border-gray-200 p-8">
|
||||
<form action="{{ route('cars.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Brand</label>
|
||||
<input type="text" name="brand" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Model</label>
|
||||
<input type="text" name="model" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Year</label>
|
||||
<input type="text" name="year" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">License Plate</label>
|
||||
<input type="text" name="license_plate" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Color</label>
|
||||
<input type="text" name="color" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Daily Rate (BHD)</label>
|
||||
<input type="number" name="daily_rate" step="0.01" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Status</label>
|
||||
<select name="status" class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
<option value="available">Available</option>
|
||||
<option value="maintenance">Maintenance</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Mileage</label>
|
||||
<input type="number" name="mileage" value="0" class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
</div>
|
||||
<div class="md:col-span-2">
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Notes</label>
|
||||
<textarea name="notes" rows="3" class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-6">
|
||||
<button type="submit" class="bg-blue-600 text-white px-8 py-3 rounded-xl hover:bg-blue-700">Add Car</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,64 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Edit Car')
|
||||
|
||||
@section('content')
|
||||
<div class="mb-8">
|
||||
<a href="{{ route('cars.index') }}" class="text-blue-600 hover:text-blue-800 flex items-center gap-2 mb-4">
|
||||
<i class="fas fa-arrow-left"></i> Back to Fleet
|
||||
</a>
|
||||
<h2 class="text-3xl font-bold text-gray-800">Edit Car</h2>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-2xl shadow-sm border border-gray-200 p-8">
|
||||
<form action="{{ route('cars.update', $car) }}" method="POST">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Brand</label>
|
||||
<input type="text" name="brand" value="{{ $car->brand }}" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Model</label>
|
||||
<input type="text" name="model" value="{{ $car->model }}" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Year</label>
|
||||
<input type="text" name="year" value="{{ $car->year }}" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">License Plate</label>
|
||||
<input type="text" name="license_plate" value="{{ $car->license_plate }}" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Color</label>
|
||||
<input type="text" name="color" value="{{ $car->color }}" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Daily Rate (BHD)</label>
|
||||
<input type="number" name="daily_rate" step="0.01" value="{{ $car->daily_rate }}" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Status</label>
|
||||
<select name="status" class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
<option value="available" {{ $car->status == 'available' ? 'selected' : '' }}>Available</option>
|
||||
<option value="rented" {{ $car->status == 'rented' ? 'selected' : '' }}>Rented</option>
|
||||
<option value="maintenance" {{ $car->status == 'maintenance' ? 'selected' : '' }}>Maintenance</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Mileage</label>
|
||||
<input type="number" name="mileage" value="{{ $car->mileage }}" class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
||||
</div>
|
||||
<div class="md:col-span-2">
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Notes</label>
|
||||
<textarea name="notes" rows="3" class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500">{{ $car->notes }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-6">
|
||||
<button type="submit" class="bg-blue-600 text-white px-8 py-3 rounded-xl hover:bg-blue-700">Update Car</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,74 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Fleet')
|
||||
|
||||
@section('content')
|
||||
<div class="flex justify-between items-center mb-6">
|
||||
<div>
|
||||
<h2 class="text-xl font-bold text-gray-800">Fleet Management</h2>
|
||||
<p class="text-gray-500 text-sm">Manage your car fleet</p>
|
||||
</div>
|
||||
<a href="{{ route('cars.create') }}" class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 flex items-center gap-2 text-sm font-medium">
|
||||
<i class="fas fa-plus"></i> Add Car
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@if(session('success'))
|
||||
<div class="bg-green-50 border border-green-200 text-green-700 px-4 py-3 rounded-lg mb-4 text-sm">
|
||||
{{ session('success') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden">
|
||||
<table class="w-full">
|
||||
<thead class="bg-gray-50 border-b border-gray-200">
|
||||
<tr>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">Car</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">License Plate</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">Daily Rate</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">Status</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase tracking-wider">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-gray-100">
|
||||
@forelse($cars as $car)
|
||||
<tr class="hover:bg-gray-50">
|
||||
<td class="px-5 py-4">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="w-10 h-10 rounded-lg bg-blue-100 flex items-center justify-center">
|
||||
<i class="fas fa-car text-blue-600"></i>
|
||||
</div>
|
||||
<div>
|
||||
<p class="font-medium text-gray-800">{{ $car->brand }} {{ $car->model }}</p>
|
||||
<p class="text-sm text-gray-500">{{ $car->year }} • {{ $car->color }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-5 py-4 text-gray-600 text-sm">{{ $car->license_plate }}</td>
|
||||
<td class="px-5 py-4 text-gray-600 text-sm"> BHD {{ number_format($car->daily_rate, 0) }}/day</td>
|
||||
<td class="px-5 py-4">
|
||||
<span class="px-2.5 py-1 rounded-full text-xs font-medium
|
||||
{{ $car->status == 'available' ? 'bg-green-100 text-green-700' :
|
||||
($car->status == 'rented' ? 'bg-amber-100 text-amber-700' : 'bg-red-100 text-red-700') }}">
|
||||
{{ ucfirst($car->status) }}
|
||||
</span>
|
||||
</td>
|
||||
<td class="px-5 py-4">
|
||||
<a href="{{ route('cars.show', $car) }}" class="text-blue-600 hover:text-blue-800 mr-3 text-sm"><i class="fas fa-eye"></i></a>
|
||||
<a href="{{ route('cars.edit', $car) }}" class="text-gray-600 hover:text-gray-800 mr-3 text-sm"><i class="fas fa-edit"></i></a>
|
||||
<form action="{{ route('cars.destroy', $car) }}" method="POST" class="inline">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="text-red-600 hover:text-red-800 text-sm" onclick="return confirm('Are you sure?')"><i class="fas fa-trash"></i></button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="5" class="px-5 py-8 text-center text-gray-500">No cars yet. Add your first car!</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,101 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', $car->brand . ' ' . $car->model)
|
||||
|
||||
@section('content')
|
||||
<div class="mb-8">
|
||||
<a href="{{ route('cars.index') }}" class="text-blue-600 hover:text-blue-800 flex items-center gap-2 mb-4">
|
||||
<i class="fas fa-arrow-left"></i> Back to Fleet
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
|
||||
<!-- Car Details -->
|
||||
<div class="lg:col-span-2">
|
||||
<div class="bg-white rounded-2xl shadow-sm border border-gray-200 p-8">
|
||||
<div class="flex items-center gap-4 mb-6">
|
||||
<div class="w-16 h-16 rounded-xl bg-gradient-to-br from-blue-400 to-blue-600 flex items-center justify-center">
|
||||
<i class="fas fa-car text-white text-2xl"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h2 class="text-2xl font-bold text-gray-800">{{ $car->brand }} {{ $car->model }}</h2>
|
||||
<p class="text-gray-500">{{ $car->year }} • {{ $car->color }} • {{ $car->license_plate }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6">
|
||||
<div class="bg-gray-50 rounded-lg p-4 text-center">
|
||||
<p class="text-sm text-gray-500">Daily Rate</p>
|
||||
<p class="text-xl font-bold text-gray-800"> BHD {{ number_format($car->daily_rate, 0) }}</p>
|
||||
</div>
|
||||
<div class="bg-gray-50 rounded-lg p-4 text-center">
|
||||
<p class="text-sm text-gray-500">Mileage</p>
|
||||
<p class="text-xl font-bold text-gray-800">{{ number_format($car->mileage) }} km</p>
|
||||
</div>
|
||||
<div class="bg-gray-50 rounded-lg p-4 text-center">
|
||||
<p class="text-sm text-gray-500">Status</p>
|
||||
<span class="px-3 py-1 rounded-full text-sm font-medium
|
||||
{{ $car->status == 'available' ? 'bg-green-100 text-green-700' :
|
||||
($car->status == 'rented' ? 'bg-amber-100 text-amber-700' : 'bg-red-100 text-red-700') }}">
|
||||
{{ ucfirst($car->status) }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if($car->notes)
|
||||
<div class="border-t pt-4">
|
||||
<p class="text-sm text-gray-500 mb-1">Notes</p>
|
||||
<p class="text-gray-700">{{ $car->notes }}</p>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Quick Actions -->
|
||||
<div>
|
||||
<div class="bg-white rounded-2xl shadow-sm border border-gray-200 p-6">
|
||||
<h3 class="font-semibold text-gray-800 mb-4">Quick Actions</h3>
|
||||
<a href="{{ route('rentals.create') }}?car_id={{ $car->id }}" class="block w-full bg-amber-500 text-white text-center py-3 rounded-xl mb-3 hover:bg-amber-600">New Rental</a>
|
||||
<a href="{{ route('services.create') }}?car_id={{ $car->id }}" class="block w-full bg-purple-500 text-white text-center py-3 rounded-xl mb-3 hover:bg-purple-600">Schedule Service</a>
|
||||
<a href="{{ route('cars.edit', $car) }}" class="block w-full bg-gray-100 text-gray-700 text-center py-3 rounded-xl hover:bg-gray-200">Edit Car</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Rentals & Services -->
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mt-6">
|
||||
<div class="bg-white rounded-2xl shadow-sm border border-gray-200 p-6">
|
||||
<h3 class="font-semibold text-gray-800 mb-4">Recent Rentals</h3>
|
||||
@forelse($car->rentals->take(5) as $rental)
|
||||
<div class="flex justify-between items-center py-3 border-b last:border-0">
|
||||
<div>
|
||||
<p class="font-medium text-gray-800">{{ $rental->customer->name }}</p>
|
||||
<p class="text-sm text-gray-500">{{ $rental->start_date->format('M d') }} - {{ $rental->end_date->format('M d, Y') }}</p>
|
||||
</div>
|
||||
<span class="px-2 py-1 rounded text-xs font-medium
|
||||
{{ $rental->status == 'active' ? 'bg-green-100 text-green-700' :
|
||||
($rental->status == 'pending' ? 'bg-amber-100 text-amber-700' : 'bg-gray-100 text-gray-700') }}">
|
||||
{{ $rental->status }}
|
||||
</span>
|
||||
</div>
|
||||
@empty
|
||||
<p class="text-gray-500 text-center py-4">No rentals yet</p>
|
||||
@endforelse
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-2xl shadow-sm border border-gray-200 p-6">
|
||||
<h3 class="font-semibold text-gray-800 mb-4">Service History</h3>
|
||||
@forelse($car->services->take(5) as $service)
|
||||
<div class="flex justify-between items-center py-3 border-b last:border-0">
|
||||
<div>
|
||||
<p class="font-medium text-gray-800 capitalize">{{ str_replace('_', ' ', $service->type) }}</p>
|
||||
<p class="text-sm text-gray-500">{{ $service->service_date->format('M d, Y') }}</p>
|
||||
</div>
|
||||
<span class="text-gray-800 font-medium"> BHD {{ number_format($service->cost, 0) }}</span>
|
||||
</div>
|
||||
@empty
|
||||
<p class="text-gray-500 text-center py-4">No services yet</p>
|
||||
@endforelse
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,148 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Rental Contract #{{ $rental->id }}</title>
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
@media print {
|
||||
html, body { height: auto; overflow: visible; }
|
||||
.container { page-break-after: avoid; page-break-inside: avoid; }
|
||||
}
|
||||
@page { size: A4; margin: 10mm; }
|
||||
body { font-family: Arial, sans-serif; font-size: 11px; line-height: 1.4; color: #333; }
|
||||
.container { max-width: 700px; margin: 0 auto; padding: 15px; page-break-after: auto; }
|
||||
|
||||
/* Header */
|
||||
.header { text-align: center; margin-bottom: 15px; padding-bottom: 10px; border-bottom: 2px solid #333; }
|
||||
.logo { max-width: 150px; max-height: 50px; margin-bottom: 5px; }
|
||||
.company-name { font-size: 18px; font-weight: bold; color: #1f2937; }
|
||||
.company-tagline { font-size: 10px; color: #666; margin-bottom: 8px; }
|
||||
.contract-title { font-size: 16px; font-weight: bold; margin-top: 8px; color: #374151; }
|
||||
.contract-no { font-size: 10px; color: #6b7280; }
|
||||
|
||||
/* Sections */
|
||||
.section { margin-bottom: 12px; }
|
||||
.section-title { font-size: 12px; font-weight: bold; margin-bottom: 6px; color: #1f2937; border-bottom: 1px solid #e5e7eb; padding-bottom: 3px; }
|
||||
.info-grid { display: table; width: 100%; }
|
||||
.info-row { display: table-row; }
|
||||
.info-label { display: table-cell; width: 35%; padding: 2px 8px 2px 0; color: #6b7280; }
|
||||
.info-value { display: table-cell; padding: 2px 0; font-weight: 500; color: #1f2937; }
|
||||
|
||||
/* Two columns */
|
||||
.two-col { display: table; width: 100%; }
|
||||
.col { display: table-cell; width: 50%; padding: 5px; vertical-align: top; }
|
||||
|
||||
/* Box styles */
|
||||
.box { background: #f9fafb; padding: 10px; text-align: center; margin-top: 10px; }
|
||||
.amount { font-size: 20px; font-weight: bold; color: #1f2937; }
|
||||
.amount-small { font-size: 14px; color: #6b7280; }
|
||||
|
||||
/* Signature */
|
||||
.signatures { display: table; width: 100%; margin-top: 15px; }
|
||||
.signature-box { display: table-cell; width: 50%; padding: 5px 15px; text-align: center; vertical-align: top; min-height: 70px; }
|
||||
.signature-line { border-top: 1px solid #333; margin-top: 30px; padding-top: 5px; font-size: 10px; color: #6b7280; }
|
||||
.sig-img { max-width: 150px; max-height: 50px; margin-bottom: 5px; }
|
||||
|
||||
/* Footer */
|
||||
.footer { margin-top: 10px; padding-top: 8px; border-top: 1px solid #e5e7eb; text-align: center; font-size: 9px; color: #9ca3af; }
|
||||
|
||||
/* Status badge */
|
||||
.status { display: inline-block; padding: 2px 8px; background: #22c55e; color: white; border-radius: 3px; font-size: 10px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<!-- Header with Logo -->
|
||||
<div class="header">
|
||||
@if(config('settings.logo'))
|
||||
<img src="{{ asset(config('settings.logo')) }}" alt="Logo" class="logo">
|
||||
@else
|
||||
<div class="logo">🚗</div>
|
||||
@endif
|
||||
<div class="company-name">{{ config('settings.company_name') }}</div>
|
||||
<div class="company-tagline">{{ config('settings.company_tagline') }}</div>
|
||||
<div class="contract-title">RENTAL CONTRACT</div>
|
||||
<div class="contract-no">Contract No: #{{ str_pad($rental->id, 6, '0', STR_PAD_LEFT) }}</div>
|
||||
</div>
|
||||
|
||||
<!-- Customer & Vehicle Info -->
|
||||
<div class="two-col">
|
||||
<div class="col">
|
||||
<div class="section">
|
||||
<div class="section-title">Customer Information</div>
|
||||
<div class="info-grid">
|
||||
<div class="info-row"><div class="info-label">Name:</div><div class="info-value">{{ $rental->customer->name }}</div></div>
|
||||
<div class="info-row"><div class="info-label">Email:</div><div class="info-value">{{ $rental->customer->email }}</div></div>
|
||||
<div class="info-row"><div class="info-label">Phone:</div><div class="info-value">{{ $rental->customer->phone }}</div></div>
|
||||
<div class="info-row"><div class="info-label">License:</div><div class="info-value">{{ $rental->customer->license_number }}</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="section">
|
||||
<div class="section-title">Vehicle Information</div>
|
||||
<div class="info-grid">
|
||||
<div class="info-row"><div class="info-label">Make & Model:</div><div class="info-value">{{ $rental->car->brand }} {{ $rental->car->model }}</div></div>
|
||||
<div class="info-row"><div class="info-label">Year:</div><div class="info-value">{{ $rental->car->year }}</div></div>
|
||||
<div class="info-row"><div class="info-label">Color:</div><div class="info-value">{{ $rental->car->color }}</div></div>
|
||||
<div class="info-row"><div class="info-label">License Plate:</div><div class="info-value">{{ $rental->car->license_plate }}</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Rental Details -->
|
||||
<div class="section">
|
||||
<div class="section-title">Rental Details</div>
|
||||
<div class="info-grid">
|
||||
<div class="info-row"><div class="info-label">Rental Type:</div><div class="info-value" style="text-transform: capitalize;">{{ $rental->rental_type }}</div></div>
|
||||
<div class="info-row"><div class="info-label">Pickup:</div><div class="info-value">{{ $rental->start_date->format('d M Y') }} @if($rental->pickup_time){{ $rental->pickup_time->format('H:i') }}@endif</div></div>
|
||||
<div class="info-row"><div class="info-label">Return:</div><div class="info-value">{{ $rental->end_date->format('d M Y') }} @if($rental->return_time){{ $rental->return_time->format('H:i') }}@endif</div></div>
|
||||
<div class="info-row"><div class="info-label">Status:</div><div class="info-value"><span class="status">{{ strtoupper($rental->status) }}</span></div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Payment Summary -->
|
||||
<div class="box">
|
||||
<div>Total Rental Amount</div>
|
||||
<div class="amount">{{ number_format($rental->total_amount, 3) }} BHD</div>
|
||||
@if($rental->advance_payment > 0)
|
||||
<div class="amount-small">
|
||||
Advance Paid: {{ number_format($rental->advance_payment, 3) }} BHD |
|
||||
Remaining: {{ number_format($rental->total_amount - $rental->advance_payment, 3) }} BHD
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
@if($rental->notes)
|
||||
<div class="section">
|
||||
<div class="section-title">Notes</div>
|
||||
<p style="font-size: 10px; color: #6b7280;">{{ $rental->notes }}</p>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- Signatures -->
|
||||
<div class="signatures">
|
||||
<div class="signature-box">
|
||||
@if($rental->customer_signature)
|
||||
<img src="{{ $rental->customer_signature }}" alt="Customer Signature" class="sig-img">
|
||||
@else
|
||||
<div style="height: 50px;"></div>
|
||||
@endif
|
||||
<div class="signature-line">Tenant Signature</div>
|
||||
</div>
|
||||
<div class="signature-box">
|
||||
<div style="height: 50px;"></div>
|
||||
<div class="signature-line">Company Representative</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer -->
|
||||
<div class="footer">
|
||||
<p>Generated by {{ config('settings.company_name') }} Car Rental Management System | {{ now()->format('d M Y H:i') }}</p>
|
||||
<p>{{ config('settings.address') }} | {{ config('settings.phone') }} | {{ config('settings.email') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,51 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Add Customer')
|
||||
|
||||
@section('content')
|
||||
<div class="mb-8">
|
||||
<a href="{{ route('customers.index') }}" class="text-blue-600 hover:text-blue-800 flex items-center gap-2 mb-4">
|
||||
<i class="fas fa-arrow-left"></i> Back to Customers
|
||||
</a>
|
||||
<h2 class="text-3xl font-bold text-gray-800">Add New Customer</h2>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-2xl shadow-sm border border-gray-200 p-8">
|
||||
<form action="{{ route('customers.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Full Name</label>
|
||||
<input type="text" name="name" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Email</label>
|
||||
<input type="email" name="email" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Phone</label>
|
||||
<input type="text" name="phone" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">License Number</label>
|
||||
<input type="text" name="license_number" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">License Expiry</label>
|
||||
<input type="date" name="license_expiry" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Date of Birth</label>
|
||||
<input type="date" name="dob" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
<div class="md:col-span-2">
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Address</label>
|
||||
<input type="text" name="address" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-6">
|
||||
<button type="submit" class="bg-purple-600 text-white px-8 py-3 rounded-xl hover:bg-purple-700">Add Customer</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,60 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Edit Customer')
|
||||
|
||||
@section('content')
|
||||
<div class="mb-8">
|
||||
<a href="{{ route('customers.index') }}" class="text-blue-600 hover:text-blue-800 flex items-center gap-2 mb-4">
|
||||
<i class="fas fa-arrow-left"></i> Back to Customers
|
||||
</a>
|
||||
<h2 class="text-3xl font-bold text-gray-800">Edit Customer</h2>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-2xl shadow-sm border border-gray-200 p-8">
|
||||
<form action="{{ route('customers.update', $customer) }}" method="POST">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Full Name</label>
|
||||
<input type="text" name="name" value="{{ $customer->name }}" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Email</label>
|
||||
<input type="email" name="email" value="{{ $customer->email }}" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Phone</label>
|
||||
<input type="text" name="phone" value="{{ $customer->phone }}" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">License Number</label>
|
||||
<input type="text" name="license_number" value="{{ $customer->license_number }}" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">License Expiry</label>
|
||||
<input type="date" name="license_expiry" value="{{ $customer->license_expiry }}" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Date of Birth</label>
|
||||
<input type="date" name="dob" value="{{ $customer->dob }}" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Status</label>
|
||||
<select name="status" class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
<option value="active" {{ $customer->status == 'active' ? 'selected' : '' }}>Active</option>
|
||||
<option value="inactive" {{ $customer->status == 'inactive' ? 'selected' : '' }}>Inactive</option>
|
||||
<option value="blocked" {{ $customer->status == 'blocked' ? 'selected' : '' }}>Blocked</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Address</label>
|
||||
<input type="text" name="address" value="{{ $customer->address }}" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-6">
|
||||
<button type="submit" class="bg-purple-600 text-white px-8 py-3 rounded-xl hover:bg-purple-700">Update Customer</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,67 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Customers')
|
||||
|
||||
@section('content')
|
||||
<div class="flex justify-between items-center mb-6">
|
||||
<div>
|
||||
<h2 class="text-xl font-bold text-gray-800">Customers</h2>
|
||||
<p class="text-gray-500 text-sm">Manage your customers</p>
|
||||
</div>
|
||||
<a href="{{ route('customers.create') }}" class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 flex items-center gap-2 text-sm font-medium">
|
||||
<i class="fas fa-plus"></i> Add Customer
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden">
|
||||
<table class="w-full">
|
||||
<thead class="bg-gray-50 border-b border-gray-200">
|
||||
<tr>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Name</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Email</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Phone</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">License</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Status</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-gray-100">
|
||||
@forelse($customers as $customer)
|
||||
<tr class="hover:bg-gray-50">
|
||||
<td class="px-5 py-4">
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="w-10 h-10 rounded-full bg-gray-200 flex items-center justify-center text-gray-600 font-semibold text-sm">
|
||||
{{ substr($customer->name, 0, 1) }}
|
||||
</div>
|
||||
<p class="font-medium text-gray-800">{{ $customer->name }}</p>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-5 py-4 text-gray-600 text-sm">{{ $customer->email }}</td>
|
||||
<td class="px-5 py-4 text-gray-600 text-sm">{{ $customer->phone }}</td>
|
||||
<td class="px-5 py-4 text-gray-600 text-sm">{{ $customer->license_number }}</td>
|
||||
<td class="px-5 py-4">
|
||||
<span class="px-2.5 py-1 rounded-full text-xs font-medium
|
||||
{{ $customer->status == 'active' ? 'bg-green-100 text-green-700' :
|
||||
($customer->status == 'inactive' ? 'bg-gray-100 text-gray-600' : 'bg-red-100 text-red-700') }}">
|
||||
{{ ucfirst($customer->status) }}
|
||||
</span>
|
||||
</td>
|
||||
<td class="px-5 py-4">
|
||||
<a href="{{ route('customers.show', $customer) }}" class="text-blue-600 hover:text-blue-800 mr-3 text-sm"><i class="fas fa-eye"></i></a>
|
||||
<a href="{{ route('customers.edit', $customer) }}" class="text-gray-600 hover:text-gray-800 mr-3 text-sm"><i class="fas fa-edit"></i></a>
|
||||
<form action="{{ route('customers.destroy', $customer) }}" method="POST" class="inline">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="text-red-600 hover:text-red-800 text-sm" onclick="return confirm('Are you sure?')"><i class="fas fa-trash"></i></button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="6" class="px-5 py-8 text-center text-gray-500">No customers yet</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,82 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', $customer->name)
|
||||
|
||||
@section('content')
|
||||
<div class="mb-8">
|
||||
<a href="{{ route('customers.index') }}" class="text-blue-600 hover:text-blue-800 flex items-center gap-2 mb-4">
|
||||
<i class="fas fa-arrow-left"></i> Back to Customers
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-2xl shadow-sm border border-gray-200 p-8">
|
||||
<div class="flex items-center gap-4 mb-6">
|
||||
<div class="w-16 h-16 rounded-full bg-gradient-to-br from-purple-400 to-pink-500 flex items-center justify-center text-white text-2xl font-bold">
|
||||
{{ substr($customer->name, 0, 1) }}
|
||||
</div>
|
||||
<div>
|
||||
<h2 class="text-2xl font-bold text-gray-800">{{ $customer->name }}</h2>
|
||||
<span class="px-3 py-1 rounded-full text-sm font-medium
|
||||
{{ $customer->status == 'active' ? 'bg-green-100 text-green-700' :
|
||||
($customer->status == 'inactive' ? 'bg-gray-100 text-gray-700' : 'bg-red-100 text-red-700') }}">
|
||||
{{ ucfirst($customer->status) }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
|
||||
<div>
|
||||
<p class="text-sm text-gray-500">Email</p>
|
||||
<p class="font-medium text-gray-800">{{ $customer->email }}</p>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-sm text-gray-500">Phone</p>
|
||||
<p class="font-medium text-gray-800">{{ $customer->phone }}</p>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-sm text-gray-500">License Number</p>
|
||||
<p class="font-medium text-gray-800">{{ $customer->license_number }}</p>
|
||||
</div>
|
||||
<div>
|
||||
<p class="text-sm text-gray-500">License Expiry</p>
|
||||
<p class="font-medium text-gray-800">{{ $customer->license_expiry }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-6">
|
||||
<h3 class="text-xl font-bold text-gray-800 mb-4">Rental History</h3>
|
||||
<div class="bg-white rounded-2xl shadow-sm border border-gray-200 overflow-hidden">
|
||||
<table class="w-full">
|
||||
<thead class="bg-gray-50">
|
||||
<tr>
|
||||
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase">Car</th>
|
||||
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase">Dates</th>
|
||||
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase">Amount</th>
|
||||
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase">Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-gray-200">
|
||||
@forelse($customer->rentals as $rental)
|
||||
<tr>
|
||||
<td class="px-6 py-4">{{ $rental->car->brand }} {{ $rental->car->model }}</td>
|
||||
<td class="px-6 py-4">{{ $rental->start_date->format('M d') }} - {{ $rental->end_date->format('M d, Y') }}</td>
|
||||
<td class="px-6 py-4"> BHD {{ number_format($rental->total_amount, 0) }}</td>
|
||||
<td class="px-6 py-4">
|
||||
<span class="px-2 py-1 rounded text-xs font-medium
|
||||
{{ $rental->status == 'active' ? 'bg-green-100 text-green-700' :
|
||||
($rental->status == 'pending' ? 'bg-amber-100 text-amber-700' : 'bg-gray-100 text-gray-700') }}">
|
||||
{{ $rental->status }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="4" class="px-6 py-8 text-center text-gray-500">No rentals yet</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,78 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>@yield('title') - On The Road</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
|
||||
<script>
|
||||
// Check for saved dark mode preference
|
||||
if (localStorage.getItem('darkMode') === 'true' || (!localStorage.getItem('darkMode') && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
|
||||
document.documentElement.classList.add('dark');
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body class="bg-gray-100 dark:bg-slate-900 transition-colors">
|
||||
<!-- Sidebar -->
|
||||
<div class="fixed left-0 top-0 h-full w-64 bg-slate-800 dark:bg-slate-950 border-r border-slate-700">
|
||||
<div class="p-5 border-b border-slate-700">
|
||||
<h1 class="text-xl font-bold text-white flex items-center gap-2">
|
||||
<i class="fas fa-road text-blue-400"></i>
|
||||
On The Road
|
||||
</h1>
|
||||
<p class="text-slate-400 text-xs mt-1">Car Rental Management</p>
|
||||
</div>
|
||||
<nav class="mt-3 px-3">
|
||||
<a href="{{ route('dashboard') }}" class="flex items-center gap-3 px-4 py-2.5 rounded-lg {{ request()->routeIs('dashboard') ? 'bg-blue-600 text-white' : 'text-slate-300 hover:bg-slate-700' }}">
|
||||
<i class="fas fa-chart-line w-5"></i> Dashboard
|
||||
</a>
|
||||
<a href="{{ route('cars.index') }}" class="flex items-center gap-3 px-4 py-2.5 rounded-lg {{ request()->routeIs('cars.*') ? 'bg-blue-600 text-white' : 'text-slate-300 hover:bg-slate-700' }} mt-1">
|
||||
<i class="fas fa-car w-5"></i> Fleet
|
||||
</a>
|
||||
<a href="{{ route('customers.index') }}" class="flex items-center gap-3 px-4 py-2.5 rounded-lg {{ request()->routeIs('customers.*') ? 'bg-blue-600 text-white' : 'text-slate-300 hover:bg-slate-700' }} mt-1">
|
||||
<i class="fas fa-users w-5"></i> Customers
|
||||
</a>
|
||||
<a href="{{ route('rentals.index') }}" class="flex items-center gap-3 px-4 py-2.5 rounded-lg {{ request()->routeIs('rentals.*') ? 'bg-blue-600 text-white' : 'text-slate-300 hover:bg-slate-700' }} mt-1">
|
||||
<i class="fas fa-calendar-check w-5"></i> Rentals
|
||||
</a>
|
||||
<a href="{{ route('services.index') }}" class="flex items-center gap-3 px-4 py-2.5 rounded-lg {{ request()->routeIs('services.*') ? 'bg-blue-600 text-white' : 'text-slate-300 hover:bg-slate-700' }} mt-1">
|
||||
<i class="fas fa-tools w-5"></i> Services
|
||||
</a>
|
||||
<a href="{{ route('payments.index') }}" class="flex items-center gap-3 px-4 py-2.5 rounded-lg {{ request()->routeIs('payments.*') ? 'bg-blue-600 text-white' : 'text-slate-300 hover:bg-slate-700' }} mt-1">
|
||||
<i class="fas fa-credit-card w-5"></i> Payments
|
||||
</a>
|
||||
</nav>
|
||||
|
||||
<!-- Dark Mode Toggle -->
|
||||
<div class="absolute bottom-4 left-0 right-0 px-3">
|
||||
<button onclick="toggleDarkMode()" class="w-full flex items-center justify-center gap-2 px-4 py-2 rounded-lg bg-slate-700 hover:bg-slate-600 text-white text-sm">
|
||||
<i class="fas fa-moon" id="darkModeIcon"></i>
|
||||
<span id="darkModeText">Dark Mode</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Main Content -->
|
||||
<div class="ml-64 p-8">
|
||||
@yield('content')
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function toggleDarkMode() {
|
||||
document.documentElement.classList.toggle('dark');
|
||||
localStorage.setItem('darkMode', document.documentElement.classList.contains('dark'));
|
||||
updateDarkModeButton();
|
||||
}
|
||||
|
||||
function updateDarkModeButton() {
|
||||
const isDark = document.documentElement.classList.contains('dark');
|
||||
document.getElementById('darkModeIcon').className = isDark ? 'fas fa-sun w-5' : 'fas fa-moon w-5';
|
||||
document.getElementById('darkModeText').textContent = isDark ? 'Light Mode' : 'Dark Mode';
|
||||
}
|
||||
|
||||
// Initialize button state
|
||||
updateDarkModeButton();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,58 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Record Payment')
|
||||
|
||||
@section('content')
|
||||
<div class="mb-8">
|
||||
<a href="{{ route('payments.index') }}" class="text-blue-600 hover:text-blue-800 flex items-center gap-2 mb-4">
|
||||
<i class="fas fa-arrow-left"></i> Back to Payments
|
||||
</a>
|
||||
<h2 class="text-3xl font-bold text-gray-800">Record Payment</h2>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-2xl shadow-sm border border-gray-200 p-8">
|
||||
<form action="{{ route('payments.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Rental</label>
|
||||
<select name="rental_id" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-cyan-500">
|
||||
<option value="">Select a rental</option>
|
||||
@foreach($rentals as $rental)
|
||||
<option value="{{ $rental->id }}">{{ $rental->car->brand }} {{ $rental->car->model }} - {{ $rental->customer->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Amount (BHD)</label>
|
||||
<input type="number" name="amount" step="0.01" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-cyan-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Method</label>
|
||||
<select name="method" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-cyan-500">
|
||||
<option value="cash">Cash</option>
|
||||
<option value="card">Card</option>
|
||||
<option value="bank_transfer">Bank Transfer</option>
|
||||
<option value="online">Online</option>
|
||||
<option value="other">Other</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Status</label>
|
||||
<select name="status" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-cyan-500">
|
||||
<option value="completed">Completed</option>
|
||||
<option value="pending">Pending</option>
|
||||
<option value="failed">Failed</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="md:col-span-2">
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Transaction ID (Optional)</label>
|
||||
<input type="text" name="transaction_id" class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-cyan-500">
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-6">
|
||||
<button type="submit" class="bg-cyan-600 text-white px-8 py-3 rounded-xl hover:bg-cyan-700">Record Payment</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,50 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Payments')
|
||||
|
||||
@section('content')
|
||||
<div class="flex justify-between items-center mb-6">
|
||||
<div>
|
||||
<h2 class="text-xl font-bold text-gray-800">Payments</h2>
|
||||
<p class="text-gray-500 text-sm">Track payments</p>
|
||||
</div>
|
||||
<a href="{{ route('payments.create') }}" class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 flex items-center gap-2 text-sm font-medium">
|
||||
<i class="fas fa-plus"></i> Record Payment
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden">
|
||||
<table class="w-full">
|
||||
<thead class="bg-gray-50 border-b border-gray-200">
|
||||
<tr>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Rental</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Amount</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Method</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Status</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Date</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-gray-100">
|
||||
@forelse($payments as $payment)
|
||||
<tr class="hover:bg-gray-50">
|
||||
<td class="px-5 py-4 text-gray-800 text-sm">{{ $payment->rental->car->brand }} {{ $payment->rental->car->model }}</td>
|
||||
<td class="px-5 py-4 font-medium text-gray-800 text-sm"> BHD {{ number_format($payment->amount, 0) }}</td>
|
||||
<td class="px-5 py-4 text-gray-600 text-sm capitalize">{{ $payment->method }}</td>
|
||||
<td class="px-5 py-4">
|
||||
<span class="px-2.5 py-1 rounded-full text-xs font-medium
|
||||
{{ $payment->status == 'completed' ? 'bg-green-100 text-green-700' :
|
||||
($payment->status == 'pending' ? 'bg-amber-100 text-amber-700' : 'bg-red-100 text-red-700') }}">
|
||||
{{ ucfirst($payment->status) }}
|
||||
</span>
|
||||
</td>
|
||||
<td class="px-5 py-4 text-gray-600 text-sm">{{ $payment->created_at->format('M d, Y') }}</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="5" class="px-5 py-8 text-center text-gray-500">No payments recorded</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,65 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Payment Details')
|
||||
|
||||
@section('content')
|
||||
<div class="mb-6">
|
||||
<a href="{{ route('payments.index') }}" class="text-blue-600 hover:text-blue-800 flex items-center gap-2 mb-4">
|
||||
<i class="fas fa-arrow-left"></i> Back to Payments
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-6">
|
||||
<div class="flex items-center justify-between mb-6">
|
||||
<h2 class="text-xl font-bold text-gray-800">Payment #{{ $payment->id }}</h2>
|
||||
<span class="px-3 py-1 rounded-full text-sm font-medium
|
||||
{{ $payment->status == 'completed' ? 'bg-green-100 text-green-700' :
|
||||
($payment->status == 'pending' ? 'bg-amber-100 text-amber-700' : 'bg-red-100 text-red-700') }}">
|
||||
{{ ucfirst($payment->status) }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6">
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Amount</p>
|
||||
<p class="text-2xl font-bold text-gray-800"> BHD {{ number_format($payment->amount, 0) }}</p>
|
||||
</div>
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Method</p>
|
||||
<p class="font-semibold text-gray-800 capitalize">{{ $payment->method }}</p>
|
||||
</div>
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Rental</p>
|
||||
<a href="{{ route('rentals.show', $payment->rental) }}" class="font-semibold text-blue-600 hover:underline">
|
||||
{{ $payment->rental->car->brand }} {{ $payment->rental->car->model }}
|
||||
</a>
|
||||
</div>
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Date</p>
|
||||
<p class="font-semibold text-gray-800">{{ $payment->created_at->format('M d, Y') }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if($payment->transaction_id)
|
||||
<div class="border-t pt-4">
|
||||
<p class="text-gray-500 text-sm mb-1">Transaction ID</p>
|
||||
<p class="text-gray-700 font-mono">{{ $payment->transaction_id }}</p>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if($payment->notes)
|
||||
<div class="border-t pt-4 mt-4">
|
||||
<p class="text-gray-500 text-sm mb-1">Notes</p>
|
||||
<p class="text-gray-700">{{ $payment->notes }}</p>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="flex gap-3 mt-6">
|
||||
<form action="{{ route('payments.destroy', $payment) }}" method="POST">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="bg-red-600 text-white px-4 py-2 rounded-lg hover:bg-red-700 text-sm" onclick="return confirm('Delete this payment?')">Delete Payment</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,143 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'New Rental')
|
||||
|
||||
@section('content')
|
||||
<div class="mb-8">
|
||||
<a href="{{ route('rentals.index') }}" class="text-blue-600 hover:text-blue-800 flex items-center gap-2 mb-4">
|
||||
<i class="fas fa-arrow-left"></i> Back to Rentals
|
||||
</a>
|
||||
<h2 class="text-3xl font-bold text-gray-800">New Rental</h2>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-2xl shadow-sm border border-gray-200 p-8">
|
||||
<form action="{{ route('rentals.store') }}" method="POST" id="rentalForm">
|
||||
@csrf
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Car</label>
|
||||
<select name="car_id" id="carSelect" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-amber-500">
|
||||
<option value="">Select a car</option>
|
||||
@foreach($cars as $car)
|
||||
<option value="{{ $car->id }}" data-daily-rate="{{ $car->daily_rate }}">{{ $car->brand }} {{ $car->model }} - BHD {{ $car->daily_rate }}/day</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Customer</label>
|
||||
<select name="customer_id" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-amber-500">
|
||||
<option value="">Select a customer</option>
|
||||
@foreach($customers as $customer)
|
||||
<option value="{{ $customer->id }}">{{ $customer->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Rental Type</label>
|
||||
<select name="rental_type" id="rentalType" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-amber-500">
|
||||
<option value="daily" data-days="1">Daily</option>
|
||||
<option value="weekly" data-days="7">Weekly</option>
|
||||
<option value="monthly" data-days="30">Monthly</option>
|
||||
<option value="lease" data-days="365">Lease (1 Year)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Start Date</label>
|
||||
<input type="date" name="start_date" id="startDate" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-amber-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Pickup Time</label>
|
||||
<input type="time" name="pickup_time" id="pickupTime" class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-amber-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">End Date</label>
|
||||
<input type="date" name="end_date" id="endDate" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-amber-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Return Time</label>
|
||||
<input type="time" name="return_time" id="returnTime" class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-amber-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Total Amount (BHD)</label>
|
||||
<input type="number" name="total_amount" id="totalAmount" step="0.01" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-amber-500" readonly>
|
||||
<p class="text-xs text-gray-500 mt-1" id="priceInfo">Select a car to see pricing</p>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Advance Payment (BHD)</label>
|
||||
<input type="number" name="advance_payment" id="advancePayment" step="0.01" value="0" class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-amber-500">
|
||||
</div>
|
||||
<div class="md:col-span-2">
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Notes</label>
|
||||
<textarea name="notes" rows="3" class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-amber-500"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-6">
|
||||
<button type="submit" class="bg-amber-600 text-white px-8 py-3 rounded-xl hover:bg-amber-700">Create Rental</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const carSelect = document.getElementById('carSelect');
|
||||
const rentalType = document.getElementById('rentalType');
|
||||
const startDate = document.getElementById('startDate');
|
||||
const endDate = document.getElementById('endDate');
|
||||
const totalAmount = document.getElementById('totalAmount');
|
||||
const priceInfo = document.getElementById('priceInfo');
|
||||
const advancePayment = document.getElementById('advancePayment');
|
||||
|
||||
// Pricing multipliers for each rental type
|
||||
const pricing = {
|
||||
daily: 1,
|
||||
weekly: 0.9, // 10% discount
|
||||
monthly: 0.8, // 20% discount
|
||||
lease: 0.7 // 30% discount
|
||||
};
|
||||
|
||||
function calculatePrice() {
|
||||
const selectedOption = carSelect.options[carSelect.selectedIndex];
|
||||
const dailyRate = parseFloat(selectedOption.dataset.dailyRate) || 0;
|
||||
const rentalTypeOption = rentalType.options[rentalType.selectedIndex];
|
||||
const days = parseInt(rentalTypeOption.dataset.days) || 1;
|
||||
|
||||
if (!dailyRate || !days) {
|
||||
priceInfo.textContent = 'Select a car and rental type to see pricing';
|
||||
return;
|
||||
}
|
||||
|
||||
const multiplier = pricing[rentalType.value];
|
||||
let total = 0;
|
||||
let infoText = '';
|
||||
|
||||
if (rentalType.value === 'lease') {
|
||||
total = dailyRate * days * multiplier;
|
||||
infoText = `Lease (365 days) @ BHD ${dailyRate}/day with ${(1-multiplier)*100}% discount`;
|
||||
} else {
|
||||
// Calculate based on actual dates if available
|
||||
if (startDate.value && endDate.value) {
|
||||
const start = new Date(startDate.value);
|
||||
const end = new Date(endDate.value);
|
||||
const diffTime = Math.abs(end - start);
|
||||
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)) + 1;
|
||||
|
||||
total = dailyRate * diffDays * multiplier;
|
||||
infoText = `${diffDays} days @ BHD ${dailyRate}/day with ${(1-multiplier)*100}% discount`;
|
||||
} else {
|
||||
total = dailyRate * days * multiplier;
|
||||
infoText = `${days} days @ BHD ${dailyRate}/day with ${(1-multiplier)*100}% discount`;
|
||||
}
|
||||
}
|
||||
|
||||
totalAmount.value = total.toFixed(2);
|
||||
priceInfo.textContent = infoText;
|
||||
|
||||
// Auto-set advance payment to 50% of total
|
||||
advancePayment.value = (total * 0.5).toFixed(2);
|
||||
}
|
||||
|
||||
carSelect.addEventListener('change', calculatePrice);
|
||||
rentalType.addEventListener('change', calculatePrice);
|
||||
startDate.addEventListener('change', calculatePrice);
|
||||
endDate.addEventListener('change', calculatePrice);
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,126 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Rentals')
|
||||
|
||||
@section('content')
|
||||
<div class="flex justify-between items-center mb-6">
|
||||
<div>
|
||||
<h2 class="text-xl font-bold text-gray-800">Rentals</h2>
|
||||
<p class="text-gray-500 text-sm">Manage rentals</p>
|
||||
</div>
|
||||
<a href="{{ route('rentals.create') }}" class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 flex items-center gap-2 text-sm font-medium">
|
||||
<i class="fas fa-plus"></i> New Rental
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden">
|
||||
<table class="w-full">
|
||||
<thead class="bg-gray-50 border-b border-gray-200">
|
||||
<tr>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Car</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Type</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Customer</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Dates</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Amount</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Status</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-gray-100">
|
||||
@forelse($rentals as $rental)
|
||||
<tr class="hover:bg-gray-50">
|
||||
<td class="px-5 py-4 text-gray-800 text-sm">{{ $rental->car->brand }} {{ $rental->car->model }}</td>
|
||||
<td class="px-5 py-4">
|
||||
<span class="px-2 py-1 rounded text-xs font-medium bg-blue-100 text-blue-700 capitalize">{{ $rental->rental_type }}</span>
|
||||
</td>
|
||||
<td class="px-5 py-4 text-gray-600 text-sm">{{ $rental->customer->name }}</td>
|
||||
<td class="px-5 py-4 text-gray-600 text-sm">
|
||||
@if($rental->pickup_time)
|
||||
{{ $rental->start_date->format('M d') }} {{ $rental->pickup_time->format('H:i') }}
|
||||
@else
|
||||
{{ $rental->start_date->format('M d') }}
|
||||
@endif
|
||||
-
|
||||
@if($rental->return_time)
|
||||
{{ $rental->end_date->format('M d') }} {{ $rental->return_time->format('H:i') }}
|
||||
@else
|
||||
{{ $rental->end_date->format('M d, Y') }}
|
||||
@endif
|
||||
</td>
|
||||
<td class="px-5 py-4 text-gray-800 font-medium text-sm"> BHD {{ number_format($rental->total_amount, 0) }}</td>
|
||||
<td class="px-5 py-4">
|
||||
<span class="px-2.5 py-1 rounded-full text-xs font-medium
|
||||
{{ $rental->status == 'active' ? 'bg-green-100 text-green-700' :
|
||||
($rental->status == 'pending' ? 'bg-amber-100 text-amber-700' : 'bg-gray-100 text-gray-600') }}">
|
||||
{{ ucfirst($rental->status) }}
|
||||
</span>
|
||||
</td>
|
||||
<td class="px-5 py-4">
|
||||
<button type="button" class="text-blue-600 hover:text-blue-800 mr-2 text-sm" title="View Contract" onclick="showContractModal({{ $rental->id }})"><i class="fas fa-file-alt"></i></button>
|
||||
<a href="{{ route('rentals.contract.download', $rental) }}" class="text-red-600 hover:text-red-800 mr-3 text-sm" title="Download PDF"><i class="fas fa-file-pdf"></i></a>
|
||||
<a href="{{ route('rentals.show', $rental) }}" class="text-green-600 hover:text-green-800 mr-3 text-sm"><i class="fas fa-eye"></i></a>
|
||||
<a href="{{ route('rentals.updateStatus', [$rental, 'completed']) }}"
|
||||
class="text-green-600 hover:text-green-800 mr-2 text-sm"
|
||||
title="Complete"
|
||||
onclick="return confirm('Mark this rental as completed?')">
|
||||
<i class="fas fa-check"></i>
|
||||
</a>
|
||||
<form action="{{ route('rentals.destroy', $rental) }}" method="POST" class="inline">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="text-red-600 hover:text-red-800 text-sm" onclick="return confirm('Cancel this rental?')"><i class="fas fa-trash"></i></button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="7" class="px-5 py-8 text-center text-gray-500">No rentals yet</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- Contract Modal -->
|
||||
<div id="contractModal" class="fixed inset-0 bg-black bg-opacity-50 hidden z-50 flex items-center justify-center">
|
||||
<div class="bg-white rounded-lg shadow-xl w-full max-w-4xl max-h-[90vh] overflow-hidden">
|
||||
<div class="flex justify-between items-center px-6 py-4 border-b">
|
||||
<h3 class="text-lg font-semibold">Rental Contract</h3>
|
||||
<div>
|
||||
<a id="modalDownloadBtn" href="#" class="text-red-600 hover:text-red-800 mr-4 text-sm"><i class="fas fa-download mr-1"></i> Download PDF</a>
|
||||
<button type="button" onclick="closeContractModal()" class="text-gray-500 hover:text-gray-700"><i class="fas fa-times text-xl"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-0 overflow-auto max-h-[calc(90vh-80px)]">
|
||||
<iframe id="contractFrame" src="" class="w-full h-[70vh] border-0"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function showContractModal(rentalId) {
|
||||
const modal = document.getElementById('contractModal');
|
||||
const frame = document.getElementById('contractFrame');
|
||||
const downloadBtn = document.getElementById('modalDownloadBtn');
|
||||
|
||||
frame.src = '/rentals/' + rentalId + '/contract';
|
||||
downloadBtn.href = '/rentals/' + rentalId + '/contract/download';
|
||||
modal.classList.remove('hidden');
|
||||
}
|
||||
|
||||
function closeContractModal() {
|
||||
document.getElementById('contractModal').classList.add('hidden');
|
||||
document.getElementById('contractFrame').src = '';
|
||||
}
|
||||
|
||||
// Close modal on outside click
|
||||
document.getElementById('contractModal').addEventListener('click', function(e) {
|
||||
if (e.target === this) closeContractModal();
|
||||
});
|
||||
|
||||
// Close modal on Escape key
|
||||
document.addEventListener('keydown', function(e) {
|
||||
if (e.key === 'Escape') closeContractModal();
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,187 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Rental Details')
|
||||
|
||||
@section('content')
|
||||
<div class="mb-6">
|
||||
<a href="{{ route('rentals.index') }}" class="text-blue-600 hover:text-blue-800 flex items-center gap-2 mb-4">
|
||||
<i class="fas fa-arrow-left"></i> Back to Rentals
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
|
||||
<!-- Rental Details -->
|
||||
<div class="lg:col-span-2">
|
||||
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-6">
|
||||
<div class="flex items-center justify-between mb-6">
|
||||
<div>
|
||||
<h2 class="text-xl font-bold text-gray-800">Rental #{{ $rental->id }}</h2>
|
||||
<span class="px-2 py-1 rounded text-xs font-medium bg-blue-100 text-blue-700 capitalize">{{ $rental->rental_type }}</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-3">
|
||||
<button type="button" onclick="showContractModal({{ $rental->id }})" class="text-blue-600 hover:text-blue-800 p-2" title="View Contract"><i class="fas fa-file-alt text-lg"></i></button>
|
||||
<a href="{{ route('rentals.contract.download', $rental) }}" class="text-red-600 hover:text-red-800 p-2" title="Download PDF"><i class="fas fa-file-pdf text-lg"></i></a>
|
||||
<span class="px-3 py-1 rounded-full text-sm font-medium
|
||||
{{ $rental->status == 'active' ? 'bg-green-100 text-green-700' :
|
||||
($rental->status == 'pending' ? 'bg-amber-100 text-amber-700' : 'bg-gray-100 text-gray-600') }}">
|
||||
{{ ucfirst($rental->status) }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-2 gap-4 mb-6">
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Car</p>
|
||||
<p class="font-semibold text-gray-800">{{ $rental->car->brand }} {{ $rental->car->model }}</p>
|
||||
<p class="text-gray-500 text-sm">{{ $rental->car->license_plate }}</p>
|
||||
</div>
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Customer</p>
|
||||
<p class="font-semibold text-gray-800">{{ $rental->customer->name }}</p>
|
||||
<p class="text-gray-500 text-sm">{{ $rental->customer->phone }}</p>
|
||||
</div>
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Start Date</p>
|
||||
<p class="font-semibold text-gray-800">
|
||||
{{ $rental->start_date->format('M d, Y') }}
|
||||
@if($rental->pickup_time)
|
||||
<span class="text-blue-600">@ {{ $rental->pickup_time->format('H:i') }}</span>
|
||||
@endif
|
||||
</p>
|
||||
</div>
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">End Date</p>
|
||||
<p class="font-semibold text-gray-800">
|
||||
{{ $rental->end_date->format('M d, Y') }}
|
||||
@if($rental->return_time)
|
||||
<span class="text-blue-600">@ {{ $rental->return_time->format('H:i') }}</span>
|
||||
@endif
|
||||
</p>
|
||||
</div>
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Total Amount</p>
|
||||
<p class="font-semibold text-gray-800"> BHD {{ number_format($rental->total_amount, 0) }}</p>
|
||||
</div>
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Advance Payment</p>
|
||||
<p class="font-semibold text-gray-800"> BHD {{ number_format($rental->advance_payment, 0) }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if($rental->notes)
|
||||
<div class="border-t pt-4">
|
||||
<p class="text-gray-500 text-sm mb-1">Notes</p>
|
||||
<p class="text-gray-700">{{ $rental->notes }}</p>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="flex gap-3 mt-6">
|
||||
@if($rental->status != 'completed')
|
||||
<a href="{{ route('rentals.updateStatus', [$rental, 'completed']) }}"
|
||||
class="bg-green-600 text-white px-4 py-2 rounded-lg hover:bg-green-700 text-sm inline-block"
|
||||
onclick="return confirm('Mark this rental as completed?')">
|
||||
Mark Completed
|
||||
</a>
|
||||
@endif
|
||||
<form action="{{ route('rentals.destroy', $rental) }}" method="POST">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="bg-red-600 text-white px-4 py-2 rounded-lg hover:bg-red-700 text-sm" onclick="return confirm('Cancel this rental?')">Cancel Rental</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Sidebar -->
|
||||
<div>
|
||||
<!-- Car Card -->
|
||||
<a href="{{ route('cars.show', $rental->car) }}" class="block bg-white rounded-xl shadow-sm border border-gray-200 p-4 mb-4 hover:border-blue-400 transition">
|
||||
<h3 class="font-semibold text-gray-800 mb-2">Car Details</h3>
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="w-12 h-12 rounded-lg bg-blue-100 flex items-center justify-center">
|
||||
<i class="fas fa-car text-blue-600"></i>
|
||||
</div>
|
||||
<div>
|
||||
<p class="font-medium text-gray-800">{{ $rental->car->brand }} {{ $rental->car->model }}</p>
|
||||
<p class="text-sm text-gray-500">{{ $rental->car->year }} • {{ $rental->car->color }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<!-- Customer Card -->
|
||||
<a href="{{ route('customers.show', $rental->customer) }}" class="block bg-white rounded-xl shadow-sm border border-gray-200 p-4 mb-4 hover:border-purple-400 transition">
|
||||
<h3 class="font-semibold text-gray-800 mb-2">Customer Details</h3>
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="w-12 h-12 rounded-full bg-gray-200 flex items-center justify-center">
|
||||
<span class="text-gray-600 font-semibold">{{ substr($rental->customer->name, 0, 1) }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<p class="font-medium text-gray-800">{{ $rental->customer->name }}</p>
|
||||
<p class="text-sm text-gray-500">{{ $rental->customer->phone }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<!-- Payments -->
|
||||
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-4">
|
||||
<h3 class="font-semibold text-gray-800 mb-3">Payments</h3>
|
||||
@forelse($rental->payments as $payment)
|
||||
<div class="flex justify-between items-center py-2 border-b last:border-0">
|
||||
<div>
|
||||
<p class="text-gray-800 text-sm"> BHD {{ number_format($payment->amount, 0) }}</p>
|
||||
<p class="text-gray-500 text-xs">{{ $payment->method }}</p>
|
||||
</div>
|
||||
<span class="px-2 py-1 rounded text-xs font-medium
|
||||
{{ $payment->status == 'completed' ? 'bg-green-100 text-green-700' : 'bg-amber-100 text-amber-700' }}">
|
||||
{{ $payment->status }}
|
||||
</span>
|
||||
</div>
|
||||
@empty
|
||||
<p class="text-gray-500 text-sm">No payments yet</p>
|
||||
@endforelse
|
||||
<a href="{{ route('payments.create') }}?rental_id={{ $rental->id }}" class="block w-full bg-blue-600 text-white text-center py-2 rounded-lg mt-3 hover:bg-blue-700 text-sm">Add Payment</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Contract Modal -->
|
||||
<div id="contractModal" class="fixed inset-0 bg-black bg-opacity-50 hidden z-50 flex items-center justify-center">
|
||||
<div class="bg-white rounded-lg shadow-xl w-full max-w-4xl max-h-[90vh] overflow-hidden">
|
||||
<div class="flex justify-between items-center px-6 py-4 border-b">
|
||||
<h3 class="text-lg font-semibold">Rental Contract</h3>
|
||||
<div>
|
||||
<a id="modalDownloadBtn" href="#" class="text-red-600 hover:text-red-800 mr-4 text-sm"><i class="fas fa-download mr-1"></i> Download PDF</a>
|
||||
<button type="button" onclick="closeContractModal()" class="text-gray-500 hover:text-gray-700"><i class="fas fa-times text-xl"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="p-0 overflow-auto max-h-[calc(90vh-80px)]">
|
||||
<iframe id="contractFrame" src="" class="w-full h-[70vh] border-0"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function showContractModal(rentalId) {
|
||||
const modal = document.getElementById('contractModal');
|
||||
const frame = document.getElementById('contractFrame');
|
||||
const downloadBtn = document.getElementById('modalDownloadBtn');
|
||||
|
||||
frame.src = '/rentals/' + rentalId + '/contract';
|
||||
downloadBtn.href = '/rentals/' + rentalId + '/contract/download';
|
||||
modal.classList.remove('hidden');
|
||||
}
|
||||
|
||||
function closeContractModal() {
|
||||
document.getElementById('contractModal').classList.add('hidden');
|
||||
document.getElementById('contractFrame').src = '';
|
||||
}
|
||||
|
||||
document.getElementById('contractModal').addEventListener('click', function(e) {
|
||||
if (e.target === this) closeContractModal();
|
||||
});
|
||||
|
||||
document.addEventListener('keydown', function(e) {
|
||||
if (e.key === 'Escape') closeContractModal();
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
@@ -0,0 +1,56 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Schedule Service')
|
||||
|
||||
@section('content')
|
||||
<div class="mb-8">
|
||||
<a href="{{ route('services.index') }}" class="text-blue-600 hover:text-blue-800 flex items-center gap-2 mb-4">
|
||||
<i class="fas fa-arrow-left"></i> Back to Services
|
||||
</a>
|
||||
<h2 class="text-3xl font-bold text-gray-800">Schedule Service</h2>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-2xl shadow-sm border border-gray-200 p-8">
|
||||
<form action="{{ route('services.store') }}" method="POST">
|
||||
@csrf
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Car</label>
|
||||
<select name="car_id" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
<option value="">Select a car</option>
|
||||
@foreach($cars as $car)
|
||||
<option value="{{ $car->id }}">{{ $car->brand }} {{ $car->model }} ({{ $car->license_plate }})</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Service Type</label>
|
||||
<select name="type" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
<option value="oil_change">Oil Change</option>
|
||||
<option value="tire_rotation">Tire Rotation</option>
|
||||
<option value="brake_service">Brake Service</option>
|
||||
<option value="general_checkup">General Checkup</option>
|
||||
<option value="repair">Repair</option>
|
||||
<option value="insurance">Insurance</option>
|
||||
<option value="other">Other</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Service Date</label>
|
||||
<input type="date" name="service_date" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Cost (BHD)</label>
|
||||
<input type="number" name="cost" step="0.01" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500">
|
||||
</div>
|
||||
<div class="md:col-span-2">
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">Description</label>
|
||||
<textarea name="description" rows="3" required class="w-full px-4 py-3 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-purple-500"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-6">
|
||||
<button type="submit" class="bg-purple-600 text-white px-8 py-3 rounded-xl hover:bg-purple-700">Record Service</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,49 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Services')
|
||||
|
||||
@section('content')
|
||||
<div class="flex justify-between items-center mb-6">
|
||||
<div>
|
||||
<h2 class="text-xl font-bold text-gray-800">Services</h2>
|
||||
<p class="text-gray-500 text-sm">Track maintenance & services</p>
|
||||
</div>
|
||||
<a href="{{ route('services.create') }}" class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 flex items-center gap-2 text-sm font-medium">
|
||||
<i class="fas fa-plus"></i> Schedule Service
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden">
|
||||
<table class="w-full">
|
||||
<thead class="bg-gray-50 border-b border-gray-200">
|
||||
<tr>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Car</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Type</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Date</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Cost</th>
|
||||
<th class="px-5 py-3 text-left text-xs font-semibold text-gray-600 uppercase">Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-gray-100">
|
||||
@forelse($services as $service)
|
||||
<tr class="hover:bg-gray-50">
|
||||
<td class="px-5 py-4 text-gray-800 text-sm">{{ $service->car->brand }} {{ $service->car->model }}</td>
|
||||
<td class="px-5 py-4 text-gray-600 text-sm capitalize">{{ str_replace('_', ' ', $service->type) }}</td>
|
||||
<td class="px-5 py-4 text-gray-600 text-sm">{{ $service->service_date->format('M d, Y') }}</td>
|
||||
<td class="px-5 py-4 text-gray-800 font-medium text-sm"> BHD {{ number_format($service->cost, 0) }}</td>
|
||||
<td class="px-5 py-4">
|
||||
<span class="px-2.5 py-1 rounded-full text-xs font-medium
|
||||
{{ $service->status == 'completed' ? 'bg-green-100 text-green-700' : 'bg-amber-100 text-amber-700' }}">
|
||||
{{ ucfirst($service->status) }}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="5" class="px-5 py-8 text-center text-gray-500">No services recorded</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,86 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('title', 'Service Details')
|
||||
|
||||
@section('content')
|
||||
<div class="mb-6">
|
||||
<a href="{{ route('services.index') }}" class="text-blue-600 hover:text-blue-800 flex items-center gap-2 mb-4">
|
||||
<i class="fas fa-arrow-left"></i> Back to Services
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
|
||||
<div class="lg:col-span-2">
|
||||
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-6">
|
||||
<div class="flex items-center justify-between mb-6">
|
||||
<h2 class="text-xl font-bold text-gray-800">Service #{{ $service->id }}</h2>
|
||||
<span class="px-3 py-1 rounded-full text-sm font-medium
|
||||
{{ $service->status == 'completed' ? 'bg-green-100 text-green-700' : 'bg-amber-100 text-amber-700' }}">
|
||||
{{ ucfirst($service->status) }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-2 gap-4 mb-6">
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Car</p>
|
||||
<p class="font-semibold text-gray-800">{{ $service->car->brand }} {{ $service->car->model }}</p>
|
||||
<p class="text-gray-500 text-sm">{{ $service->car->license_plate }}</p>
|
||||
</div>
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Service Type</p>
|
||||
<p class="font-semibold text-gray-800 capitalize">{{ str_replace('_', ' ', $service->type) }}</p>
|
||||
</div>
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Service Date</p>
|
||||
<p class="font-semibold text-gray-800">{{ $service->service_date->format('M d, Y') }}</p>
|
||||
</div>
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Cost</p>
|
||||
<p class="font-semibold text-gray-800"> BHD {{ number_format($service->cost, 0) }}</p>
|
||||
</div>
|
||||
@if($service->next_service_date)
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Next Service</p>
|
||||
<p class="font-semibold text-gray-800">{{ $service->next_service_date->format('M d, Y') }}</p>
|
||||
</div>
|
||||
@endif
|
||||
@if($service->mileage_at_service)
|
||||
<div class="bg-gray-50 rounded-lg p-4">
|
||||
<p class="text-gray-500 text-sm">Mileage</p>
|
||||
<p class="font-semibold text-gray-800">{{ number_format($service->mileage_at_service) }} km</p>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="border-t pt-4">
|
||||
<p class="text-gray-500 text-sm mb-1">Description</p>
|
||||
<p class="text-gray-700">{{ $service->description }}</p>
|
||||
</div>
|
||||
|
||||
<div class="flex gap-3 mt-6">
|
||||
<a href="{{ route('services.edit', $service) }}" class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 text-sm">Edit Service</a>
|
||||
<form action="{{ route('services.destroy', $service) }}" method="POST">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="bg-red-600 text-white px-4 py-2 rounded-lg hover:bg-red-700 text-sm" onclick="return confirm('Delete this service?')">Delete Service</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<a href="{{ route('cars.show', $service->car) }}" class="block bg-white rounded-xl shadow-sm border border-gray-200 p-4 hover:border-blue-400 transition">
|
||||
<h3 class="font-semibold text-gray-800 mb-2">Car Details</h3>
|
||||
<div class="flex items-center gap-3">
|
||||
<div class="w-12 h-12 rounded-lg bg-blue-100 flex items-center justify-center">
|
||||
<i class="fas fa-car text-blue-600"></i>
|
||||
</div>
|
||||
<div>
|
||||
<p class="font-medium text-gray-800">{{ $service->car->brand }} {{ $service->car->model }}</p>
|
||||
<p class="text-sm text-gray-500">{{ $service->car->license_plate }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -0,0 +1,125 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Settings - {{ config('settings.company_name') }}</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
|
||||
<script>
|
||||
if (localStorage.getItem('darkMode') === 'true' || (!localStorage.getItem('darkMode') && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
|
||||
document.documentElement.classList.add('dark');
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body class="bg-gray-100 dark:bg-slate-900 min-h-screen transition-colors">
|
||||
<!-- Sidebar -->
|
||||
<div class="fixed left-0 top-0 h-full w-64 bg-slate-800">
|
||||
<div class="p-6 border-b border-slate-700">
|
||||
<h1 class="text-xl font-bold text-white flex items-center gap-2">
|
||||
<i class="fas fa-road text-blue-400"></i>
|
||||
{{ config('settings.company_name') }}
|
||||
</h1>
|
||||
<p class="text-slate-400 text-xs mt-1">{{ config('settings.company_tagline') }}</p>
|
||||
</div>
|
||||
<nav class="mt-4 px-4">
|
||||
<a href="{{ route('dashboard') }}" class="flex items-center gap-3 px-4 py-3 rounded-lg {{ request()->routeIs('dashboard') ? 'bg-blue-600 text-white' : 'text-slate-300 hover:bg-slate-700' }}">
|
||||
<i class="fas fa-chart-line w-5"></i> Dashboard
|
||||
</a>
|
||||
<a href="{{ route('cars.index') }}" class="flex items-center gap-3 px-4 py-3 rounded-lg {{ request()->routeIs('cars.*') ? 'bg-blue-600 text-white' : 'text-slate-300 hover:bg-slate-700' }} mt-1">
|
||||
<i class="fas fa-car w-5"></i> Fleet
|
||||
</a>
|
||||
<a href="{{ route('customers.index') }}" class="flex items-center gap-3 px-4 py-3 rounded-lg {{ request()->routeIs('customers.*') ? 'bg-blue-600 text-white' : 'text-slate-300 hover:bg-slate-700' }} mt-1">
|
||||
<i class="fas fa-users w-5"></i> Customers
|
||||
</a>
|
||||
<a href="{{ route('rentals.index') }}" class="flex items-center gap-3 px-4 py-3 rounded-lg {{ request()->routeIs('rentals.*') ? 'bg-blue-600 text-white' : 'text-slate-300 hover:bg-slate-700' }} mt-1">
|
||||
<i class="fas fa-calendar-check w-5"></i> Rentals
|
||||
</a>
|
||||
<a href="{{ route('services.index') }}" class="flex items-center gap-3 px-4 py-3 rounded-lg {{ request()->routeIs('services.*') ? 'bg-blue-600 text-white' : 'text-slate-300 hover:bg-slate-700' }} mt-1">
|
||||
<i class="fas fa-tools w-5"></i> Services
|
||||
</a>
|
||||
<a href="{{ route('payments.index') }}" class="flex items-center gap-3 px-4 py-3 rounded-lg {{ request()->routeIs('payments.*') ? 'bg-blue-600 text-white' : 'text-slate-300 hover:bg-slate-700' }} mt-1">
|
||||
<i class="fas fa-credit-card w-5"></i> Payments
|
||||
</a>
|
||||
<a href="{{ route('settings.index') }}" class="flex items-center gap-3 px-4 py-3 rounded-lg {{ request()->routeIs('settings.*') ? 'bg-blue-600 text-white' : 'text-slate-300 hover:bg-slate-700' }} mt-1">
|
||||
<i class="fas fa-cog w-5"></i> Settings
|
||||
</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<!-- Main Content -->
|
||||
<div class="ml-64 p-8">
|
||||
<div class="max-w-2xl mx-auto">
|
||||
<h2 class="text-2xl font-bold text-gray-800 dark:text-white mb-6">Settings</h2>
|
||||
|
||||
@if(session('success'))
|
||||
<div class="bg-green-100 border border-green-400 text-green-700 px-4 py-3 rounded mb-4">
|
||||
{{ session('success') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- Logo Upload -->
|
||||
<div class="bg-white dark:bg-slate-800 rounded-lg shadow p-6 mb-6">
|
||||
<h3 class="text-lg font-semibold text-gray-800 dark:text-white mb-4">Company Logo</h3>
|
||||
<div class="flex items-center gap-6">
|
||||
<div class="w-32 h-32 bg-gray-100 dark:bg-slate-700 rounded-lg flex items-center justify-center overflow-hidden">
|
||||
@if(config('settings.logo'))
|
||||
<img src="{{ asset(config('settings.logo')) }}" alt="Logo" class="max-w-full max-h-full object-contain">
|
||||
@else
|
||||
<i class="fas fa-image text-4xl text-gray-400"></i>
|
||||
@endif
|
||||
</div>
|
||||
<form action="{{ route('settings.logo') }}" method="POST" enctype="multipart/form-data" class="flex-1">
|
||||
@csrf
|
||||
<input type="file" name="logo" accept="image/*" class="block w-full text-sm text-gray-500 file:mr-4 file:py-2 file:px-4 file:rounded-full file:border-0 file:text-sm file:font-semibold file:bg-blue-50 file:text-blue-700 hover:file:bg-blue-100 mb-3">
|
||||
<button type="submit" class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700">
|
||||
<i class="fas fa-upload mr-2"></i> Upload Logo
|
||||
</button>
|
||||
<p class="text-xs text-gray-500 mt-2">PNG, JPG, GIF, SVG. Max 2MB. Recommended: 200x60px</p>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Company Info -->
|
||||
<div class="bg-white dark:bg-slate-800 rounded-lg shadow p-6">
|
||||
<h3 class="text-lg font-semibold text-gray-800 dark:text-white mb-4">Company Information</h3>
|
||||
<form action="{{ route('settings.update') }}" method="POST">
|
||||
@csrf
|
||||
<div class="space-y-4">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">Company Name</label>
|
||||
<input type="text" name="company_name" value="{{ config('settings.company_name') }}" required
|
||||
class="w-full px-4 py-2 border rounded-lg dark:bg-slate-700 dark:border-slate-600 dark:text-white">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">Tagline</label>
|
||||
<input type="text" name="company_tagline" value="{{ config('settings.company_tagline') }}"
|
||||
class="w-full px-4 py-2 border rounded-lg dark:bg-slate-700 dark:border-slate-600 dark:text-white">
|
||||
</div>
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">Phone</label>
|
||||
<input type="text" name="phone" value="{{ config('settings.phone') }}"
|
||||
class="w-full px-4 py-2 border rounded-lg dark:bg-slate-700 dark:border-slate-600 dark:text-white">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">Email</label>
|
||||
<input type="email" name="email" value="{{ config('settings.email') }}"
|
||||
class="w-full px-4 py-2 border rounded-lg dark:bg-slate-700 dark:border-slate-600 dark:text-white">
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">Address</label>
|
||||
<input type="text" name="address" value="{{ config('settings.address') }}"
|
||||
class="w-full px-4 py-2 border rounded-lg dark:bg-slate-700 dark:border-slate-600 dark:text-white">
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="mt-4 bg-blue-600 text-white px-6 py-2 rounded-lg hover:bg-blue-700">
|
||||
<i class="fas fa-save mr-2"></i> Save Changes
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,277 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>{{ config('app.name', 'Laravel') }}</title>
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.bunny.net">
|
||||
<link href="https://fonts.bunny.net/css?family=instrument-sans:400,500,600" rel="stylesheet" />
|
||||
|
||||
<!-- Styles / Scripts -->
|
||||
@if (file_exists(public_path('build/manifest.json')) || file_exists(public_path('hot')))
|
||||
@vite(['resources/css/app.css', 'resources/js/app.js'])
|
||||
@else
|
||||
<style>
|
||||
/*! tailwindcss v4.0.7 | MIT License | https://tailwindcss.com */@layer theme{:root,:host{--font-sans:'Instrument Sans',ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-serif:ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(.971 .013 17.38);--color-red-100:oklch(.936 .032 17.717);--color-red-200:oklch(.885 .062 18.334);--color-red-300:oklch(.808 .114 19.571);--color-red-400:oklch(.704 .191 22.216);--color-red-500:oklch(.637 .237 25.331);--color-red-600:oklch(.577 .245 27.325);--color-red-700:oklch(.505 .213 27.518);--color-red-800:oklch(.444 .177 26.899);--color-red-900:oklch(.396 .141 25.723);--color-red-950:oklch(.258 .092 26.042);--color-orange-50:oklch(.98 .016 73.684);--color-orange-100:oklch(.954 .038 75.164);--color-orange-200:oklch(.901 .076 70.697);--color-orange-300:oklch(.837 .128 66.29);--color-orange-400:oklch(.75 .183 55.934);--color-orange-500:oklch(.705 .213 47.604);--color-orange-600:oklch(.646 .222 41.116);--color-orange-700:oklch(.553 .195 38.402);--color-orange-800:oklch(.47 .157 37.304);--color-orange-900:oklch(.408 .123 38.172);--color-orange-950:oklch(.266 .079 36.259);--color-amber-50:oklch(.987 .022 95.277);--color-amber-100:oklch(.962 .059 95.617);--color-amber-200:oklch(.924 .12 95.746);--color-amber-300:oklch(.879 .169 91.605);--color-amber-400:oklch(.828 .189 84.429);--color-amber-500:oklch(.769 .188 70.08);--color-amber-600:oklch(.666 .179 58.318);--color-amber-700:oklch(.555 .163 48.998);--color-amber-800:oklch(.473 .137 46.201);--color-amber-900:oklch(.414 .112 45.904);--color-amber-950:oklch(.279 .077 45.635);--color-yellow-50:oklch(.987 .026 102.212);--color-yellow-100:oklch(.973 .071 103.193);--color-yellow-200:oklch(.945 .129 101.54);--color-yellow-300:oklch(.905 .182 98.111);--color-yellow-400:oklch(.852 .199 91.936);--color-yellow-500:oklch(.795 .184 86.047);--color-yellow-600:oklch(.681 .162 75.834);--color-yellow-700:oklch(.554 .135 66.442);--color-yellow-800:oklch(.476 .114 61.907);--color-yellow-900:oklch(.421 .095 57.708);--color-yellow-950:oklch(.286 .066 53.813);--color-lime-50:oklch(.986 .031 120.757);--color-lime-100:oklch(.967 .067 122.328);--color-lime-200:oklch(.938 .127 124.321);--color-lime-300:oklch(.897 .196 126.665);--color-lime-400:oklch(.841 .238 128.85);--color-lime-500:oklch(.768 .233 130.85);--color-lime-600:oklch(.648 .2 131.684);--color-lime-700:oklch(.532 .157 131.589);--color-lime-800:oklch(.453 .124 130.933);--color-lime-900:oklch(.405 .101 131.063);--color-lime-950:oklch(.274 .072 132.109);--color-green-50:oklch(.982 .018 155.826);--color-green-100:oklch(.962 .044 156.743);--color-green-200:oklch(.925 .084 155.995);--color-green-300:oklch(.871 .15 154.449);--color-green-400:oklch(.792 .209 151.711);--color-green-500:oklch(.723 .219 149.579);--color-green-600:oklch(.627 .194 149.214);--color-green-700:oklch(.527 .154 150.069);--color-green-800:oklch(.448 .119 151.328);--color-green-900:oklch(.393 .095 152.535);--color-green-950:oklch(.266 .065 152.934);--color-emerald-50:oklch(.979 .021 166.113);--color-emerald-100:oklch(.95 .052 163.051);--color-emerald-200:oklch(.905 .093 164.15);--color-emerald-300:oklch(.845 .143 164.978);--color-emerald-400:oklch(.765 .177 163.223);--color-emerald-500:oklch(.696 .17 162.48);--color-emerald-600:oklch(.596 .145 163.225);--color-emerald-700:oklch(.508 .118 165.612);--color-emerald-800:oklch(.432 .095 166.913);--color-emerald-900:oklch(.378 .077 168.94);--color-emerald-950:oklch(.262 .051 172.552);--color-teal-50:oklch(.984 .014 180.72);--color-teal-100:oklch(.953 .051 180.801);--color-teal-200:oklch(.91 .096 180.426);--color-teal-300:oklch(.855 .138 181.071);--color-teal-400:oklch(.777 .152 181.912);--color-teal-500:oklch(.704 .14 182.503);--color-teal-600:oklch(.6 .118 184.704);--color-teal-700:oklch(.511 .096 186.391);--color-teal-800:oklch(.437 .078 188.216);--color-teal-900:oklch(.386 .063 188.416);--color-teal-950:oklch(.277 .046 192.524);--color-cyan-50:oklch(.984 .019 200.873);--color-cyan-100:oklch(.956 .045 203.388);--color-cyan-200:oklch(.917 .08 205.041);--color-cyan-300:oklch(.865 .127 207.078);--color-cyan-400:oklch(.789 .154 211.53);--color-cyan-500:oklch(.715 .143 215.221);--color-cyan-600:oklch(.609 .126 221.723);--color-cyan-700:oklch(.52 .105 223.128);--color-cyan-800:oklch(.45 .085 224.283);--color-cyan-900:oklch(.398 .07 227.392);--color-cyan-950:oklch(.302 .056 229.695);--color-sky-50:oklch(.977 .013 236.62);--color-sky-100:oklch(.951 .026 236.824);--color-sky-200:oklch(.901 .058 230.902);--color-sky-300:oklch(.828 .111 230.318);--color-sky-400:oklch(.746 .16 232.661);--color-sky-500:oklch(.685 .169 237.323);--color-sky-600:oklch(.588 .158 241.966);--color-sky-700:oklch(.5 .134 242.749);--color-sky-800:oklch(.443 .11 240.79);--color-sky-900:oklch(.391 .09 240.876);--color-sky-Line truncated
|
||||
</style>
|
||||
@endif
|
||||
</head>
|
||||
<body class="bg-[#FDFDFC] dark:bg-[#0a0a0a] text-[#1b1b18] flex p-6 lg:p-8 items-center lg:justify-center min-h-screen flex-col">
|
||||
<header class="w-full lg:max-w-4xl max-w-[335px] text-sm mb-6 not-has-[nav]:hidden">
|
||||
@if (Route::has('login'))
|
||||
<nav class="flex items-center justify-end gap-4">
|
||||
@auth
|
||||
<a
|
||||
href="{{ url('/dashboard') }}"
|
||||
class="inline-block px-5 py-1.5 dark:text-[#EDEDEC] border-[#19140035] hover:border-[#1915014a] border text-[#1b1b18] dark:border-[#3E3E3A] dark:hover:border-[#62605b] rounded-sm text-sm leading-normal"
|
||||
>
|
||||
Dashboard
|
||||
</a>
|
||||
@else
|
||||
<a
|
||||
href="{{ route('login') }}"
|
||||
class="inline-block px-5 py-1.5 dark:text-[#EDEDEC] text-[#1b1b18] border border-transparent hover:border-[#19140035] dark:hover:border-[#3E3E3A] rounded-sm text-sm leading-normal"
|
||||
>
|
||||
Log in
|
||||
</a>
|
||||
|
||||
@if (Route::has('register'))
|
||||
<a
|
||||
href="{{ route('register') }}"
|
||||
class="inline-block px-5 py-1.5 dark:text-[#EDEDEC] border-[#19140035] hover:border-[#1915014a] border text-[#1b1b18] dark:border-[#3E3E3A] dark:hover:border-[#62605b] rounded-sm text-sm leading-normal">
|
||||
Register
|
||||
</a>
|
||||
@endif
|
||||
@endauth
|
||||
</nav>
|
||||
@endif
|
||||
</header>
|
||||
<div class="flex items-center justify-center w-full transition-opacity opacity-100 duration-750 lg:grow starting:opacity-0">
|
||||
<main class="flex max-w-[335px] w-full flex-col-reverse lg:max-w-4xl lg:flex-row">
|
||||
<div class="text-[13px] leading-[20px] flex-1 p-6 pb-12 lg:p-20 bg-white dark:bg-[#161615] dark:text-[#EDEDEC] shadow-[inset_0px_0px_0px_1px_rgba(26,26,0,0.16)] dark:shadow-[inset_0px_0px_0px_1px_#fffaed2d] rounded-bl-lg rounded-br-lg lg:rounded-tl-lg lg:rounded-br-none">
|
||||
<h1 class="mb-1 font-medium">Let's get started</h1>
|
||||
<p class="mb-2 text-[#706f6c] dark:text-[#A1A09A]">Laravel has an incredibly rich ecosystem. <br>We suggest starting with the following.</p>
|
||||
<ul class="flex flex-col mb-4 lg:mb-6">
|
||||
<li class="flex items-center gap-4 py-2 relative before:border-l before:border-[#e3e3e0] dark:before:border-[#3E3E3A] before:top-1/2 before:bottom-0 before:left-[0.4rem] before:absolute">
|
||||
<span class="relative py-1 bg-white dark:bg-[#161615]">
|
||||
<span class="flex items-center justify-center rounded-full bg-[#FDFDFC] dark:bg-[#161615] shadow-[0px_0px_1px_0px_rgba(0,0,0,0.03),0px_1px_2px_0px_rgba(0,0,0,0.06)] w-3.5 h-3.5 border dark:border-[#3E3E3A] border-[#e3e3e0]">
|
||||
<span class="rounded-full bg-[#dbdbd7] dark:bg-[#3E3E3A] w-1.5 h-1.5"></span>
|
||||
</span>
|
||||
</span>
|
||||
<span>
|
||||
Read the
|
||||
<a href="https://laravel.com/docs" target="_blank" class="inline-flex items-center space-x-1 font-medium underline underline-offset-4 text-[#f53003] dark:text-[#FF4433] ml-1">
|
||||
<span>Documentation</span>
|
||||
<svg
|
||||
width="10"
|
||||
height="11"
|
||||
viewBox="0 0 10 11"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="w-2.5 h-2.5"
|
||||
>
|
||||
<path
|
||||
d="M7.70833 6.95834V2.79167H3.54167M2.5 8L7.5 3.00001"
|
||||
stroke="currentColor"
|
||||
stroke-linecap="square"
|
||||
/>
|
||||
</svg>
|
||||
</a>
|
||||
</span>
|
||||
</li>
|
||||
<li class="flex items-center gap-4 py-2 relative before:border-l before:border-[#e3e3e0] dark:before:border-[#3E3E3A] before:bottom-1/2 before:top-0 before:left-[0.4rem] before:absolute">
|
||||
<span class="relative py-1 bg-white dark:bg-[#161615]">
|
||||
<span class="flex items-center justify-center rounded-full bg-[#FDFDFC] dark:bg-[#161615] shadow-[0px_0px_1px_0px_rgba(0,0,0,0.03),0px_1px_2px_0px_rgba(0,0,0,0.06)] w-3.5 h-3.5 border dark:border-[#3E3E3A] border-[#e3e3e0]">
|
||||
<span class="rounded-full bg-[#dbdbd7] dark:bg-[#3E3E3A] w-1.5 h-1.5"></span>
|
||||
</span>
|
||||
</span>
|
||||
<span>
|
||||
Watch video tutorials at
|
||||
<a href="https://laracasts.com" target="_blank" class="inline-flex items-center space-x-1 font-medium underline underline-offset-4 text-[#f53003] dark:text-[#FF4433] ml-1">
|
||||
<span>Laracasts</span>
|
||||
<svg
|
||||
width="10"
|
||||
height="11"
|
||||
viewBox="0 0 10 11"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="w-2.5 h-2.5"
|
||||
>
|
||||
<path
|
||||
d="M7.70833 6.95834V2.79167H3.54167M2.5 8L7.5 3.00001"
|
||||
stroke="currentColor"
|
||||
stroke-linecap="square"
|
||||
/>
|
||||
</svg>
|
||||
</a>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="flex gap-3 text-sm leading-normal">
|
||||
<li>
|
||||
<a href="https://cloud.laravel.com" target="_blank" class="inline-block dark:bg-[#eeeeec] dark:border-[#eeeeec] dark:text-[#1C1C1A] dark:hover:bg-white dark:hover:border-white hover:bg-black hover:border-black px-5 py-1.5 bg-[#1b1b18] rounded-sm border border-black text-white text-sm leading-normal">
|
||||
Deploy now
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bg-[#fff2f2] dark:bg-[#1D0002] relative lg:-ml-px -mb-px lg:mb-0 rounded-t-lg lg:rounded-t-none lg:rounded-r-lg aspect-[335/376] lg:aspect-auto w-full lg:w-[438px] shrink-0 overflow-hidden">
|
||||
{{-- Laravel Logo --}}
|
||||
<svg class="w-full text-[#F53003] dark:text-[#F61500] transition-all translate-y-0 opacity-100 max-w-none duration-750 starting:opacity-0 starting:translate-y-6" viewBox="0 0 438 104" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.2036 -3H0V102.197H49.5189V86.7187H17.2036V-3Z" fill="currentColor" />
|
||||
<path d="M110.256 41.6337C108.061 38.1275 104.945 35.3731 100.905 33.3681C96.8667 31.3647 92.8016 30.3618 88.7131 30.3618C83.4247 30.3618 78.5885 31.3389 74.201 33.2923C69.8111 35.2456 66.0474 37.928 62.9059 41.3333C59.7643 44.7401 57.3198 48.6726 55.5754 53.1293C53.8287 57.589 52.9572 62.274 52.9572 67.1813C52.9572 72.1925 53.8287 76.8995 55.5754 81.3069C57.3191 85.7173 59.7636 89.6241 62.9059 93.0293C66.0474 96.4361 69.8119 99.1155 74.201 101.069C78.5885 103.022 83.4247 103.999 88.7131 103.999C92.8016 103.999 96.8667 102.997 100.905 100.994C104.945 98.9911 108.061 96.2359 110.256 92.7282V102.195H126.563V32.1642H110.256V41.6337ZM108.76 75.7472C107.762 78.4531 106.366 80.8078 104.572 82.8112C102.776 84.8161 100.606 86.4183 98.0637 87.6206C95.5202 88.823 92.7004 89.4238 89.6103 89.4238C86.5178 89.4238 83.7252 88.823 81.2324 87.6206C78.7388 86.4183 76.5949 84.8161 74.7998 82.8112C73.004 80.8078 71.6319 78.4531 70.6856 75.7472C69.7356 73.0421 69.2644 70.1868 69.2644 67.1821C69.2644 64.1758 69.7356 61.3205 70.6856 58.6154C71.6319 55.9102 73.004 53.5571 74.7998 51.5522C76.5949 49.5495 78.738 47.9451 81.2324 46.7427C83.7252 45.5404 86.5178 44.9396 89.6103 44.9396C92.7012 44.9396 95.5202 45.5404 98.0637 46.7427C100.606 47.9451 102.776 49.5487 104.572 51.5522C106.367 53.5571 107.762 55.9102 108.76 58.6154C109.756 61.3205 110.256 64.1758 110.256 67.1821C110.256 70.1868 109.756 73.0421 108.76 75.7472Z" fill="currentColor" />
|
||||
<path d="M242.805 41.6337C240.611 38.1275 237.494 35.3731 233.455 33.3681C229.416 31.3647 225.351 30.3618 221.262 30.3618C215.974 30.3618 211.138 31.3389 206.75 33.2923C202.36 35.2456 198.597 37.928 195.455 41.3333C192.314 44.7401 189.869 48.6726 188.125 53.1293C186.378 57.589 185.507 62.274 185.507 67.1813C185.507 72.1925 186.378 76.8995 188.125 81.3069C189.868 85.7173 192.313 89.6241 195.455 93.0293C198.597 96.4361 202.361 99.1155 206.75 101.069C211.138 103.022 215.974 103.999 221.262 103.999C225.351 103.999 229.416 102.997 233.455 100.994C237.494 98.9911 240.611 96.2359 242.805 92.7282V102.195H259.112V32.1642H242.805V41.6337ZM241.31 75.7472C240.312 78.4531 238.916 80.8078 237.122 82.8112C235.326 84.8161 233.156 86.4183 230.614 87.6206C228.07 88.823 225.251 89.4238 222.16 89.4238C219.068 89.4238 216.275 88.823 213.782 87.6206C211.289 86.4183 209.145 84.8161 207.35 82.8112C205.554 80.8078 204.182 78.4531 203.236 75.7472C202.286 73.0421 201.814 70.1868 201.814 67.1821C201.814 64.1758 202.286 61.3205 203.236 58.6154C204.182 55.9102 205.554 53.5571 207.35 51.5522C209.145 49.5495 211.288 47.9451 213.782 46.7427C216.275 45.5404 219.068 44.9396 222.16 44.9396C225.251 44.9396 228.07 45.5404 230.614 46.7427C233.156 47.9451 235.326 49.5487 237.122 51.5522C238.917 53.5571 240.312 55.9102 241.31 58.6154C242.306 61.3205 242.806 64.1758 242.806 67.1821C242.805 70.1868 242.305 73.0421 241.31 75.7472Z" fill="currentColor" />
|
||||
<path d="M438 -3H421.694V102.197H438V-3Z" fill="currentColor" />
|
||||
<path d="M139.43 102.197H155.735V48.2834H183.712V32.1665H139.43V102.197Z" fill="currentColor" />
|
||||
<path d="M324.49 32.1665L303.995 85.794L283.498 32.1665H266.983L293.748 102.197H314.242L341.006 32.1665H324.49Z" fill="currentColor" />
|
||||
<path d="M376.571 30.3656C356.603 30.3656 340.797 46.8497 340.797 67.1828C340.797 89.6597 356.094 104 378.661 104C391.29 104 399.354 99.1488 409.206 88.5848L398.189 80.0226C398.183 80.031 389.874 90.9895 377.468 90.9895C363.048 90.9895 356.977 79.3111 356.977 73.269H411.075C413.917 50.1328 398.775 30.3656 376.571 30.3656ZM357.02 61.0967C357.145 59.7487 359.023 43.3761 376.442 43.3761C393.861 43.3761 395.978 59.7464 396.099 61.0967H357.02Z" fill="currentColor" />
|
||||
</svg>
|
||||
|
||||
{{-- Light Mode 12 SVG --}}
|
||||
<svg class="w-[448px] max-w-none relative -mt-[4.9rem] -ml-8 lg:ml-0 lg:-mt-[6.6rem] dark:hidden" viewBox="0 0 440 376" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g class="transition-all delay-300 translate-y-0 opacity-100 duration-750 starting:opacity-0 starting:translate-y-4">
|
||||
<path d="M188.263 355.73L188.595 355.73C195.441 348.845 205.766 339.761 219.569 328.477C232.93 317.193 242.978 308.205 249.714 301.511C256.34 294.626 260.867 287.358 263.296 279.708C265.725 272.058 264.565 264.121 259.816 255.896C254.516 246.716 247.062 239.352 237.454 233.805C227.957 228.067 217.908 225.198 207.307 225.198C196.927 225.197 190.136 227.97 186.934 233.516C183.621 238.872 184.726 246.331 190.247 255.894L125.647 255.891C116.371 239.825 112.395 225.481 113.72 212.858C115.265 200.235 121.559 190.481 132.602 183.596C143.754 176.52 158.607 172.982 177.159 172.983C196.594 172.984 215.863 176.523 234.968 183.6C253.961 190.486 271.299 200.241 286.98 212.864C302.661 225.488 315.14 239.833 324.416 255.899C333.03 270.817 336.841 283.918 335.847 295.203C335.075 306.487 331.376 316.336 324.75 324.751C318.346 333.167 308.408 343.494 294.936 355.734L377.094 355.737L405.917 405.656L217.087 405.649L188.263 355.73Z" fill="black" />
|
||||
<path d="M9.11884 226.339L-13.7396 226.338L-42.7286 176.132L43.0733 176.135L175.595 405.649L112.651 405.647L9.11884 226.339Z" fill="black" />
|
||||
<path d="M188.263 355.73L188.595 355.73C195.441 348.845 205.766 339.761 219.569 328.477C232.93 317.193 242.978 308.205 249.714 301.511C256.34 294.626 260.867 287.358 263.296 279.708C265.725 272.058 264.565 264.121 259.816 255.896C254.516 246.716 247.062 239.352 237.454 233.805C227.957 228.067 217.908 225.198 207.307 225.198C196.927 225.197 190.136 227.97 186.934 233.516C183.621 238.872 184.726 246.331 190.247 255.894L125.647 255.891C116.371 239.825 112.395 225.481 113.72 212.858C115.265 200.235 121.559 190.481 132.602 183.596C143.754 176.52 158.607 172.982 177.159 172.983C196.594 172.984 215.863 176.523 234.968 183.6C253.961 190.486 271.299 200.241 286.98 212.864C302.661 225.488 315.14 239.833 324.416 255.899C333.03 270.817 336.841 283.918 335.847 295.203C335.075 306.487 331.376 316.336 324.75 324.751C318.346 333.167 308.408 343.494 294.936 355.734L377.094 355.737L405.917 405.656L217.087 405.649L188.263 355.73Z" stroke="#1B1B18" stroke-width="1" />
|
||||
<path d="M9.11884 226.339L-13.7396 226.338L-42.7286 176.132L43.0733 176.135L175.595 405.649L112.651 405.647L9.11884 226.339Z" stroke="#1B1B18" stroke-width="1" />
|
||||
<path d="M204.592 327.449L204.923 327.449C211.769 320.564 222.094 311.479 235.897 300.196C249.258 288.912 259.306 279.923 266.042 273.23C272.668 266.345 277.195 259.077 279.624 251.427C282.053 243.777 280.893 235.839 276.145 227.615C270.844 218.435 263.39 211.071 253.782 205.524C244.285 199.786 234.236 196.917 223.635 196.916C213.255 196.916 206.464 199.689 203.262 205.235C199.949 210.59 201.054 218.049 206.575 227.612L141.975 227.61C132.699 211.544 128.723 197.2 130.048 184.577C131.593 171.954 137.887 162.2 148.93 155.315C160.083 148.239 174.935 144.701 193.487 144.702C212.922 144.703 232.192 148.242 251.296 155.319C270.289 162.205 287.627 171.96 303.308 184.583C318.989 197.207 331.468 211.552 340.745 227.618C349.358 242.536 353.169 255.637 352.175 266.921C351.403 278.205 347.704 288.055 341.078 296.47C334.674 304.885 324.736 315.213 311.264 327.453L393.422 327.456L422.246 377.375L233.415 377.368L204.592 327.449Z" fill="#F8B803" />
|
||||
<path d="M25.447 198.058L2.58852 198.057L-26.4005 147.851L59.4015 147.854L191.923 377.368L128.979 377.365L25.447 198.058Z" fill="#F8B803" />
|
||||
<path d="M204.592 327.449L204.923 327.449C211.769 320.564 222.094 311.479 235.897 300.196C249.258 288.912 259.306 279.923 266.042 273.23C272.668 266.345 277.195 259.077 279.624 251.427C282.053 243.777 280.893 235.839 276.145 227.615C270.844 218.435 263.39 211.071 253.782 205.524C244.285 199.786 234.236 196.917 223.635 196.916C213.255 196.916 206.464 199.689 203.262 205.235C199.949 210.59 201.054 218.049 206.575 227.612L141.975 227.61C132.699 211.544 128.723 197.2 130.048 184.577C131.593 171.954 137.887 162.2 148.93 155.315C160.083 148.239 174.935 144.701 193.487 144.702C212.922 144.703 232.192 148.242 251.296 155.319C270.289 162.205 287.627 171.96 303.308 184.583C318.989 197.207 331.468 211.552 340.745 227.618C349.358 242.536 353.169 255.637 352.175 266.921C351.403 278.205 347.704 288.055 341.078 296.47C334.674 304.885 324.736 315.213 311.264 327.453L393.422 327.456L422.246 377.375L233.415 377.368L204.592 327.449Z" stroke="#1B1B18" stroke-width="1" />
|
||||
<path d="M25.447 198.058L2.58852 198.057L-26.4005 147.851L59.4015 147.854L191.923 377.368L128.979 377.365L25.447 198.058Z" stroke="#1B1B18" stroke-width="1" />
|
||||
</g>
|
||||
<g style="mix-blend-mode: hard-light" class="transition-all delay-300 translate-y-0 opacity-100 duration-750 starting:opacity-0 starting:translate-y-4">
|
||||
<path d="M217.342 305.363L217.673 305.363C224.519 298.478 234.844 289.393 248.647 278.11C262.008 266.826 272.056 257.837 278.792 251.144C285.418 244.259 289.945 236.991 292.374 229.341C294.803 221.691 293.643 213.753 288.895 205.529C283.594 196.349 276.14 188.985 266.532 183.438C257.035 177.7 246.986 174.831 236.385 174.83C226.005 174.83 219.214 177.603 216.012 183.149C212.699 188.504 213.804 195.963 219.325 205.527L154.725 205.524C145.449 189.458 141.473 175.114 142.798 162.491C144.343 149.868 150.637 140.114 161.68 133.229C172.833 126.153 187.685 122.615 206.237 122.616C225.672 122.617 244.942 126.156 264.046 133.233C283.039 140.119 300.377 149.874 316.058 162.497C331.739 175.121 344.218 189.466 353.495 205.532C362.108 220.45 365.919 233.551 364.925 244.835C364.153 256.12 360.454 265.969 353.828 274.384C347.424 282.799 337.486 293.127 324.014 305.367L406.172 305.37L434.996 355.289L246.165 355.282L217.342 305.363Z" fill="#F0ACB8" />
|
||||
<path d="M38.197 175.972L15.3385 175.971L-13.6505 125.765L72.1515 125.768L204.673 355.282L141.729 355.279L38.197 175.972Z" fill="#F0ACB8" />
|
||||
<path d="M217.342 305.363L217.673 305.363C224.519 298.478 234.844 289.393 248.647 278.11C262.008 266.826 272.056 257.837 278.792 251.144C285.418 244.259 289.945 236.991 292.374 229.341C294.803 221.691 293.643 213.753 288.895 205.529C283.594 196.349 276.14 188.985 266.532 183.438C257.035 177.7 246.986 174.831 236.385 174.83C226.005 174.83 219.214 177.603 216.012 183.149C212.699 188.504 213.804 195.963 219.325 205.527L154.725 205.524C145.449 189.458 141.473 175.114 142.798 162.491C144.343 149.868 150.637 140.114 161.68 133.229C172.833 126.153 187.685 122.615 206.237 122.616C225.672 122.617 244.942 126.156 264.046 133.233C283.039 140.119 300.377 149.874 316.058 162.497C331.739 175.121 344.218 189.466 353.495 205.532C362.108 220.45 365.919 233.551 364.925 244.835C364.153 256.12 360.454 265.969 353.828 274.384C347.424 282.799 337.486 293.127 324.014 305.367L406.172 305.37L434.996 355.289L246.165 355.282L217.342 305.363Z" stroke="#1B1B18" stroke-width="1" />
|
||||
<path d="M38.197 175.972L15.3385 175.971L-13.6505 125.765L72.1515 125.768L204.673 355.282L141.729 355.279L38.197 175.972Z" stroke="#1B1B18" stroke-width="1" />
|
||||
</g>
|
||||
<g style="mix-blend-mode: plus-darker" class="transition-all delay-300 translate-y-0 opacity-100 duration-750 starting:opacity-0 starting:translate-y-4">
|
||||
<path d="M230.951 281.792L231.282 281.793C238.128 274.907 248.453 265.823 262.256 254.539C275.617 243.256 285.666 234.267 292.402 227.573C299.027 220.688 303.554 213.421 305.983 205.771C308.412 198.12 307.253 190.183 302.504 181.959C297.203 172.778 289.749 165.415 280.142 159.868C270.645 154.13 260.596 151.26 249.995 151.26C239.615 151.26 232.823 154.033 229.621 159.579C226.309 164.934 227.413 172.393 232.935 181.956L168.335 181.954C159.058 165.888 155.082 151.543 156.407 138.92C157.953 126.298 164.247 116.544 175.289 109.659C186.442 102.583 201.294 99.045 219.846 99.0457C239.281 99.0464 258.551 102.585 277.655 109.663C296.649 116.549 313.986 126.303 329.667 138.927C345.349 151.551 357.827 165.895 367.104 181.961C375.718 196.88 379.528 209.981 378.535 221.265C377.762 232.549 374.063 242.399 367.438 250.814C361.033 259.229 351.095 269.557 337.624 281.796L419.782 281.8L448.605 331.719L259.774 331.712L230.951 281.792Z" fill="#F3BEC7" />
|
||||
<path d="M51.8063 152.402L28.9479 152.401L-0.0411453 102.195L85.7608 102.198L218.282 331.711L155.339 331.709L51.8063 152.402Z" fill="#F3BEC7" />
|
||||
<path d="M230.951 281.792L231.282 281.793C238.128 274.907 248.453 265.823 262.256 254.539C275.617 243.256 285.666 234.267 292.402 227.573C299.027 220.688 303.554 213.421 305.983 205.771C308.412 198.12 307.253 190.183 302.504 181.959C297.203 172.778 289.749 165.415 280.142 159.868C270.645 154.13 260.596 151.26 249.995 151.26C239.615 151.26 232.823 154.033 229.621 159.579C226.309 164.934 227.413 172.393 232.935 181.956L168.335 181.954C159.058 165.888 155.082 151.543 156.407 138.92C157.953 126.298 164.247 116.544 175.289 109.659C186.442 102.583 201.294 99.045 219.846 99.0457C239.281 99.0464 258.551 102.585 277.655 109.663C296.649 116.549 313.986 126.303 329.667 138.927C345.349 151.551 357.827 165.895 367.104 181.961C375.718 196.88 379.528 209.981 378.535 221.265C377.762 232.549 374.063 242.399 367.438 250.814C361.033 259.229 351.095 269.557 337.624 281.796L419.782 281.8L448.605 331.719L259.774 331.712L230.951 281.792Z" stroke="#1B1B18" stroke-width="1" />
|
||||
<path d="M51.8063 152.402L28.9479 152.401L-0.0411453 102.195L85.7608 102.198L218.282 331.711L155.339 331.709L51.8063 152.402Z" stroke="#1B1B18" stroke-width="1" />
|
||||
</g>
|
||||
<g class="transition-all delay-300 translate-y-0 opacity-100 duration-750 starting:opacity-0 starting:translate-y-4">
|
||||
<path d="M188.467 355.363L188.798 355.363C195.644 348.478 205.969 339.393 219.772 328.11C233.133 316.826 243.181 307.837 249.917 301.144C253.696 297.217 256.792 293.166 259.205 288.991C261.024 285.845 262.455 282.628 263.499 279.341C265.928 271.691 264.768 263.753 260.02 255.529C254.719 246.349 247.265 238.985 237.657 233.438C228.16 227.7 218.111 224.831 207.51 224.83C197.13 224.83 190.339 227.603 187.137 233.149C183.824 238.504 184.929 245.963 190.45 255.527L125.851 255.524C116.574 239.458 112.598 225.114 113.923 212.491C114.615 206.836 116.261 201.756 118.859 197.253C122.061 191.704 126.709 187.03 132.805 183.229C143.958 176.153 158.81 172.615 177.362 172.616C196.797 172.617 216.067 176.156 235.171 183.233C254.164 190.119 271.502 199.874 287.183 212.497C302.864 225.121 315.343 239.466 324.62 255.532C333.233 270.45 337.044 283.551 336.05 294.835C335.46 303.459 333.16 311.245 329.151 318.194C327.915 320.337 326.515 322.4 324.953 324.384C318.549 332.799 308.611 343.127 295.139 355.367L377.297 355.37L406.121 405.289L217.29 405.282L188.467 355.363Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M9.32197 225.972L-13.5365 225.971L-42.5255 175.765L43.2765 175.768L175.798 405.282L112.854 405.279L9.32197 225.972Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M345.247 111.915C329.566 99.2919 312.229 89.5371 293.235 82.6512L235.167 183.228C254.161 190.114 271.498 199.869 287.179 212.492L345.247 111.915Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M382.686 154.964C373.41 138.898 360.931 124.553 345.25 111.93L287.182 212.506C302.863 225.13 315.342 239.475 324.618 255.541L382.686 154.964Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M293.243 82.6472C274.139 75.57 254.869 72.031 235.434 72.0303L177.366 172.607C196.801 172.608 216.071 176.147 235.175 183.224L293.243 82.6472Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M394.118 194.257C395.112 182.973 391.301 169.872 382.688 154.953L324.619 255.53C333.233 270.448 337.044 283.55 336.05 294.834L394.118 194.257Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M235.432 72.0311C216.88 72.0304 202.027 75.5681 190.875 82.6442L132.806 183.221C143.959 176.145 158.812 172.607 177.363 172.608L235.432 72.0311Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M265.59 124.25C276.191 124.251 286.24 127.12 295.737 132.858L237.669 233.435C228.172 227.697 218.123 224.828 207.522 224.827L265.59 124.25Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M295.719 132.859C305.326 138.406 312.78 145.77 318.081 154.95L260.013 255.527C254.712 246.347 247.258 238.983 237.651 233.436L295.719 132.859Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M387.218 217.608C391.227 210.66 393.527 202.874 394.117 194.25L336.049 294.827C335.459 303.451 333.159 311.237 329.15 318.185L387.218 217.608Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M245.211 132.577C248.413 127.03 255.204 124.257 265.584 124.258L207.516 224.835C197.136 224.834 190.345 227.607 187.143 233.154L245.211 132.577Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M318.094 154.945C322.842 163.17 324.002 171.107 321.573 178.757L263.505 279.334C265.934 271.684 264.774 263.746 260.026 255.522L318.094 154.945Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M176.925 96.6737C180.127 91.1249 184.776 86.4503 190.871 82.6499L132.803 183.227C126.708 187.027 122.059 191.702 118.857 197.25L176.925 96.6737Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M387.226 217.606C385.989 219.749 384.59 221.813 383.028 223.797L324.96 324.373C326.522 322.39 327.921 320.326 329.157 318.183L387.226 217.606Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M317.269 188.408C319.087 185.262 320.519 182.045 321.562 178.758L263.494 279.335C262.451 282.622 261.019 285.839 259.201 288.985L317.269 188.408Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M245.208 132.573C241.895 137.928 243 145.387 248.522 154.95L190.454 255.527C184.932 245.964 183.827 238.505 187.14 233.15L245.208 132.573Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M176.93 96.6719C174.331 101.175 172.686 106.255 171.993 111.91L113.925 212.487C114.618 206.831 116.263 201.752 118.862 197.249L176.93 96.6719Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M317.266 188.413C314.853 192.589 311.757 196.64 307.978 200.566L249.91 301.143C253.689 297.216 256.785 293.166 259.198 288.99L317.266 188.413Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M464.198 304.708L435.375 254.789L377.307 355.366L406.13 405.285L464.198 304.708Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M353.209 254.787C366.68 242.548 376.618 232.22 383.023 223.805L324.955 324.382C318.55 332.797 308.612 343.124 295.141 355.364L353.209 254.787Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M435.37 254.787L353.212 254.784L295.144 355.361L377.302 355.364L435.37 254.787Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M183.921 154.947L248.521 154.95L190.453 255.527L125.853 255.524L183.921 154.947Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M171.992 111.914C170.668 124.537 174.643 138.881 183.92 154.947L125.852 255.524C116.575 239.458 112.599 225.114 113.924 212.491L171.992 111.914Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M307.987 200.562C301.251 207.256 291.203 216.244 277.842 227.528L219.774 328.105C233.135 316.821 243.183 307.832 249.919 301.139L307.987 200.562Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M15.5469 75.1797L44.5359 125.386L-13.5321 225.963L-42.5212 175.756L15.5469 75.1797Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M277.836 227.536C264.033 238.82 253.708 247.904 246.862 254.789L188.794 355.366C195.64 348.481 205.965 339.397 219.768 328.113L277.836 227.536Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M275.358 304.706L464.189 304.713L406.12 405.29L217.29 405.283L275.358 304.706Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M44.5279 125.39L67.3864 125.39L9.31834 225.967L-13.5401 225.966L44.5279 125.39Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M101.341 75.1911L233.863 304.705L175.795 405.282L43.2733 175.768L101.341 75.1911ZM15.5431 75.19L-42.525 175.767L43.277 175.77L101.345 75.1932L15.5431 75.19Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M246.866 254.784L246.534 254.784L188.466 355.361L188.798 355.361L246.866 254.784Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M246.539 254.781L275.362 304.701L217.294 405.277L188.471 355.358L246.539 254.781Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M67.3906 125.391L170.923 304.698L112.855 405.275L9.32257 225.967L67.3906 125.391Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
<path d="M170.921 304.699L233.865 304.701L175.797 405.278L112.853 405.276L170.921 304.699Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="bevel" />
|
||||
</g>
|
||||
<g style="mix-blend-mode: hard-light" class="transition-all delay-300 translate-y-0 opacity-100 duration-750 starting:opacity-0 starting:translate-y-4">
|
||||
<path d="M246.544 254.79L246.875 254.79C253.722 247.905 264.046 238.82 277.849 227.537C291.21 216.253 301.259 207.264 307.995 200.57C314.62 193.685 319.147 186.418 321.577 178.768C324.006 171.117 322.846 163.18 318.097 154.956C312.796 145.775 305.342 138.412 295.735 132.865C286.238 127.127 276.189 124.258 265.588 124.257C255.208 124.257 248.416 127.03 245.214 132.576C241.902 137.931 243.006 145.39 248.528 154.953L183.928 154.951C174.652 138.885 170.676 124.541 172 111.918C173.546 99.2946 179.84 89.5408 190.882 82.6559C202.035 75.5798 216.887 72.0421 235.439 72.0428C254.874 72.0435 274.144 75.5825 293.248 82.6598C312.242 89.5457 329.579 99.3005 345.261 111.924C360.942 124.548 373.421 138.892 382.697 154.958C391.311 169.877 395.121 182.978 394.128 194.262C393.355 205.546 389.656 215.396 383.031 223.811C376.627 232.226 366.688 242.554 353.217 254.794L435.375 254.797L464.198 304.716L275.367 304.709L246.544 254.79Z" fill="#F0ACB8" />
|
||||
<path d="M246.544 254.79L246.875 254.79C253.722 247.905 264.046 238.82 277.849 227.537C291.21 216.253 301.259 207.264 307.995 200.57C314.62 193.685 319.147 186.418 321.577 178.768C324.006 171.117 322.846 163.18 318.097 154.956C312.796 145.775 305.342 138.412 295.735 132.865C286.238 127.127 276.189 124.258 265.588 124.257C255.208 124.257 248.416 127.03 245.214 132.576C241.902 137.931 243.006 145.39 248.528 154.953L183.928 154.951C174.652 138.885 170.676 124.541 172 111.918C173.546 99.2946 179.84 89.5408 190.882 82.6559C202.035 75.5798 216.887 72.0421 235.439 72.0428C254.874 72.0435 274.144 75.5825 293.248 82.6598C312.242 89.5457 329.579 99.3005 345.261 111.924C360.942 124.548 373.421 138.892 382.697 154.958C391.311 169.877 395.121 182.978 394.128 194.262C393.355 205.546 389.656 215.396 383.031 223.811C376.627 232.226 366.688 242.554 353.217 254.794L435.375 254.797L464.198 304.716L275.367 304.709L246.544 254.79Z" stroke="#1B1B18" stroke-width="1" stroke-linejoin="round" />
|
||||
</g>
|
||||
<g style="mix-blend-mode: hard-light" class="transition-all delay-300 translate-y-0 opacity-100 duration-750 starting:opacity-0 starting:translate-y-4">
|
||||
<path d="M67.41 125.402L44.5515 125.401L15.5625 75.1953L101.364 75.1985L233.886 304.712L170.942 304.71L67.41 125.402Z" fill="#F0ACB8" />
|
||||
<path d="M67.41 125.402L44.5515 125.401L15.5625 75.1953L101.364 75.1985L233.886 304.712L170.942 304.71L67.41 125.402Z" stroke="#1B1B18" stroke-width="1" />
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
{{-- Dark Mode 12 SVG --}}
|
||||
<svg class="w-[448px] max-w-none relative -mt-[4.9rem] -ml-8 lg:ml-0 lg:-mt-[6.6rem] hidden dark:block" viewBox="0 0 440 376" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g class="transition-all delay-300 translate-y-0 opacity-100 duration-750 starting:opacity-0 starting:translate-y-4">
|
||||
<path d="M188.263 355.73L188.595 355.73C195.441 348.845 205.766 339.761 219.569 328.477C232.93 317.193 242.978 308.205 249.714 301.511C256.34 294.626 260.867 287.358 263.296 279.708C265.725 272.058 264.565 264.121 259.816 255.896C254.516 246.716 247.062 239.352 237.454 233.805C227.957 228.067 217.908 225.198 207.307 225.198C196.927 225.197 190.136 227.97 186.934 233.516C183.621 238.872 184.726 246.331 190.247 255.894L125.647 255.891C116.371 239.825 112.395 225.481 113.72 212.858C115.265 200.235 121.559 190.481 132.602 183.596C143.754 176.52 158.607 172.982 177.159 172.983C196.594 172.984 215.863 176.523 234.968 183.6C253.961 190.486 271.299 200.241 286.98 212.864C302.661 225.488 315.14 239.833 324.416 255.899C333.03 270.817 336.841 283.918 335.847 295.203C335.075 306.487 331.376 316.336 324.75 324.751C318.346 333.167 308.408 343.494 294.936 355.734L377.094 355.737L405.917 405.656L217.087 405.649L188.263 355.73Z" fill="black"/>
|
||||
<path d="M9.11884 226.339L-13.7396 226.338L-42.7286 176.132L43.0733 176.135L175.595 405.649L112.651 405.647L9.11884 226.339Z" fill="black"/>
|
||||
<path d="M188.263 355.73L188.595 355.73C195.441 348.845 205.766 339.761 219.569 328.477C232.93 317.193 242.978 308.205 249.714 301.511C256.34 294.626 260.867 287.358 263.296 279.708C265.725 272.058 264.565 264.121 259.816 255.896C254.516 246.716 247.062 239.352 237.454 233.805C227.957 228.067 217.908 225.198 207.307 225.198C196.927 225.197 190.136 227.97 186.934 233.516C183.621 238.872 184.726 246.331 190.247 255.894L125.647 255.891C116.371 239.825 112.395 225.481 113.72 212.858C115.265 200.235 121.559 190.481 132.602 183.596C143.754 176.52 158.607 172.982 177.159 172.983C196.594 172.984 215.863 176.523 234.968 183.6C253.961 190.486 271.299 200.241 286.98 212.864C302.661 225.488 315.14 239.833 324.416 255.899C333.03 270.817 336.841 283.918 335.847 295.203C335.075 306.487 331.376 316.336 324.75 324.751C318.346 333.167 308.408 343.494 294.936 355.734L377.094 355.737L405.917 405.656L217.087 405.649L188.263 355.73Z" stroke="#FF750F" stroke-width="1"/>
|
||||
<path d="M9.11884 226.339L-13.7396 226.338L-42.7286 176.132L43.0733 176.135L175.595 405.649L112.651 405.647L9.11884 226.339Z" stroke="#FF750F" stroke-width="1"/>
|
||||
<path d="M204.592 327.449L204.923 327.449C211.769 320.564 222.094 311.479 235.897 300.196C249.258 288.912 259.306 279.923 266.042 273.23C272.668 266.345 277.195 259.077 279.624 251.427C282.053 243.777 280.893 235.839 276.145 227.615C270.844 218.435 263.39 211.071 253.782 205.524C244.285 199.786 234.236 196.917 223.635 196.916C213.255 196.916 206.464 199.689 203.262 205.235C199.949 210.59 201.054 218.049 206.575 227.612L141.975 227.61C132.699 211.544 128.723 197.2 130.048 184.577C131.593 171.954 137.887 162.2 148.93 155.315C160.083 148.239 174.935 144.701 193.487 144.702C212.922 144.703 232.192 148.242 251.296 155.319C270.289 162.205 287.627 171.96 303.308 184.583C318.989 197.207 331.468 211.552 340.745 227.618C349.358 242.536 353.169 255.637 352.175 266.921C351.403 278.205 347.704 288.055 341.078 296.47C334.674 304.885 324.736 315.213 311.264 327.453L393.422 327.456L422.246 377.375L233.415 377.368L204.592 327.449Z" fill="#391800"/>
|
||||
<path d="M25.447 198.058L2.58852 198.057L-26.4005 147.851L59.4015 147.854L191.923 377.368L128.979 377.365L25.447 198.058Z" fill="#391800"/>
|
||||
<path d="M204.592 327.449L204.923 327.449C211.769 320.564 222.094 311.479 235.897 300.196C249.258 288.912 259.306 279.923 266.042 273.23C272.668 266.345 277.195 259.077 279.624 251.427C282.053 243.777 280.893 235.839 276.145 227.615C270.844 218.435 263.39 211.071 253.782 205.524C244.285 199.786 234.236 196.917 223.635 196.916C213.255 196.916 206.464 199.689 203.262 205.235C199.949 210.59 201.054 218.049 206.575 227.612L141.975 227.61C132.699 211.544 128.723 197.2 130.048 184.577C131.593 171.954 137.887 162.2 148.93 155.315C160.083 148.239 174.935 144.701 193.487 144.702C212.922 144.703 232.192 148.242 251.296 155.319C270.289 162.205 287.627 171.96 303.308 184.583C318.989 197.207 331.468 211.552 340.745 227.618C349.358 242.536 353.169 255.637 352.175 266.921C351.403 278.205 347.704 288.055 341.078 296.47C334.674 304.885 324.736 315.213 311.264 327.453L393.422 327.456L422.246 377.375L233.415 377.368L204.592 327.449Z" stroke="#FF750F" stroke-width="1"/>
|
||||
<path d="M25.447 198.058L2.58852 198.057L-26.4005 147.851L59.4015 147.854L191.923 377.368L128.979 377.365L25.447 198.058Z" stroke="#FF750F" stroke-width="1"/>
|
||||
</g>
|
||||
<g class="transition-all delay-300 translate-y-0 opacity-100 duration-750 starting:opacity-0 starting:translate-y-4" style="mix-blend-mode:hard-light">
|
||||
<path d="M217.342 305.363L217.673 305.363C224.519 298.478 234.844 289.393 248.647 278.11C262.008 266.826 272.056 257.837 278.792 251.144C285.418 244.259 289.945 236.991 292.374 229.341C294.803 221.691 293.643 213.753 288.895 205.529C283.594 196.349 276.14 188.985 266.532 183.438C257.035 177.7 246.986 174.831 236.385 174.83C226.005 174.83 219.214 177.603 216.012 183.149C212.699 188.504 213.804 195.963 219.325 205.527L154.725 205.524C145.449 189.458 141.473 175.114 142.798 162.491C144.343 149.868 150.637 140.114 161.68 133.229C172.833 126.153 187.685 122.615 206.237 122.616C225.672 122.617 244.942 126.156 264.046 133.233C283.039 140.119 300.377 149.874 316.058 162.497C331.739 175.121 344.218 189.466 353.495 205.532C362.108 220.45 365.919 233.551 364.925 244.835C364.153 256.12 360.454 265.969 353.828 274.384C347.424 282.799 337.486 293.127 324.014 305.367L406.172 305.37L434.996 355.289L246.165 355.282L217.342 305.363Z" fill="#733000"/>
|
||||
<path d="M38.197 175.972L15.3385 175.971L-13.6505 125.765L72.1515 125.768L204.673 355.282L141.729 355.279L38.197 175.972Z" fill="#733000"/>
|
||||
<path d="M217.342 305.363L217.673 305.363C224.519 298.478 234.844 289.393 248.647 278.11C262.008 266.826 272.056 257.837 278.792 251.144C285.418 244.259 289.945 236.991 292.374 229.341C294.803 221.691 293.643 213.753 288.895 205.529C283.594 196.349 276.14 188.985 266.532 183.438C257.035 177.7 246.986 174.831 236.385 174.83C226.005 174.83 219.214 177.603 216.012 183.149C212.699 188.504 213.804 195.963 219.325 205.527L154.725 205.524C145.449 189.458 141.473 175.114 142.798 162.491C144.343 149.868 150.637 140.114 161.68 133.229C172.833 126.153 187.685 122.615 206.237 122.616C225.672 122.617 244.942 126.156 264.046 133.233C283.039 140.119 300.377 149.874 316.058 162.497C331.739 175.121 344.218 189.466 353.495 205.532C362.108 220.45 365.919 233.551 364.925 244.835C364.153 256.12 360.454 265.969 353.828 274.384C347.424 282.799 337.486 293.127 324.014 305.367L406.172 305.37L434.996 355.289L246.165 355.282L217.342 305.363Z" stroke="#FF750F" stroke-width="1"/>
|
||||
<path d="M38.197 175.972L15.3385 175.971L-13.6505 125.765L72.1515 125.768L204.673 355.282L141.729 355.279L38.197 175.972Z" stroke="#FF750F" stroke-width="1"/>
|
||||
</g>
|
||||
<g class="transition-all delay-300 translate-y-0 opacity-100 duration-750 starting:opacity-0 starting:translate-y-4">
|
||||
<path d="M217.342 305.363L217.673 305.363C224.519 298.478 234.844 289.393 248.647 278.11C262.008 266.826 272.056 257.837 278.792 251.144C285.418 244.259 289.945 236.991 292.374 229.341C294.803 221.691 293.643 213.753 288.895 205.529C283.594 196.349 276.14 188.985 266.532 183.438C257.035 177.7 246.986 174.831 236.385 174.83C226.005 174.83 219.214 177.603 216.012 183.149C212.699 188.504 213.804 195.963 219.325 205.527L154.726 205.524C145.449 189.458 141.473 175.114 142.798 162.491C144.343 149.868 150.637 140.114 161.68 133.229C172.833 126.153 187.685 122.615 206.237 122.616C225.672 122.617 244.942 126.156 264.046 133.233C283.039 140.119 300.377 149.874 316.058 162.497C331.739 175.121 344.218 189.466 353.495 205.532C362.108 220.45 365.919 233.551 364.925 244.835C364.153 256.12 360.454 265.969 353.828 274.384C347.424 282.799 337.486 293.127 324.014 305.367L406.172 305.37L434.996 355.289L246.165 355.282L217.342 305.363Z" stroke="#FF750F" stroke-width="1"/>
|
||||
<path d="M38.197 175.972L15.3385 175.971L-13.6505 125.765L72.1515 125.768L204.673 355.282L141.729 355.279L38.197 175.972Z" stroke="#FF750F" stroke-width="1"/>
|
||||
</g>
|
||||
<g class="transition-all delay-300 translate-y-0 opacity-100 duration-750 starting:opacity-0 starting:translate-y-4">
|
||||
<path d="M188.467 355.363L188.798 355.363C195.644 348.478 205.969 339.393 219.772 328.11C233.133 316.826 243.181 307.837 249.917 301.144C253.696 297.217 256.792 293.166 259.205 288.991C261.024 285.845 262.455 282.628 263.499 279.341C265.928 271.691 264.768 263.753 260.02 255.529C254.719 246.349 247.265 238.985 237.657 233.438C228.16 227.7 218.111 224.831 207.51 224.83C197.13 224.83 190.339 227.603 187.137 233.149C183.824 238.504 184.929 245.963 190.45 255.527L125.851 255.524C116.574 239.458 112.598 225.114 113.923 212.491C114.615 206.836 116.261 201.756 118.859 197.253C122.061 191.704 126.709 187.03 132.805 183.229C143.958 176.153 158.81 172.615 177.362 172.616C196.797 172.617 216.067 176.156 235.171 183.233C254.164 190.119 271.502 199.874 287.183 212.497C302.864 225.121 315.343 239.466 324.62 255.532C333.233 270.45 337.044 283.551 336.05 294.835C335.46 303.459 333.16 311.245 329.151 318.194C327.915 320.337 326.515 322.4 324.953 324.384C318.549 332.799 308.611 343.127 295.139 355.367L377.297 355.37L406.121 405.289L217.29 405.282L188.467 355.363Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M9.32197 225.972L-13.5365 225.971L-42.5255 175.765L43.2765 175.768L175.798 405.282L112.854 405.279L9.32197 225.972Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M345.247 111.915C329.566 99.2919 312.229 89.5371 293.235 82.6512L235.167 183.228C254.161 190.114 271.498 199.869 287.179 212.492L345.247 111.915Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M382.686 154.964C373.41 138.898 360.931 124.553 345.25 111.93L287.182 212.506C302.863 225.13 315.342 239.475 324.618 255.541L382.686 154.964Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M293.243 82.6472C274.139 75.57 254.869 72.031 235.434 72.0303L177.366 172.607C196.801 172.608 216.071 176.147 235.175 183.224L293.243 82.6472Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M394.118 194.257C395.112 182.973 391.301 169.872 382.688 154.953L324.619 255.53C333.233 270.448 337.044 283.55 336.05 294.834L394.118 194.257Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M235.432 72.0311C216.88 72.0304 202.027 75.5681 190.875 82.6442L132.806 183.221C143.959 176.145 158.812 172.607 177.363 172.608L235.432 72.0311Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M265.59 124.25C276.191 124.251 286.24 127.12 295.737 132.858L237.669 233.435C228.172 227.697 218.123 224.828 207.522 224.827L265.59 124.25Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M295.719 132.859C305.326 138.406 312.78 145.77 318.081 154.95L260.013 255.527C254.712 246.347 247.258 238.983 237.651 233.436L295.719 132.859Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M387.218 217.608C391.227 210.66 393.527 202.874 394.117 194.25L336.049 294.827C335.459 303.451 333.159 311.237 329.15 318.185L387.218 217.608Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M245.211 132.577C248.413 127.03 255.204 124.257 265.584 124.258L207.516 224.835C197.136 224.834 190.345 227.607 187.143 233.154L245.211 132.577Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M318.094 154.945C322.842 163.17 324.002 171.107 321.573 178.757L263.505 279.334C265.934 271.684 264.774 263.746 260.026 255.522L318.094 154.945Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M176.925 96.6737C180.127 91.1249 184.776 86.4503 190.871 82.6499L132.803 183.227C126.708 187.027 122.059 191.702 118.857 197.25L176.925 96.6737Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M387.226 217.606C385.989 219.749 384.59 221.813 383.028 223.797L324.96 324.373C326.522 322.39 327.921 320.326 329.157 318.183L387.226 217.606Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M317.269 188.408C319.087 185.262 320.519 182.045 321.562 178.758L263.494 279.335C262.451 282.622 261.019 285.839 259.201 288.985L317.269 188.408Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M245.208 132.573C241.895 137.928 243 145.387 248.522 154.95L190.454 255.527C184.932 245.964 183.827 238.505 187.14 233.15L245.208 132.573Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M176.93 96.6719C174.331 101.175 172.686 106.255 171.993 111.91L113.925 212.487C114.618 206.831 116.263 201.752 118.862 197.249L176.93 96.6719Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M317.266 188.413C314.853 192.589 311.757 196.64 307.978 200.566L249.91 301.143C253.689 297.216 256.785 293.166 259.198 288.99L317.266 188.413Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M464.198 304.708L435.375 254.789L377.307 355.366L406.13 405.285L464.198 304.708Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M353.209 254.787C366.68 242.548 376.618 232.22 383.023 223.805L324.955 324.382C318.55 332.797 308.612 343.124 295.141 355.364L353.209 254.787Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M435.37 254.787L353.212 254.784L295.144 355.361L377.302 355.364L435.37 254.787Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M183.921 154.947L248.521 154.95L190.453 255.527L125.853 255.524L183.921 154.947Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M171.992 111.914C170.668 124.537 174.643 138.881 183.92 154.947L125.852 255.524C116.575 239.458 112.599 225.114 113.924 212.491L171.992 111.914Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M307.987 200.562C301.251 207.256 291.203 216.244 277.842 227.528L219.774 328.105C233.135 316.821 243.183 307.832 249.919 301.139L307.987 200.562Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M15.5469 75.1797L44.5359 125.386L-13.5321 225.963L-42.5212 175.756L15.5469 75.1797Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M277.836 227.536C264.033 238.82 253.708 247.904 246.862 254.789L188.794 355.366C195.64 348.481 205.965 339.397 219.768 328.113L277.836 227.536Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M275.358 304.706L464.189 304.713L406.12 405.29L217.29 405.283L275.358 304.706Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M44.5279 125.39L67.3864 125.39L9.31834 225.967L-13.5401 225.966L44.5279 125.39Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M101.341 75.1911L233.863 304.705L175.795 405.282L43.2733 175.768L101.341 75.1911ZM15.5431 75.19L-42.525 175.767L43.277 175.77L101.345 75.1932L15.5431 75.19Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M246.866 254.784L246.534 254.784L188.466 355.361L188.798 355.361L246.866 254.784Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M246.539 254.781L275.362 304.701L217.294 405.277L188.471 355.358L246.539 254.781Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M67.3906 125.391L170.923 304.698L112.855 405.275L9.32257 225.967L67.3906 125.391Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
<path d="M170.921 304.699L233.865 304.701L175.797 405.278L112.853 405.276L170.921 304.699Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="bevel"/>
|
||||
</g>
|
||||
<g class="transition-all delay-300 translate-y-0 opacity-100 duration-750 starting:opacity-0 starting:translate-y-4" style="mix-blend-mode:hard-light">
|
||||
<path d="M246.544 254.79L246.875 254.79C253.722 247.905 264.046 238.82 277.849 227.537C291.21 216.253 301.259 207.264 307.995 200.57C314.62 193.685 319.147 186.418 321.577 178.768C324.006 171.117 322.846 163.18 318.097 154.956C312.796 145.775 305.342 138.412 295.735 132.865C286.238 127.127 276.189 124.258 265.588 124.257C255.208 124.257 248.416 127.03 245.214 132.576C241.902 137.931 243.006 145.39 248.528 154.953L183.928 154.951C174.652 138.885 170.676 124.541 172 111.918C173.546 99.2946 179.84 89.5408 190.882 82.6559C202.035 75.5798 216.887 72.0421 235.439 72.0428C254.874 72.0435 274.144 75.5825 293.248 82.6598C312.242 89.5457 329.579 99.3005 345.261 111.924C360.942 124.548 373.421 138.892 382.697 154.958C391.311 169.877 395.121 182.978 394.128 194.262C393.355 205.546 389.656 215.396 383.031 223.811C376.627 232.226 366.688 242.554 353.217 254.794L435.375 254.797L464.198 304.716L275.367 304.709L246.544 254.79Z" fill="#4B0600"/>
|
||||
<path d="M246.544 254.79L246.875 254.79C253.722 247.905 264.046 238.82 277.849 227.537C291.21 216.253 301.259 207.264 307.995 200.57C314.62 193.685 319.147 186.418 321.577 178.768C324.006 171.117 322.846 163.18 318.097 154.956C312.796 145.775 305.342 138.412 295.735 132.865C286.238 127.127 276.189 124.258 265.588 124.257C255.208 124.257 248.416 127.03 245.214 132.576C241.902 137.931 243.006 145.39 248.528 154.953L183.928 154.951C174.652 138.885 170.676 124.541 172 111.918C173.546 99.2946 179.84 89.5408 190.882 82.6559C202.035 75.5798 216.887 72.0421 235.439 72.0428C254.874 72.0435 274.144 75.5825 293.248 82.6598C312.242 89.5457 329.579 99.3005 345.261 111.924C360.942 124.548 373.421 138.892 382.697 154.958C391.311 169.877 395.121 182.978 394.128 194.262C393.355 205.546 389.656 215.396 383.031 223.811C376.627 232.226 366.688 242.554 353.217 254.794L435.375 254.797L464.198 304.716L275.367 304.709L246.544 254.79Z" stroke="#FF750F" stroke-width="1" stroke-linejoin="round"/>
|
||||
</g>
|
||||
<g class="transition-all delay-300 translate-y-0 opacity-100 duration-750 starting:opacity-0 starting:translate-y-4" style="mix-blend-mode:hard-light">
|
||||
<path d="M67.41 125.402L44.5515 125.401L15.5625 75.1953L101.364 75.1985L233.886 304.712L170.942 304.71L67.41 125.402Z" fill="#4B0600"/>
|
||||
<path d="M67.41 125.402L44.5515 125.401L15.5625 75.1953L101.364 75.1985L233.886 304.712L170.942 304.71L67.41 125.402Z" stroke="#FF750F" stroke-width="1"/>
|
||||
</g>
|
||||
</svg>
|
||||
<div class="absolute inset-0 rounded-t-lg lg:rounded-t-none lg:rounded-r-lg shadow-[inset_0px_0px_0px_1px_rgba(26,26,0,0.16)] dark:shadow-[inset_0px_0px_0px_1px_#fffaed2d]"></div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
@if (Route::has('login'))
|
||||
<div class="h-14.5 hidden lg:block"></div>
|
||||
@endif
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user