新增 v1.5.6 升级公告,3 天后自动消失
公告展示决策终端 hero 重设计、DEB 统一、亮色补全等变更摘要。 localStorage 记录首次访问时间,超过 3 天自动隐藏。 补全 scan-upgrade-announcement 暗色主题基础样式。 Tested: tsc 全过
This commit is contained in:
@@ -29,6 +29,62 @@
|
||||
background: rgba(8, 17, 30, 0.8);
|
||||
}
|
||||
|
||||
.root :global(.scan-upgrade-announcement) {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 12px;
|
||||
padding: 16px 20px;
|
||||
border: 1px solid rgba(77, 163, 255, 0.18);
|
||||
border-radius: 16px;
|
||||
background:
|
||||
radial-gradient(circle at top left, rgba(77, 163, 255, 0.08), transparent 36%),
|
||||
rgba(11, 18, 32, 0.66);
|
||||
backdrop-filter: blur(8px);
|
||||
}
|
||||
|
||||
.root :global(.scan-upgrade-announcement-copy) {
|
||||
display: grid;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.root :global(.scan-upgrade-announcement-copy span) {
|
||||
color: #4da3ff;
|
||||
font-size: 11px;
|
||||
font-weight: 800;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.04em;
|
||||
}
|
||||
|
||||
.root :global(.scan-upgrade-announcement-copy strong) {
|
||||
color: #e6edf3;
|
||||
font-size: 18px;
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
.root :global(.scan-upgrade-announcement-copy p) {
|
||||
color: #9fb2c7;
|
||||
font-size: 13px;
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.root :global(.scan-upgrade-announcement ul) {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.root :global(.scan-upgrade-announcement li) {
|
||||
padding: 5px 10px;
|
||||
border: 1px solid rgba(77, 163, 255, 0.14);
|
||||
border-radius: 999px;
|
||||
background: rgba(77, 163, 255, 0.08);
|
||||
color: #cfe5ff;
|
||||
font-size: 12px;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.root :global(.scan-terminal.focus-view-active .scan-upgrade-announcement),
|
||||
.root :global(.scan-terminal.focus-view-active .scan-kpi-bar) {
|
||||
display: none;
|
||||
|
||||
@@ -115,6 +115,20 @@ function ScanTerminalScreen() {
|
||||
const [activeView, setActiveView] = useState<ContentView>("map");
|
||||
const [mapSelectedCityName, setMapSelectedCityName] = useState<string | null>(null);
|
||||
const [showScanPaywall, setShowScanPaywall] = useState(false);
|
||||
const [showAnnouncement, setShowAnnouncement] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
const key = "polyweather_v156_announcement_seen_at";
|
||||
const seen = localStorage.getItem(key);
|
||||
const now = Date.now();
|
||||
if (!seen) {
|
||||
localStorage.setItem(key, String(now));
|
||||
setShowAnnouncement(true);
|
||||
return;
|
||||
}
|
||||
const elapsed = now - Number(seen);
|
||||
setShowAnnouncement(elapsed < 3 * 24 * 60 * 60 * 1000);
|
||||
}, []);
|
||||
const userLocalTime = useUserLocalClock();
|
||||
const { setThemeMode, themeMode } = useScanTerminalTheme();
|
||||
const lastMapSelectedCityRef = useRef<string>("");
|
||||
@@ -508,6 +522,29 @@ function ScanTerminalScreen() {
|
||||
locale={locale}
|
||||
/>
|
||||
|
||||
{showAnnouncement ? (
|
||||
<section className="scan-upgrade-announcement" aria-label={isEn ? "Upgrade announcement" : "升级公告"}>
|
||||
<div className="scan-upgrade-announcement-copy">
|
||||
<span>{isEn ? "v1.5.6 upgrade" : "v1.5.6 升级公告"}</span>
|
||||
<strong>
|
||||
{isEn ? "Scan terminal is upgraded to v1.5.6" : "决策终端已升级到 v1.5.6"}
|
||||
</strong>
|
||||
<p>
|
||||
{isEn
|
||||
? "City decision cards have been redesigned with a compact hero layout and consistent DEB data source. Sticky headers are removed for smoother scrolling."
|
||||
: "城市决策卡 hero 布局重新设计,三指标并列对比更直观;DEB 数据源统一不再出现不一致;去除顶部固定效果滚动更流畅。"}
|
||||
</p>
|
||||
</div>
|
||||
<ul>
|
||||
<li>{isEn ? "Redesigned decision card hero" : "重设计城市决策卡 hero 布局"}</li>
|
||||
<li>{isEn ? "Unified DEB data source" : "统一 DEB 数据源"}</li>
|
||||
<li>{isEn ? "Light theme coverage" : "亮色主题补全覆盖"}</li>
|
||||
<li>{isEn ? "HKO observatory AI read" : "香港天文台观测 AI 解读"}</li>
|
||||
<li>{isEn ? "Smoother scrolling experience" : "滚动体验优化"}</li>
|
||||
</ul>
|
||||
</section>
|
||||
) : null}
|
||||
|
||||
<section className="scan-list-section">
|
||||
<div className="scan-list-header">
|
||||
<div className="scan-list-tabs">
|
||||
|
||||
Reference in New Issue
Block a user