Pallas UI
DocsComponents
Core Concepts
    • Introduction
    • Getting Started
    • Theming
    • Color Tokens
    • Spacing & Sizing
    • Layout Guide
    • AspectRatio
    • Box
    • Flex
    • Grid
    • Shapes
Previews
    • Accordion
    • Alert
    • Avatar
    • Badge
    • Breadcrumb
    • Button
    • Carousel
    • Checkbox
    • Combobox
    • Command
    • Date Picker
    • Form
    • Input
    • Input OTP
    • Label
    • MenuBar
    • Modal
    • Popover
    • Progress
    • Radio Group
    • Segmented
    • Select
    • Separator
    • Sheet
    • Sidebar
    • Skeleton
    • Slider
    • Spinner
    • Steps
    • Switch
    • Tabs
    • Textarea
    • Toast
    • Tooltip
    • Typography
  1. Components
  2. Tooltip

Tooltip

A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.

Installation

Install the following dependencies

npm install @radix-ui/react-tooltip

Copy and paste the following code into your project

'use client'
 
import type { Assign, WithFixedClassName } from '@pallas-ui/style-context'
import { createStyleContext } from '@pallas-ui/style-context'
import * as TooltipPrimitive from '@radix-ui/react-tooltip'
import { tooltip } from '@styled-system/recipes'
import type { JsxStyleProps } from '@styled-system/types'
import * as React from 'react'
 
const { withProvider, withContext } = createStyleContext(tooltip)
 
export type RootProps = WithFixedClassName<TooltipPrimitive.TooltipProps>
 
const Provider = TooltipPrimitive.Provider
const Portal = TooltipPrimitive.Portal
 
export const Root = withProvider<
  React.ComponentRef<typeof TooltipPrimitive.Root>,
  Assign<RootProps, JsxStyleProps>
>(TooltipPrimitive.Root, 'root')
 
export const Trigger = withContext<
  React.ComponentRef<typeof TooltipPrimitive.Trigger>,
  Assign<TooltipPrimitive.TooltipTriggerProps, JsxStyleProps>
>(TooltipPrimitive.Trigger, 'trigger')
 
const Arrow = withContext<
  React.ComponentRef<typeof TooltipPrimitive.Arrow>,
  Assign<TooltipPrimitive.TooltipArrowProps, JsxStyleProps>
>(TooltipPrimitive.Arrow, 'arrow')
 
const CustomContent = React.forwardRef<
  React.ComponentRef<typeof TooltipPrimitive.Content>,
  TooltipPrimitive.TooltipContentProps
>(({ align = 'center', sideOffset = 4, children, ...props }, ref) => (
  <Portal>
    <TooltipPrimitive.Content ref={ref} align={align} sideOffset={sideOffset} {...props}>
      {children}
      <Arrow />
    </TooltipPrimitive.Content>
  </Portal>
))
CustomContent.displayName = TooltipPrimitive.Content.displayName
 
export const Content = withContext<
  React.ComponentRef<typeof TooltipPrimitive.Content>,
  Assign<TooltipPrimitive.TooltipContentProps, JsxStyleProps>
>(CustomContent, 'content')
 
const Tooltip = {
  Root,
  Trigger,
  Content,
  Provider,
}
 
export default Tooltip

Update the import paths to match your project setup

Usage

import { Root, Trigger, Content } from '@/components/ui/tooltip'
import { TooltipProvider } from '@radix-ui/react-tooltip'
  <Root>
    <Trigger asChild>
      <Button variant="outlined">Hover</Button>
    </Trigger>
    <Content>
      Add to library
    </Content>
  </Root>

Examples

Tooltip Positions

Tooltip Alignments

Tooltip Delay

Disabled Tooltip

Built with ❤️ by the carbonteq team. The source code is available on GitHub.

© 2025 Pallas UI. All rights reserved.