feat: 重做新手导览
按新的顺序重写 main 导览(10 个内容点,导航 + 高亮共 16 步): 主页、登录 StarLight、侧栏公告、创建 StarLight 实例、发现内容、 皮肤选择器、实例库、实验室、下载、设置的更新页。 - onboardingConfig.ts 重写 onboardingTours.main,并新增 home-intro/ account-login/announcement/create-starlight/settings-updates 文案; - HomeAnnouncementEntry.vue 增加 data-onboarding-id="home-announcement" 锚点; - en-US / zh-CN 补齐上述新增文案。
This commit is contained in:
1 parent
0a6fa0eb35
commit
c7d1e44719
4 files changed
+146
-114
No files matched your search
@@ -11,6 +11,7 @@ function open() {
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<section
|
<section
|
||||||
|
data-onboarding-id="home-announcement"
|
||||||
class="flex min-w-0 flex-col gap-3 border-0 border-b-[1px] border-solid border-[--brand-gradient-border] p-4"
|
class="flex min-w-0 flex-col gap-3 border-0 border-b-[1px] border-solid border-[--brand-gradient-border] p-4"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
|
|||||||
@@ -276,6 +276,48 @@ export const onboardingMessages = defineMessages({
|
|||||||
},
|
},
|
||||||
skip: { id: 'app.onboarding.action.skip', defaultMessage: 'Leave the tour' },
|
skip: { id: 'app.onboarding.action.skip', defaultMessage: 'Leave the tour' },
|
||||||
mascotAlt: { id: 'app.onboarding.mascot-alt', defaultMessage: 'Starlight guide' },
|
mascotAlt: { id: 'app.onboarding.mascot-alt', defaultMessage: 'Starlight guide' },
|
||||||
|
homeIntroTitle: { id: 'app.onboarding.home-intro.title', defaultMessage: 'Welcome home' },
|
||||||
|
homeIntroDescription: {
|
||||||
|
id: 'app.onboarding.home-intro.description',
|
||||||
|
defaultMessage:
|
||||||
|
'This is your home page. It shows your instances, recent activity, and quick shortcuts to get playing.',
|
||||||
|
},
|
||||||
|
accountLoginTitle: {
|
||||||
|
id: 'app.onboarding.account-login.title',
|
||||||
|
defaultMessage: 'Sign in to StarLight',
|
||||||
|
},
|
||||||
|
accountLoginDescription: {
|
||||||
|
id: 'app.onboarding.account-login.description',
|
||||||
|
defaultMessage:
|
||||||
|
'Sign in to the StarLight skin site here to use your StarLight players, install hosted modpacks, and sync your account.',
|
||||||
|
},
|
||||||
|
announcementTitle: {
|
||||||
|
id: 'app.onboarding.announcement.title',
|
||||||
|
defaultMessage: 'Latest announcements',
|
||||||
|
},
|
||||||
|
announcementDescription: {
|
||||||
|
id: 'app.onboarding.announcement.description',
|
||||||
|
defaultMessage:
|
||||||
|
'Open the announcement entry in the sidebar to read the latest news, rules, and server notices.',
|
||||||
|
},
|
||||||
|
createStarlightTitle: {
|
||||||
|
id: 'app.onboarding.create-starlight.title',
|
||||||
|
defaultMessage: 'Create a StarLight instance',
|
||||||
|
},
|
||||||
|
createStarlightDescription: {
|
||||||
|
id: 'app.onboarding.create-starlight.description',
|
||||||
|
defaultMessage:
|
||||||
|
'Use Create new instance here. A StarLight instance installs the server-selected modpack and versions, then keeps them updated before each launch.',
|
||||||
|
},
|
||||||
|
settingsUpdatesTitle: {
|
||||||
|
id: 'app.onboarding.settings-updates.title',
|
||||||
|
defaultMessage: 'Stay up to date',
|
||||||
|
},
|
||||||
|
settingsUpdatesDescription: {
|
||||||
|
id: 'app.onboarding.settings-updates.description',
|
||||||
|
defaultMessage:
|
||||||
|
'The Updates tab controls the update channel, checks for new launcher versions, and shows the changelog.',
|
||||||
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const step = (
|
const step = (
|
||||||
@@ -331,20 +373,29 @@ const settingsTourSteps: Array<[string, string, MessageDescriptor, MessageDescri
|
|||||||
|
|
||||||
export const onboardingTours: Record<OnboardingMode, OnboardingStep[]> = {
|
export const onboardingTours: Record<OnboardingMode, OnboardingStep[]> = {
|
||||||
main: [
|
main: [
|
||||||
step(
|
inspect(
|
||||||
'welcome',
|
'home-intro',
|
||||||
'manual',
|
'home-widget-grid',
|
||||||
copy(
|
onboardingMessages.homeIntroTitle,
|
||||||
onboardingMessages.welcomeTitle,
|
onboardingMessages.homeIntroDescription,
|
||||||
onboardingMessages.welcomeDescription,
|
|
||||||
onboardingMessages.start,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
inspect(
|
inspect(
|
||||||
'home-layout-switch',
|
'account-login',
|
||||||
'home-layout-switch',
|
'account-entry',
|
||||||
onboardingMessages.homeLayoutTitle,
|
onboardingMessages.accountLoginTitle,
|
||||||
onboardingMessages.homeLayoutDescription,
|
onboardingMessages.accountLoginDescription,
|
||||||
|
),
|
||||||
|
inspect(
|
||||||
|
'announcement',
|
||||||
|
'home-announcement',
|
||||||
|
onboardingMessages.announcementTitle,
|
||||||
|
onboardingMessages.announcementDescription,
|
||||||
|
),
|
||||||
|
inspect(
|
||||||
|
'create-starlight',
|
||||||
|
'create-instance',
|
||||||
|
onboardingMessages.createStarlightTitle,
|
||||||
|
onboardingMessages.createStarlightDescription,
|
||||||
),
|
),
|
||||||
step(
|
step(
|
||||||
'discover-navigation',
|
'discover-navigation',
|
||||||
@@ -362,22 +413,6 @@ export const onboardingTours: Record<OnboardingMode, OnboardingStep[]> = {
|
|||||||
onboardingMessages.browseTitle,
|
onboardingMessages.browseTitle,
|
||||||
onboardingMessages.browseDescription,
|
onboardingMessages.browseDescription,
|
||||||
),
|
),
|
||||||
step(
|
|
||||||
'discover-favorites-navigation',
|
|
||||||
'navigate',
|
|
||||||
copy(
|
|
||||||
onboardingMessages.favoritesTitle,
|
|
||||||
onboardingMessages.favoritesDescription,
|
|
||||||
onboardingMessages.clickFavorites,
|
|
||||||
),
|
|
||||||
control('browse-favorites-tab', '/browse/favorites'),
|
|
||||||
),
|
|
||||||
inspect(
|
|
||||||
'discover-favorites-content',
|
|
||||||
'browse-favorites-content',
|
|
||||||
onboardingMessages.favoritesTitle,
|
|
||||||
onboardingMessages.favoritesDescription,
|
|
||||||
),
|
|
||||||
step(
|
step(
|
||||||
'skins-navigation',
|
'skins-navigation',
|
||||||
'navigate',
|
'navigate',
|
||||||
@@ -394,6 +429,22 @@ export const onboardingTours: Record<OnboardingMode, OnboardingStep[]> = {
|
|||||||
onboardingMessages.skinsPageTitle,
|
onboardingMessages.skinsPageTitle,
|
||||||
onboardingMessages.skinsPageDescription,
|
onboardingMessages.skinsPageDescription,
|
||||||
),
|
),
|
||||||
|
step(
|
||||||
|
'library-navigation',
|
||||||
|
'navigate',
|
||||||
|
copy(
|
||||||
|
onboardingMessages.libraryTitle,
|
||||||
|
onboardingMessages.libraryDescription,
|
||||||
|
onboardingMessages.clickLibrary,
|
||||||
|
),
|
||||||
|
control('nav-library', '/library'),
|
||||||
|
),
|
||||||
|
inspect(
|
||||||
|
'library-content',
|
||||||
|
'library-content',
|
||||||
|
onboardingMessages.libraryPageTitle,
|
||||||
|
onboardingMessages.libraryPageDescription,
|
||||||
|
),
|
||||||
step(
|
step(
|
||||||
'lab-navigation',
|
'lab-navigation',
|
||||||
'navigate',
|
'navigate',
|
||||||
@@ -428,7 +479,7 @@ export const onboardingTours: Record<OnboardingMode, OnboardingStep[]> = {
|
|||||||
),
|
),
|
||||||
step(
|
step(
|
||||||
'settings-navigation',
|
'settings-navigation',
|
||||||
'activate',
|
'navigate',
|
||||||
copy(
|
copy(
|
||||||
onboardingMessages.settingsTitle,
|
onboardingMessages.settingsTitle,
|
||||||
onboardingMessages.settingsDescription,
|
onboardingMessages.settingsDescription,
|
||||||
@@ -436,95 +487,15 @@ export const onboardingTours: Record<OnboardingMode, OnboardingStep[]> = {
|
|||||||
),
|
),
|
||||||
control('nav-settings', '/settings'),
|
control('nav-settings', '/settings'),
|
||||||
),
|
),
|
||||||
...settingsTourSteps.map(([id, targetId, title, description], index) =>
|
|
||||||
step(id, 'activate', copy(title, description, onboardingMessages.clickTab), {
|
|
||||||
...control(targetId),
|
|
||||||
closeSettingsAfter: index === settingsTourSteps.length - 1,
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
step(
|
step(
|
||||||
'library-navigation',
|
'settings-updates',
|
||||||
'navigate',
|
|
||||||
copy(
|
|
||||||
onboardingMessages.libraryTitle,
|
|
||||||
onboardingMessages.libraryDescription,
|
|
||||||
onboardingMessages.clickLibrary,
|
|
||||||
),
|
|
||||||
control('nav-library', '/library'),
|
|
||||||
),
|
|
||||||
inspect(
|
|
||||||
'library-content',
|
|
||||||
'library-content',
|
|
||||||
onboardingMessages.libraryPageTitle,
|
|
||||||
onboardingMessages.libraryPageDescription,
|
|
||||||
),
|
|
||||||
step(
|
|
||||||
'create-instance',
|
|
||||||
'navigate',
|
|
||||||
copy(
|
|
||||||
onboardingMessages.createTitle,
|
|
||||||
onboardingMessages.createDescription,
|
|
||||||
onboardingMessages.clickCreate,
|
|
||||||
),
|
|
||||||
control('create-instance', '/create'),
|
|
||||||
),
|
|
||||||
inspect(
|
|
||||||
'creation-instance-mode',
|
|
||||||
'creation-instance-mode',
|
|
||||||
onboardingMessages.instanceModeTitle,
|
|
||||||
onboardingMessages.instanceModeDescription,
|
|
||||||
),
|
|
||||||
step(
|
|
||||||
'creation-flow',
|
|
||||||
'activate',
|
'activate',
|
||||||
copy(
|
copy(
|
||||||
onboardingMessages.creationTitle,
|
onboardingMessages.settingsUpdatesTitle,
|
||||||
onboardingMessages.creationDescription,
|
onboardingMessages.settingsUpdatesDescription,
|
||||||
onboardingMessages.clickCreationMethod,
|
onboardingMessages.clickTab,
|
||||||
),
|
),
|
||||||
{
|
control('settings-tab-updates'),
|
||||||
targetId: 'creation-methods',
|
|
||||||
branchByTarget: {
|
|
||||||
'creation-method-starlight': { next: 'complete' },
|
|
||||||
'creation-method-custom': { creationPath: 'custom', next: 'creation-name' },
|
|
||||||
'creation-method-import': { next: 'complete' },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
),
|
|
||||||
inspect(
|
|
||||||
'creation-name',
|
|
||||||
'creation-name',
|
|
||||||
onboardingMessages.creationNameTitle,
|
|
||||||
onboardingMessages.creationNameDescription,
|
|
||||||
),
|
|
||||||
inspect(
|
|
||||||
'creation-loader',
|
|
||||||
'creation-loader',
|
|
||||||
onboardingMessages.creationLoaderTitle,
|
|
||||||
onboardingMessages.creationLoaderDescription,
|
|
||||||
),
|
|
||||||
step(
|
|
||||||
'creation-version',
|
|
||||||
'inspect',
|
|
||||||
copy(
|
|
||||||
onboardingMessages.creationVersionTitle,
|
|
||||||
onboardingMessages.creationVersionDescription,
|
|
||||||
onboardingMessages.continueArea,
|
|
||||||
),
|
|
||||||
{
|
|
||||||
targetId: 'creation-game-version',
|
|
||||||
nextByCreationPath: { custom: 'creation-confirm' },
|
|
||||||
},
|
|
||||||
),
|
|
||||||
step(
|
|
||||||
'creation-confirm',
|
|
||||||
'inspect',
|
|
||||||
copy(
|
|
||||||
onboardingMessages.creationConfirmTitle,
|
|
||||||
onboardingMessages.creationConfirmDescription,
|
|
||||||
onboardingMessages.finishArea,
|
|
||||||
),
|
|
||||||
{ targetId: 'creation-confirm' },
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
instance: [
|
instance: [
|
||||||
|
|||||||
@@ -5975,6 +5975,36 @@
|
|||||||
"app.onboarding.welcome.title": {
|
"app.onboarding.welcome.title": {
|
||||||
"message": "Everything is ready"
|
"message": "Everything is ready"
|
||||||
},
|
},
|
||||||
|
"app.onboarding.home-intro.title": {
|
||||||
|
"message": "Welcome home"
|
||||||
|
},
|
||||||
|
"app.onboarding.home-intro.description": {
|
||||||
|
"message": "This is your home page. It shows your instances, recent activity, and quick shortcuts to get playing."
|
||||||
|
},
|
||||||
|
"app.onboarding.account-login.title": {
|
||||||
|
"message": "Sign in to StarLight"
|
||||||
|
},
|
||||||
|
"app.onboarding.account-login.description": {
|
||||||
|
"message": "Sign in to the StarLight skin site here to use your StarLight players, install hosted modpacks, and sync your account."
|
||||||
|
},
|
||||||
|
"app.onboarding.announcement.title": {
|
||||||
|
"message": "Latest announcements"
|
||||||
|
},
|
||||||
|
"app.onboarding.announcement.description": {
|
||||||
|
"message": "Open the announcement entry in the sidebar to read the latest news, rules, and server notices."
|
||||||
|
},
|
||||||
|
"app.onboarding.create-starlight.title": {
|
||||||
|
"message": "Create a StarLight instance"
|
||||||
|
},
|
||||||
|
"app.onboarding.create-starlight.description": {
|
||||||
|
"message": "Use Create new instance here. A StarLight instance installs the server-selected modpack and versions, then keeps them updated before each launch."
|
||||||
|
},
|
||||||
|
"app.onboarding.settings-updates.title": {
|
||||||
|
"message": "Stay up to date"
|
||||||
|
},
|
||||||
|
"app.onboarding.settings-updates.description": {
|
||||||
|
"message": "The Updates tab controls the update channel, checks for new launcher versions, and shows the changelog."
|
||||||
|
},
|
||||||
"app.project.curseforge.loading": {
|
"app.project.curseforge.loading": {
|
||||||
"message": "Loading CurseForge project…"
|
"message": "Loading CurseForge project…"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -6061,6 +6061,36 @@
|
|||||||
"app.onboarding.welcome.title": {
|
"app.onboarding.welcome.title": {
|
||||||
"message": "一切就绪"
|
"message": "一切就绪"
|
||||||
},
|
},
|
||||||
|
"app.onboarding.home-intro.title": {
|
||||||
|
"message": "欢迎回家"
|
||||||
|
},
|
||||||
|
"app.onboarding.home-intro.description": {
|
||||||
|
"message": "这里是你的主页,展示你的实例、最近活动和快速开始游戏的入口。"
|
||||||
|
},
|
||||||
|
"app.onboarding.account-login.title": {
|
||||||
|
"message": "登录 StarLight"
|
||||||
|
},
|
||||||
|
"app.onboarding.account-login.description": {
|
||||||
|
"message": "在这里登录 StarLight 皮肤站,即可使用皮肤站玩家、安装托管整合包并同步你的账号。"
|
||||||
|
},
|
||||||
|
"app.onboarding.announcement.title": {
|
||||||
|
"message": "最新公告"
|
||||||
|
},
|
||||||
|
"app.onboarding.announcement.description": {
|
||||||
|
"message": "打开侧栏的公告入口,查看最新消息、服规与服务器通知。"
|
||||||
|
},
|
||||||
|
"app.onboarding.create-starlight.title": {
|
||||||
|
"message": "创建 StarLight 实例"
|
||||||
|
},
|
||||||
|
"app.onboarding.create-starlight.description": {
|
||||||
|
"message": "点击这里的“创建新实例”。StarLight 实例会安装服务器指定的整合包与版本,并在每次启动前保持更新。"
|
||||||
|
},
|
||||||
|
"app.onboarding.settings-updates.title": {
|
||||||
|
"message": "保持最新"
|
||||||
|
},
|
||||||
|
"app.onboarding.settings-updates.description": {
|
||||||
|
"message": "“更新”页用于设置更新通道、检查启动器新版本并查看更新日志。"
|
||||||
|
},
|
||||||
"app.project.curseforge.loading": {
|
"app.project.curseforge.loading": {
|
||||||
"message": "正在加载 CurseForge 项目…"
|
"message": "正在加载 CurseForge 项目…"
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in new issue
Block a user