From 996eeb1f6848b393d887791557e0d8cbe56255ec Mon Sep 17 00:00:00 2001 From: Ronan Kearns <90280289+kearns-cu@users.noreply.github.com> Date: Wed, 21 Jan 2026 05:44:17 -0500 Subject: feat(app): add manage models icon to selector (per Figma request) (#9722) --- packages/ui/src/components/list.css | 38 +++++++++++++++++++++++++++--- packages/ui/src/components/list.tsx | 47 ++++++++++++++++++++----------------- 2 files changed, 61 insertions(+), 24 deletions(-) (limited to 'packages/ui/src') diff --git a/packages/ui/src/components/list.css b/packages/ui/src/components/list.css index ee9be422c..95641bb20 100644 --- a/packages/ui/src/components/list.css +++ b/packages/ui/src/components/list.css @@ -23,14 +23,46 @@ overflow: hidden; padding: 0 12px; - [data-slot="list-search"] { + [data-slot="list-search-wrapper"] { display: flex; flex-shrink: 0; - padding: 8px; align-items: center; - gap: 12px; + gap: 8px; align-self: stretch; margin-bottom: 4px; + padding-right: 4px; + + > [data-component="icon-button"] { + width: 24px; + height: 24px; + flex-shrink: 0; + background-color: transparent; + opacity: 0.5; + transition: opacity 0.15s ease; + + &:hover:not(:disabled), + &:focus:not(:disabled), + &:active:not(:disabled) { + background-color: transparent; + opacity: 0.7; + } + + &:hover:not(:disabled) [data-slot="icon-svg"] { + color: var(--icon-hover); + } + + &:active:not(:disabled) [data-slot="icon-svg"] { + color: var(--icon-active); + } + } + } + + [data-slot="list-search"] { + display: flex; + flex: 1; + padding: 8px; + align-items: center; + gap: 12px; border-radius: var(--radius-md); background: var(--surface-base); diff --git a/packages/ui/src/components/list.tsx b/packages/ui/src/components/list.tsx index 066363502..fc9fa5405 100644 --- a/packages/ui/src/components/list.tsx +++ b/packages/ui/src/components/list.tsx @@ -11,6 +11,7 @@ export interface ListSearchProps { autofocus?: boolean hideIcon?: boolean class?: string + action?: JSX.Element } export interface ListProps extends FilteredListProps { @@ -60,6 +61,7 @@ export function List(props: ListProps & { ref?: (ref: ListRef) => void }) const { filter, grouped, flat, active, setActive, onKeyDown, onInput } = useFilteredList(props) const searchProps = () => (typeof props.search === "object" ? props.search : {}) + const searchAction = () => searchProps().action const moved = (event: MouseEvent) => event.movementX !== 0 || event.movementY !== 0 @@ -198,29 +200,32 @@ export function List(props: ListProps & { ref?: (ref: ListRef) => void }) return (
-
-
- - +
+
+
+ + + + +
+ + setInternalFilter("")} /> -
- - setInternalFilter("")} /> - + {searchAction()}
-- cgit v1.2.3