diff --git a/src/stores/sidebar/sidebar-events.ts b/src/stores/sidebar/sidebar-events.ts index 6b5ed72a..30287338 100644 --- a/src/stores/sidebar/sidebar-events.ts +++ b/src/stores/sidebar/sidebar-events.ts @@ -1,7 +1,7 @@ /** * Sidebar 状态机:事件联合 */ -import type { SidebarPage, BottomNavItem } from "./sidebar-machine"; +import type { SidebarPage, BottomNavItem } from "./sidebar-state"; export type SidebarEvent = | { diff --git a/src/stores/sidebar/sidebar-machine.ts b/src/stores/sidebar/sidebar-machine.ts index 89a478e9..6b34fb40 100644 --- a/src/stores/sidebar/sidebar-machine.ts +++ b/src/stores/sidebar/sidebar-machine.ts @@ -11,31 +11,9 @@ */ import { setup, assign } from "xstate"; -import { SidebarState, initialState } from "./sidebar-state"; +import { BottomNavItem, SidebarState, initialState } from "./sidebar-state"; import type { SidebarEvent } from "./sidebar-events"; -/** - * Sidebar 页面/底部导航枚举(与原 sidebar-types.ts 保持一致) - */ -export const SidebarPage = { - DefaultView: "defaultView", - Profile: "profile", - Topics: "topics", - Gifts: "gifts", - Activities: "activities", -} as const; - -export type SidebarPage = (typeof SidebarPage)[keyof typeof SidebarPage]; - -export const BottomNavItem = { - None: "none", - Topics: "topics", - Gifts: "gifts", - Activities: "activities", -} as const; - -export type BottomNavItem = (typeof BottomNavItem)[keyof typeof BottomNavItem]; - // 重新导出 State / Event 类型,保持 machine 文件的公共 API 不变 export type { SidebarState } from "./sidebar-state"; export { initialState } from "./sidebar-state"; diff --git a/src/stores/sidebar/sidebar-state.ts b/src/stores/sidebar/sidebar-state.ts index 3ae0e1ba..4a18efdf 100644 --- a/src/stores/sidebar/sidebar-state.ts +++ b/src/stores/sidebar/sidebar-state.ts @@ -1,9 +1,31 @@ /** * Sidebar 状态机:State 形状 + 初始值 * - * SidebarPage / BottomNavItem 仍由 sidebar-machine.ts 导出(事件/上下文均需引用)。 + * 枚举 `SidebarPage` / `BottomNavItem` 与 state 形状强相关(`currentPage` / + * `selectedBottomNavItem` 字段的取值集合),因此与 state 同源定义在本文件, + * 避免与 `sidebar-machine.ts` 形成循环引用。 */ -import { SidebarPage, BottomNavItem } from "./sidebar-machine"; + +/** 页面枚举(侧边栏主区域可显示的页面) */ +export const SidebarPage = { + DefaultView: "defaultView", + Profile: "profile", + Topics: "topics", + Gifts: "gifts", + Activities: "activities", +} as const; + +export type SidebarPage = (typeof SidebarPage)[keyof typeof SidebarPage]; + +/** 底部导航枚举(选中态) */ +export const BottomNavItem = { + None: "none", + Topics: "topics", + Gifts: "gifts", + Activities: "activities", +} as const; + +export type BottomNavItem = (typeof BottomNavItem)[keyof typeof BottomNavItem]; export interface SidebarState { currentPage: SidebarPage;