Add VIP presence themes and custom greetings

This commit is contained in:
2026-04-11 15:44:30 +08:00
parent 9fb7710079
commit 4eba9dfc12
21 changed files with 1126 additions and 49 deletions
+112
View File
@@ -139,6 +139,118 @@
</div>
</section>
<section class="bg-white rounded-[2rem] border border-slate-200 shadow-sm overflow-hidden">
<div class="bg-[radial-gradient(circle_at_top_left,_rgba(251,191,36,0.24),_transparent_42%),linear-gradient(135deg,#0f172a,#1e293b,#334155)] px-6 py-6 text-white">
<div class="flex flex-col gap-2 md:flex-row md:items-end md:justify-between">
<div>
<p class="text-xs font-bold uppercase tracking-[0.28em] text-amber-300/90">会员进退场主题</p>
<h3 class="mt-2 text-2xl font-black">欢迎语、离开语与专属入场仪式</h3>
<p class="mt-2 max-w-2xl text-sm text-slate-200">
这里可以查看当前会员档位的专属特效和横幅风格;若当前档位允许自定义,你还可以设置自己的欢迎语和离开语。
</p>
</div>
@if ($user->isVip())
<div class="rounded-2xl border border-white/10 bg-white/10 px-4 py-3 text-sm text-slate-100">
当前档位:<span class="font-extrabold" style="color: {{ $user->vipLevel?->color ?: '#fef3c7' }}">{{ $user->vipName() }}</span>
</div>
@endif
</div>
</div>
<div class="grid grid-cols-1 gap-6 p-6 lg:grid-cols-[1.2fr,0.8fr]">
<div class="space-y-5">
<div class="rounded-3xl border border-slate-200 bg-slate-50 p-5">
<div class="flex items-center gap-3">
<div class="flex h-12 w-12 items-center justify-center rounded-2xl bg-slate-900 text-2xl text-white shadow-lg">
{{ $user->vipLevel?->icon ?: '✨' }}
</div>
<div>
<p class="text-sm font-bold text-slate-500">当前主题预览</p>
<h4 class="text-xl font-black text-slate-900">{{ $user->vipLevel?->name ?? '普通用户' }}</h4>
</div>
</div>
<div class="mt-5 grid grid-cols-1 gap-3 md:grid-cols-2">
<div class="rounded-2xl border border-slate-200 bg-white p-4">
<p class="text-xs font-bold uppercase tracking-[0.18em] text-slate-400">入场特效</p>
<p class="mt-2 text-lg font-extrabold text-slate-900">{{ $effectOptions[$user->vipLevel?->joinEffectKey() ?? 'none'] ?? '无特效' }}</p>
<p class="mt-2 text-sm text-slate-500">横幅风格:{{ $bannerStyleOptions[$user->vipLevel?->joinBannerStyleKey() ?? 'aurora'] ?? '鎏光星幕' }}</p>
</div>
<div class="rounded-2xl border border-slate-200 bg-white p-4">
<p class="text-xs font-bold uppercase tracking-[0.18em] text-slate-400">离场特效</p>
<p class="mt-2 text-lg font-extrabold text-slate-900">{{ $effectOptions[$user->vipLevel?->leaveEffectKey() ?? 'none'] ?? '无特效' }}</p>
<p class="mt-2 text-sm text-slate-500">横幅风格:{{ $bannerStyleOptions[$user->vipLevel?->leaveBannerStyleKey() ?? 'farewell'] ?? '告别暮光' }}</p>
</div>
</div>
</div>
<div class="rounded-3xl border border-amber-100 bg-amber-50/70 p-5">
<p class="text-sm font-bold text-amber-700">等级默认语句</p>
<div class="mt-4 grid gap-4 md:grid-cols-2">
<div class="rounded-2xl bg-white p-4 shadow-sm">
<p class="text-xs font-bold uppercase tracking-[0.18em] text-amber-500">默认欢迎语</p>
<p class="mt-3 text-sm leading-7 text-slate-700">
{{ $user->vipLevel?->join_templates_array[0] ?? '当前档位尚未配置默认欢迎语。' }}
</p>
</div>
<div class="rounded-2xl bg-white p-4 shadow-sm">
<p class="text-xs font-bold uppercase tracking-[0.18em] text-amber-500">默认离开语</p>
<p class="mt-3 text-sm leading-7 text-slate-700">
{{ $user->vipLevel?->leave_templates_array[0] ?? '当前档位尚未配置默认离开语。' }}
</p>
</div>
</div>
</div>
</div>
<div class="rounded-3xl border border-slate-200 bg-white p-5 shadow-sm">
<div class="flex items-start justify-between gap-3">
<div>
<p class="text-sm font-bold text-slate-500">我的个性化设置</p>
<h4 class="mt-1 text-xl font-black text-slate-900">自定义欢迎语与离开语</h4>
</div>
@if ($user->canCustomizeVipPresence())
<span class="inline-flex rounded-full bg-emerald-100 px-3 py-1 text-xs font-bold text-emerald-700">已开启</span>
@else
<span class="inline-flex rounded-full bg-gray-100 px-3 py-1 text-xs font-bold text-gray-500">未开放</span>
@endif
</div>
@if ($user->canCustomizeVipPresence())
<form action="{{ route('vip.center.presence.update') }}" method="POST" class="mt-5 space-y-4">
@csrf
@method('PUT')
<div>
<label class="mb-2 block text-sm font-bold text-slate-700">我的欢迎语</label>
<textarea name="custom_join_message" rows="4" maxlength="255"
class="w-full rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm text-slate-900 outline-none transition focus:border-amber-400 focus:bg-white"
placeholder="例:{username} 乘着星舰闪耀登场,今晚全场高光属于 TA!">{{ old('custom_join_message', $user->custom_join_message) }}</textarea>
<p class="mt-2 text-xs text-slate-500">支持使用 <span class="font-mono text-slate-700">{username}</span> 占位符自动替换成你的昵称。</p>
</div>
<div>
<label class="mb-2 block text-sm font-bold text-slate-700">我的离开语</label>
<textarea name="custom_leave_message" rows="4" maxlength="255"
class="w-full rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm text-slate-900 outline-none transition focus:border-amber-400 focus:bg-white"
placeholder="例:{username} 留下一道流光背影,优雅谢幕,我们下次再见。">{{ old('custom_leave_message', $user->custom_leave_message) }}</textarea>
</div>
<button type="submit"
class="w-full rounded-2xl bg-slate-900 px-5 py-3 text-sm font-bold text-white transition hover:bg-slate-800">
保存我的专属语句
</button>
</form>
@elseif ($user->isVip())
<div class="mt-5 rounded-2xl border border-dashed border-slate-200 bg-slate-50 px-4 py-5 text-sm leading-7 text-slate-500">
当前会员档位暂未开放个人自定义功能,不过你仍会自动使用本等级配置的专属欢迎语、离开语和华丽特效。
</div>
@else
<div class="mt-5 rounded-2xl border border-dashed border-amber-200 bg-amber-50 px-4 py-5 text-sm leading-7 text-amber-800">
开通会员后,这里会解锁对应等级的专属进退场主题;若等级允许,还能设置你自己的欢迎语和离开语。
</div>
@endif
</div>
</div>
</section>
<section class="bg-white rounded-3xl border border-gray-100 shadow-sm p-6">
<div class="flex items-center justify-between gap-4 mb-5">
<div>