feat: refactor onboarding into a multi-step flow with dedicated routes and session state management

This commit is contained in:
Jose Selesan
2026-04-17 16:17:19 -03:00
parent 4588e63fa5
commit 20b70c06c1
12 changed files with 617 additions and 382 deletions

View File

@@ -13,6 +13,9 @@ import { Route as ResetPasswordRouteImport } from './routes/reset-password'
import { Route as OnboardRouteImport } from './routes/onboard'
import { Route as LoginRouteImport } from './routes/login'
import { Route as AppRouteRouteImport } from './routes/_app/route'
import { Route as OnboardIndexRouteImport } from './routes/onboard/index'
import { Route as OnboardVerifyRouteImport } from './routes/onboard/verify'
import { Route as OnboardCompleteRouteImport } from './routes/onboard/complete'
import { Route as AppProfileRouteImport } from './routes/_app/profile'
import { Route as AppAboutRouteImport } from './routes/_app/about'
import { Route as ComplexSlugBookingRouteImport } from './routes/$complexSlug/booking'
@@ -41,6 +44,21 @@ const AppRouteRoute = AppRouteRouteImport.update({
id: '/_app',
getParentRoute: () => rootRouteImport,
} as any)
const OnboardIndexRoute = OnboardIndexRouteImport.update({
id: '/',
path: '/',
getParentRoute: () => OnboardRoute,
} as any)
const OnboardVerifyRoute = OnboardVerifyRouteImport.update({
id: '/verify',
path: '/verify',
getParentRoute: () => OnboardRoute,
} as any)
const OnboardCompleteRoute = OnboardCompleteRouteImport.update({
id: '/complete',
path: '/complete',
getParentRoute: () => OnboardRoute,
} as any)
const AppProfileRoute = AppProfileRouteImport.update({
id: '/profile',
path: '/profile',
@@ -86,11 +104,14 @@ const AppAuthenticatedComplexSlugEditRoute =
export interface FileRoutesByFullPath {
'/': typeof AppAuthenticatedIndexRoute
'/login': typeof LoginRoute
'/onboard': typeof OnboardRoute
'/onboard': typeof OnboardRouteWithChildren
'/reset-password': typeof ResetPasswordRoute
'/$complexSlug/booking': typeof ComplexSlugBookingRouteWithChildren
'/about': typeof AppAboutRoute
'/profile': typeof AppProfileRoute
'/onboard/complete': typeof OnboardCompleteRoute
'/onboard/verify': typeof OnboardVerifyRoute
'/onboard/': typeof OnboardIndexRoute
'/$complexSlug/booking/': typeof ComplexSlugBookingIndexRoute
'/$complexSlug/booking/confirmed/$bookingCode': typeof ComplexSlugBookingConfirmedBookingCodeRoute
'/complex/$slug/edit': typeof AppAuthenticatedComplexSlugEditRoute
@@ -98,10 +119,12 @@ export interface FileRoutesByFullPath {
export interface FileRoutesByTo {
'/': typeof AppAuthenticatedIndexRoute
'/login': typeof LoginRoute
'/onboard': typeof OnboardRoute
'/reset-password': typeof ResetPasswordRoute
'/about': typeof AppAboutRoute
'/profile': typeof AppProfileRoute
'/onboard/complete': typeof OnboardCompleteRoute
'/onboard/verify': typeof OnboardVerifyRoute
'/onboard': typeof OnboardIndexRoute
'/$complexSlug/booking': typeof ComplexSlugBookingIndexRoute
'/$complexSlug/booking/confirmed/$bookingCode': typeof ComplexSlugBookingConfirmedBookingCodeRoute
'/complex/$slug/edit': typeof AppAuthenticatedComplexSlugEditRoute
@@ -110,12 +133,15 @@ export interface FileRoutesById {
__root__: typeof rootRouteImport
'/_app': typeof AppRouteRouteWithChildren
'/login': typeof LoginRoute
'/onboard': typeof OnboardRoute
'/onboard': typeof OnboardRouteWithChildren
'/reset-password': typeof ResetPasswordRoute
'/_app/_authenticated': typeof AppAuthenticatedRouteRouteWithChildren
'/$complexSlug/booking': typeof ComplexSlugBookingRouteWithChildren
'/_app/about': typeof AppAboutRoute
'/_app/profile': typeof AppProfileRoute
'/onboard/complete': typeof OnboardCompleteRoute
'/onboard/verify': typeof OnboardVerifyRoute
'/onboard/': typeof OnboardIndexRoute
'/$complexSlug/booking/': typeof ComplexSlugBookingIndexRoute
'/_app/_authenticated/': typeof AppAuthenticatedIndexRoute
'/$complexSlug/booking/confirmed/$bookingCode': typeof ComplexSlugBookingConfirmedBookingCodeRoute
@@ -131,6 +157,9 @@ export interface FileRouteTypes {
| '/$complexSlug/booking'
| '/about'
| '/profile'
| '/onboard/complete'
| '/onboard/verify'
| '/onboard/'
| '/$complexSlug/booking/'
| '/$complexSlug/booking/confirmed/$bookingCode'
| '/complex/$slug/edit'
@@ -138,10 +167,12 @@ export interface FileRouteTypes {
to:
| '/'
| '/login'
| '/onboard'
| '/reset-password'
| '/about'
| '/profile'
| '/onboard/complete'
| '/onboard/verify'
| '/onboard'
| '/$complexSlug/booking'
| '/$complexSlug/booking/confirmed/$bookingCode'
| '/complex/$slug/edit'
@@ -155,6 +186,9 @@ export interface FileRouteTypes {
| '/$complexSlug/booking'
| '/_app/about'
| '/_app/profile'
| '/onboard/complete'
| '/onboard/verify'
| '/onboard/'
| '/$complexSlug/booking/'
| '/_app/_authenticated/'
| '/$complexSlug/booking/confirmed/$bookingCode'
@@ -164,7 +198,7 @@ export interface FileRouteTypes {
export interface RootRouteChildren {
AppRouteRoute: typeof AppRouteRouteWithChildren
LoginRoute: typeof LoginRoute
OnboardRoute: typeof OnboardRoute
OnboardRoute: typeof OnboardRouteWithChildren
ResetPasswordRoute: typeof ResetPasswordRoute
ComplexSlugBookingRoute: typeof ComplexSlugBookingRouteWithChildren
}
@@ -199,6 +233,27 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof AppRouteRouteImport
parentRoute: typeof rootRouteImport
}
'/onboard/': {
id: '/onboard/'
path: '/'
fullPath: '/onboard/'
preLoaderRoute: typeof OnboardIndexRouteImport
parentRoute: typeof OnboardRoute
}
'/onboard/verify': {
id: '/onboard/verify'
path: '/verify'
fullPath: '/onboard/verify'
preLoaderRoute: typeof OnboardVerifyRouteImport
parentRoute: typeof OnboardRoute
}
'/onboard/complete': {
id: '/onboard/complete'
path: '/complete'
fullPath: '/onboard/complete'
preLoaderRoute: typeof OnboardCompleteRouteImport
parentRoute: typeof OnboardRoute
}
'/_app/profile': {
id: '/_app/profile'
path: '/profile'
@@ -289,6 +344,21 @@ const AppRouteRouteWithChildren = AppRouteRoute._addFileChildren(
AppRouteRouteChildren,
)
interface OnboardRouteChildren {
OnboardCompleteRoute: typeof OnboardCompleteRoute
OnboardVerifyRoute: typeof OnboardVerifyRoute
OnboardIndexRoute: typeof OnboardIndexRoute
}
const OnboardRouteChildren: OnboardRouteChildren = {
OnboardCompleteRoute: OnboardCompleteRoute,
OnboardVerifyRoute: OnboardVerifyRoute,
OnboardIndexRoute: OnboardIndexRoute,
}
const OnboardRouteWithChildren =
OnboardRoute._addFileChildren(OnboardRouteChildren)
interface ComplexSlugBookingRouteChildren {
ComplexSlugBookingIndexRoute: typeof ComplexSlugBookingIndexRoute
ComplexSlugBookingConfirmedBookingCodeRoute: typeof ComplexSlugBookingConfirmedBookingCodeRoute
@@ -306,7 +376,7 @@ const ComplexSlugBookingRouteWithChildren =
const rootRouteChildren: RootRouteChildren = {
AppRouteRoute: AppRouteRouteWithChildren,
LoginRoute: LoginRoute,
OnboardRoute: OnboardRoute,
OnboardRoute: OnboardRouteWithChildren,
ResetPasswordRoute: ResetPasswordRoute,
ComplexSlugBookingRoute: ComplexSlugBookingRouteWithChildren,
}