用途:为 AdonisJS + Inertia 应用提供按上下文划分的布局外壳方案。每个页面在文件顶部显式导入所需外壳,不存在运行时选择器;变体、折叠、方向、最大宽度等均硬编码在外壳文件内,不作为 props 或用户设置。项目不需要某个外壳时直接删除文件,而非通过配置禁用。
主要能力:典型外壳包括 AppLayout(登录后外壳,桌面侧边栏、移动端底部导航加顶部通知栏)与 AuthLayout(登录前外壳,无导航)。公开营销页通常不使用外壳,直接组合 Hero、Features、Footer 等区块。头部组件(NotificationBell、ToggleTheme、LanguageSwitcher、NavUser)由各外壳直接导入共享。导航配置集中在单一文件,以函数形式暴露(getMainNav(t)、getFooterNav(t)、getNavUser(t)、getMobileFab(t)),导航项支持 can: 'permissionKey' 字段做 RBAC 门控。Provider(主题、i18n、Tuyau、模态栈)挂在根客户端入口,不放在外壳内。
使用方式:新页面按上下文选外壳——登录/注册/密码重置用 AuthLayout,其他登录后页面用 AppLayout,公开营销页不用外壳,结账、安装向导、kiosk 等仅当外壳结构真正不同时才新增。新增导航项编辑导航配置文件并设置 can 权限键,不要写进外壳文件。删除未用外壳时,删除外壳文件、使用它的页面及其专属导航配置段。
限制与反模式:不要把 variant、collapsible、direction 作为 props;不要用 Provider 在运行时切换外壳行为;不要通过用户偏好配置布局;不要嵌套外壳;不要用包装组件按路由或角色选外壳;不要在壳内硬编码导航项;不要在壳内添加页面级 Provider。相关技能:inertia、authorization、i18n、notifications。