feat(i18n): add new localization strings for settings and two-step login across multiple languages

style: adjust grid layout for app main and add responsive styles for settings category

style: enhance management styles with new settings category layout and tabs

style: improve responsive design for settings modules and submodules
This commit is contained in:
shuaiplus
2026-07-03 19:19:24 +08:00
parent 6284c632de
commit c7eb6c663d
12 changed files with 963 additions and 310 deletions
+240
View File
@@ -537,6 +537,233 @@
@apply mb-2;
}
.settings-page-categorized {
@apply min-w-0;
}
.settings-category-layout {
@apply grid min-w-0 gap-5;
}
.settings-category-tabs {
@apply flex min-w-0 items-center gap-1 border;
width: fit-content;
max-width: 100%;
padding: 8px;
border-radius: 14px;
border-color: var(--line);
background: var(--panel);
}
.settings-category-tab {
@apply relative flex h-9 cursor-pointer items-center rounded-lg border-0 px-3 text-sm font-bold;
background: transparent;
color: var(--muted-strong);
transition:
background var(--dur-fast) var(--ease-smooth),
color var(--dur-fast) var(--ease-smooth),
box-shadow var(--dur-fast) var(--ease-smooth);
}
.settings-category-tab:hover {
color: var(--primary-strong);
background: color-mix(in srgb, var(--primary) 6%, transparent);
}
.settings-category-tab.active {
color: var(--primary-strong);
background: color-mix(in srgb, var(--primary) 12%, var(--panel));
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--primary) 22%, var(--line));
}
.settings-category-tab.active::after {
display: none;
}
.settings-category-panel {
@apply min-w-0;
width: 50%;
min-width: 700px;
max-width: 50%;
padding: 24px;
border: 1px solid var(--line);
border-radius: 16px;
background: var(--panel);
}
.settings-section-stack {
@apply grid min-w-0 gap-0;
}
.settings-submodule {
@apply min-w-0 border-0 border-b px-0 py-5;
border-color: var(--line);
background: transparent;
}
.settings-submodule:first-child {
padding-top: 0;
}
.settings-submodule:last-child {
border-bottom: 0;
padding-bottom: 0;
}
.settings-submodule h3 {
@apply mb-4 mt-0 text-base font-extrabold;
color: var(--text);
}
.settings-placeholder-module {
background: transparent;
}
.settings-vertical-fields {
@apply grid gap-3;
}
.settings-vertical-fields .field {
@apply mb-0;
}
.settings-vertical-fields + .btn {
margin-top: 14px;
}
.settings-category-panel > .settings-section-stack > .settings-submodule:only-child {
border-bottom: 0;
padding-bottom: 0;
}
.two-step-recovery-warning {
@apply rounded-xl border p-4;
border-color: color-mix(in srgb, #f97316 28%, var(--line));
background: color-mix(in srgb, #f97316 7%, var(--panel));
}
.settings-submodule.two-step-recovery-warning {
border-bottom-color: color-mix(in srgb, #f97316 28%, var(--line));
}
.two-step-recovery-warning + .two-step-providers-module {
border-top: 0;
}
.two-step-warning-head {
@apply mb-2 flex items-center gap-2 text-sm font-extrabold;
color: #c2410c;
padding-top: 10px;
}
.two-step-recovery-warning p {
@apply mb-3 mt-0 text-sm leading-6;
color: #c2410c;
}
.two-step-recovery-code-dialog-value {
@apply my-5 text-center text-base font-extrabold tracking-[0.12em];
color: #c2187a;
word-spacing: 0.55em;
overflow-wrap: anywhere;
}
.two-step-provider-list {
@apply grid;
}
.two-step-provider-row {
@apply grid min-w-0 items-center gap-4 border-b py-5;
grid-template-columns: 76px minmax(0, 1fr) auto;
border-color: var(--line);
}
.two-step-provider-row:first-child {
padding-top: 0;
}
.two-step-provider-row:last-child {
border-bottom: 0;
padding-bottom: 0;
}
.two-step-provider-icon {
@apply flex h-14 w-14 items-center justify-center rounded-xl;
color: var(--primary-strong);
background: color-mix(in srgb, var(--primary) 9%, var(--panel));
}
.two-step-provider-yubico {
@apply text-base font-extrabold lowercase;
color: #54a51c;
background: transparent;
}
.two-step-provider-copy {
@apply grid min-w-0 gap-1;
}
.two-step-provider-title {
@apply flex min-w-0 flex-wrap items-center gap-2;
}
.two-step-provider-title strong {
@apply text-base font-bold;
color: var(--text);
}
.two-step-provider-copy span {
@apply text-sm leading-5;
color: var(--muted-strong);
}
.two-step-enabled-badge {
@apply inline-flex min-h-6 items-center rounded-md border px-2 text-xs font-extrabold leading-none;
border-color: color-mix(in srgb, var(--success) 28%, var(--line));
background: color-mix(in srgb, var(--success) 10%, var(--panel));
color: var(--success);
}
.totp-manage-dialog-body {
@apply mt-3;
}
.totp-manage-dialog-body .totp-grid {
grid-template-columns: minmax(0, 1fr);
}
.totp-manage-dialog-body .totp-qr {
justify-self: center;
width: 220px;
}
.totp-manage-dialog-body .totp-secret-input-wrap {
grid-template-columns: minmax(0, 1fr) auto;
}
.totp-manage-dialog-body .totp-secret-input {
font-size: 13px;
}
.dialog-close-btn {
@apply absolute right-3 top-3 flex h-9 w-9 cursor-pointer items-center justify-center rounded-full border-0 p-0;
background: transparent;
color: var(--muted-strong);
transition:
background-color var(--dur-fast) var(--ease-smooth),
color var(--dur-fast) var(--ease-smooth);
}
.dialog-close-btn:hover:not(:disabled) {
background: var(--panel-soft);
color: var(--text);
}
.dialog-close-btn:disabled {
cursor: not-allowed;
opacity: 0.5;
}
.settings-modules-grid {
--settings-grid-gap: 12px;
@apply grid;
@@ -1196,6 +1423,19 @@
background: var(--panel);
}
.settings-category-panel .sensitive-action {
border-right: 0;
border-left: 0;
border-radius: 0;
padding-right: 0;
padding-left: 0;
background: transparent;
}
.settings-category-panel > .settings-section-stack > .settings-submodule:only-child.sensitive-action {
border-top: 0;
}
.sensitive-action h4 {
@apply mb-1 mt-0 text-base font-extrabold;
color: var(--text);