f17f171f4b
迁移收尾修复:
- heartbeat.js: 移除 export { } 中重复的 startHeartbeat/stopHeartbeat(已通过 export function 导出)
- scripts.blade.php: 移除 JS 注释中的 {{ }} 避免 Blade 编译为 e() 导致 PHP 解析错误
- preferences-status.js: 补全 6 个缺失的 window.* 赋值(toggleBlockMenu/toggleFeatureMenu 等),
实现迁移中丢失的 updateDailyStatus/clearDailyStatus,修复 handleFeatureLocalClear 清屏回调
- toolbar.js: 补全 window.runFeatureShortcut 赋值
头像框样式修复(chat-decorations.css):
- z-index 互换:头像降至 1,框升至 3,使框边缘可遮挡头像外围
- 使用 CSS mask(radial-gradient)挖环形替代旧 ::before 实心圆遮挡方案
- clip-path: circle(50%) 硬裁剪确保圆形,不受 chat.css border-radius: 2px 覆盖
- 特异性提升至 .user-item .avatar-frame-wrapper .user-head
新 Vite 模块(从 Blade 迁移):
- chat-state.js / message-renderer.js / user-list.js / chat-events.js
- composer.js(重写)/ heartbeat.js / admin-commands.js
- vip-presence.js / chat-decorations.css
149 lines
3.2 KiB
CSS
149 lines
3.2 KiB
CSS
@import 'tailwindcss';
|
|
|
|
@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php';
|
|
@source '../../storage/framework/views/*.php';
|
|
@source '../**/*.blade.php';
|
|
@source '../**/*.js';
|
|
|
|
@theme {
|
|
--font-sans: 'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
|
|
'Segoe UI Symbol', 'Noto Color Emoji';
|
|
}
|
|
|
|
/* 五子棋公屏邀请按钮由 Vite 事件委托接管,这里集中维护 hover 视觉态。 */
|
|
.gomoku-invite-open:hover {
|
|
background: #ddeeff !important;
|
|
}
|
|
|
|
.gomoku-invite-accept:hover {
|
|
opacity: .8 !important;
|
|
}
|
|
|
|
.vip-presence-banner {
|
|
position: fixed;
|
|
inset: 24px 24px auto 24px;
|
|
z-index: 100000;
|
|
display: flex;
|
|
justify-content: center;
|
|
pointer-events: none;
|
|
animation: vip-presence-enter .55s ease-out both;
|
|
}
|
|
|
|
.vip-presence-banner.is-leaving {
|
|
animation: vip-presence-leave .65s ease-in both;
|
|
}
|
|
|
|
.vip-presence-banner__glow {
|
|
position: absolute;
|
|
inset: 14px auto auto 50%;
|
|
width: min(72vw, 720px);
|
|
height: 88px;
|
|
border-radius: 9999px;
|
|
filter: blur(34px);
|
|
transform: translateX(-50%);
|
|
opacity: .95;
|
|
}
|
|
|
|
.vip-presence-banner__card {
|
|
position: relative;
|
|
width: min(92vw, 760px);
|
|
border: 1px solid rgba(255, 255, 255, .35);
|
|
border-radius: 28px;
|
|
padding: 20px 24px;
|
|
overflow: hidden;
|
|
box-shadow: 0 20px 60px rgba(15, 23, 42, .35);
|
|
}
|
|
|
|
.vip-presence-banner__card::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,.16) 38%, transparent 72%);
|
|
transform: translateX(-120%);
|
|
animation: vip-presence-shine 2.6s ease-in-out infinite;
|
|
}
|
|
|
|
.vip-presence-banner__meta {
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.vip-presence-banner__icon {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 42px;
|
|
height: 42px;
|
|
border-radius: 16px;
|
|
background: rgba(15, 23, 42, .22);
|
|
backdrop-filter: blur(10px);
|
|
font-size: 24px;
|
|
}
|
|
|
|
.vip-presence-banner__level {
|
|
font-size: 12px;
|
|
font-weight: 800;
|
|
letter-spacing: .12em;
|
|
text-transform: uppercase;
|
|
color: rgba(255, 255, 255, .92);
|
|
}
|
|
|
|
.vip-presence-banner__type {
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
padding: 6px 10px;
|
|
border-radius: 9999px;
|
|
color: #0f172a;
|
|
background: rgba(255, 255, 255, .72);
|
|
}
|
|
|
|
.vip-presence-banner__text {
|
|
position: relative;
|
|
margin-top: 14px;
|
|
font-size: clamp(16px, 2vw, 24px);
|
|
font-weight: 800;
|
|
line-height: 1.5;
|
|
text-wrap: balance;
|
|
text-shadow: 0 2px 18px rgba(15, 23, 42, .22);
|
|
}
|
|
|
|
@keyframes vip-presence-enter {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(-22px) scale(.96);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0) scale(1);
|
|
}
|
|
}
|
|
|
|
@keyframes vip-presence-leave {
|
|
from {
|
|
opacity: 1;
|
|
transform: translateY(0) scale(1);
|
|
}
|
|
|
|
to {
|
|
opacity: 0;
|
|
transform: translateY(-16px) scale(.98);
|
|
}
|
|
}
|
|
|
|
@keyframes vip-presence-shine {
|
|
0% {
|
|
transform: translateX(-120%);
|
|
}
|
|
|
|
55%,
|
|
100% {
|
|
transform: translateX(140%);
|
|
}
|
|
}
|
|
|
|
@import './chat-decorations.css';
|