import FullPageLoadingState from '@/components/full-page-loading-state'; import { PageContainer } from '@/components/page-container'; import { PageHeader } from '@/components/page-header'; import { ProfileAvatar } from '@/components/profiles/profile-avatar'; import { SerieIcon } from '@/components/report-chart/common/serie-icon'; import { Tabs, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { usePageTabs } from '@/hooks/use-page-tabs'; import { useTRPC } from '@/integrations/trpc/react'; import { getProfileName } from '@/utils/getters'; import { useSuspenseQuery } from '@tanstack/react-query'; import { Outlet, createFileRoute, useRouter } from '@tanstack/react-router'; export const Route = createFileRoute( '/_app/$organizationId/$projectId/profiles/$profileId/_tabs', )({ component: Component, loader: async ({ context, params }) => { await context.queryClient.prefetchQuery( context.trpc.profile.byId.queryOptions({ profileId: params.profileId, projectId: params.projectId, }), ); }, pendingComponent: FullPageLoadingState, }); function Component() { const router = useRouter(); const { profileId, projectId } = Route.useParams(); const trpc = useTRPC(); const profile = useSuspenseQuery( trpc.profile.byId.queryOptions({ profileId, projectId, }), ); const { activeTab, tabs } = usePageTabs([ { id: '/$organizationId/$projectId/profiles/$profileId', label: 'Overview', }, { id: 'events', label: 'Events' }, { id: 'sessions', label: 'Sessions' }, ]); const handleTabChange = (tabId: string) => { router.navigate({ from: Route.fullPath, to: tabId, }); }; return ( {profile.data ? getProfileName(profile.data, false) : 'User not identified'} } >
{profile.data?.properties.country && (
{profile.data.properties.country} {profile.data.properties.city && ` / ${profile.data.properties.city}`}
)} {profile.data?.properties.device && (
{profile.data.properties.device}
)} {profile.data?.properties.os && (
{profile.data.properties.os}
)} {profile.data?.properties.model && (
{profile.data.properties.model}
)} {profile.data?.properties.browser && (
{profile.data.properties.browser}
)}
{tabs.map((tab) => ( {tab.label} ))}
); }