From 068b2c120fa389f93e3027def6f44bd4cc98f39e Mon Sep 17 00:00:00 2001 From: Michael Han <107991372+shimmyshimmer@users.noreply.github.com> Date: Fri, 12 Jun 2026 03:03:24 -0700 Subject: [PATCH] Studio: rounded rectangle hover states for menu items instead of pills (#6210) * Studio: use rounded rectangles for menu item hover states instead of pills Dropdown, select, and model picker items previously used fully rounded pill highlights. Switch them to an 11px rounded rectangle so hover and selected states match across the plus menu, profile menu, run settings, selects, and the model picker. Also add a small side gutter to the plus menu so item highlights sit slightly inset from the menu edge. * Studio: concentric menu corners, wider gutters, single-item pill menus Container radius now equals the item hover radius plus the side gutter (12px + 10px = 22px) so the curves run parallel. Menus with a single item render as fully rounded pills. The profile menu gets the same gutter and hover radius. Model picker rows go back to their original fully rounded hover. --- .../frontend/src/components/app-sidebar.tsx | 2 +- .../src/components/ui/dropdown-menu.tsx | 8 ++-- studio/frontend/src/components/ui/select.tsx | 2 +- studio/frontend/src/index.css | 40 +++++++++++++------ 4 files changed, 34 insertions(+), 18 deletions(-) diff --git a/studio/frontend/src/components/app-sidebar.tsx b/studio/frontend/src/components/app-sidebar.tsx index f1a200b09..faa98abee 100644 --- a/studio/frontend/src/components/app-sidebar.tsx +++ b/studio/frontend/src/components/app-sidebar.tsx @@ -1099,7 +1099,7 @@ export function AppSidebar() { side="top" align="center" sideOffset={8} - className="app-user-menu menu-soft-surface-up ring-0 w-[16rem] px-1.5 py-2.5 font-heading rounded-[20px] border-0" + className="app-user-menu menu-soft-surface-up ring-0 w-[16rem] px-2.5 py-2.5 font-heading rounded-[20px] border-0" > :nth-child(2))) { + border-radius: 9999px !important; + } + .unsloth-plus-menu[data-slot]:not(:has(> :nth-child(2))) + :is([data-slot="dropdown-menu-item"], [data-slot="dropdown-menu-sub-trigger"]) { + border-radius: 9999px; } .dark .unsloth-plus-menu[data-slot] { @@ -1319,14 +1334,15 @@ [data-slot="dropdown-menu-item"], [data-slot="dropdown-menu-sub-trigger"] ) { - @apply gap-3 pl-4 pr-3 py-2 text-[14px]; + @apply gap-3 pl-3 pr-3 py-2 text-[14px]; cursor: pointer; - /* Pin hover-box radius so dark matches light (same as the container). */ - border-radius: 1.1rem; + /* Pin hover-box radius so dark matches light (container radius minus the + side gutter keeps the curves concentric). */ + border-radius: 12px; } .unsloth-plus-menu [data-slot="dropdown-menu-label"] { - @apply pl-4 pr-3 py-1.5 text-[12px]; + @apply pl-3 pr-3 py-1.5 text-[12px]; } /* Active (green) items keep their primary text and icon color on hover. */ @@ -1370,8 +1386,8 @@ [data-slot="dropdown-menu-sub-trigger"] ) svg { - width: 1.05rem; - height: 1.05rem; + width: 1.15rem; + height: 1.15rem; } /* Destructive items keep red text and a red-tinted hover, not the grey one. */