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