diff --git a/resources/views/categories/index.blade.php b/resources/views/categories/index.blade.php index 7ba656d..dcb9982 100644 --- a/resources/views/categories/index.blade.php +++ b/resources/views/categories/index.blade.php @@ -1,219 +1,222 @@ @extends('layouts.app') @section('title', 'Categories') -@section('page-title', '🏷️ Category Management') +@section('page-title', 'Category Management 🏷️') @section('page-subtitle', 'Organise clients, schedules & content by category') @section('content') -
+
- @if(session('success')) -
- {{ session('success') }} - -
- @endif + @if(session('success')) +
+ {{ session('success') }} + +
+ @endif - {{-- Add form --}} -
-
- -
- -
-
- @csrf -
- - -
-
- - -
-
- - -
-
-
- - -
- -
-
-
-
- - {{-- List --}} -
-
- πŸ—‚οΈ -

All Categories

- - {{ $categories->count() }} total - -
- - - @php $roots = $categories->whereNull('parent_id'); @endphp - - @forelse($roots as $root) -
- {{-- Root row --}} -
- {{ $root->icon ?: '🏷️' }} - @if($root->color) - - @endif -
-
{{ $root->name }}
-
{{ $root->children->count() }} sub Β· {{ $root->clients_count }} client(s)
-
-
- - @unless($root->is_system) -
- @csrf @method('DELETE') - -
- @endunless -
+ {{-- Add form --}} +
+
+
- {{-- Edit form --}} - - {{-- Children --}} - @foreach($root->children as $child) -
-
- {{ $child->icon ?: '↳' }} - @if($child->color) - - @endif -
-
↳ {{ $child->name }}
-
{{ $child->clients_count }} client(s)
-
-
- - @unless($child->is_system) -
- @csrf @method('DELETE') - -
- @endunless -
-
- + {{-- List --}} +
+
+ πŸ—‚οΈ +

All Categories

+ + {{ $categories->count() }} total +
- @endforeach + + + @php $roots = $categories->whereNull('parent_id'); @endphp + + @forelse($roots as $root) +
+ {{-- Root row --}} +
+ {{ $root->icon ?: '🏷️' }} + @if($root->color) + + @endif +
+
{{ $root->name }}
+
{{ $root->children->count() }} sub Β· {{ $root->clients_count }} + client(s)
+
+
+ + @unless($root->is_system) +
+ @csrf @method('DELETE') + +
+ @endunless +
+
+ + {{-- Edit form --}} + + + {{-- Children --}} + @foreach($root->children as $child) +
+
+ {{ $child->icon ?: '↳' }} + @if($child->color) + + @endif +
+
↳ {{ $child->name }}
+
{{ $child->clients_count }} client(s)
+
+
+ + @unless($child->is_system) +
+ @csrf @method('DELETE') + +
+ @endunless +
+
+ +
+ @endforeach +
+ @empty +
+
🏷️
+

No categories yet. Add your first one above.

+
+ @endforelse
- @empty -
-
🏷️
-

No categories yet. Add your first one above.

