fix(frontend): refine settings dialog layout
Independent Staging Quality Gate / validate (push) Failing after 8m47s
Independent Staging Quality Gate / publish (push) Skipped

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
jesse-ux
2026-09-19 11:32:27 +08:00
co-authored by Claude Code
parent c2ecbc74cd
commit eb8f5147f4
12 changed files with 135 additions and 48 deletions
@@ -1,6 +1,6 @@
"use client";
import { ChevronRight, Settings, UserRound, Users, WalletCards, X } from "lucide-react";
import { Settings, UserRound, Users, WalletCards, X } from "lucide-react";
import { memo, type MutableRefObject, type ReactNode } from "react";
import { createPortal } from "react-dom";
@@ -72,7 +72,10 @@ export const AccountDialogOverlay = memo(function AccountDialogOverlay({
onMouseDown={(event) => event.stopPropagation()}
>
<header className="account-modal-header">
<h2 id="account-dialog-title">{model.title}</h2>
<div className="account-modal-heading">
{isSettingsDialog ? <span className="account-modal-eyebrow">设置</span> : null}
<h2 id="account-dialog-title">{model.title}</h2>
</div>
<button
className="dialog-close"
ref={model.closeButtonRef}
@@ -97,7 +100,6 @@ export const AccountDialogOverlay = memo(function AccountDialogOverlay({
>
<Icon aria-hidden="true" />
<span>{label}</span>
<ChevronRight aria-hidden="true" />
</button>
))}
</nav>
+17 -15
View File
@@ -323,24 +323,26 @@ export function ChartLibraryPanel({
<div className="chart-library-group">
<div className="chart-library-group-heading">
<div><b>其他人</b><small>亲友、伴侣或客户资料</small></div>
<span className="chart-library-count">{otherCharts.length}</span>
<div className="chart-library-group-heading-actions">
<span className="chart-library-count">{otherCharts.length}</span>
<button
className="button-secondary chart-library-add chart-library-add--heading"
type="button"
onClick={() => {
setOtherProfileDraft(emptyProfile);
setOtherChartRelationship("other");
setEditingChartId(null);
setAccountError("");
setProfileNotice("");
setView({ kind: "add" });
}}
>
添加其他人
</button>
</div>
</div>
{otherCharts.length === 0 && <p className="empty-library-copy">还没有其他星盘,先添加一份资料。</p>}
{otherCharts.map(listRow)}
<button
className="button-secondary chart-library-add"
type="button"
onClick={() => {
setOtherProfileDraft(emptyProfile);
setOtherChartRelationship("other");
setEditingChartId(null);
setAccountError("");
setProfileNotice("");
setView({ kind: "add" });
}}
>
添加其他人
</button>
</div>
</div>
);
+3 -3
View File
@@ -27,11 +27,11 @@ export function ProfilePanel({
{account.avatar && (
<section className="sheet-section avatar-section" aria-labelledby="avatar-section-title">
<div className="section-heading">
<b id="avatar-section-title">头像</b>
<small>Beam 形象由随机种子生成,刷新和换设备后保持一致</small>
<b id="avatar-section-title">账户头像</b>
<small>Beam 形象会在刷新和换设备后保持一致</small>
</div>
<div className="avatar-editor">
<UserAvatar avatar={account.avatar} size={48} label="当前头像预览" />
<UserAvatar avatar={account.avatar} size={56} label="当前头像预览" />
<div className="avatar-editor-controls">
<div className="avatar-palette-list" role="radiogroup" aria-label="头像配色">
{beamAvatarPalettes.map((palette, index) => (