feat: 自动更新
This commit is contained in:
@@ -47,6 +47,8 @@ export function ProfileSettingsPage({ session, onNavigate, onLogout, onProfileSa
|
||||
|
||||
const activePalette = useMemo(() => themePalettes.find((palette) => palette.id === themeState.paletteId) ?? themePalettes[0], [themeState.paletteId]);
|
||||
const activeBackground = useMemo(() => themeBackgroundPresets.find((preset) => preset.id === themeState.backgroundPresetId) ?? themeBackgroundPresets[0], [themeState.backgroundPresetId]);
|
||||
const hasCustomBackground = Boolean(themeState.backgroundImage);
|
||||
const backgroundMetricValue = hasCustomBackground ? "自定义背景" : activeBackground.label;
|
||||
|
||||
async function saveProfile(event: FormEvent<HTMLFormElement>) {
|
||||
event.preventDefault();
|
||||
@@ -138,7 +140,7 @@ export function ProfileSettingsPage({ session, onNavigate, onLogout, onProfileSa
|
||||
metrics={[
|
||||
{ label: "身份", value: session.roles.length ? String(session.roles.length) : "0", tone: "neutral" },
|
||||
{ label: "配色", value: activePalette.label, tone: "success" },
|
||||
{ label: "背景", value: activeBackground.label, tone: "warning" }
|
||||
{ label: "背景", value: backgroundMetricValue, tone: "warning" }
|
||||
]}
|
||||
/>
|
||||
|
||||
@@ -221,12 +223,27 @@ export function ProfileSettingsPage({ session, onNavigate, onLogout, onProfileSa
|
||||
<strong>背景桌面</strong>
|
||||
</div>
|
||||
<div className="background-preset-grid profile-background-grid">
|
||||
{themeBackgroundPresets.map((preset) => (
|
||||
<button key={preset.id} type="button" className={cx("background-preset-option", preset.id === themeState.backgroundPresetId && "background-preset-option-active")} aria-pressed={preset.id === themeState.backgroundPresetId} title={themeState.backgroundImage ? `${preset.summary},移除上传背景后显示` : preset.summary} onClick={() => selectBackgroundPreset(preset.id)}>
|
||||
<span className="background-preset-preview" style={{ background: preset.preview }} aria-hidden="true" />
|
||||
<span className="background-preset-label">{preset.id === themeState.backgroundPresetId ? <Sparkles size={13} /> : <MoonStar size={13} />}{preset.label}</span>
|
||||
</button>
|
||||
))}
|
||||
{themeBackgroundPresets.map((preset) => {
|
||||
const isFallbackPreset = preset.id === themeState.backgroundPresetId;
|
||||
const isVisiblePreset = isFallbackPreset && !hasCustomBackground;
|
||||
return (
|
||||
<button
|
||||
key={preset.id}
|
||||
type="button"
|
||||
className={cx("background-preset-option", isVisiblePreset && "background-preset-option-active", hasCustomBackground && isFallbackPreset && "background-preset-option-fallback")}
|
||||
aria-pressed={isVisiblePreset}
|
||||
title={hasCustomBackground ? `${preset.summary},当前自定义背景正在显示;此预设会在移除上传背景后显示` : preset.summary}
|
||||
onClick={() => selectBackgroundPreset(preset.id)}
|
||||
>
|
||||
<span className="background-preset-preview" style={{ background: preset.preview }} aria-hidden="true" />
|
||||
<span className="background-preset-label">
|
||||
{isVisiblePreset ? <Sparkles size={13} /> : <MoonStar size={13} />}
|
||||
{preset.label}
|
||||
{hasCustomBackground && isFallbackPreset && <span className="background-preset-fallback-badge">备用</span>}
|
||||
</span>
|
||||
</button>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
<div className="theme-background-actions">
|
||||
<label className="theme-upload" title="上传自定义背景桌面">
|
||||
@@ -241,7 +258,7 @@ export function ProfileSettingsPage({ session, onNavigate, onLogout, onProfileSa
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
<span className="theme-background-note">{themeState.backgroundImage ? "自定义上传背景正在显示,预设会作为移除后的备用桌面。" : "当前使用内置背景桌面。"}</span>
|
||||
<span className="theme-background-note">{themeState.backgroundImage ? `当前显示自定义上传背景;${activeBackground.label} 仅作为移除上传后的备用桌面。` : "当前使用内置背景桌面。"}</span>
|
||||
</section>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user