From da6d018857fe5f73976f2ad33ca76d495824cf89 Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Tue, 28 Jul 2026 16:38:01 +0200 Subject: [PATCH] gui: port Storage workspace UI and tighten policy chrome Bring the rail/overview Storage workspace onto tip, flatten nested scroll, and align Rescan/Run now/policy form controls with Codex Auth patterns. --- gui/src/components/NumberStepper.tsx | 43 ++ .../storage-workspace/StorageWorkspace.tsx | 208 ++++++++++ gui/src/i18n/de.ts | 11 +- gui/src/i18n/en.ts | 11 +- gui/src/i18n/ja.ts | 11 +- gui/src/i18n/ko.ts | 11 +- gui/src/i18n/ru.ts | 11 +- gui/src/i18n/zh.ts | 11 +- gui/src/pages/Storage.tsx | 376 ++++++++---------- gui/src/styles-storage-workspace.css | 351 ++++++++++++++++ gui/src/styles.css | 30 ++ 11 files changed, 862 insertions(+), 212 deletions(-) create mode 100644 gui/src/components/NumberStepper.tsx create mode 100644 gui/src/components/storage-workspace/StorageWorkspace.tsx create mode 100644 gui/src/styles-storage-workspace.css diff --git a/gui/src/components/NumberStepper.tsx b/gui/src/components/NumberStepper.tsx new file mode 100644 index 000000000..1b9f85528 --- /dev/null +++ b/gui/src/components/NumberStepper.tsx @@ -0,0 +1,43 @@ +import { IconChevron } from "../icons"; + +export interface NumberStepperProps { + disabled?: boolean; + /** Increase the bound value (parent owns parsing / clamping). */ + onIncrement(): void; + /** Decrease the bound value. */ + onDecrement(): void; + incrementLabel: string; + decrementLabel: string; +} + +/** Compact up/down chevron pair matching dashboard control chrome. */ +export function NumberStepper({ + disabled = false, + onIncrement, + onDecrement, + incrementLabel, + decrementLabel, +}: NumberStepperProps) { + return ( +
+ + {t("storage.workspace.selectBucket")} +
{t("storage.policy.help")}
{t("storage.policy.enabledHint")}
{status}
{error}
{t("storage.subtitle")}