Studio: fully rounded Hub pills and refreshed menu icons (#6248)

Rounds out the Hub chrome and aligns a handful of icons with the rest
of the app. The header stat pills, HTTP/Xet toggle, HF token button,
info chips, status badges and the single-row download card are now full
pills, and the All formats style dropdown matches the composer + menu
geometry. Also widens the chat options menu so "Move to project" fits
on one line, and swaps a few icons to their HugeIcons equivalents.

Changes:
- hub.css: hub-tag-soft/hub-tag-meta pills go fully rounded; a single-
  row hub-download-card reads as a full pill via :has(), while the
  expanded card keeps its 22px radius, border and background.
- hub-option-menu.tsx: dropdown surface and items match the composer
  + menu (22px container, 10px side padding, 12px item radius).
- hf-token-indicator.tsx, transport-toggle.tsx: fully rounded with a
  fixed 26px height so they line up with the neighbouring pills.
- model-inspector.tsx, dot-tag.tsx, gguf-download-card.tsx: status and
  info chips go fully rounded.
- models-header.tsx: Eject uses RemoveCircleIcon; active model pill
  fully rounded.
- on-device-folders-dialog.tsx: folder rows use Folder02Icon.
- pickers.tsx: Recommended star uses the HugeIcons star.
- command.tsx, chat-search-dialog.tsx, prompt-storage-dialog.tsx: search
  fields use the HugeIcons Search01Icon.
- app-sidebar.tsx: chat options menu widened to w-56.

Pure styling and icon swaps, no behavior changes.
This commit is contained in:
Michael Han 2026-06-12 04:51:19 -07:00 committed by GitHub
commit 9df607c0de
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 37 additions and 31 deletions

View file

@ -610,7 +610,7 @@ export function AppSidebar() {
side="bottom"
align="start"
sideOffset={0}
className="unsloth-plus-menu menu-flat-destructive w-52"
className="unsloth-plus-menu menu-flat-destructive w-56"
>
<DropdownMenuItem onSelect={() => openRenameChat(item)}>
<HugeiconsIcon icon={Edit03Icon} strokeWidth={1.75} className="size-icon" />

View file

@ -39,11 +39,11 @@ import { extractParamLabel } from "@/lib/model-size";
import { cn, formatCompact } from "@/lib/utils";
import type { VramFitStatus } from "@/lib/vram";
import { checkVramFit, estimateLoadingVram } from "@/lib/vram";
import { Add01Icon, Cancel01Icon, Download01Icon, Folder02Icon, Search01Icon } from "@hugeicons/core-free-icons";
import { Add01Icon, Cancel01Icon, Download01Icon, Folder02Icon, Search01Icon, StarIcon } from "@hugeicons/core-free-icons";
import { HugeiconsIcon } from "@hugeicons/react";
import { FolderBrowser } from "./folder-browser";
import { ModelDeleteAction } from "./model-delete-action";
import { ChevronDownIcon, ChevronRightIcon, StarIcon } from "lucide-react";
import { ChevronDownIcon, ChevronRightIcon } from "lucide-react";
import {
type ReactNode,
useCallback,
@ -1231,7 +1231,7 @@ export function HubModelPicker({
{!showHfSection && cachedReady ? (
<>
<ListLabel
icon={<StarIcon className="size-3" />}
icon={<HugeiconsIcon icon={StarIcon} className="size-3" />}
collapsed={recommendedCollapsed}
onToggle={() => setRecommendedCollapsed((v) => !v)}
>Recommended</ListLabel>
@ -1292,7 +1292,7 @@ export function HubModelPicker({
{showHfSection && filteredRecommendedIds.length > 0 ? (
<>
<ListLabel icon={<StarIcon className="size-3" />}>Recommended</ListLabel>
<ListLabel icon={<HugeiconsIcon icon={StarIcon} className="size-3" />}>Recommended</ListLabel>
{filteredRecommendedIds.map((id) => {
const vram = recommendedVramMap.get(id);
return (

View file

@ -15,7 +15,7 @@ import {
} from "@/components/ui/dialog";
import { InputGroup, InputGroupAddon } from "@/components/ui/input-group";
import { cn } from "@/lib/utils";
import { SearchIcon, Tick02Icon } from "@hugeicons/core-free-icons";
import { Search01Icon, Tick02Icon } from "@hugeicons/core-free-icons";
import { HugeiconsIcon } from "@hugeicons/react";
function Command({
@ -86,7 +86,7 @@ function CommandInput({
/>
<InputGroupAddon>
<HugeiconsIcon
icon={SearchIcon}
icon={Search01Icon}
strokeWidth={2}
className="size-4 shrink-0 opacity-50"
/>