router-provider.tsx 732 B

12345678910111213141516171819202122232425262728
  1. "use client";
  2. import { useRouter } from "next/navigation";
  3. import type { ComponentProps } from "react";
  4. import { useCallback } from "react";
  5. import { RouterProvider as ReactAriaRouterProvider } from "react-aria";
  6. declare module "react-aria" {
  7. type RouterConfig = {
  8. routerOptions: NonNullable<
  9. Parameters<ReturnType<typeof useRouter>["push"]>[1]
  10. >;
  11. };
  12. }
  13. export const RouterProvider = (
  14. props: Omit<ComponentProps<typeof ReactAriaRouterProvider>, "navigate">,
  15. ) => {
  16. const router = useRouter();
  17. const navigate = useCallback(
  18. (...params: Parameters<typeof router.push>) => {
  19. router.push(...params);
  20. },
  21. [router],
  22. );
  23. return <ReactAriaRouterProvider navigate={navigate} {...props} />;
  24. };