+
+
+
+ save.mutate()} disabled={save.isPending}>저장} />
+
+ setDisplayName(e.target.value)} />
+
+
+
+
+
+
+
+ setPref("notifyProject", "spin.notify.project", v)} />
+ setPref("notifyWork", "spin.notify.work", v)} />
+ setPref("notifyIncentive", "spin.notify.incentive", v)} />
+
+
+
+
+
+
+ setPref("sidebarCollapsed", "spin.sidebarCollapsed", v)} />
+
+
+
+
+
+
+
+
+
비밀번호 변경·2단계 인증 등 계정 보안과 계정 생성/삭제는 Keycloak 계정에서 관리됩니다.
+
+
} onClick={() => logout()}>로그아웃
+
+
+
+ );
+}
+
+function ToggleRow({ label, desc, on, onChange }: { label: string; desc?: string; on: boolean; onChange: (v: boolean) => void }) {
+ return (
+