or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

arrow.mdindex.mdportal-content.mdprovider.mdtooltip-root.mdtrigger.mdutilities.md

tooltip-root.mddocs/

0

# Tooltip Root Management

1

2

The `Tooltip` component manages individual tooltip instances, handling open/closed state, timing overrides, and accessibility features. It serves as the root container for each tooltip.

3

4

## Capabilities

5

6

### Tooltip Component

7

8

Root tooltip component that manages state and provides context for trigger, portal, and content components.

9

10

```typescript { .api }

11

/**

12

* Root tooltip component managing individual tooltip state

13

* @param children - Child components (trigger, portal, content)

14

* @param open - Controlled open state

15

* @param defaultOpen - Initial open state for uncontrolled usage

16

* @param onOpenChange - Callback when open state changes

17

* @param delayDuration - Override provider delay duration

18

* @param disableHoverableContent - Override provider hover behavior

19

*/

20

interface TooltipProps {

21

children?: React.ReactNode;

22

open?: boolean;

23

defaultOpen?: boolean;

24

onOpenChange?: (open: boolean) => void;

25

delayDuration?: number;

26

disableHoverableContent?: boolean;

27

}

28

29

const Tooltip: React.FC<TooltipProps>;

30

```

31

32

**Usage Examples:**

33

34

```typescript

35

import { TooltipProvider, Tooltip } from "@radix-ui/react-tooltip";

36

37

// Basic uncontrolled tooltip

38

function BasicTooltip() {

39

return (

40

<TooltipProvider>

41

<Tooltip>

42

{/* Trigger and content components */}

43

</Tooltip>

44

</TooltipProvider>

45

);

46

}

47

48

// Controlled tooltip with custom state

49

function ControlledTooltip() {

50

const [open, setOpen] = React.useState(false);

51

52

return (

53

<TooltipProvider>

54

<Tooltip open={open} onOpenChange={setOpen}>

55

{/* Trigger and content components */}

56

</Tooltip>

57

</TooltipProvider>

58

);

59

}

60

61

// Default open tooltip

62

function DefaultOpenTooltip() {

63

return (

64

<TooltipProvider>

65

<Tooltip defaultOpen>

66

{/* Tooltip starts open */}

67

</Tooltip>

68

</TooltipProvider>

69

);

70

}

71

72

// Custom delay for specific tooltip

73

function CustomDelayTooltip() {

74

return (

75

<TooltipProvider delayDuration={700}>

76

<Tooltip delayDuration={200}>

77

{/* This tooltip opens faster than provider default */}

78

</Tooltip>

79

</TooltipProvider>

80

);

81

}

82

```

83

84

### Tooltip Props

85

86

#### open

87

88

Controls the open state in controlled mode.

89

90

- **Type**: `boolean`

91

- **Description**: When provided, tooltip becomes controlled and ignores internal state

92

93

#### defaultOpen

94

95

Sets initial open state for uncontrolled tooltips.

96

97

- **Type**: `boolean`

98

- **Default**: `false`

99

- **Description**: Initial open state when tooltip is uncontrolled

100

101

#### onOpenChange

102

103

Callback triggered when tooltip open state changes.

104

105

- **Type**: `(open: boolean) => void`

106

- **Description**: Called with new open state when tooltip opens or closes

107

108

#### delayDuration

109

110

Overrides provider delay duration for this tooltip instance.

111

112

- **Type**: `number`

113

- **Description**: Duration in milliseconds from pointer enter until tooltip opens

114

115

#### disableHoverableContent

116

117

Overrides provider hover behavior for this tooltip instance.

118

119

- **Type**: `boolean`

120

- **Description**: When `true`, tooltip closes when pointer leaves trigger

121

122

### State Management

123

124

The Tooltip component provides two state management patterns:

125

126

**Uncontrolled (Internal State)**:

127

```typescript

128

<Tooltip defaultOpen={false}>

129

{/* Tooltip manages its own state */}

130

</Tooltip>

131

```

132

133

**Controlled (External State)**:

134

```typescript

135

const [open, setOpen] = useState(false);

136

<Tooltip open={open} onOpenChange={setOpen}>

137

{/* You control the state */}

138

</Tooltip>

139

```

140

141

### Tooltip Context

142

143

The Tooltip component creates context providing:

144

145

- **Content ID**: Unique identifier for accessibility

146

- **Open state**: Current open/closed state

147

- **State attribute**: CSS state attribute (`closed`, `delayed-open`, `instant-open`)

148

- **Trigger reference**: Reference to trigger element

149

- **Event handlers**: Functions for opening, closing, and state changes

150

- **Configuration**: Delay and hover behavior settings

151

152

### Tooltip Aliases

153

154

```typescript { .api }

155

const Root: React.FC<TooltipProps>;

156

```

157

158

The `Root` component is an alias for `Tooltip` for shorter import names.

159

160

## Types

161

162

```typescript { .api }

163

type TooltipProps = {

164

children?: React.ReactNode;

165

open?: boolean;

166

defaultOpen?: boolean;

167

onOpenChange?: (open: boolean) => void;

168

delayDuration?: number;

169

disableHoverableContent?: boolean;

170

};

171

```