Documentation

Router integration

Attach filter-query schemas to routes and consume typed filters from router hooks.

Router integration keeps filter parsing at the route boundary. Attach a schema to the route, then use router hooks to read and update typed filters.

import { defineSchema, numberField } from '@plumile/filter-query';
import { r } from '@plumile/router';

const filters = defineSchema({
  page: numberField(),
});

export const routes = [
  r({
    path: '/items',
    querySchema: filters,
    prepare: ({ filters }) => ({ page: filters.page?.eq ?? 1 }),
    render: () => null,
  }),
];

This keeps parsing, defaults, navigation, and route preparation aligned.