gitscope
← marzneshin / v0.3.0-alpha9 / dashboard/src/features/users/components/online-status.tsx
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/users/components/online-status.tsx · TypeScript
Blame Raw
 1import { FC } from "react"
 2import { useTranslation } from "react-i18next"
 3import { cn, isUserOnline } from "@marzneshin/utils"
 4import { UserType } from ".."
 5import { Tooltip, TooltipContent, TooltipTrigger } from "@marzneshin/components"
 6import { Circle } from "lucide-react"
 7
 8interface OnlineStatusProps {
 9    user: UserType
10}
11
12export const OnlineStatus: FC<OnlineStatusProps> = ({ user }) => {
13    let statusColor
14    let tooltip
15    const status = isUserOnline(user)
16    const { t } = useTranslation()
17    if (user.online_at === null) {
18        statusColor = "text-yellow-500"
19        tooltip = t('not_connected')
20    } else if (status) {
21        statusColor = "text-green-500"
22        tooltip = t('online')
23    } else {
24        statusColor = "text-red-500"
25        tooltip = t('offline')
26    }
27    return (
28        <Tooltip>
29            <TooltipTrigger>
30                <Circle className={cn("w-5 h-5", statusColor)} />
31            </TooltipTrigger>
32            <TooltipContent>
33                {tooltip}
34            </TooltipContent>
35        </Tooltip>
36    )
37}