feat(compare): add German localization and revamp compare UI
Pass the application language into compare dialogs and add German translations so titles, buttons and helper text render appropriately. Refactor dialog markup to introduce a compact header with a GitCompare icon, show changed-file counts, and surface contextual help and warnings. Adjust and extend CSS for spacing, layout and responsive behavior. - Pass app language into compare components and derive isGerman flag - Replace icons and restructure headers; add counts, help and warnings - Update styles for sizing, spacing, responsive rules and new classes
This commit is contained in:
+54
-10
@@ -324,7 +324,14 @@
|
||||
.select-menu-option.selected { color: var(--color-ink); }
|
||||
.select-menu-option:disabled { cursor: not-allowed; opacity: 0.42; }
|
||||
|
||||
.compare-target-select .select-menu-trigger { height: 40px; min-height: 40px; }
|
||||
.compare-target-select .select-menu-trigger {
|
||||
height: 38px;
|
||||
min-height: 38px;
|
||||
padding: 0 11px;
|
||||
border-color: var(--color-border);
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
border-color: rgba(111, 140, 255, 0.72);
|
||||
@@ -3323,17 +3330,16 @@
|
||||
|
||||
.compare-form {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto;
|
||||
grid-template-columns: minmax(0, 1fr) 40px minmax(0, 1fr);
|
||||
align-items: end;
|
||||
gap: 8px;
|
||||
padding: 10px 12px;
|
||||
border-bottom: 1px solid var(--color-border-subtle);
|
||||
gap: 10px;
|
||||
}
|
||||
.compare-field { display: grid; gap: 4px; min-width: 0; }
|
||||
.compare-field span { color: var(--color-ink-faint); font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.05em; }
|
||||
.compare-arrow { margin-bottom: 6px; color: var(--color-ink-faint); }
|
||||
.compare-target-help {
|
||||
margin: 12px;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 8px;
|
||||
padding: 10px 12px;
|
||||
border: 1px solid color-mix(in srgb, var(--color-accent) 20%, var(--color-border-subtle));
|
||||
border-radius: 8px;
|
||||
@@ -3342,6 +3348,9 @@
|
||||
font-size: 11.5px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.compare-target-help svg { flex: 0 0 auto; margin-top: 1px; color: var(--color-accent); }
|
||||
.compare-target-warning { border-color: color-mix(in srgb, #e0a040 30%, var(--color-border-subtle)); background: color-mix(in srgb, #e0a040 7%, var(--color-surface-raised)); }
|
||||
.compare-target-warning svg { color: #e0a040; }
|
||||
|
||||
.compare-summary { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; padding: 10px 12px; }
|
||||
.compare-range { display: flex; align-items: center; gap: 7px; color: var(--color-ink-muted); }
|
||||
@@ -3487,6 +3496,21 @@
|
||||
width: min(1560px, calc(100vw - 32px));
|
||||
height: min(940px, calc(100vh - 32px));
|
||||
}
|
||||
.compare-dialog-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 14px;
|
||||
min-height: 70px;
|
||||
padding: 14px 18px;
|
||||
border-bottom: 1px solid var(--color-border-subtle);
|
||||
background: var(--app-dialog-chrome);
|
||||
}
|
||||
.compare-dialog-title { display: flex; align-items: center; gap: 12px; min-width: 0; }
|
||||
.compare-dialog-title > div { min-width: 0; }
|
||||
.compare-dialog-mark { display: grid; place-items: center; flex: 0 0 auto; width: 38px; height: 38px; border: 1px solid color-mix(in srgb, var(--color-accent) 28%, var(--color-border)); border-radius: 10px; color: var(--color-accent); background: color-mix(in srgb, var(--color-accent) 9%, transparent); }
|
||||
.compare-dialog-title h2 { margin: 0; color: var(--color-accent); font-size: 18px; font-weight: 700; line-height: 1.2; }
|
||||
.compare-dialog-title p { margin: 3px 0 0; color: var(--color-ink); font-size: 11px; font-weight: 400; line-height: 1.35; }
|
||||
.global-search-dialog {
|
||||
width: min(1180px, calc(100vw - 32px));
|
||||
height: min(840px, calc(100vh - 32px));
|
||||
@@ -3502,12 +3526,22 @@
|
||||
height: min(860px, calc(100vh - 32px));
|
||||
}
|
||||
.compare-select-dialog {
|
||||
display: block;
|
||||
grid-template-rows: auto minmax(0, 1fr);
|
||||
width: min(720px, calc(100vw - 32px));
|
||||
height: auto;
|
||||
max-height: calc(100vh - 32px);
|
||||
overflow: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
.compare-select-shell { display: grid; grid-template-rows: minmax(0, 1fr) auto; min-height: 0; }
|
||||
.compare-select-body { display: grid; align-content: start; gap: 12px; min-height: 0; padding: 18px 20px 20px; overflow: auto; }
|
||||
.compare-target-panel { display: grid; gap: 16px; padding: 16px; border: 1px solid var(--color-border-subtle); border-radius: 12px; background: color-mix(in srgb, var(--app-settings-row-bg) 72%, transparent); }
|
||||
.compare-target-heading h3 { margin: 0; color: var(--color-accent); font-size: 18px; font-weight: 700; line-height: 1.2; }
|
||||
.compare-target-heading p { margin: 4px 0 0; color: var(--color-ink); font-size: 11px; font-weight: 400; line-height: 1.45; }
|
||||
.compare-arrow-shell { display: grid; place-items: center; width: 40px; height: 40px; border: 1px solid var(--color-border-subtle); border-radius: 9px; color: var(--color-accent); background: var(--color-surface-raised); }
|
||||
.compare-select-footer { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 62px; padding: 11px 16px; border-top: 1px solid var(--color-border-subtle); background: var(--app-dialog-chrome); }
|
||||
.compare-select-footer > span { color: var(--color-ink-faint); font-size: 9.5px; }
|
||||
.compare-select-footer > div { display: flex; gap: 8px; }
|
||||
.compare-select-footer button { min-height: 32px; }
|
||||
.interactive-rebase-dialog,
|
||||
.reflog-dialog {
|
||||
grid-template-rows: auto minmax(0, 1fr) auto;
|
||||
@@ -4066,6 +4100,8 @@
|
||||
.compare-dialog .dialog-body { grid-template-columns: minmax(260px, 320px) minmax(0, 1fr); }
|
||||
|
||||
.dialog-files { display: grid; align-content: start; gap: 4px; padding: 8px; overflow: auto; border-right: 1px solid var(--color-border-subtle); background: var(--app-dialog-chrome); }
|
||||
.compare-files-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 36px; margin: -8px -8px 4px; padding: 8px 12px; border-bottom: 1px solid var(--color-border-subtle); color: var(--color-ink-dim); font-size: 10px; font-weight: 850; letter-spacing: .05em; text-transform: uppercase; }
|
||||
.compare-files-head strong { display: grid; place-items: center; min-width: 22px; height: 20px; padding-inline: 5px; border-radius: 10px; color: var(--color-accent); background: color-mix(in srgb, var(--color-accent) 12%, transparent); font-size: 9px; }
|
||||
|
||||
.dialog-file-row {
|
||||
display: grid;
|
||||
@@ -6927,7 +6963,15 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
|
||||
.repo-summary { height: 40px; }
|
||||
.change-lanes { grid-template-columns: 1fr; }
|
||||
.compare-form { grid-template-columns: 1fr; }
|
||||
.compare-arrow { display: none; }
|
||||
.compare-arrow-shell { width: 100%; height: 30px; }
|
||||
.compare-arrow-shell svg { transform: rotate(90deg); }
|
||||
.compare-dialog-head { min-height: 60px; padding: 10px 12px; }
|
||||
.compare-dialog-mark { width: 34px; height: 34px; }
|
||||
.compare-dialog-title h2 { font-size: 15px; }
|
||||
.compare-select-body { padding: 14px; }
|
||||
.compare-target-panel { padding: 13px; }
|
||||
.compare-select-footer > span { display: none; }
|
||||
.compare-select-footer { justify-content: flex-end; }
|
||||
.dialog-body { grid-template-columns: 1fr; grid-template-rows: minmax(120px, 0.4fr) minmax(0, 1fr); }
|
||||
.compare-dialog .dialog-body { grid-template-columns: 1fr; grid-template-rows: minmax(120px, 0.4fr) minmax(0, 1fr); }
|
||||
.global-search-options { grid-template-columns: 1fr; }
|
||||
|
||||
Reference in New Issue
Block a user