import React, { type FC } from 'react'; import { Outlet } from 'react-router'; import { z } from 'zod'; import { ExpandableSideMenuLayout, type ExpandableSideMenuLayoutProps } from '../../components'; import { useUserPreferenceState } from '../hooks'; const ModuleLayoutState = z.object({ expanded: z.boolean().optional().default(true), }); function useModuleLayoutState({ path }: { path: string }) { return useUserPreferenceState({ key: `ModuleLayoutState.${path}`, schema: ModuleLayoutState, }); } export const ModuleMainLayout: FC< ExpandableSideMenuLayoutProps & { path?: string; } > = ({ children = , path = 'default', ...props }) => { const [{ expanded }, update] = useModuleLayoutState({ path }); return ( { update({ expanded: next }); }} {...props} > {children} ); };