Tooltip
A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.
Kobalte
The Tooltip component is built on top of Kobalte Tooltip, which provides accessible hover, focus, and keyboard behavior.
import { Button } from "~/components/ui/button";import { Tooltip, TooltipContent, TooltipTrigger } from "~/components/ui/tooltip";
export default function TooltipDemo() { return ( <Tooltip> <TooltipTrigger as={Button} variant="outline"> Hover </TooltipTrigger> <TooltipContent> <p>Add to library</p> </TooltipContent> </Tooltip> );}Installation
Run the following command:
Add the TooltipProvider to the root of your app.
import type { ParentProps } from "solid-js";import { TooltipProvider } from "~/components/ui/tooltip";
export default function App(props: ParentProps) { return <TooltipProvider>{props.children}</TooltipProvider>;}Usage
import { Button } from "~/components/ui/button";import { Tooltip, TooltipContent, TooltipTrigger } from "~/components/ui/tooltip";<Tooltip> <TooltipTrigger as={Button} variant="outline"> Hover </TooltipTrigger> <TooltipContent> <p>Add to library</p> </TooltipContent></Tooltip>Composition
Use the following composition to build a Tooltip:
Tooltip├── TooltipTrigger└── TooltipContentSide
Use the side prop to change the position of the tooltip.
import { For } from "solid-js";import { Button } from "~/components/ui/button";import { Tooltip, TooltipContent, TooltipTrigger } from "~/components/ui/tooltip";
export default function TooltipSides() { return ( <div class="flex flex-wrap gap-2"> <For each={["left", "top", "bottom", "right"] as const}> {(side) => ( <Tooltip> <TooltipTrigger as={Button} variant="outline" class="w-fit capitalize"> {side} </TooltipTrigger> <TooltipContent side={side}> <p>Add to library</p> </TooltipContent> </Tooltip> )} </For> </div> );}With Keyboard Shortcut
import { SaveIcon } from "lucide-solid";import { Button } from "~/components/ui/button";import { Kbd } from "~/components/ui/kbd";import { Tooltip, TooltipContent, TooltipTrigger } from "~/components/ui/tooltip";
export default function TooltipKeyboard() { return ( <Tooltip> <TooltipTrigger as={Button} variant="outline" size="icon-sm" aria-label="Save changes"> <SaveIcon /> </TooltipTrigger> <TooltipContent> Save Changes <Kbd>S</Kbd> </TooltipContent> </Tooltip> );}Disabled Button
Show a tooltip on a disabled button by wrapping it with a span.
import { Button } from "~/components/ui/button";import { Tooltip, TooltipContent, TooltipTrigger } from "~/components/ui/tooltip";
export default function TooltipDisabled() { return ( <Tooltip> <TooltipTrigger as="span" class="inline-block w-fit"> <Button variant="outline" disabled> Disabled </Button> </TooltipTrigger> <TooltipContent> <p>This feature is currently unavailable</p> </TooltipContent> </Tooltip> );}API Reference
See the Kobalte Tooltip API reference for primitive props, keyboard behavior, and accessibility details.