Openstatus
www.openstatus.dev
1import { cn } from "@/lib/utils";
2import { Fly, Koyeb, Railway } from "@openstatus/icons";
3import {
4 Tooltip,
5 TooltipContent,
6 TooltipProvider,
7 TooltipTrigger,
8} from "@openstatus/ui";
9import { Globe } from "lucide-react";
10
11export function IconCloudProvider({
12 provider,
13 className,
14}: React.ComponentProps<"svg"> & {
15 provider: string;
16}) {
17 switch (provider) {
18 case "fly":
19 return <Fly className={cn("size-4", className)} />;
20 case "koyeb":
21 return <Koyeb className={cn("size-4", className)} />;
22 case "railway":
23 return <Railway className={cn("size-4", className)} />;
24 default:
25 return <Globe className={cn("size-4", className)} />;
26 }
27}
28
29export function IconCloudProviderTooltip(
30 props: React.ComponentProps<typeof IconCloudProvider>,
31) {
32 return (
33 <TooltipProvider>
34 <Tooltip delayDuration={0}>
35 <TooltipTrigger type="button">
36 <IconCloudProvider {...props} />
37 </TooltipTrigger>
38 <TooltipContent className="capitalize">{props.provider}</TooltipContent>
39 </Tooltip>
40 </TooltipProvider>
41 );
42}