From 07e0bb8aae98691ac61bd94ccebf0643c99ec44a Mon Sep 17 00:00:00 2001 From: Brooklyn Nicholson Date: Wed, 6 May 2026 18:41:37 -0500 Subject: [PATCH] feat(desktop): polish composer pill toward reference look Solid foreground-on-background send/voice-conversation circle (black-on-white in light, white-on-black in dark) anchors the right edge as the primary CTA instead of the orange theme primary. Bumps the primary control to 2.125rem so it visually outranks the ghost mic/plus controls. Opens up the surface padding (0.625rem x / 0.5rem y) so the input row breathes around its controls, and nudges the corner radius from 20 to 24px for a slightly pill-ier silhouette. LiquidGlass distortion is preserved. --- apps/desktop/src/app/chat/composer/controls.tsx | 13 +++++++++++-- .../composer/hooks/use-composer-glass-tweaks.ts | 4 ++-- apps/desktop/src/app/chat/composer/index.tsx | 4 ++-- .../app/chat/composer/liquid-glass-overrides.css | 4 ++-- apps/desktop/src/styles.css | 9 +++++++-- 5 files changed, 24 insertions(+), 10 deletions(-) diff --git a/apps/desktop/src/app/chat/composer/controls.tsx b/apps/desktop/src/app/chat/composer/controls.tsx index 921c65763e..010c6d67fc 100644 --- a/apps/desktop/src/app/chat/composer/controls.tsx +++ b/apps/desktop/src/app/chat/composer/controls.tsx @@ -8,6 +8,15 @@ import type { ChatBarState, VoiceStatus } from './types' export const ICON_BTN = 'size-(--composer-control-size) shrink-0 rounded-full' export const GHOST_ICON_BTN = cn(ICON_BTN, 'text-muted-foreground hover:bg-accent hover:text-foreground') +// Send/voice-conversation primary: solid foreground-on-background circle +// (reads as black-on-white in light mode, white-on-black in dark mode) to +// match the reference composer's high-contrast CTA. Keeps the pill itself +// neutral and lets the action visually dominate the row. +export const PRIMARY_ICON_BTN = cn( + 'size-(--composer-control-primary-size,var(--composer-control-size)) shrink-0 rounded-full p-0', + 'bg-foreground text-background hover:bg-foreground/90', + 'disabled:bg-foreground/30 disabled:text-background disabled:opacity-100' +) interface ConversationProps { active: boolean @@ -51,7 +60,7 @@ export function ComposerControls({ {showVoicePrimary ? (