diff --git a/web/src/components/canvas/canvas-agent-skill-library-modal.tsx b/web/src/components/canvas/canvas-agent-skill-library-modal.tsx index c77c3d0ae..6fa552c50 100644 --- a/web/src/components/canvas/canvas-agent-skill-library-modal.tsx +++ b/web/src/components/canvas/canvas-agent-skill-library-modal.tsx @@ -1,11 +1,11 @@ -import { useEffect, useMemo, useRef, useState } from "react"; -import { Button, Input } from "antd"; +import { useEffect, useMemo, useRef, useState, type ReactNode } from "react"; +import { Alert, Button, Input } from "antd"; import { Check, LoaderCircle, Plus, Search, Sparkles, Users } from "lucide-react"; import { AppModal } from "@/components/ui/product/app-modal"; import type { CanvasTheme } from "@/lib/canvas-theme"; import type { Skill, SkillCategory, SkillLibraryCategory } from "@/services/api/skills"; -import { SkillCurationBrowser, matchesCuration, effectiveCurationRoot, type useSkillCuration } from "@/components/skills/skill-curation-browser"; +import { curationIcon, matchesCuration, effectiveCurationRoot, type useSkillCuration } from "@/components/skills/skill-curation-browser"; type SkillLibraryTab = "enabled" | "installed" | "market"; @@ -72,6 +72,14 @@ export function CanvasAgentSkillLibraryModal({ listRef.current?.scrollTo({ top: 0 }); }, [category, libraryCategoryId, search, tab]); + useEffect(() => { + const data = curationState.curation; + const valid = platformCategory.startsWith("root:") + ? data?.roots?.some((root) => root.id === platformCategory.slice(5)) + : data?.categories.some((item) => item.id === platformCategory); + if ((!data?.enabled || (platformCategory && platformCategory !== "__uncategorized__" && !valid)) && platformCategory) onPlatformCategoryChange(""); + }, [curationState.curation, onPlatformCategoryChange, platformCategory]); + const librarySource = useMemo(() => tab === "enabled" ? installedSkills.filter((skill) => selectedSkillIds.includes(skill.skillId)) : installedSkills, [installedSkills, selectedSkillIds, tab]); @@ -188,7 +196,29 @@ export function CanvasAgentSkillLibraryModal({ className="canvas-agent-skill-library-search" />