diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/search-modal/search-modal.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/search-modal/search-modal.tsx index b8b8787027..c0fe05118d 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/search-modal/search-modal.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/search-modal/search-modal.tsx @@ -331,16 +331,35 @@ export function SearchModal({ return items }, [workspaces, workflows, pages, blocks, triggers, tools, docs]) - // Filter items based on search query - const filteredItems = useMemo(() => { - if (!searchQuery.trim()) return allItems + const sectionOrder = useMemo( + () => ['workspace', 'workflow', 'page', 'tool', 'trigger', 'block', 'doc'], + [] + ) - const query = searchQuery.toLowerCase() - return allItems.filter( - (item) => - item.name.toLowerCase().includes(query) || item.description?.toLowerCase().includes(query) + // Filter items based on search query and enforce section ordering + const filteredItems = useMemo(() => { + const orderMap = sectionOrder.reduce>( + (acc, type, index) => { + acc[type] = index + return acc + }, + {} as Record ) - }, [allItems, searchQuery]) + + const baseItems = !searchQuery.trim() + ? allItems + : allItems.filter( + (item) => + item.name.toLowerCase().includes(searchQuery.toLowerCase()) || + item.description?.toLowerCase().includes(searchQuery.toLowerCase()) + ) + + return [...baseItems].sort((a, b) => { + const aOrder = orderMap[a.type] ?? Number.MAX_SAFE_INTEGER + const bOrder = orderMap[b.type] ?? Number.MAX_SAFE_INTEGER + return aOrder - bOrder + }) + }, [allItems, searchQuery, sectionOrder]) // Reset selected index when filtered items change useEffect(() => { @@ -469,7 +488,7 @@ export function SearchModal({ @@ -493,7 +512,8 @@ export function SearchModal({ {/* Floating results container */} {filteredItems.length > 0 ? (
- {Object.entries(groupedItems).map(([type, items]) => { + {sectionOrder.map((type) => { + const items = groupedItems[type] || [] if (items.length === 0) return null return ( diff --git a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/subscription/subscription.tsx b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/subscription/subscription.tsx index 2e41a0956a..d68bbe8692 100644 --- a/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/subscription/subscription.tsx +++ b/apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components-new/settings-modal/components/subscription/subscription.tsx @@ -670,7 +670,7 @@ export function Subscription({ onOpenChange }: SubscriptionProps) { - + Workspace admins