Version 3 of the kit: - Radix UI replaced with Base UI (using the Shadcn UI patterns) - next-intl replaces react-i18next - enhanceAction deprecated; usage moved to next-safe-action - main layout now wrapped with [locale] path segment - Teams only mode - Layout updates - Zod v4 - Next.js 16.2 - Typescript 6 - All other dependencies updated - Removed deprecated Edge CSRF - Dynamic Github Action runner
34 lines
728 B
TypeScript
34 lines
728 B
TypeScript
import { Cms } from '@kit/cms';
|
|
|
|
/**
|
|
* @name buildDocumentationTree
|
|
* @description Build a tree structure for the documentation pages.
|
|
* @param pages
|
|
*/
|
|
export function buildDocumentationTree(pages: Cms.ContentItem[]) {
|
|
const tree: Cms.ContentItem[] = [];
|
|
|
|
pages.forEach((page) => {
|
|
if (page.parentId) {
|
|
const parent = pages.find((item) => item.slug === page.parentId);
|
|
|
|
if (!parent) {
|
|
return;
|
|
}
|
|
|
|
if (!parent.children) {
|
|
parent.children = [];
|
|
}
|
|
|
|
parent.children.push(page);
|
|
|
|
// sort children by order
|
|
parent.children.sort((a, b) => a.order - b.order);
|
|
} else {
|
|
tree.push(page);
|
|
}
|
|
});
|
|
|
|
return tree.sort((a, b) => a.order - b.order);
|
|
}
|