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
33 lines
766 B
TypeScript
33 lines
766 B
TypeScript
'use client';
|
|
|
|
import { usePathname } from 'next/navigation';
|
|
|
|
import { Cms } from '@kit/cms';
|
|
import { Collapsible } from '@kit/ui/collapsible';
|
|
import { cn, isRouteActive } from '@kit/ui/utils';
|
|
|
|
export function DocsNavigationCollapsible(
|
|
props: React.PropsWithChildren<{
|
|
node: Cms.ContentItem;
|
|
prefix: string;
|
|
}>,
|
|
) {
|
|
const currentPath = usePathname();
|
|
const prefix = props.prefix;
|
|
|
|
const isChildActive = props.node.children.some((child) =>
|
|
isRouteActive(prefix + '/' + child.url, currentPath),
|
|
);
|
|
|
|
return (
|
|
<Collapsible
|
|
className={cn('group/collapsible', {
|
|
'group/active': isChildActive,
|
|
})}
|
|
defaultOpen={isChildActive ? true : !props.node.collapsed}
|
|
>
|
|
{props.children}
|
|
</Collapsible>
|
|
);
|
|
}
|