设置
// 个人信息 · 偏好 · 通知 · 安全
{/* 左侧 nav */}
{/* 右侧内容 */}
{section === "profile" && (
个人信息
// 头像、姓名、联系方式 · 邮箱用于接收通知
)}
{section === "security" && (
安全
// 登录密码、双因素、在用设备
登录密码
●●●●●●●●●●
上次修改 2026-04-12
在用设备
// 不在此列表上的设备登录会触发短信告警
{DEVICES.map((device) => (
{device.phone ? (
) : (
)}
{device.name}{device.current ? CURRENT : null}
{device.meta}
{device.current
?
当前会话
:
}
))}
)}
{section === "notify" && (
通知
// 邮件、短信、站内提示开关
{NOTIFY_ROWS.map((row) => (
{row.title}{row.sub ?
{row.sub}
: null}
setNotify((prev) => ({ ...prev, [row.key]: next }))} />
{row.channels}
))}
)}
{section === "pref" && (
创作默认
// 新建项目时的预填值,可在向导中改
默认模板
{TEMPLATE_CHOICES.map((choice) => (
setTemplate(choice.v)}
>
{choice.t}
{choice.d}
))}
默认时长档
{DURATIONS.map((d) => (
setDuration(d)}
>
{d}s
))}
// 60s = 4 段 × 15s
默认字幕样式
{SUBTITLE_CHOICES.map((choice) => (
setSubtitle(choice.v)}
>
{choice.t}
{choice.d}
))}
默认 BGM 库
默认转场
)}
{section === "display" && (
显示
// 界面外观与语言
外观
语言
表格密度
)}
// Airshelf · v2.1 · build 20260521
{/* 上传头像 modal · 选图 → FormData(file) → onUploadAvatar */}
}
close={() => setModal("")}
footer={
}
>
{avatarPreview ?

: avatarChar}
{avatarFile ? avatarFile.name : "当前头像 · 默认"}
{avatarFile ? `// ${(avatarFile.size / 1024).toFixed(0)} KB · 已选择` : "// 系统生成 · 取姓氏首字"}
fileInputRef.current?.click()}
onKeyDown={(event) => {
if (event.key === "Enter" || event.key === " ") {
event.preventDefault();
fileInputRef.current?.click();
}
}}
>
点击选择 · 图片文件
JPG / PNG / WebP · ≤ 2 MB · 推荐 256 × 256
最大 2 MB · 长宽比建议 1:1 · 系统会自动裁切为圆形
不要上传含他人肖像的图片,违规可能导致账号封停
{/* 修改密码 modal · 原密码 + 新密码(≥8)→ onChangePassword */}
}
close={() => setModal("")}
footer={
}
>
setOldPassword(event.target.value)}
placeholder="输入当前密码"
/>
{pwSubmitted && !oldPassword ? 请输入原密码 : null}
setNewPassword(event.target.value)}
placeholder="至少 8 位"
/>
{pwTooShort || (pwSubmitted && newPassword.length < 8)
? 新密码至少 8 位
: // 建议混合字母、数字与符号}
{/* 退出登录确认 modal · 仅视觉还原,无后端接入 */}
}
close={() => setModal("")}
footer={
}
>
确认后将退出当前设备上的 Airshelf,再次使用需要重新登录。
项目、资产、团队成员与余额数据都会保留
仅影响当前浏览器会话,不会下线其他设备
);
}