项目文件夹

文件
wehub-resource-sync 2114b14ee0
Sync main into demo / sync (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:35:26 +08:00

301 行
9.2 KiB
TypeScript

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'];