const defaultSearchValues = {
tag: 'all' as const,
sort: 'popularity' as const,
page: 1,
};
const gallerySearchSchema = z.object({
id: z.number().optional(),
searchTerm: z.string().optional(),
tag: z
.enum(['all', 'pro', 'competitive', 'funny', 'streamer', 'favorites'])
.default(defaultSearchValues.tag),
sort: z.enum(['popularity', 'newest']).default(defaultSearchValues.sort),
page: z.number().default(defaultSearchValues.page),
});
export const Route = createFileRoute('/_header/valorant/crosshairs/gallery')({
component: RouteComponent,
validateSearch: zodValidator(gallerySearchSchema),
search: {
middlewares: [
retainSearchParams(['id', 'searchTerm', 'tag', 'sort', 'page']),
stripSearchParams(defaultSearchValues),
],
},
const defaultSearchValues = {
tag: 'all' as const,
sort: 'popularity' as const,
page: 1,
};
const gallerySearchSchema = z.object({
id: z.number().optional(),
searchTerm: z.string().optional(),
tag: z
.enum(['all', 'pro', 'competitive', 'funny', 'streamer', 'favorites'])
.default(defaultSearchValues.tag),
sort: z.enum(['popularity', 'newest']).default(defaultSearchValues.sort),
page: z.number().default(defaultSearchValues.page),
});
export const Route = createFileRoute('/_header/valorant/crosshairs/gallery')({
component: RouteComponent,
validateSearch: zodValidator(gallerySearchSchema),
search: {
middlewares: [
retainSearchParams(['id', 'searchTerm', 'tag', 'sort', 'page']),
stripSearchParams(defaultSearchValues),
],
},