From 4937b0dfc6d61ba9e92aaf0b52f1368598fa7258 Mon Sep 17 00:00:00 2001 From: Michael Han <107991372+shimmyshimmer@users.noreply.github.com> Date: Wed, 29 Jul 2026 01:53:24 -0700 Subject: [PATCH] Studio: match the Deep research caret to the other composer pills (#7601) The pill drew a 12px lucide chevron inside a wrapper span while every other composer pill uses the shared 15px caret, so its arrow read smaller than the one on the permission pill next to it. Co-authored-by: Unsloth --- .../deep-research-composer-button.tsx | 100 ++++++++++-------- 1 file changed, 57 insertions(+), 43 deletions(-) diff --git a/studio/frontend/src/features/chat/components/deep-research-composer-button.tsx b/studio/frontend/src/features/chat/components/deep-research-composer-button.tsx index 03a7d7cc5f..e4857d1603 100644 --- a/studio/frontend/src/features/chat/components/deep-research-composer-button.tsx +++ b/studio/frontend/src/features/chat/components/deep-research-composer-button.tsx @@ -14,7 +14,8 @@ import { } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { cn } from "@/lib/utils"; -import { ChevronDownIcon, XIcon } from "lucide-react"; +import { ChevronDownStandardIcon } from "@/lib/chevron-icons"; +import { XIcon } from "lucide-react"; import { type KeyboardEvent, useState } from "react"; import { useChatRuntimeStore } from "../stores/chat-runtime-store"; import type { ResearchWebsitePolicy } from "../types/research"; @@ -24,7 +25,12 @@ function normalizeDomain(raw: string): string | null { if (!value || /[\\\s]/.test(value)) return null; try { const url = new URL(value.includes("://") ? value : `https://${value}`); - if (!/^https?:$/.test(url.protocol) || url.username || url.password || url.port) { + if ( + !/^https?:$/.test(url.protocol) || + url.username || + url.password || + url.port + ) { return null; } return url.hostname @@ -99,7 +105,9 @@ function DomainList({ type="button" className="text-muted-foreground transition-colors hover:text-foreground" aria-label={`Remove ${domain}`} - onClick={() => onChange(values.filter((value) => value !== domain))} + onClick={() => + onChange(values.filter((value) => value !== domain)) + } > @@ -129,7 +137,9 @@ export function DeepResearchComposerButton({ onConfigure: () => void; }) { const enabled = useChatRuntimeStore((state) => state.deepResearchEnabled); - const setEnabled = useChatRuntimeStore((state) => state.setDeepResearchEnabled); + const setEnabled = useChatRuntimeStore( + (state) => state.setDeepResearchEnabled, + ); if (!enabled) return null; @@ -158,9 +168,12 @@ export function DeepResearchComposerButton({ Deep research - - - + {/* Same caret as the other composer pills, so the arrows match. */} + ); } @@ -173,7 +186,9 @@ export function DeepResearchWebsiteAccessDialog({ onOpenChange: (open: boolean) => void; }) { const policy = useChatRuntimeStore((state) => state.researchWebsitePolicy); - const setPolicy = useChatRuntimeStore((state) => state.setResearchWebsitePolicy); + const setPolicy = useChatRuntimeStore( + (state) => state.setResearchWebsitePolicy, + ); return ( @@ -201,41 +216,40 @@ function DeepResearchWebsiteAccessContent({ return ( - - Website access - - Control which websites the next Deep Research run can search and - read. Limits are enforced by the server and shared with the research - model. - - -
- setDraft({ ...draft, allowedDomains })} - /> - setDraft({ ...draft, blockedDomains })} - /> -
- - - - + + Website access + + Control which websites the next Deep Research run can search and read. + Limits are enforced by the server and shared with the research model. + + +
+ setDraft({ ...draft, allowedDomains })} + /> + setDraft({ ...draft, blockedDomains })} + /> +
+ + + +
); }