TanStack Router
To integrate Toolpad Core into a project that uses TanStack Router, follow these steps.
Wrap all routes with a TanStackRouterAppProvider
In the root route (for example src/routes/__root.tsx), wrap all the route page content with the TanStackRouterAppProvider from @toolpad/core/tanstack-router.
import * as React from 'react';
import { Outlet, createRootRoute } from '@tanstack/react-router';
import DashboardIcon from '@mui/icons-material/Dashboard';
import ShoppingCartIcon from '@mui/icons-material/ShoppingCart';
import { TanStackRouterAppProvider } from '@toolpad/core/tanstack-router';
import type { Navigation } from '@toolpad/core/AppProvider';
const NAVIGATION: Navigation = [
  {
    kind: 'header',
    title: 'Main items',
  },
  {
    title: 'Dashboard',
    icon: <DashboardIcon />,
  },
  {
    segment: 'orders',
    title: 'Orders',
    icon: <ShoppingCartIcon />,
  },
];
const BRANDING = {
  title: 'My Toolpad Core App',
};
function App() {
  return (
    <TanStackRouterAppProvider navigation={NAVIGATION} branding={BRANDING}>
      <Outlet />
    </TanStackRouterAppProvider>
  );
}
export const Route = createRootRoute({
  component: App,
});
Create a dashboard layout
Place all your other routes under a _layout folder, where the _layout/route.tsx file defines a shared layout to be used by all those routes. The <Outlet /> component from @tanstack/react-router should also be used:
import * as React from 'react';
import { Outlet, createFileRoute } from '@tanstack/react-router';
import { DashboardLayout } from '@toolpad/core/DashboardLayout';
import { PageContainer } from '@toolpad/core/PageContainer';
function Layout() {
  return (
    <DashboardLayout>
      <PageContainer>
        <Outlet />
      </PageContainer>
    </DashboardLayout>
  );
}
export const Route = createFileRoute('/_layout')({
  component: Layout,
});
The DashboardLayout component provides a consistent layout for your dashboard pages, including a sidebar, navigation, and header. The PageContainer component is used to wrap the page content, and provides breadcrumbs for navigation.
Create pages
Create a dashboard page (for example src/routes/_layout/index.tsx) and an orders page (src/routes/_layout/orders.tsx).
import * as React from 'react';
import { createFileRoute } from '@tanstack/react-router';
import Typography from '@mui/material/Typography';
function DashboardPage() {
  return <Typography>Welcome to Toolpad!</Typography>;
}
export const Route = createFileRoute('/_layout/')({
  component: DashboardPage,
});
import * as React from 'react';
import { createFileRoute } from '@tanstack/react-router';
import Typography from '@mui/material/Typography';
function OrdersPage() {
  return <Typography>Welcome to the Toolpad orders!</Typography>;
}
export const Route = createFileRoute('/_layout/orders')({
  component: OrdersPage,
});
That's it! You now have Toolpad Core integrated into your project with TanStack Router!