diff --git a/package.json b/package.json index a480c36d29..0b475f7243 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hyperplay", - "version": "0.25.1", + "version": "0.26.0", "private": true, "main": "build/main/main.js", "homepage": "./", @@ -119,6 +119,8 @@ "i18next-fs-backend": "^2.3.2", "i18next-http-backend": "^2.5.2", "ini": "^3.0.1", + "intro.js": "^7.2.0", + "intro.js-react": "^1.0.0", "jest-environment-jsdom": "^29.7.0", "jsdom": "^20.0.0", "json5": "^2.2.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4b75741538..ec17dbecb3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -185,6 +185,12 @@ importers: ini: specifier: ^3.0.1 version: 3.0.1 + intro.js: + specifier: ^7.2.0 + version: 7.2.0 + intro.js-react: + specifier: ^1.0.0 + version: 1.0.0(intro.js@7.2.0)(react@18.3.1) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -5841,6 +5847,15 @@ packages: resolution: {integrity: sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==} engines: {node: '>=10'} + intro.js-react@1.0.0: + resolution: {integrity: sha512-zR8pbTyX20RnCZpJMc0nuHBpsjcr1wFkj3ZookV6Ly4eE/LGpFTQwPsaA61Cryzwiy/tTFsusf4hPU9NpI9UOg==} + peerDependencies: + intro.js: '>=2.5.0' + react: '>=0.14.0' + + intro.js@7.2.0: + resolution: {integrity: sha512-qbMfaB70rOXVBceIWNYnYTpVTiZsvQh/MIkfdQbpA9di9VBfj1GigUPfcCv3aOfsbrtPcri8vTLTA4FcEDcHSQ==} + invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -16856,6 +16871,13 @@ snapshots: from2: 2.3.0 p-is-promise: 3.0.0 + intro.js-react@1.0.0(intro.js@7.2.0)(react@18.3.1): + dependencies: + intro.js: 7.2.0 + react: 18.3.1 + + intro.js@7.2.0: {} + invariant@2.2.4: dependencies: loose-envify: 1.4.0 diff --git a/public/locales/en/tour.json b/public/locales/en/tour.json new file mode 100644 index 0000000000..f73a0ce1e5 --- /dev/null +++ b/public/locales/en/tour.json @@ -0,0 +1,17 @@ +{ + "tour": { + "back": "Back", + "done": "Done", + "first-welcome": { + "account": "Login and connect your primary wallet to track progress.", + "account-title": "Start Your Journey", + "links-title": "A Galaxy of Games", + "quests": "Take on quests, make leaderboards, and earn along the way.", + "rewards-title": "Earn Real Rewards 🎁", + "stores": "Explore all the titles from HyperPlay, Epic Games, and GOG.", + "welcome": "Begin your journey through the Web3 galaxy and discover top-tier games.", + "welcome-title": "Ready for Takeoff 🚀" + }, + "next": "Next" + } +} diff --git a/src/frontend/App.tsx b/src/frontend/App.tsx index aca462d790..2a565de214 100644 --- a/src/frontend/App.tsx +++ b/src/frontend/App.tsx @@ -41,6 +41,7 @@ import { QuestsPage } from './screens/Quests' import { NavigateListener } from './NavigateListener' import G7Webview from './screens/G7Webview' import CardPrivacyPolicy from './screens/Onboarding/analytics/CardPrivacyPolicy' +import { TourProvider } from './components/TourGuide/TourContext' function App() { const { sidebarCollapsed, isSettingsModalOpen, connectivity } = @@ -50,106 +51,111 @@ function App() { return (
setLaunchArguments(event.target.value)} value={launchArguments} prompt={t('launch.options', 'Launch Options...')} + data-tour="game-page-launch-options" > {launchOptions.map(({ name, parameters }) => (