Compare commits
1 Commits
main
...
15c8d3ae7c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
15c8d3ae7c |
@@ -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',
|
||||
|
||||
@@ -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");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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
2
package-lock.json
generated
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "KOL-Manager",
|
||||
"name": "app",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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' }}
|
||||
|
||||
@@ -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>
|
||||
-->
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -60,11 +60,11 @@
|
||||
@if($profile->whatsappUrl)
|
||||
<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>
|
||||
@if($profile->ig_handle)
|
||||
<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>
|
||||
@if($profile->tiktok_handle)
|
||||
<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>
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user