Tessina UI
Tessina UI
GitHubIntroduction
InstallationUsageTheming
Components
ButtonIconButtonLinkSpinnerBadgeAvatarStatusChipShortcutSkeletonSurfaceProgressMeterRating
LabelFieldFieldsetCheckboxRadioSwitchSliderSelectComboboxSearchTextareaNumberFieldDate PickerTime PickerOTP InputFile UploadCalendar
AlertBannerToastTooltip
TabsAccordionCollapsibleBreadcrumbPaginationStepperSegmentedControlButtonGroupToggleButtonToggleGroupToolbarNavigation MenuMenubarBottom NavSidebar
Split ButtonFABDropdown MenuContextMenuCommandPopoverHoverCard
ContainerStackFlexGridAspectRatioSpacerCardCarouselDividerScroll Area
Table
ChatBubblePromptInputCodeBlock
ModalAlertDialogDrawerAction SheetTop Header MobileTop Header DesktopEmptyStateForm
Contributing
ComponentsFeedback Blocks

Tooltip

Rich tooltip card for product tours, feature walkthroughs, and contextual help. Supports title, image, subtitle, description, keyboard shortcuts, step counter, navigation buttons, a close button, 5 intent colors, 6 rounded variants, and all 12 arrow positions.

Playground

Installation

pnpm add @tessinaui/ui

Usage

import { Tooltip } from "@tessinaui/ui";
{/* Minimal */}
<Tooltip title="Feature name" description="A brief explanation." onClose={() => {}} />

{/* Full product tour step */}
<Tooltip
  intent="warning"
  arrowSide="bottom"
  arrowAlign="center"
  title="Title Placeholder Text"
  titleIcon={<CircleAlert className="w-5 h-5" />}
  image={<img src="..." className="w-full aspect-video object-cover" />}
  subtitle="Step title"
  subtitleIcon={<CircleAlert className="w-5 h-5" />}
  step={{ current: 2, total: 8 }}
  shortcuts={["⌘", "U"]}
  description="Learn how to use this feature."
  paginationText="1 of 4"
  onClose={() => {}}
  primaryAction={{ label: "Back",  leadingIcon: <ChevronLeft />, onClick: handleBack }}
  secondaryAction={{ label: "Skip", onClick: handleSkip }}
  ctaAction={{ label: "Next",       trailingIcon: <ChevronRight />, onClick: handleNext }}
/>

Showcase

API Reference

Tooltip props

Content slots

PropTypeDescription
titleReactNodeHeader title text
titleIconReactNodeIcon shown before the title
subtitleReactNodeSubheader label (inside content area)
subtitleIconReactNodeIcon shown before the subtitle
descriptionReactNodeBody paragraph text
imageReactNodeImage/media slot — rendered in a rounded container
shortcutsstring[]Keyboard shortcut keys (e.g. ["⌘", "U"]) rendered as Key badges
step{ current: number; total: number }Step counter shown in subheader row (e.g. "2 of 8")
paginationTextstringFooter step label (e.g. "1 of 4")

Actions

PropTypeDescription
onClose() => voidShows close (×) button when provided
primaryActionTooltipActionLeft footer button (outline style) — e.g. Cancel, Back
secondaryActionTooltipActionMiddle footer button (neutral fill) — e.g. Skip, Maybe later
ctaActionTooltipActionRight footer button (dark fill) — e.g. Confirm, Save, Next

Visibility overrides

All slots are shown automatically when their content is provided. Pass false to explicitly hide.

PropTypeDefault
showImagebooleanauto
showTitlebooleanauto
showSubtitlebooleanauto
showDescriptionbooleanauto
showShortcutsbooleanauto
showStepbooleanauto
showFooterbooleanauto
showClosebooleanauto

Style

PropTypeDefaultDescription
intent"none" | "error" | "warning" | "success" | "info""none"Card background color
rounded"none" | "sm" | "md" | "lg" | "xl" | "full""full"Card border radius
size"sm" | "md" | "lg""lg"Card width (256 / 320 / 384px). sm stacks footer buttons vertically; md/lg lay them out horizontally. Shortcut key badges scale with size (xs / sm / md).

Arrow

12 positions: 4 sides × 3 alignments.

PropTypeDefaultDescription
arrowSide"top" | "right" | "bottom" | "left" | "none""none"Which edge the arrow appears on
arrowAlign"start" | "center" | "end""center"Alignment along that edge

Direction

PropTypeDefault
dir"ltr" | "rtl""ltr"

TooltipAction type

interface TooltipAction {
  label: string;
  leadingIcon?: React.ReactNode;
  trailingIcon?: React.ReactNode;
  onClick?: () => void;
  /** Override button style. Defaults: primary=outline, secondary=ghost, cta=primary. */
  variant?:  "primary" | "secondary" | "ghost" | "outline";
  /** Override button intent color. */
  intent?:   "none" | "error" | "warning" | "success" | "info";
  /** Override border radius. Defaults to "full". */
  rounded?:  "none" | "sm" | "md" | "lg" | "full";
  disabled?: boolean;
  loading?:  boolean;
}

Toast

Transient floating notifications for short feedback messages, with optional actions and auto-dismiss.

Tabs

Organise content into switchable panels with animated indicators, four variants, five sizes, five intents, icon/badge/closable support, vertical orientation, and full RTL/keyboard navigation.

On this page

PlaygroundInstallationUsageShowcaseAPI ReferenceTooltip propsContent slotsActionsVisibility overridesStyleArrowDirectionTooltipAction type