-
- @endforelse
-
-@endsection +@endsection \ No newline at end of file diff --git a/resources/views/clients/index.blade.php b/resources/views/clients/index.blade.php index 08da80c..ad29ddf 100644 --- a/resources/views/clients/index.blade.php +++ b/resources/views/clients/index.blade.php @@ -11,7 +11,7 @@
- οΌ‹ Add + οΌ‹ Add Client @if(request('category') || request('status')) @@ -37,39 +37,42 @@
{{-- Row 1: search + dropdowns --}} -
- {{-- Search (fills remaining space on desktop) --}} -
- πŸ” - + {{-- Search --}} +
+ +
{{-- Category dropdown --}} - + + @foreach($categories as $parent) + + @foreach($parent->children as $child) + + @endforeach @endforeach - @endforeach - + +
{{-- Status dropdown --}} - +
+ +
diff --git a/resources/views/content/index.blade.php b/resources/views/content/index.blade.php index 12c87f7..cfb9483 100644 --- a/resources/views/content/index.blade.php +++ b/resources/views/content/index.blade.php @@ -5,108 +5,110 @@ @section('page-subtitle', 'Drag cards between columns to update status') @section('content') -
+
+
+ οΌ‹ New Brief + @foreach(['instagram', 'tiktok', 'youtube'] as $p) + + {{ ['instagram' => 'πŸ“Έ', 'tiktok' => '🎡', 'youtube' => '▢️'][$p] }} {{ ucfirst($p) }} + + @endforeach + @if(request('platform')) + βœ• + Clear + @endif +
-{{-- - Mobile : grid grid-cols-1 β†’ columns stack vertically, each full width - Desktop : flex flex-nowrap β†’ columns in a single horizontal row, each flex-1 +
+ + {{-- + Mobile : grid grid-cols-1 β†’ columns stack vertically, each full width + Desktop : flex flex-nowrap β†’ columns in a single horizontal row, each flex-1 x-sort:group is on the INNER items div (not the column div) to avoid SortableJS mutating the outer layout container. ---}} -
- @foreach($columns as $col) - @php $status = $col['status']; @endphp + --}} +
+ @foreach($columns as $col) + @php $status = $col['status']; @endphp - {{-- Column shell β€” layout only, NOT the sort target --}} -
+ {{-- Column shell β€” layout only, NOT the sort target --}} +
- {{-- Column header --}} -
-
- {{ $status->icon() }} - {{ $status->label() }} -
- {{ count($col['items']) }} -
- - {{-- Sortable items container --}} -
- - @foreach($col['items'] as $brief) -
-
- {{ $brief->platform_icon }} - - {{ $brief->title }} - -
- @if($brief->client) -
πŸ‘₯ {{ $brief->client->name }}
- @endif - @if($brief->target_date) -
- πŸ“… {{ $brief->target_date->format('d M') }} -
- @endif -
- Edit -
+ {{-- Column header --}} +
+
+ {{ $status->icon() }} + {{ $status->label() }}
- @endforeach + {{ count($col['items']) }} +
+ + {{-- Sortable items container --}} +
+ + @foreach($col['items'] as $brief) +
+
+ {{ $brief->platform_icon }} + + {{ $brief->title }} + +
+ @if($brief->client) +
πŸ‘₯ {{ $brief->client->name }}
+ @endif + @if($brief->target_date) +
+ πŸ“… {{ $brief->target_date->format('d M') }} +
+ @endif +
+ Edit +
+
+ @endforeach +
+ + {{-- Add button --}} + + οΌ‹ Add +
+ @endforeach +
- {{-- Add button --}} - - οΌ‹ Add - -
- @endforeach -
- -@push('scripts') - -@endpush -@endsection + @push('scripts') + + @endpush +@endsection \ No newline at end of file diff --git a/resources/views/contracts/index.blade.php b/resources/views/contracts/index.blade.php index 40ca877..184d6ed 100644 --- a/resources/views/contracts/index.blade.php +++ b/resources/views/contracts/index.blade.php @@ -1,6 +1,6 @@ @extends('layouts.app') @section('title', 'Brand Contracts') -@section('page-title', 'πŸ“‹ Brand Contracts') +@section('page-title', 'Brand Contracts πŸ“‹') @section('page-subtitle', 'Manage exclusive brand agreements per category') @section('content') @@ -19,7 +19,7 @@
@@ -209,6 +209,7 @@
  • πŸ”’ When a contract is Active, creating schedules or content for a competing brand in the same category will show a warning.
  • βœ… The contracted brand itself is always allowed β€” no warning shown.
  • 🏷️ Blocking a parent category also blocks all its subcategories.
  • +
  • 🏷️ Blocking a child category does not block the parent category.
  • πŸ“… Contracts only block during their active date range. Expired contracts are ignored automatically.
  • diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php index 1652844..5ff114b 100644 --- a/resources/views/dashboard.blade.php +++ b/resources/views/dashboard.blade.php @@ -156,4 +156,6 @@
    + @include('layouts.fab') + @endsection \ No newline at end of file diff --git a/resources/views/invoices/index.blade.php b/resources/views/invoices/index.blade.php index 8fd1191..97cbd5a 100644 --- a/resources/views/invoices/index.blade.php +++ b/resources/views/invoices/index.blade.php @@ -5,97 +5,109 @@ @section('page-subtitle', 'Manage your brand deal payments') @section('content') -
    + -{{-- Mobile card list --}} -
    - @forelse($invoices as $invoice) -
    -
    -
    -
    {{ $invoice->invoice_number }}
    -
    {{ $invoice->client?->name ?? 'β€”' }}
    + {{-- Mobile card list --}} +
    + @forelse($invoices as $invoice) +
    +
    +
    +
    {{ $invoice->invoice_number }}
    +
    {{ $invoice->client?->name ?? 'β€”' }}
    +
    + {{ $invoice->status->label() }} +
    +
    {{ $invoice->title }}
    +
    + Due {{ $invoice->due_date->format('d M Y') }} + {{ $invoice->formatted_total }} +
    +
    + View + PDF + Edit + {{-- Share button disabled --}}
    - {{ $invoice->status->label() }}
    -
    {{ $invoice->title }}
    -
    - Due {{ $invoice->due_date->format('d M Y') }} - {{ $invoice->formatted_total }} + @empty +
    + 🧾 +

    No invoices yet. Create + one!

    -
    - View - PDF - Edit - {{-- Share button disabled --}} -
    -
    - @empty -
    - 🧾 -

    No invoices yet. Create one!

    -
    - @endforelse -
    - -{{-- Desktop table --}} - -
    {{ $invoices->links() }}
    -{{-- Share scripts disabled --}} -@endsection + {{-- Desktop table --}} + + +
    {{ $invoices->links() }}
    + {{-- Share scripts disabled --}} +@endsection \ No newline at end of file diff --git a/resources/views/invoices/settings.blade.php b/resources/views/invoices/settings.blade.php index 561256d..7bc8b33 100644 --- a/resources/views/invoices/settings.blade.php +++ b/resources/views/invoices/settings.blade.php @@ -5,229 +5,220 @@ @section('page-subtitle', 'Customize number format, header, and invoice defaults') @section('content') -
    -
    - - ← Back to Invoices - +
    + + + @if(session('success')) +
    + {{ session('success') }} + +
    + @endif + +
    + @csrf + + {{-- Number Format --}} +
    +

    πŸ”’ Invoice Number Format

    +
    +
    + + +

    e.g. INV-EA β†’ INV-EA-001

    +
    +
    + + +

    Used for the next new invoice

    +
    +
    +
    + Preview: + {{ rtrim(old('invoice_prefix', $settings->invoice_prefix), '-') }}-{{ str_pad((string) (old('invoice_next_number', $settings->invoice_next_number) ?? 1), 3, '0', STR_PAD_LEFT) }} + +
    +
    + + {{-- Header / Branding --}} +
    +

    🎨 Invoice Header

    + + {{-- Logo auto-upload (independent of main Save form) --}} +
    + + {{-- Current logo preview --}} + + + +
    + + Uploading… + +
    +

    Max 2 MB. Uploads immediately on file selection.

    +
    + +
    +
    + + +
    +
    + + +
    +
    + +
    + +
    +

    Applied to your invoice header name and totals.

    +
    +
    +
    + + {{-- Invoice Defaults --}} +
    +

    πŸ“‹ Invoice Defaults

    +

    These values will pre-fill every new invoice you create.

    + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    + + +
    - @if(session('success')) -
    - {{ session('success') }} - -
    - @endif - -
    - @csrf - - {{-- Number Format --}} -
    -

    πŸ”’ Invoice Number Format

    -
    -
    - - -

    e.g. INV-EA β†’ INV-EA-001

    -
    -
    - - -

    Used for the next new invoice

    -
    -
    -
    - Preview: - {{ rtrim(old('invoice_prefix', $settings->invoice_prefix), '-') }}-{{ str_pad((string) (old('invoice_next_number', $settings->invoice_next_number) ?? 1), 3, '0', STR_PAD_LEFT) }} - -
    -
    - - {{-- Header / Branding --}} -
    -

    🎨 Invoice Header

    - - {{-- Logo auto-upload (independent of main Save form) --}} -
    - - {{-- Current logo preview --}} - - - -
    - - Uploading… - -
    -

    Max 2 MB. Uploads immediately on file selection.

    -
    - -
    -
    - - -
    -
    - - -
    -
    - -
    - -
    -

    Applied to your invoice header name and totals.

    -
    -
    -
    - - {{-- Invoice Defaults --}} -
    -

    πŸ“‹ Invoice Defaults

    -

    These values will pre-fill every new invoice you create.

    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    - - -
    -
    - -@push('scripts') - -@endpush -@endsection + @push('scripts') + + @endpush +@endsection \ No newline at end of file diff --git a/resources/views/invoices/show.blade.php b/resources/views/invoices/show.blade.php index 713ab19..abab3be 100644 --- a/resources/views/invoices/show.blade.php +++ b/resources/views/invoices/show.blade.php @@ -5,136 +5,151 @@ @section('page-subtitle', $invoice->title) @section('content') -
    -
    - Edit - πŸ“₯ Download PDF -
    - @csrf @method('DELETE') - -
    -
    +
    +
    + Edit + πŸ“₯ + Download PDF +
    + @csrf @method('DELETE') + +
    +
    -
    - {{-- Invoice Header --}} -
    -
    - @if($invoiceSettings->header_logo) - Logo - @endif +
    + {{-- Invoice Header --}} +
    +
    + @if($invoiceSettings->header_logo) + Logo + @endif +
    +
    + {{ $invoiceSettings->header_name ?: '🐱 Cathy' }} +
    +
    + {{ $invoiceSettings->header_title ?: 'Personal Talent Assistant' }} +
    +
    +
    +
    +
    {{ $invoice->invoice_number }}
    + {{ $invoice->status->label() }} +
    +
    + + {{-- Billing Info --}} +
    -
    - {{ $invoiceSettings->header_name ?: '🐱 Cathy' }} -
    -
    - {{ $invoiceSettings->header_title ?: 'Personal Talent Assistant' }} +

    Bill To

    + @if($invoice->client) +
    {{ $invoice->client->name }}
    + @if($invoice->client->company) +
    {{ $invoice->client->company }}
    @endif + @if($invoice->client->email) +
    {{ $invoice->client->email }}
    @endif + @if($invoice->client->full_address) +
    {{ $invoice->client->full_address }}
    @endif + @else +
    No client
    + @endif +
    +
    +
    Invoice Details
    +
    +
    Issue: {{ $invoice->issue_date->format('d M Y') }}
    +
    Due: {{ $invoice->due_date->format('d M Y') }} +
    + @if($invoice->paid_date) +
    Paid: {{ $invoice->paid_date->format('d M Y') }}
    + @endif
    -
    -
    {{ $invoice->invoice_number }}
    - {{ $invoice->status->label() }} -
    -
    - {{-- Billing Info --}} -
    -
    -

    Bill To

    - @if($invoice->client) -
    {{ $invoice->client->name }}
    - @if($invoice->client->company)
    {{ $invoice->client->company }}
    @endif - @if($invoice->client->email)
    {{ $invoice->client->email }}
    @endif - @if($invoice->client->full_address)
    {{ $invoice->client->full_address }}
    @endif - @else -
    No client
    - @endif -
    -
    -
    Invoice Details
    -
    -
    Issue: {{ $invoice->issue_date->format('d M Y') }}
    -
    Due: {{ $invoice->due_date->format('d M Y') }}
    - @if($invoice->paid_date)
    Paid: {{ $invoice->paid_date->format('d M Y') }}
    @endif -
    -
    -
    - - {{-- Line Items --}} - @php - $accent = $invoiceSettings->accent_color ?? '#FFB7C5'; - $hex = ltrim($accent, '#'); - $r = hexdec(substr($hex, 0, 2)); - $g = hexdec(substr($hex, 2, 2)); - $b = hexdec(substr($hex, 4, 2)); - $tint = sprintf('#%02X%02X%02X', - (int)(255 * 0.92 + $r * 0.08), - (int)(255 * 0.92 + $g * 0.08), - (int)(255 * 0.92 + $b * 0.08) - ); - @endphp - - - - - - - - - - - @foreach($invoice->items as $item) - - - - - + {{-- Line Items --}} + @php + $accent = $invoiceSettings->accent_color ?? '#FFB7C5'; + $hex = ltrim($accent, '#'); + $r = hexdec(substr($hex, 0, 2)); + $g = hexdec(substr($hex, 2, 2)); + $b = hexdec(substr($hex, 4, 2)); + $tint = sprintf( + '#%02X%02X%02X', + (int) (255 * 0.92 + $r * 0.08), + (int) (255 * 0.92 + $g * 0.08), + (int) (255 * 0.92 + $b * 0.08) + ); + @endphp +
    DescriptionQtyUnit PriceTotal
    - {{ $item->description }} - @if(!$item->is_taxable) - Non-Taxable - @endif - {{ $item->quantity }}Rp {{ number_format($item->unit_price, 0, ',', '.') }}Rp {{ number_format($item->total, 0, ',', '.') }}
    + + + + + + - @endforeach - -
    DescriptionQtyUnit PriceTotal
    + + + @foreach($invoice->items as $item) + + + {{ $item->description }} + @if(!$item->is_taxable) + Non-Taxable + @endif + + {{ $item->quantity }} + Rp + {{ number_format($item->unit_price, 0, ',', '.') }} + Rp + {{ number_format($item->total, 0, ',', '.') }} + + @endforeach + + - {{-- Totals --}} -
    -
    -
    - SubtotalRp {{ number_format($invoice->subtotal, 0, ',', '.') }} -
    - @if($invoice->tax_rate > 0) -
    - Tax ({{ $invoice->tax_rate }}% β€” paid by client) - Rp {{ number_format($invoice->tax_amount, 0, ',', '.') }} -
    - @endif -
    - Grand Total{{ $invoice->formatted_total }} + {{-- Totals --}} +
    +
    +
    + SubtotalRp + {{ number_format($invoice->subtotal, 0, ',', '.') }} +
    + @if($invoice->tax_rate > 0) +
    + Tax ({{ $invoice->tax_rate }}% β€” paid by client) + Rp {{ number_format($invoice->tax_amount, 0, ',', '.') }} +
    + @endif +
    + Grand Total{{ $invoice->formatted_total }} +
    + + {{-- Bank Info --}} + @if($invoice->bank_name) +
    +
    πŸ’³ Payment Info
    +
    + {{ $invoice->bank_name }} + @if($invoice->branch_name) Β· {{ $invoice->branch_name }} @endif + Β· {{ $invoice->bank_account }} Β· a/n {{ $invoice->bank_holder }} +
    +
    + @endif + + @if($invoice->notes) +
    {{ $invoice->notes }}
    + @endif
    - - {{-- Bank Info --}} - @if($invoice->bank_name) -
    -
    πŸ’³ Payment Info
    -
    - {{ $invoice->bank_name }} - @if($invoice->branch_name) Β· {{ $invoice->branch_name }} @endif - Β· {{ $invoice->bank_account }} Β· a/n {{ $invoice->bank_holder }} -
    -
    - @endif - - @if($invoice->notes) -
    {{ $invoice->notes }}
    - @endif
    -
    -@endsection +@endsection \ No newline at end of file diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 1301aa3..e2d4893 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -72,7 +72,7 @@ - πŸ“‹ Brand Contracts + πŸ“‹ Contracts