const MAIN_SCROLL = [ { name: 'main', direction: 'vertical', description: '页面主内容区' }, ] as const; const DAILY_FORECAST_SCROLL = [ { name: 'main', direction: 'vertical', description: '15日预报页面主内容区' }, { name: 'forecast', direction: 'horizontal', description: '15日预报横向滚动区' }, ] as const; export const NAVIGATION_DECLARATION = { app: 'weather', routes: [ { path: '/', component: 'WeatherContent', params: {}, entryPoint: 'home', scrollContainers: MAIN_SCROLL, uiStates: [ { id: 'weather.home.base', search: { menu: null }, description: '天气首页' }, { id: 'weather.home.menu', search: { menu: 'more' }, description: '首页更多菜单', actions: [ { id: 'menu.feedback', label: '反馈天气', behavior: 'other' }, ], }, ], queryParams: {}, description: '天气首页', }, { path: '/settings', component: 'WeatherSettingsPage', params: {}, entryPoint: 'none', scrollContainers: MAIN_SCROLL, uiStates: [ { id: 'weather.settings.base', search: { picker: null }, description: '天气设置页' }, { id: 'weather.settings.picker.temp', search: { picker: 'temp' }, description: '天气设置-温度单位选择', actions: [ { id: 'settings.tempUnit.select.celsius', label: '选择摄氏度°C', behavior: 'select' }, { id: 'settings.tempUnit.select.fahrenheit', label: '选择华氏度°F', behavior: 'select' }, ], }, { id: 'weather.settings.picker.wind', search: { picker: 'wind' }, description: '天气设置-风力单位选择', actions: [ { id: 'settings.windUnit.select.beaufort', label: '选择蒲福风级', behavior: 'select' }, { id: 'settings.windUnit.select.kmh', label: '选择公里/小时', behavior: 'select' }, { id: 'settings.windUnit.select.ms', label: '选择米/秒', behavior: 'select' }, { id: 'settings.windUnit.select.mph', label: '选择英里/小时', behavior: 'select' }, { id: 'settings.windUnit.select.kn', label: '选择节', behavior: 'select' }, ], }, { id: 'weather.settings.picker.pressure', search: { picker: 'pressure' }, description: '天气设置-气压单位选择', actions: [ { id: 'settings.pressureUnit.select.hpa', label: '选择百帕(hPa)', behavior: 'select' }, { id: 'settings.pressureUnit.select.mmhg', label: '选择毫米汞柱(mmHg)', behavior: 'select' }, { id: 'settings.pressureUnit.select.inhg', label: '选择英寸汞柱(inHg)', behavior: 'select' }, ], }, ], queryParams: {}, description: '天气设置页', }, { path: '/settings/privacy', component: 'WeatherPrivacySettingsPage', params: {}, entryPoint: 'none', scrollContainers: MAIN_SCROLL, uiStates: [{ id: 'weather.privacy.base', search: {}, description: '隐私设置页' }], queryParams: {}, description: '隐私设置页', }, { path: '/settings/permissions', component: 'WeatherPermissionsPage', params: {}, entryPoint: 'none', scrollContainers: MAIN_SCROLL, uiStates: [{ id: 'weather.permissions.base', search: {}, description: '权限说明页' }], queryParams: {}, description: '权限说明页', }, { path: '/cities', component: 'WeatherCityManagerPage', params: {}, entryPoint: 'none', scrollContainers: MAIN_SCROLL, uiStates: [{ id: 'weather.cityManager.base', search: {}, description: '城市管理页' }], queryParams: {}, description: '城市管理页', }, { path: '/cities/search', component: 'WeatherCitySearchPage', params: {}, entryPoint: 'none', scrollContainers: MAIN_SCROLL, uiStates: [{ id: 'weather.citySearch.base', search: {}, description: '城市搜索页' }], queryParams: {}, description: '城市搜索页', }, { path: '/cities/preview', component: 'WeatherCityPreviewPage', params: {}, entryPoint: 'none', scrollContainers: MAIN_SCROLL, uiStates: [{ id: 'weather.cityPreview.base', search: {}, description: '城市预览页' }], queryParams: { cityId: 'string' }, description: '城市天气预览页', }, { path: '/forecast/daily', component: 'WeatherDailyForecastPage', params: {}, entryPoint: 'none', scrollContainers: DAILY_FORECAST_SCROLL, uiStates: [{ id: 'weather.dailyForecast.base', search: {}, description: '15日天气预报页' }], queryParams: { cityId: 'string' }, description: '15日天气预报页', }, { path: '/airquality', component: 'WeatherAirQualityPage', params: {}, entryPoint: 'none', scrollContainers: MAIN_SCROLL, uiStates: [{ id: 'weather.airQuality.base', search: {}, description: '空气质量详情页' }], queryParams: { cityId: 'string' }, description: '空气质量详情页', }, ], transitions: [ { id: 'cities.open', from: '/', to: '/cities', search: {}, searchParams: {}, mode: 'push', params: {}, label: '打开城市管理', ui: { placement: 'topbar', icon: 'add', gesture: 'tap' }, }, { id: 'menu.open', from: '/', to: '/', search: { menu: 'more' }, searchParams: {}, mode: 'push', params: {}, label: '打开更多菜单', ui: { placement: 'topbar', icon: 'more', gesture: 'tap' }, }, { id: 'settings.open', from: { path: '/', search: { menu: 'more' } }, to: '/settings', search: {}, searchParams: {}, mode: 'replace', params: {}, label: '打开天气设置', ui: { placement: 'content', icon: 'settings', gesture: 'tap' }, }, // ========================= // Settings picker overlays // ========================= { id: 'settings.picker.temp.open', from: '/settings', to: '/settings', search: { picker: 'temp' }, searchParams: {}, mode: 'push', params: {}, label: '打开温度单位选择', ui: { placement: 'content', icon: 'temp', gesture: 'tap' }, }, { id: 'settings.picker.wind.open', from: '/settings', to: '/settings', search: { picker: 'wind' }, searchParams: {}, mode: 'push', params: {}, label: '打开风力单位选择', ui: { placement: 'content', icon: 'wind', gesture: 'tap' }, }, { id: 'settings.picker.pressure.open', from: '/settings', to: '/settings', search: { picker: 'pressure' }, searchParams: {}, mode: 'push', params: {}, label: '打开气压单位选择', ui: { placement: 'content', icon: 'pressure', gesture: 'tap' }, }, { id: 'privacy.open', from: '/settings', to: '/settings/privacy', search: {}, searchParams: {}, mode: 'push', params: {}, label: '打开隐私政策', ui: { placement: 'content', icon: 'privacy', gesture: 'tap' }, }, { id: 'permissions.open', from: '/settings/privacy', to: '/settings/permissions', search: {}, searchParams: {}, mode: 'push', params: {}, label: '打开权限说明', ui: { placement: 'content', icon: 'permission', gesture: 'tap' }, }, { id: 'city.search.open', from: '/cities', to: '/cities/search', search: {}, searchParams: {}, mode: 'push', params: {}, label: '打开城市搜索', ui: { placement: 'content', icon: 'search', gesture: 'tap' }, }, { id: 'city.preview.open', from: '/cities/search', to: '/cities/preview', search: {}, searchParams: { cityId: 'string' }, mode: 'push', params: {}, label: '打开城市预览', ui: { placement: 'content', icon: 'city', gesture: 'tap' }, }, { id: 'home.open', from: '/cities/preview', to: '/', search: {}, searchParams: {}, mode: 'replace', params: {}, label: '返回天气首页', ui: { placement: 'content', icon: 'confirm', gesture: 'tap' }, }, { id: 'forecast.daily.open', from: ['/', '/cities/preview'], to: '/forecast/daily', search: {}, searchParams: { cityId: 'string' }, mode: 'push', params: {}, label: '打开15日天气预报', ui: { placement: 'content', icon: 'forecast', gesture: 'tap' }, }, { id: 'airquality.open', from: ['/', '/cities/preview'], to: '/airquality', search: {}, searchParams: { cityId: 'string' }, mode: 'push', params: {}, label: '打开空气质量详情', ui: { placement: 'content', icon: 'leaf', gesture: 'tap' }, }, ], capabilities: { historyBack: true, }, } as const; export type TransitionId = typeof NAVIGATION_DECLARATION.transitions[number]['id'];