From 0ed94225b2042a49f5da8b2961926c7c08cb1ae2 Mon Sep 17 00:00:00 2001 From: xavix-yo Date: Wed, 29 Jul 2026 12:36:24 +0100 Subject: [PATCH] web: unify page headers into one shared page-header bar Every full-page view now renders the same sticky top bar (back button, title, right-side actions) from the new web/css/page-header.css, replacing a dozen per-page duplicates (.page-panel-header, .project-page-header, .task-page-header, .llm-page-header, .um-header, .apr-header, .llmr-header, .pv-header, .sa-header, .config-page-header, .agents-page-header). Pages that padded the whole container (config, agents, system-agents, llm-requests, models-hub) move that padding into a body wrapper so the bar sits flush and stays pinned on scroll. Back buttons are standardized to the icon-only .page-header-back. --- web/components/agent-inbox.js | 20 +++--- web/components/agents.js | 24 ++++--- web/components/approval-groups.js | 14 ++-- web/components/approval-rules.js | 29 ++++---- web/components/config-page.js | 8 ++- web/components/connector-detail.js | 8 +-- web/components/connectors.js | 16 +++-- web/components/file-viewer-page.js | 8 +-- web/components/llm-providers.js | 15 ++-- web/components/llm-request-detail.js | 36 ++++++---- web/components/llm-requests.js | 18 +++-- web/components/marketplace.js | 8 ++- web/components/models-hub.js | 40 ++++++----- web/components/models-image.js | 18 ++--- web/components/models-llm.js | 20 +++--- web/components/models-transcribe.js | 16 +++-- web/components/models-tts.js | 18 ++--- web/components/plugin-catalog.js | 6 +- web/components/plugin-detail.js | 8 +-- web/components/profile-page.js | 6 +- web/components/projects/project-board.js | 12 ++-- web/components/projects/project-list.js | 14 ++-- web/components/roles-page.js | 10 +-- web/components/shared-folders.js | 10 +-- web/components/system-agents.js | 32 +++++---- web/components/tasks/cron.js | 10 +-- web/components/tasks/history.js | 10 +-- web/components/tasks/running.js | 10 +-- web/components/tasks/scheduled.js | 10 +-- web/components/tool-detail-page.js | 8 +-- web/components/users-page.js | 20 +++--- web/css/agent-inbox.css | 25 ------- web/css/agents.css | 8 +-- web/css/approval-groups.css | 38 ---------- web/css/config.css | 9 ++- web/css/llm-providers.css | 38 ---------- web/css/llm-requests.css | 56 ++------------- web/css/models-hub.css | 5 +- web/css/models-llm.css | 55 --------------- web/css/page-header.css | 90 ++++++++++++++++++++++++ web/css/projects/base.css | 20 ------ web/css/system-agents.css | 22 +----- web/css/tasks/base.css | 20 ------ web/css/users-roles.css | 12 ---- web/index.html | 1 + 45 files changed, 389 insertions(+), 492 deletions(-) create mode 100644 web/css/page-header.css diff --git a/web/components/agent-inbox.js b/web/components/agent-inbox.js index 996a952..04f560a 100644 --- a/web/components/agent-inbox.js +++ b/web/components/agent-inbox.js @@ -63,14 +63,18 @@ export class AgentInboxPage extends I18nMixin(InboxMixin(LightElement)) { return html`
-
-
- ${t('nav.inbox')} - ${total > 0 ? html`${total}` : nothing} -
- + ${this._renderInboxSection()}
diff --git a/web/components/agents.js b/web/components/agents.js index d729795..a646958 100644 --- a/web/components/agents.js +++ b/web/components/agents.js @@ -285,19 +285,23 @@ export class AgentsPage extends LightElement { ${this._detail ? this._renderDetail() : html` -
-

${t('agents.title')}

-
- -
-
-
-

${unsafeHTML(t('agents.banner.title'))}

-

${unsafeHTML(t('agents.banner.text'))}

+ - ${this._renderList()} +
+
+
+
+

${unsafeHTML(t('agents.banner.title'))}

+

${unsafeHTML(t('agents.banner.text'))}

+
+
+ + ${this._renderList()} +
` }
diff --git a/web/components/approval-groups.js b/web/components/approval-groups.js index 6439105..ef04e27 100644 --- a/web/components/approval-groups.js +++ b/web/components/approval-groups.js @@ -356,12 +356,14 @@ export class ApprovalGroupsPage extends LightElement { render() { return html`
-
-

- ${t('security.title')} -

-
- ${this._groups.length === 1 ? t('security.group_count', { n: this._groups.length }) : t('security.group_count_plural', { n: this._groups.length })} +