From ebcc4bb572ffbc58325191de523d731aec0679ad Mon Sep 17 00:00:00 2001 From: Excel Date: Sun, 14 Jun 2026 04:09:32 +0530 Subject: [PATCH] style: api client design overhaul --- src/components/ApiClient/ApiClientLayout.tsx | 134 ++++---- src/components/ApiClient/JobRunner.tsx | 242 ++++++-------- src/components/ApiClient/ResultsGallery.tsx | 324 +++++++++---------- src/components/ApiClient/ServerSettings.tsx | 218 ++++++------- src/components/ApiClient/TemplateManager.tsx | 278 ++++++++-------- 5 files changed, 544 insertions(+), 652 deletions(-) diff --git a/src/components/ApiClient/ApiClientLayout.tsx b/src/components/ApiClient/ApiClientLayout.tsx index 28e9b75..84ed722 100644 --- a/src/components/ApiClient/ApiClientLayout.tsx +++ b/src/components/ApiClient/ApiClientLayout.tsx @@ -5,14 +5,7 @@ import { TemplateManager } from "./TemplateManager" import { JobRunner } from "./JobRunner" import { ResultsGallery } from "./ResultsGallery" -type ApiTab = "server" | "templates" | "jobs" | "results" - -const tabs: { key: ApiTab; label: string; icon: string }[] = [ - { key: "server", label: "Server", icon: "dns" }, - { key: "templates", label: "Templates", icon: "description" }, - { key: "jobs", label: "Jobs", icon: "play_circle" }, - { key: "results", label: "Results", icon: "analytics" }, -] +type ApiSection = "server" | "templates" | "jobs" | "results" interface EBProps { children: ReactNode @@ -51,74 +44,85 @@ class SafeWrap extends Component { } } -function Sidebar({ active, onChange }: { active: ApiTab; onChange: (t: ApiTab) => void }) { - const setActiveTab = (tab: ApiTab) => { - if (tab === "jobs" || tab === "results") { - // Auto-activate works in both directions - } - onChange(tab) - } +const sections: { key: ApiSection; label: string; icon: string }[] = [ + { key: "server", label: "Server", icon: "dns" }, + { key: "templates", label: "Templates", icon: "description" }, + { key: "jobs", label: "Jobs", icon: "play_circle" }, + { key: "results", label: "Results", icon: "analytics" }, +] +function LeftPanel({ active, onChange }: { active: ApiSection; onChange: (s: ApiSection) => void }) { + const runs = useApiStore((s) => s.runs) return ( -