Tooltip
A popup that displays information related to an element when it receives focus or is hovered.
Installation
bash npx @moe/cli add tooltip Install the following dependency:
npx expo install @rn-primitives/tooltipCopy/paste the following code to @/components/ui/tooltip.tsx
import * as TooltipPrimitive from "@rn-primitives/tooltip";
import * as React from "react";
import { Platform, StyleSheet } from "react-native";
import Animated, { FadeIn, FadeOut } from "react-native-reanimated";
import { cn } from "@/lib/utils";
import { TextClassContext } from "@/components/ui/text";
const Tooltip = TooltipPrimitive.Root;
const TooltipTrigger = TooltipPrimitive.Trigger;
const TooltipContent = React.forwardRef<
React.ElementRef<typeof TooltipPrimitive.Content>,
React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>
>(({ className, sideOffset = 4, ...props }, ref) => (
<TooltipPrimitive.Portal>
<TooltipPrimitive.Overlay
style={Platform.OS !== "web" ? StyleSheet.absoluteFill : undefined}
>
<Animated.View entering={FadeIn} exiting={FadeOut}>
<TextClassContext.Provider value="text-sm native:text-base text-popover-foreground">
<TooltipPrimitive.Content
ref={ref}
sideOffset={sideOffset}
className={cn(
"z-50 overflow-hidden rounded-md border border-border bg-popover px-3 py-1.5 shadow-md shadow-foreground/5",
className,
)}
{...props}
/>
</TextClassContext.Provider>
</Animated.View>
</TooltipPrimitive.Overlay>
</TooltipPrimitive.Portal>
));
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
export { Tooltip, TooltipContent, TooltipTrigger };Usage