From df7352aec657abd988e98897b8bb194d808de044 Mon Sep 17 00:00:00 2001 From: Brooklyn Nicholson Date: Mon, 27 Jul 2026 21:45:42 -0500 Subject: [PATCH] style(desktop): quiet inline links to color-only until hover The resting chip fill and the bold weight both fought the brand mark for attention. Links now sit in the theme's primary color at body weight, and the tint fades in on hover. Weight is overridden on .link-chip itself: `@tailwindcss/typography` sets `prose a { font-weight: 500 }`, which outranks a utility class on the anchor, so the per-call-site classes could never win. --- .../src/components/assistant-ui/directive-text.tsx | 2 +- .../src/components/assistant-ui/markdown-text.tsx | 4 ++-- .../src/components/chat/compact-markdown.tsx | 2 +- .../src/components/chat/generated-image-result.tsx | 2 +- apps/desktop/src/lib/external-link.tsx | 4 ++-- apps/desktop/src/styles.css | 14 ++++++++++---- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/apps/desktop/src/components/assistant-ui/directive-text.tsx b/apps/desktop/src/components/assistant-ui/directive-text.tsx index 988562c04941..b8e8ce66eca6 100644 --- a/apps/desktop/src/components/assistant-ui/directive-text.tsx +++ b/apps/desktop/src/components/assistant-ui/directive-text.tsx @@ -521,7 +521,7 @@ export const SessionRefLink: FC<{ return ( { event.preventDefault() diff --git a/apps/desktop/src/components/assistant-ui/markdown-text.tsx b/apps/desktop/src/components/assistant-ui/markdown-text.tsx index 3d9b44bf9ee9..744bdb61c1b2 100644 --- a/apps/desktop/src/components/assistant-ui/markdown-text.tsx +++ b/apps/desktop/src/components/assistant-ui/markdown-text.tsx @@ -233,7 +233,7 @@ function MediaAttachment({ path }: { path: string }) { return ( { event.preventDefault() @@ -283,7 +283,7 @@ function MarkdownLink({ children, className, href, ...props }: ComponentProps<'a if (!target || !/^https?:\/\//i.test(target)) { return ( (Tag: T) { function MarkdownAnchor({ children, className, href, ...rest }: ComponentProps<'a'>) { if (!href || !/^https?:\/\//i.test(href)) { return ( - + {children} ) diff --git a/apps/desktop/src/components/chat/generated-image-result.tsx b/apps/desktop/src/components/chat/generated-image-result.tsx index 32cb453c69c6..9ad4922644e3 100644 --- a/apps/desktop/src/components/chat/generated-image-result.tsx +++ b/apps/desktop/src/components/chat/generated-image-result.tsx @@ -96,7 +96,7 @@ export const GeneratedImage: FC<{ aspectRatio?: string; result?: unknown }> = ({ if (failed && image) { return ( { event.preventDefault() diff --git a/apps/desktop/src/lib/external-link.tsx b/apps/desktop/src/lib/external-link.tsx index 4f6dc396b7d6..df853911247a 100644 --- a/apps/desktop/src/lib/external-link.tsx +++ b/apps/desktop/src/lib/external-link.tsx @@ -239,7 +239,7 @@ export function ExternalLink({ return ( { event.stopPropagation() @@ -279,7 +279,7 @@ export function PrettyLink({ className, fallbackLabel, href, label, ...rest }: P return ( - {display} + {display} ) } diff --git a/apps/desktop/src/styles.css b/apps/desktop/src/styles.css index 541da35b6bc3..60b231ffaf60 100644 --- a/apps/desktop/src/styles.css +++ b/apps/desktop/src/styles.css @@ -556,11 +556,17 @@ background: repeating-conic-gradient(currentColor 0% 25%, transparent 0% 50%) 0 0 / 0.125rem 0.125rem; } -/* Inline content links: a small tinted chip instead of an underline. Tint is - currentColor-relative (the old `decoration-current/20` idiom), so text and - fill share a hue on every theme from one `color` declaration. */ +/* Inline content links: color at rest, a tinted chip on hover, never an + underline. Tint is currentColor-relative (the old `decoration-current/20` + idiom), so text and fill share a hue on every theme from one `color`. */ .link-chip { - --link-chip-tint: 8%; + /* The one knob: resting fill. 0% = color-only until hovered. */ + --link-chip-tint: 0%; + + /* Prose links inherit the surrounding text's weight. `@tailwindcss/typography` + sets `prose a { font-weight: 500 }`, which outranks a utility class on the + anchor — so the override belongs here, on the shared chip. */ + font-weight: inherit; /* `ch`/`em` so the chip tracks the text at any size. Block padding is asymmetric because an inline box's content area is ascent+descent — equal