refactor(notification): 删 AnnouncementBanner 废弃文件

AnnouncementBanner 在 v0.12.6 公告改 modal 之后就已经废弃了,
VideoGenerationPage L148 注释明确写"公告已改为弹窗,旧的横幅不再显示",
现在公告整合到 Notification 表后,无任何 import 引用,清理。

同步删 AnnouncementBanner.module.css 配套样式。
typecheck 0 error,smoke 全过。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
seaislee1209 2026-05-15 15:59:38 +08:00
parent 7a503db814
commit 850acf646e
2 changed files with 0 additions and 115 deletions

View File

@ -1,81 +0,0 @@
.banner {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 16px;
/* 深色 - 紫青渐变玻璃 */
background: linear-gradient(90deg, rgba(108, 99, 255, 0.10), rgba(0, 184, 230, 0.08));
border-left: 3px solid var(--color-primary);
border-bottom: 1px solid var(--color-border-soft);
backdrop-filter: var(--bf-glass-md);
-webkit-backdrop-filter: var(--bf-glass-md);
box-shadow: inset 0 1px 0 var(--color-inset-highlight);
font-size: 13px;
color: var(--color-text-primary);
line-height: 1.5;
flex-shrink: 0;
}
[data-theme="light"] .banner {
/* 浅色 - 暖米色 chip */
background: var(--color-chip-warm-bg);
border-left-color: var(--color-chip-warm-border);
border-bottom-color: var(--color-chip-warm-border);
color: var(--color-chip-warm-text);
}
[data-theme="light"] .icon {
color: var(--color-chip-warm-badge-text);
}
.icon {
flex-shrink: 0;
color: var(--color-primary);
}
.marqueeWrapper {
flex: 1;
overflow: hidden;
position: relative;
mask-image: linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent);
-webkit-mask-image: linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent);
}
.marqueeText {
display: inline-block;
white-space: nowrap;
animation: marquee 20s linear infinite;
padding-left: 100%;
}
.marqueeWrapper:hover .marqueeText {
animation-play-state: paused;
}
@keyframes marquee {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-100%);
}
}
.closeBtn {
flex-shrink: 0;
background: none;
border: none;
color: var(--color-text-secondary);
cursor: pointer;
padding: 4px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 4px;
transition: all 0.15s;
}
.closeBtn:hover {
color: var(--color-text-primary);
background: var(--color-bg-hover);
}

View File

@ -1,34 +0,0 @@
import { useEffect, useState } from 'react';
import { videoApi } from '../lib/api';
import styles from './AnnouncementBanner.module.css';
export function AnnouncementBanner() {
const [text, setText] = useState('');
const [dismissed, setDismissed] = useState(false);
useEffect(() => {
videoApi.getAnnouncement().then(({ data }) => {
if (data.enabled && data.announcement) {
setText(data.announcement);
}
}).catch(() => {});
}, []);
if (!text || dismissed) return null;
return (
<div className={styles.banner}>
<svg className={styles.icon} width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
<path d="M22 17H2a3 3 0 0 0 3-3V9a7 7 0 0 1 14 0v5a3 3 0 0 0 3 3zm-8.27 4a2 2 0 0 1-3.46 0" />
</svg>
<div className={styles.marqueeWrapper}>
<span className={styles.marqueeText}>{text}</span>
</div>
<button className={styles.closeBtn} onClick={() => setDismissed(true)} title="关闭">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
<path d="M18 6L6 18M6 6l12 12" />
</svg>
</button>
</div>
);
}