import {
createRootRoute,
createRoute,
createRouter,
} from "@tanstack/react-router";
import { fallback, zodValidator } from "@tanstack/zod-adapter";
import { DateTime } from "luxon";
import { isDate } from "validator";
import { z } from "zod";
import { Index } from "./features/Index";
import { Report } from "./features/Report";
import { Root } from "./features/Root";
const ReportRouteSchema = z.object({
date: fallback(
z
.string()
.refine((date) =>
isDate(date, { format: "yyyy-MM-dd", strictMode: true })
),
DateTime.now().toISODate()
).default(DateTime.now().toISODate()),
});
export type ReportRouteSearch = z.infer<typeof ReportRouteSchema>;
export const RootRoute = createRootRoute({
component: Root,
});
export const IndexRoute = createRoute({
getParentRoute: () => RootRoute,
path: "/",
component: Index,
});
export const ReportRoute = createRoute({
getParentRoute: () => RootRoute,
path: "report",
validateSearch: zodValidator(ReportRouteSchema),
component: Report,
});
export const RootRouteTree = RootRoute.addChildren([IndexRoute, ReportRoute]);
export const Router = createRouter({
routeTree: RootRouteTree,
});
import {
createRootRoute,
createRoute,
createRouter,
} from "@tanstack/react-router";
import { fallback, zodValidator } from "@tanstack/zod-adapter";
import { DateTime } from "luxon";
import { isDate } from "validator";
import { z } from "zod";
import { Index } from "./features/Index";
import { Report } from "./features/Report";
import { Root } from "./features/Root";
const ReportRouteSchema = z.object({
date: fallback(
z
.string()
.refine((date) =>
isDate(date, { format: "yyyy-MM-dd", strictMode: true })
),
DateTime.now().toISODate()
).default(DateTime.now().toISODate()),
});
export type ReportRouteSearch = z.infer<typeof ReportRouteSchema>;
export const RootRoute = createRootRoute({
component: Root,
});
export const IndexRoute = createRoute({
getParentRoute: () => RootRoute,
path: "/",
component: Index,
});
export const ReportRoute = createRoute({
getParentRoute: () => RootRoute,
path: "report",
validateSearch: zodValidator(ReportRouteSchema),
component: Report,
});
export const RootRouteTree = RootRoute.addChildren([IndexRoute, ReportRoute]);
export const Router = createRouter({
routeTree: RootRouteTree,
});