import { createContext, useContext } from 'react' import { Navigate } from '@tanstack/react-router' import { Container, Text } from '@pikku/mantine/core' import { m } from '@/i18n/messages' import { useLocale } from '@/i18n/config' import { usePikkuQuery } from '@project/functions-sdk/pikku/api.gen' import { AppLayout } from './components/AppLayout' type Me = ReturnType>['data'] const AuthContext = createContext(null) export function useAuth(): NonNullable { const ctx = useContext(AuthContext) if (!ctx) { throw new Error('useAuth must be used inside ') } return ctx } export function RequireAuth({ roles, children, }: { roles?: Array<'client' | 'admin' | 'owner'> children: React.ReactNode }) { useLocale() const { data, isLoading, error } = usePikkuQuery('me', null, { retry: false, }) if (isLoading) { return {m.common_states_loading()} } if (error || !data) { return } if (roles && !roles.includes(data.role as 'client' | 'admin' | 'owner')) { return } return ( {children} ) }