diff --git a/apps/website/src/components/ui/CmdK.tsx b/apps/website/src/components/ui/CmdK.tsx index 5b5eb48e4..bd9a334b9 100644 --- a/apps/website/src/components/ui/CmdK.tsx +++ b/apps/website/src/components/ui/CmdK.tsx @@ -95,6 +95,7 @@ export function CmdK({ dependencies }: { readonly dependencies: string[] }) { q: searchString, limit: 25, attributesToSearchOn: ['name'], + sort: ['type:asc'], })), }); setSearchResults(result.results.flatMap((res) => res.hits)); diff --git a/packages/actions/src/uploadSearchIndices/index.ts b/packages/actions/src/uploadSearchIndices/index.ts index bdf5d3b90..ac06e5060 100644 --- a/packages/actions/src/uploadSearchIndices/index.ts +++ b/packages/actions/src/uploadSearchIndices/index.ts @@ -66,7 +66,10 @@ try { await client.waitForTask(task.taskUid); } - await client.index(index.index).addDocuments(index.data); + const searchIndex = client.index(index.index); + await searchIndex.updateSettings({ sortableAttributes: ['type'] }); + + await searchIndex.addDocuments(index.data); }), ); } catch {} diff --git a/packages/scripts/src/generateIndex.ts b/packages/scripts/src/generateIndex.ts index 3fc71bc80..540880081 100644 --- a/packages/scripts/src/generateIndex.ts +++ b/packages/scripts/src/generateIndex.ts @@ -19,6 +19,7 @@ export interface MemberJSON { name: string; path: string; summary: string | null; + type: number; } let idx = 0; @@ -89,6 +90,30 @@ export function tryResolveSummaryText(item: ApiDeclaredItem): string | null { return retVal; } +export enum SearchOrderType { + Class, + Interface, + TypeAlias, + Function, + Enum, + Variable, + Event, + Method, + Property, + MethodSignature, + PropertySignature, + EnumMember, + Package, + Namespace, + IndexSignature, + CallSignature, + Constructor, + ConstructSignature, + EntryPoint, + Model, + None, +} + export function visitNodes(item: ApiItem, tag: string) { const members: (MemberJSON & { id: number })[] = []; @@ -111,6 +136,7 @@ export function visitNodes(item: ApiItem, tag: string) { kind: member.kind, summary: tryResolveSummaryText(member) ?? '', path: generatePath(member.getHierarchy(), tag), + type: SearchOrderType[member.kind as keyof typeof SearchOrderType], }); }