48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
export const routes = {
|
|
home: "/",
|
|
login: "/auth/login",
|
|
signUp: "/auth/sign-up",
|
|
signUpSuccess: "/auth/sign-up-success",
|
|
onboardingQuiz: "/onboarding/quiz",
|
|
avatar: "/avatar",
|
|
habits: "/habits",
|
|
dailyQuiz: "/daily/quiz",
|
|
shop: "/shop",
|
|
profile: "/profile",
|
|
} as const;
|
|
|
|
export type AppRoute = (typeof routes)[keyof typeof routes];
|
|
|
|
export const appNavItems = [
|
|
{ href: routes.avatar, label: "Pet", shortLabel: "Pet" },
|
|
{ href: routes.habits, label: "Habits", shortLabel: "Habits" },
|
|
{ href: routes.dailyQuiz, label: "Daily Quiz", shortLabel: "Quiz" },
|
|
{ href: routes.shop, label: "Shop", shortLabel: "Shop" },
|
|
{ href: routes.profile, label: "Profile", shortLabel: "Profile" },
|
|
] as const;
|
|
|
|
export type NavItem = (typeof appNavItems)[number];
|
|
|
|
const appPaths = [
|
|
routes.avatar,
|
|
routes.habits,
|
|
routes.dailyQuiz,
|
|
routes.shop,
|
|
routes.profile,
|
|
routes.onboardingQuiz,
|
|
] as const;
|
|
|
|
export function isAuthPath(pathname: string) {
|
|
return pathname.startsWith("/auth");
|
|
}
|
|
|
|
export function isPublicPath(pathname: string) {
|
|
return (
|
|
pathname === routes.home ||
|
|
isAuthPath(pathname) ||
|
|
appPaths.some(
|
|
(path) => pathname === path || pathname.startsWith(`${path}/`),
|
|
)
|
|
);
|
|
}
|