mirror of
https://github.com/khairul169/vaulterm.git
synced 2025-04-29 00:59:40 +07:00
67 lines
1.6 KiB
TypeScript
67 lines
1.6 KiB
TypeScript
import { View, Text, Button, Card, XStack } from "tamagui";
|
|
import React from "react";
|
|
import { MultiTapPressable } from "@/components/ui/pressable";
|
|
import Icons from "@/components/ui/icons";
|
|
import OSIcons from "@/components/ui/os-icons";
|
|
import Badge from "@/components/ui/badge";
|
|
|
|
type HostItemProps = {
|
|
host: any;
|
|
selected?: boolean;
|
|
onMultiTap: () => void;
|
|
onTap?: () => void;
|
|
};
|
|
|
|
const HostItem = ({ host, selected, onMultiTap, onTap }: HostItemProps) => {
|
|
return (
|
|
<MultiTapPressable
|
|
cursor="pointer"
|
|
group
|
|
numberOfTaps={2}
|
|
onMultiTap={onMultiTap}
|
|
onTap={onTap}
|
|
h="100%"
|
|
>
|
|
<Card
|
|
bordered
|
|
p="$4"
|
|
borderColor={selected ? "$blue8" : "$borderColor"}
|
|
bg={selected ? "$blue3" : undefined}
|
|
h="100%"
|
|
>
|
|
<XStack>
|
|
{host.type === "group" ? (
|
|
<Icons name="package-variant-closed" size={18} mr="$2" mt="$1" />
|
|
) : (
|
|
<OSIcons
|
|
name={host.os}
|
|
size={18}
|
|
mr="$2"
|
|
mt="$1"
|
|
fallback="desktop-classic"
|
|
/>
|
|
)}
|
|
|
|
<View flex={1}>
|
|
<Text>{host.label}</Text>
|
|
|
|
{host.tags?.length > 0 && (
|
|
<XStack mt="$1" gap="$1" flexWrap="wrap">
|
|
{host.tags.map((i: any) => (
|
|
<Badge key={i.name}>{i.name}</Badge>
|
|
))}
|
|
</XStack>
|
|
)}
|
|
|
|
<Text fontSize="$3" mt="$2">
|
|
{host.host}
|
|
</Text>
|
|
</View>
|
|
</XStack>
|
|
</Card>
|
|
</MultiTapPressable>
|
|
);
|
|
};
|
|
|
|
export default HostItem;
|