Add contract management and invoice settings pages

- Created a new Blade view for managing brand contracts with forms for adding and editing contracts, including client and category selection.
- Implemented success message notifications for contract actions.
- Added a new Blade view for invoice settings, allowing customization of invoice number format, header branding, and default values for new invoices.
- Introduced a new PDF view for generating rate cards with customizable styles based on user profile settings.
- Developed a profile management page for rate cards, enabling users to update their identity, appearance, and visibility settings.
This commit is contained in:
I-Fun
2026-04-01 21:47:34 +07:00
parent d3c35ad730
commit 22f03ccca7
48 changed files with 2415 additions and 296 deletions

View File

@@ -45,22 +45,22 @@
</div>
{{-- ── Stat Pills (BELOW schedule) ─────────────────────────── --}}
<div class="grid grid-cols-2 gap-3 mb-4">
<div class="stat-pill">
<div class="grid grid-cols-2 sm:grid-cols-4 gap-3 mb-4">
<a href="{{ route('clients.index') }}" class="stat-pill hover:shadow-md transition-shadow">
<div class="text-2xl lg:text-3xl font-extrabold text-pink-500">{{ $stats['total_clients'] }}</div>
<div class="text-xs lg:text-sm font-semibold text-gray-600">Total Clients</div>
<div class="text-xs text-gray-400">{{ $stats['active_clients'] }} active</div>
</div>
<div class="stat-pill">
</a>
<a href="{{ route('schedule.index') }}" class="stat-pill hover:shadow-md transition-shadow">
<div class="text-2xl lg:text-3xl font-extrabold text-purple-500">{{ $stats['upcoming_events'] }}</div>
<div class="text-xs lg:text-sm font-semibold text-gray-600">Upcoming Events</div>
<div class="text-xs text-gray-400">Next 3 months</div>
</div>
<div class="stat-pill">
</a>
<a href="{{ route('invoices.index') }}" class="stat-pill hover:shadow-md transition-shadow">
<div class="text-2xl lg:text-3xl font-extrabold text-amber-500">{{ $stats['pending_invoices'] }}</div>
<div class="text-xs lg:text-sm font-semibold text-gray-600">Pending Invoices</div>
<div class="text-xs text-gray-400">Awaiting payment</div>
</div>
</a>
<div class="stat-pill">
<div class="text-lg lg:text-2xl font-extrabold text-emerald-500 leading-tight">
Rp {{ number_format($stats['total_revenue'], 0, ',', '.') }}
@@ -70,6 +70,25 @@
</div>
</div>
{{-- ── Secondary Stats ──────────────────────────────────────── --}}
<div class="grid grid-cols-3 gap-3 mb-4">
<a href="{{ route('client-categories.index') }}" class="stat-pill hover:shadow-md transition-shadow">
<div class="text-2xl font-extrabold text-indigo-500">{{ $stats['total_categories'] }}</div>
<div class="text-xs font-semibold text-gray-600">Categories</div>
<div class="text-xs text-gray-400">{{ $stats['total_subcategories'] }} subcategories</div>
</a>
<a href="{{ route('contracts.index') }}" class="stat-pill hover:shadow-md transition-shadow">
<div class="text-2xl font-extrabold text-rose-500">{{ $stats['active_contracts'] }}</div>
<div class="text-xs font-semibold text-gray-600">Brand Contracts</div>
<div class="text-xs text-gray-400">{{ $stats['total_contracts'] }} total</div>
</a>
<a href="{{ route('files.index') }}" class="stat-pill hover:shadow-md transition-shadow">
<div class="text-2xl font-extrabold text-teal-500">{{ $stats['total_files'] }}</div>
<div class="text-xs font-semibold text-gray-600">Files Saved</div>
<div class="text-xs text-gray-400">In file manager</div>
</a>
</div>
{{-- ── Bottom Row ───────────────────────────────────────────── --}}
<div class="grid grid-cols-1 lg:grid-cols-3 gap-4">