@extends('dashboard.app') @section('title', 'My Keywords') @section('page_title', 'My Keywords') @section('page_subtitle', 'Manage your private emoji keywords and language tags.') @section('dashboard_content') @php $user = $user ?? auth()->user(); $isPersonal = $user && (string) $user->tier === 'personal'; $freeLimit = $freeLimit ?? null; $activeCount = (int) ($activeCount ?? $items->where('is_active', true)->count()); $limitReached = $freeLimit !== null && $activeCount >= $freeLimit; $emojiLookup = $emojiLookup ?? []; @endphp @if (session('status'))
{{ session('status') }}
@endif @if ($errors->any())
{{ $errors->first() }}
@endif
Keyword library
{{ $isPersonal ? 'Ready to personalize' : 'Free plan keywords' }}

Add keywords to emojis to improve your personal search results.

@if (!$isPersonal && $freeLimit)

Free active limit: {{ $activeCount }} / {{ $freeLimit }} keywords. Inactive keywords are stored but not used in search.

@endif
Export JSON
@if (!$isPersonal && $freeLimit)
Free plan allows up to {{ $freeLimit }} active keywords. You can keep extras as inactive and reactivate after upgrading.
@endif
Search behavior: only Active private keywords are used in emoji matching. Inactive keywords stay saved in your account but are ignored by search and API results.
@forelse ($items as $item) @php $lookup = $emojiLookup[$item->emoji_slug] ?? null; @endphp @empty @endforelse
Emoji Keyword Language Status
{{ $lookup['emoji'] ?? '⬚' }}
{{ $lookup['name'] ?? $item->emoji_slug }}
{{ $item->emoji_slug }}
{{ $item->keyword }} @php $isActiveMobile = (bool) ($item->is_active ?? true); $canActivateMobile = $isActiveMobile || $isPersonal || !$limitReached; @endphp
@csrf @method('PUT')
@csrf @method('DELETE')
{{ $item->lang ?? 'und' }} @php $isActive = (bool) ($item->is_active ?? true); $canActivate = $isActive || $isPersonal || !$limitReached; @endphp {{ $isActive ? 'Active' : 'Inactive' }}
No keywords yet.
@endsection @push('scripts') @endpush