From 470367415a8d6b9c7f0738bc5d1696cc219419c9 Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+berry-13@users.noreply.github.com> Date: Thu, 1 Oct 2026 18:13:13 +0200 Subject: [PATCH 1/4] feat: Give the Mobile Drawer Edge a Role and Move the Last Page Colours Onto Roles The mobile drawer drew its edge with dark-only border utilities, the web source caption with gray-900 and white, the prompt panel's mobile backdrop with black at 20%, and the Insights agent picker popover with a dark-only override, so no theme could reach them. drawer-edge paints the drawer's trailing edge: the drawer's own fill in light, where the scrim already separates it, and border-xheavy in dark, so dark mode keeps today's edge; a theme that sets only those two roles keeps the edge its mode drew. The source caption reads the media overlay roles, the prompt panel backdrop takes the page scrim the mobile drawer uses, and MultiSelect gains a widget surface that the Insights picker uses in place of its dark override. --- .../src/components/Insights/InsightsView.tsx | 3 +- .../components/Prompts/forms/PromptForm.tsx | 18 ++++----- .../UnifiedSidebar/UnifiedSidebar.tsx | 5 ++- client/src/components/Web/Sources.tsx | 2 +- eslint-suppressions.json | 5 +-- .../src/components/MultiSelect.spec.tsx | 37 +++++++++++++++++++ .../client/src/components/MultiSelect.tsx | 5 +++ packages/client/src/theme/README.md | 1 + packages/client/src/theme/defaults.css | 4 ++ packages/client/src/theme/defaults.spec.ts | 2 +- packages/client/src/theme/registry.spec.ts | 23 ++++++++++++ packages/client/src/theme/registry.ts | 13 +++++++ .../client/src/theme/themes/clickhouse.ts | 2 + .../client/src/theme/themes/clickui.spec.ts | 2 + packages/client/src/theme/themes/dark.ts | 1 + packages/client/src/theme/themes/default.ts | 1 + .../client/src/theme/themes/highContrast.ts | 2 + packages/client/src/theme/tokens.css | 1 + packages/client/src/theme/types/index.ts | 7 ++++ packages/data-provider/src/theme.ts | 1 + 20 files changed, 117 insertions(+), 18 deletions(-) create mode 100644 packages/client/src/components/MultiSelect.spec.tsx diff --git a/client/src/components/Insights/InsightsView.tsx b/client/src/components/Insights/InsightsView.tsx index 19c82384d20..16ae62dba95 100644 --- a/client/src/components/Insights/InsightsView.tsx +++ b/client/src/components/Insights/InsightsView.tsx @@ -769,7 +769,8 @@ export default function InsightsView() { className="w-full min-w-0 sm:w-72" selectClassName="h-8 w-full rounded border border-border-medium bg-surface-tertiary px-3 py-1 shadow-none hover:border-border-heavy data-[state=open]:border-border-heavy dark:hover:bg-chart-widget-stroke dark:data-[state=open]:bg-chart-widget-stroke" itemClassName="rounded-none px-4 py-1.5" - popoverClassName="max-h-80 rounded border-border-medium bg-surface-primary px-0 py-2 dark:bg-chart-widget-surface" + popoverClassName="max-h-80 rounded border-border-medium px-0 py-2" + surface="widget" renderSelectedValues={(values) => { if (values.length === 0) { return localize('com_insights_no_agents_selected'); diff --git a/client/src/components/Prompts/forms/PromptForm.tsx b/client/src/components/Prompts/forms/PromptForm.tsx index 9470be558c2..1af1b1a9378 100644 --- a/client/src/components/Prompts/forms/PromptForm.tsx +++ b/client/src/components/Prompts/forms/PromptForm.tsx @@ -76,7 +76,7 @@ const VersionsPanel = React.memo( className={cn( 'w-full gap-1.5 transition-all duration-200', isProductionVersion && - 'border border-status-success-border bg-status-success-subtle text-status-success hover:bg-status-success-subtle', + 'border-status-success-border bg-status-success-subtle text-status-success hover:bg-status-success-subtle border', )} onClick={() => { if (!selectedPrompt) { @@ -114,10 +114,10 @@ const VersionsPanel = React.memo( {!isLoadingPrompts && prompts.length > 0 && ( <>
-

+

{localize('com_ui_versions')}

- + {prompts.length}
@@ -474,7 +474,7 @@ const PromptForm = ({ promptId: promptIdProp }: { promptId?: string }) => {
{/* Mobile Actions Row */} {!isLoadingGroup && group && isSmallScreen && ( -
+
{
)} {/* Header: Title + Actions */} -
+
{isLoadingGroup ? ( ) : ( @@ -563,7 +563,7 @@ const PromptForm = ({ promptId: promptIdProp }: { promptId?: string }) => { {/* Versions Sidebar - Advanced Mode Only */} {editorMode === PromptsEditorMode.ADVANCED && ( -
+
{
{
{ inert={!showSidePanel ? '' : undefined} >
-

+

{localize('com_ui_versions')}