{skillsQuery.isPending && (
-
-
-
-
+
+
+
+
)}
{!skillsQuery.isPending && skills.length === 0 && (
@@ -272,7 +276,7 @@ function WorkspaceSkillSelector({
skills.map((skill) => (
))}
{skillsQuery.isFetchingNextPage && (
-
{t(($) => $['agentDetail.configure.skills.workspaceSelector.manage'])}
-
+
-
@@ -314,20 +318,32 @@ function WorkspaceAgentSkillItem({
}) {
const { t } = useTranslation('agentV2')
const readOnly = useAgentOrchestrateReadOnly()
+ const [isActionsOpen, setIsActionsOpen] = useState(false)
+ const [isRemoveHighlighted, setIsRemoveHighlighted] = useState(false)
const displayName = skill.display_name || skill.name
const handleOpenInLibrary = useCallback(() => {
window.open(`/skills/${skill.id}`, '_blank', 'noopener,noreferrer')
}, [skill.id])
return (
-
+
-
+
{displayName}
@@ -341,35 +357,58 @@ function WorkspaceAgentSkillItem({
className={cn(
'shrink-0 system-xs-regular text-text-tertiary',
!readOnly && 'group-focus-within:opacity-0 group-hover:opacity-0',
+ isActionsOpen && 'opacity-0',
)}
>
{skill.name}
-
+ {
+ setIsActionsOpen(open)
+ if (!open) setIsRemoveHighlighted(false)
+ }}
+ >
$['agentDetail.configure.skills.moreActions'], {
name: displayName,
})}
- className="absolute top-1/2 right-1 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-md text-text-tertiary hover:bg-state-base-hover hover:text-text-secondary focus-visible:ring-2 focus-visible:ring-state-accent-solid focus-visible:outline-hidden data-popup-open:bg-state-base-hover data-popup-open:text-text-secondary"
+ className={cn(
+ 'pointer-events-none absolute top-1/2 right-1 z-10 flex size-6 -translate-y-1/2 items-center justify-center rounded-md text-text-tertiary opacity-0 group-focus-within:pointer-events-auto group-focus-within:opacity-100 group-hover:pointer-events-auto group-hover:opacity-100 hover:bg-state-base-hover hover:text-text-secondary focus-visible:ring-2 focus-visible:ring-state-accent-solid focus-visible:outline-hidden data-popup-open:pointer-events-auto data-popup-open:bg-state-base-hover data-popup-open:text-text-secondary data-popup-open:opacity-100',
+ isRemoveHighlighted && 'text-text-destructive!',
+ )}
onClick={(event) => event.stopPropagation()}
>
-
+
{t(($) => $['agentDetail.configure.skills.openInLibrary'])}
{canRemove && (
- onRemove(skill.id)}
- >
-
- {t(($) => $['agentDetail.configure.skills.removeAction'])}
-
+ <>
+
+ onRemove(skill.id)}
+ onFocus={() => setIsRemoveHighlighted(true)}
+ onBlur={() => setIsRemoveHighlighted(false)}
+ onMouseEnter={() => setIsRemoveHighlighted(true)}
+ onMouseLeave={() => setIsRemoveHighlighted(false)}
+ >
+
+ {t(($) => $['agentDetail.configure.skills.removeAction'])}
+
+ >
)}
@@ -595,14 +634,14 @@ export function AgentSkills() {
sideOffset={4}
popupClassName={
addMenuView === 'menu'
- ? 'w-[320px] bg-components-panel-bg-blur p-1 shadow-lg backdrop-blur-[5px]'
- : 'w-[560px] overflow-hidden border-none bg-transparent p-0 shadow-none'
+ ? 'w-[280px] bg-components-panel-bg-blur p-1 shadow-lg backdrop-blur-[5px]'
+ : 'w-[320px] overflow-visible border-none bg-transparent p-0 shadow-none'
}
>
{addMenuView === 'menu' ? (
<>
$['agentDetail.configure.skills.addMenu.workspace.label'])}
description={t(
($) => $['agentDetail.configure.skills.addMenu.workspace.description'],
@@ -638,11 +677,6 @@ export function AgentSkills() {
/>
) : (
<>
- {workspaceSkills.length > 0 && (
-
- {t(($) => $['agentDetail.configure.skills.fromSkillLibrary'])}
-
- )}
{workspaceSkills.map((skill) => (
{
onRemove(skill.id)
}, [onRemove, skill.id])
@@ -84,16 +93,26 @@ export function AgentSkillItem({
return (