feat: rename KOL Manager to Cathy's App across various files and update related placeholders

This commit is contained in:
I-Fun
2026-04-03 12:11:05 +07:00
parent a0b294fa1c
commit 15c8d3ae7c
14 changed files with 27 additions and 25 deletions

View File

@@ -23,7 +23,7 @@ class RateCardProfile extends Model
public static function getSingleton(): self
{
return static::firstOrCreate([], [
'owner_name' => config('app.name', 'KOL Manager'),
'owner_name' => config('app.name', 'Cathy Page'),
'bg_color' => '#FFF8F0',
'accent_color' => '#FFB7C5',
'text_color' => '#374151',

View File

@@ -21,7 +21,7 @@ class EmailNotifier
Mail::raw($combined, function ($mail) use ($toEmail, $setting): void {
$mail->to($toEmail)
->subject("🐱 KOL Manager — {$setting->name} Notifications");
->subject("🐱 Cathy's App — {$setting->name} Notifications");
});
}

View File

@@ -24,7 +24,7 @@ class WahaNotifier
{
$this->send(
$setting,
"🐱 *KOL Manager — Test Notification*\n\nYour WhatsApp channel is configured correctly! 🎉"
"🐱 *Cathy's App — Test Notification*\n\nYour WhatsApp channel is configured correctly! 🎉"
);
}

2
package-lock.json generated
View File

@@ -1,5 +1,5 @@
{
"name": "KOL-Manager",
"name": "app",
"lockfileVersion": 3,
"requires": true,
"packages": {

View File

@@ -30,7 +30,7 @@
<div>
<label class="block text-xs font-semibold text-gray-600 mb-1">Name <span class="text-pink-400">*</span></label>
<input type="text" name="name" required maxlength="100"
placeholder="e.g. Energy Drinks"
placeholder="e.g. Susu Formula"
class="input-soft" value="{{ old('name') }}">
</div>
<div>

View File

@@ -30,7 +30,7 @@
<div>
<label class="block text-xs font-semibold text-gray-600 mb-1">Contract Title <span class="text-pink-400">*</span></label>
<input type="text" name="title" required maxlength="255"
placeholder="e.g. Exclusive – Energy Drinks 2025"
placeholder="e.g. Exclusive – Susu Formula 2026"
class="input-soft" value="{{ old('title') }}">
</div>
<div>

View File

@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="theme-color" content="#FFB7C5">
<title>KOL Manager — Login</title>
<title>Cathy's App - Login</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700;800&display=swap" rel="stylesheet">
@vite(['resources/css/app.css', 'resources/js/app.js'])
@@ -28,7 +28,7 @@
{{-- Logo / header --}}
<div class="text-center mb-8 select-none">
<div class="text-7xl mb-3 inline-block animate-bounce" style="animation-duration:2s">🐱</div>
<h1 class="text-2xl font-extrabold text-pink-500 leading-tight">KOL Manager</h1>
<h1 class="text-2xl font-extrabold text-pink-500 leading-tight">Cathy's App</h1>
<p class="text-sm text-gray-400 mt-1">Your Purr-fect Assistant</p>
</div>

View File

@@ -87,7 +87,7 @@
</td>
@endif
<td style="vertical-align:middle;">
<div class="logo-name">{{ $invoiceSettings->header_name ?: 'KOL Manager' }}</div>
<div class="logo-name">{{ $invoiceSettings->header_name ?: 'Cathy' }}</div>
<div class="logo-sub">{{ $invoiceSettings->header_title ?: 'Personal Talent Assistant' }}</div>
</td>
</tr>

View File

@@ -26,7 +26,7 @@
<div>
<div class="text-xl font-extrabold"
style="color:{{ $invoiceSettings->accent_color ?? '#FFB7C5' }}">
{{ $invoiceSettings->header_name ?: '🐱 KOL Manager' }}
{{ $invoiceSettings->header_name ?: '🐱 Cathy' }}
</div>
<div class="text-sm text-gray-400 mt-0.5">
{{ $invoiceSettings->header_title ?: 'Personal Talent Assistant' }}

View File

@@ -45,7 +45,7 @@
class="flex items-center gap-3 group focus:outline-none">
<span class="text-3xl transition-transform duration-200 group-hover:scale-110 group-active:scale-95 select-none">🐱</span>
<div class="text-left">
<div class="text-lg font-extrabold text-pink-500 leading-tight">KOL Manager</div>
<div class="text-lg font-extrabold text-pink-500 leading-tight">Cathy's App</div>
<div class="text-xs text-gray-400">Your Purr-fect Assistant</div>
</div>
</a>
@@ -170,7 +170,7 @@
{{-- ── Global Search bar ─────────────────────────── --}}
<div class="flex-1 min-w-0" x-show="searchOpen" x-transition style="display:none">
<div class="relative">
<span class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 text-sm pointer-events-none">🔍</span>
<span class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 text-sm pointer-events-none"></span>
<input
id="global-search-input"
type="text"
@@ -235,11 +235,13 @@
<span x-text="searchOpen ? '✕' : '🔍'" class="text-sm lg:text-base"></span>
</button>
<!--
{{-- Avatar --}}
<div class="w-8 h-8 lg:w-9 lg:h-9 rounded-full flex items-center justify-center text-white font-bold text-xs lg:text-sm shadow-sm"
style="background: linear-gradient(135deg, #FFB7C5, #E8D5F5);">
FUN
</div>
-->
</div>
</header>

View File

@@ -17,8 +17,8 @@
{{-- Search --}}
<div class="relative flex-1 max-w-xs">
<span class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 text-sm pointer-events-none">🔍</span>
<input type="text" x-model="searchQuery" placeholder="Search notes…"
<span class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 text-sm pointer-events-none"></span>
<input type="text" x-model="searchQuery" placeholder="🔍Search notes…"
class="input-soft pl-9 text-sm py-2 w-full">
</div>

View File

@@ -52,19 +52,19 @@
<div>
<label class="block text-xs font-semibold text-gray-600 mb-1">Instagram Handle</label>
<div class="relative">
<span class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 text-sm pointer-events-none">@</span>
<span class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 text-sm pointer-events-none"></span>
<input type="text" name="ig_handle"
value="{{ old('ig_handle', $profile->ig_handle) }}"
class="input-soft pl-7" placeholder="yourhandle">
class="input-soft pl-7" placeholder="@yourhandle">
</div>
</div>
<div>
<label class="block text-xs font-semibold text-gray-600 mb-1">TikTok Handle</label>
<div class="relative">
<span class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 text-sm pointer-events-none">@</span>
<span class="absolute left-3 top-1/2 -translate-y-1/2 text-gray-400 text-sm pointer-events-none"></span>
<input type="text" name="tiktok_handle"
value="{{ old('tiktok_handle', $profile->tiktok_handle) }}"
class="input-soft pl-7" placeholder="yourhandle">
class="input-soft pl-7" placeholder="@yourhandle">
</div>
</div>
<div class="sm:col-span-2">

View File

@@ -61,10 +61,10 @@
<a href="{{ $profile->whatsappUrl }}" target="_blank" class="contact-pill">📱 WhatsApp</a>
@endif
@if($profile->ig_handle)
<a href="https://instagram.com/{{ ltrim($profile->ig_handle, '@') }}" target="_blank" class="contact-pill">📸 @{{ $profile->ig_handle }}</a>
<a href="https://instagram.com/{{ ltrim($profile->ig_handle, '@') }}" target="_blank" class="contact-pill">📸 {{ '@' . ltrim($profile->ig_handle, '@') }}</a>
@endif
@if($profile->tiktok_handle)
<a href="https://tiktok.com/@{{ ltrim($profile->tiktok_handle, '@') }}" target="_blank" class="contact-pill">🎵 @{{ $profile->tiktok_handle }}</a>
<a href="https://tiktok.com/{{ ltrim($profile->tiktok_handle, '@') }}" target="_blank" class="contact-pill">🎵 {{ '@' . ltrim($profile->tiktok_handle, '@') }}</a>
@endif
@if($profile->youtube_handle)
<a href="https://youtube.com/{{ $profile->youtube_handle }}" target="_blank" class="contact-pill">▶️ {{ $profile->youtube_handle }}</a>
@@ -110,7 +110,7 @@
<div class="footer">
{{ $profile->custom_footer ?: 'Prices may vary. Contact for custom packages. 🐾' }}
<br>Generated by KOL Manager · {{ now()->format('Y') }}
<br>Generated by Cathy's App · {{ now()->format('Y-M-D') }}
</div>
</div>
</body>

View File

@@ -14,7 +14,7 @@ Artisan::command('notifications:dispatch', function () {
$dispatcher = app(NotificationDispatcher::class);
$dispatcher->dispatchAll();
$this->info('🔔 Notifications dispatched.');
})->purpose('Send all pending KOL Manager notifications');
})->purpose('Send all pending Cathy notifications');
// Run every hour automatically
Schedule::command('notifications:dispatch')->hourly();