import FullPageLoadingState from '@/components/full-page-loading-state'; import { LinkButton } from '@/components/ui/button'; import { useTRPC } from '@/integrations/trpc/react'; import { cn } from '@/utils/cn'; import { FREE_PRODUCT_IDS } from '@openpanel/payments'; import { useSuspenseQuery } from '@tanstack/react-query'; import { Outlet, createFileRoute, notFound, useLocation, } from '@tanstack/react-router'; import { format } from 'date-fns'; const IGNORE_ORGANIZATION_IDS = [ '.well-known', 'robots.txt', 'sitemap.xml', 'favicon.ico', 'manifest.json', 'sw.js', 'service-worker.js', 'onboarding', ]; export const Route = createFileRoute('/_app/$organizationId')({ component: Component, beforeLoad: async ({ context, params }) => { if (IGNORE_ORGANIZATION_IDS.includes(params.organizationId)) { throw notFound(); } }, loader: async ({ context, params }) => { await context.queryClient.prefetchQuery( context.trpc.organization.get.queryOptions({ organizationId: params.organizationId, }), ); }, pendingComponent: FullPageLoadingState, }); function Alert({ title, description, children, className, }: { title: string; description: string; children: React.ReactNode; className?: string; }) { const location = useLocation(); // Hide on billing page if (location.pathname.match(/\/.+\/billing/)) { return null; } return (