From 4f4428108a015f4a52f32112c5a707fef9a9d1d0 Mon Sep 17 00:00:00 2001 From: Jacob <55346310+Kathund@users.noreply.github.com> Date: Fri, 17 Oct 2025 14:50:00 +0000 Subject: [PATCH] feat: oneclient onboarding transition animation (#398) Closes: https://github.com/Polyfrost/OneLauncher/issues/387 --- apps/oneclient/frontend/src/bindings.gen.ts | 14 +++++------ .../frontend/src/routes/onboarding/route.tsx | 25 +++++++++++++++++-- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/apps/oneclient/frontend/src/bindings.gen.ts b/apps/oneclient/frontend/src/bindings.gen.ts index c74bf860..c109f273 100644 --- a/apps/oneclient/frontend/src/bindings.gen.ts +++ b/apps/oneclient/frontend/src/bindings.gen.ts @@ -254,13 +254,8 @@ export type VersionType = */ "old_beta" -const ARGS_MAP = { 'events':'{"ingress":["event"],"process":["event"],"message":["event"]}', 'oneclient':'{"openDevTools":[],"getClustersGroupedByMajor":[],"getBundlesFor":["cluster_id"]}', 'core':'{"isClusterRunning":["cluster_id"],"updateClusterProfile":["name","profile"],"writeSettings":["setting"],"createCluster":["options"],"getWorlds":["id"],"getRunningProcesses":[],"getLoadersForVersion":["mc_version"],"getUser":["uuid"],"createSettingsProfile":["name"],"removeCluster":["id"],"getLogByName":["id","name"],"setDefaultUser":["uuid"],"fetchMinecraftProfile":["uuid"],"changeSkin":["access_token","skin_url","skin_variant"],"removeCape":["access_token"],"convertUsernameUUID":["username_uuid"],"readSettings":[],"getPackage":["provider","slug"],"getGameVersions":[],"openMsaLogin":[],"getClusterById":["id"],"fetchLoggedInProfile":["access_token"],"getRunningProcessesByClusterId":["cluster_id"],"open":["input"],"searchPackages":["provider","query"],"getProfileOrDefault":["name"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"killProcess":["pid"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"getLogs":["id"],"installModpack":["modpack","cluster_id"],"changeCape":["access_token","cape_uuid"],"getGlobalProfile":[],"getClusters":[],"updateClusterById":["id","request"],"getMultiplePackages":["provider","slugs"],"removeUser":["uuid"],"getUsersFromAuthor":["provider","author"],"launchCluster":["id","uuid"],"getDefaultUser":["fallback"],"getScreenshots":["id"],"getUsers":[],"getPackageBody":["provider","body"]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}' } -export type Router = { 'events': { ingress: (event: IngressPayload) => Promise, -message: (event: MessagePayload) => Promise, -process: (event: ProcessPayload) => Promise }, -'folders': { fromCluster: (folderName: string) => Promise, -openCluster: (folderName: string) => Promise }, -'core': { getClusters: () => Promise, +const ARGS_MAP = { 'oneclient':'{"openDevTools":[],"getBundlesFor":["cluster_id"],"getClustersGroupedByMajor":[]}', 'core':'{"getLogByName":["id","name"],"getDefaultUser":["fallback"],"getGlobalProfile":[],"updateClusterProfile":["name","profile"],"getPackageBody":["provider","body"],"installModpack":["modpack","cluster_id"],"convertUsernameUUID":["username_uuid"],"removeCluster":["id"],"getMultiplePackages":["provider","slugs"],"getRunningProcesses":[],"getRunningProcessesByClusterId":["cluster_id"],"isClusterRunning":["cluster_id"],"getUser":["uuid"],"writeSettings":["setting"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"getLogs":["id"],"killProcess":["pid"],"getClusterById":["id"],"getUsersFromAuthor":["provider","author"],"fetchLoggedInProfile":["access_token"],"getScreenshots":["id"],"createCluster":["options"],"setDefaultUser":["uuid"],"getWorlds":["id"],"readSettings":[],"getPackage":["provider","slug"],"getLoadersForVersion":["mc_version"],"launchCluster":["id","uuid"],"updateClusterById":["id","request"],"getProfileOrDefault":["name"],"removeUser":["uuid"],"getGameVersions":[],"openMsaLogin":[],"searchPackages":["provider","query"],"fetchMinecraftProfile":["uuid"],"removeCape":["access_token"],"open":["input"],"getClusters":[],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"changeCape":["access_token","cape_uuid"],"createSettingsProfile":["name"],"changeSkin":["access_token","skin_url","skin_variant"],"getUsers":[],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"]}', 'events':'{"message":["event"],"ingress":["event"],"process":["event"]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}' } +export type Router = { 'core': { getClusters: () => Promise, getClusterById: (id: number) => Promise, removeCluster: (id: number) => Promise, createCluster: (options: CreateCluster) => Promise, @@ -304,6 +299,11 @@ changeCape: (accessToken: string, capeUuid: string) => Promise Promise, convertUsernameUUID: (usernameUuid: string) => Promise, open: (input: string) => Promise }, +'events': { ingress: (event: IngressPayload) => Promise, +message: (event: MessagePayload) => Promise, +process: (event: ProcessPayload) => Promise }, +'folders': { fromCluster: (folderName: string) => Promise, +openCluster: (folderName: string) => Promise }, 'oneclient': { openDevTools: () => Promise, getClustersGroupedByMajor: () => Promise>, getBundlesFor: (clusterId: number) => Promise } }; diff --git a/apps/oneclient/frontend/src/routes/onboarding/route.tsx b/apps/oneclient/frontend/src/routes/onboarding/route.tsx index 64df01c9..ef70ec84 100644 --- a/apps/oneclient/frontend/src/routes/onboarding/route.tsx +++ b/apps/oneclient/frontend/src/routes/onboarding/route.tsx @@ -6,9 +6,10 @@ import { Stepper } from '@/components/Stepper'; import { bindings } from '@/main'; import { useCommandSuspense } from '@onelauncher/common'; import { Button } from '@onelauncher/common/components'; -import { createFileRoute, Link, Outlet } from '@tanstack/react-router'; +import { createFileRoute, Link, Outlet, useLocation } from '@tanstack/react-router'; import { Window } from '@tauri-apps/api/window'; import { MinusIcon, SquareIcon, XCloseIcon } from '@untitled-theme/icons-react'; +import { motion } from 'motion/react'; import { MouseParallax } from 'react-just-parallax'; export const Route = createFileRoute('/onboarding')({ @@ -83,13 +84,33 @@ function getLinearSteps(steps: Array): Array
- + + + + + +