# Module Spec:vab-search(菜单搜索:Ctrl/⌘+K) module: id: vab-search name: VabSearch(菜单搜索) type: ui entrypoints: - library/components/VabSearch/index.vue public_api: concept: - "通过 Ctrl/⌘+K 或点击图标打开搜索面板(teleport 到 body)" - "从 routes store 的 getRoutes 平铺菜单项并模糊搜索" - "维护本地搜索历史 localStorage(key=vab_search_history)" dependency_closure: runtime: - "store-routes:getRoutes(菜单路由来源)" - "vue-router:useRouter(router.push 内链跳转)" - "浏览器 API:window.addEventListener('keydown'), navigator.userAgent, localStorage" - "VabIcon:搜索图标与历史删除图标" acceptance: - "Ctrl/⌘+K 可打开/关闭面板(Escape 关闭)" - "输入关键字能过滤菜单并 Enter 跳转" - "搜索历史能写入/删除/清空" pitfalls: - "该组件包含较多样式与 DOM 交互(teleport/fixed mask);抽取到新项目需确保全局样式/层级不冲突" - "菜单来源依赖 routes store 已完成 setRoutes;否则列表为空"