Tooltip
nativeui/tooltipFreeComponent
A tooltip component for React Native applications.
Live preview
live · rendered by the registry
Rendered by nativeui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://nativeui.ribbi.ch/r/tooltip.jsonSource
1import * as React from "react";2import {3 View,4 Text,5 Pressable,6 Modal,7 TouchableWithoutFeedback,8 Platform,9 Animated,10 StyleSheet,11 Dimensions,12 LayoutChangeEvent,13} from "react-native";14import { cn } from "@/lib/utils";1516interface TooltipProps {17 children: React.ReactNode;18 className?: string;19}2021interface TooltipTriggerProps {22 children: React.ReactNode;23 className?: string;24 disabled?: boolean;25 asChild?: boolean;26}2728interface TooltipContentProps {29 children: React.ReactNode;30 className?: string;31 align?: "start" | "center" | "end";32 side?: "top" | "right" | "bottom" | "left";33 sideOffset?: number;34}3536interface TooltipProviderProps {37 children: React.ReactNode;38}3940const TooltipContext = React.createContext<{41 open: boolean;42 setOpen: React.Dispatch<React.SetStateAction<boolean>>;43 triggerRef: React.RefObject<View | null>;44 triggerLayout: { x: number; y: number; width: number; height: number } | null;45 setTriggerLayout: React.Dispatch<46 React.SetStateAction<{47 x: number;48 y: number;49 width: number;50 height: number;51 } | null>52 >;53}>({54 open: false,55 setOpen: () => { },56 triggerRef: { current: null },57 triggerLayout: null,58 setTriggerLayout: () => { },59});6061const { width: WINDOW_WIDTH, height: WINDOW_HEIGHT } = Dimensions.get("window");6263const TooltipProvider = React.forwardRef<View, TooltipProviderProps>(64 ({ children }, ref) => {65 return <View ref={ref}>{children}</View>;66 }67);6869TooltipProvider.displayName = "TooltipProvider";7071const Tooltip = React.forwardRef<View, TooltipProps>(72 ({ children, className, ...props }, ref) => {73 const [open, setOpen] = React.useState(false);74 const triggerRef = React.useRef<View | null>(null);75 const [triggerLayout, setTriggerLayout] = React.useState<{76 x: number;77 y: number;78 width: number;79 height: number;80 } | null>(null);8182 return (83 <TooltipContext.Provider84 value={{85 open,86 setOpen,87 triggerRef,88 triggerLayout,89 setTriggerLayout,90 }}91 >92 <View ref={ref} className={cn("", className)} {...props}>93 {children}94 </View>95 </TooltipContext.Provider>96 );97 }98);99100Tooltip.displayName = "Tooltip";101102const TooltipTrigger = React.forwardRef<View, TooltipTriggerProps>(103 ({ children, className, disabled = false, ...props }, ref) => {104 const { setOpen, open, triggerRef, setTriggerLayout } =105// … truncated
What it pulls in
npm packages
Files it writes
More from nativeui
All 29 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | nativeui | Components | Free | 2 deps | |
| Alertalert | nativeui | Components | Free | 2 deps | |
| Alert Dialogalert-dialog | nativeui | Components | Free | 1 dep | |
| Avataravatar | nativeui | Components | Free | 1 dep | |
| Badgebadge | nativeui | Components | Free | 2 deps | |
| Breadcrumbbreadcrumb | nativeui | Components | Free | 2 deps | |
| Buttonbutton | nativeui | Components | Free | 2 deps | |
| Calendarcalendar | nativeui | Components | Free | 4 deps |
