diff --git a/web/src/components/AnnouncementBanner.module.css b/web/src/components/AnnouncementBanner.module.css deleted file mode 100644 index 36c1f59..0000000 --- a/web/src/components/AnnouncementBanner.module.css +++ /dev/null @@ -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); -} diff --git a/web/src/components/AnnouncementBanner.tsx b/web/src/components/AnnouncementBanner.tsx deleted file mode 100644 index b56735b..0000000 --- a/web/src/components/AnnouncementBanner.tsx +++ /dev/null @@ -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 ( -
- - - -
- {text} -
- -
- ); -}