import { useEffect, useState } from 'react' import { createFileRoute, Link, useNavigate, useRouter, } from '@tanstack/react-router' import { IconArrowUpRight, IconLoader2 } from '@tabler/icons-react' import { SignedIn, useAuth, UserButton } from '@clerk/clerk-react' import { ClerkLogo } from '@/assets/clerk-logo' import { Button } from '@/components/ui/button' import { Header } from '@/components/layout/header' import { Main } from '@/components/layout/main' import { LearnMore } from '@/components/learn-more' import { Search } from '@/components/search' import { ThemeSwitch } from '@/components/theme-switch' import { columns } from '@/features/users/components/users-columns' import { UsersDialogs } from '@/features/users/components/users-dialogs' import { UsersPrimaryButtons } from '@/features/users/components/users-primary-buttons' import { UsersTable } from '@/features/users/components/users-table' import UsersProvider from '@/features/users/context/users-context' import { userListSchema } from '@/features/users/data/schema' import { users } from '@/features/users/data/users' export const Route = createFileRoute('/clerk/_authenticated/user-management')({ component: UserManagement, }) function UserManagement() { const [opened, setOpened] = useState(true) const { isLoaded, isSignedIn } = useAuth() if (!isLoaded) { return (
) } if (!isSignedIn) { return } // Parse user list const userList = userListSchema.parse(users) return ( <>

User List

Manage your users and their roles here.

This is the same as{' '} '/users'

You can sign out or manage/delete your account via the User Profile menu in the top-right corner of the page.

) } const COUNTDOWN = 5 // Countdown second function Unauthorized() { const navigate = useNavigate() const { history } = useRouter() const [opened, setOpened] = useState(true) const [cancelled, setCancelled] = useState(false) const [countdown, setCountdown] = useState(COUNTDOWN) // Set and run the countdown conditionally useEffect(() => { if (cancelled || opened) return const interval = setInterval(() => { setCountdown((prev) => (prev > 0 ? prev - 1 : 0)) }, 1000) return () => clearInterval(interval) }, [cancelled, opened]) // Navigate to sign-in page when countdown hits 0 useEffect(() => { if (countdown > 0) return navigate({ to: '/clerk/sign-in' }) }, [countdown, navigate]) return (

401

Unauthorized Access

You must be authenticated via Clerk{' '}

This is the same as{' '} '/users' .{' '}

You must first sign in using Clerk to access this route.

After signing in, you'll be able to sign out or delete your account via the User Profile dropdown on this page.


to access this resource.

{!cancelled && !opened && ( <>

{countdown > 0 ? `Redirecting to Sign In page in ${countdown}s` : `Redirecting...`}

)}
) }