or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

tessl/npm-radix-ui--react-menubar

An accessible React menubar component that provides keyboard navigation, submenus, and customizable styling while maintaining semantic HTML structure and screen reader compatibility.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/@radix-ui/react-menubar@1.1.x

To install, run

npx @tessl/cli install tessl/npm-radix-ui--react-menubar@1.1.0

0

# Radix UI React Menubar

1

2

Radix UI React Menubar is a comprehensive collection of React components for building accessible menubar interfaces. It provides keyboard navigation, submenu support, and complete accessibility features while maintaining semantic HTML structure and screen reader compatibility.

3

4

## Package Information

5

6

- **Package Name**: @radix-ui/react-menubar

7

- **Package Type**: npm

8

- **Language**: TypeScript

9

- **Installation**: `npm install @radix-ui/react-menubar`

10

11

## Core Imports

12

13

```typescript

14

'use client';

15

import * as Menubar from "@radix-ui/react-menubar";

16

```

17

18

Or import specific components:

19

20

```typescript

21

'use client';

22

import {

23

Menubar,

24

MenubarMenu,

25

MenubarTrigger,

26

MenubarContent,

27

MenubarItem

28

} from "@radix-ui/react-menubar";

29

```

30

31

Alternative short-form imports:

32

33

```typescript

34

'use client';

35

import {

36

Root,

37

Menu,

38

Trigger,

39

Content,

40

Item

41

} from "@radix-ui/react-menubar";

42

```

43

44

## Basic Usage

45

46

```typescript

47

'use client';

48

import * as Menubar from "@radix-ui/react-menubar";

49

50

function MenubarDemo() {

51

return (

52

<Menubar.Root>

53

<Menubar.Menu>

54

<Menubar.Trigger>File</Menubar.Trigger>

55

<Menubar.Portal>

56

<Menubar.Content>

57

<Menubar.Item>New File</Menubar.Item>

58

<Menubar.Item>Open</Menubar.Item>

59

<Menubar.Separator />

60

<Menubar.Item>Exit</Menubar.Item>

61

</Menubar.Content>

62

</Menubar.Portal>

63

</Menubar.Menu>

64

65

<Menubar.Menu>

66

<Menubar.Trigger>Edit</Menubar.Trigger>

67

<Menubar.Portal>

68

<Menubar.Content>

69

<Menubar.Item>Cut</Menubar.Item>

70

<Menubar.Item>Copy</Menubar.Item>

71

<Menubar.Item>Paste</Menubar.Item>

72

</Menubar.Content>

73

</Menubar.Portal>

74

</Menubar.Menu>

75

</Menubar.Root>

76

);

77

}

78

```

79

80

## Architecture

81

82

Radix UI React Menubar is built around several key architectural components:

83

84

- **Primitive Foundation**: Built on top of Radix UI primitives for consistent behavior and styling

85

- **Context Management**: Uses React context for state management and component communication

86

- **Focus Management**: Implements roving tabindex pattern for keyboard navigation

87

- **Portal Rendering**: Optional portal-based rendering for dropdown content positioning

88

- **Accessibility-First**: Full ARIA attributes, keyboard navigation, and screen reader support

89

- **Composable Design**: Individual components that can be combined flexibly

90

91

## Capabilities

92

93

### Core Menubar Structure

94

95

Essential components for creating the basic menubar structure and managing overall state.

96

97

```typescript { .api }

98

// Root menubar container

99

function Menubar(props: MenubarProps): React.ReactElement;

100

101

// Individual menu within the menubar

102

function MenubarMenu(props: MenubarMenuProps): React.ReactElement;

103

104

// Button that triggers menu opening

105

function MenubarTrigger(props: MenubarTriggerProps): React.ReactElement;

106

107

// Portal for rendering content outside DOM tree

108

function MenubarPortal(props: MenubarPortalProps): React.ReactElement;

109

110

// Container for menu items

111

function MenubarContent(props: MenubarContentProps): React.ReactElement;

112

```

113

114

[Core Components](./core-components.md)

115

116

### Menu Items and Layout

117

118

Components for organizing and displaying menu items with various interaction patterns.

119

120

```typescript { .api }

121

// Basic interactive menu item

122

function MenubarItem(props: MenubarItemProps): React.ReactElement;

123

124

// Group related menu items

125

function MenubarGroup(props: MenubarGroupProps): React.ReactElement;

126

127

// Non-interactive label for sections

128

function MenubarLabel(props: MenubarLabelProps): React.ReactElement;

129

130

// Visual separator between groups

131

function MenubarSeparator(props: MenubarSeparatorProps): React.ReactElement;

132

```

133

134

[Menu Items and Layout](./menu-items.md)

135

136

### Interactive Menu Items

137

138

Advanced menu items with checkbox, radio button, and visual indicator functionality.

139

140

```typescript { .api }

141

// Menu item with checkbox behavior

142

function MenubarCheckboxItem(props: MenubarCheckboxItemProps): React.ReactElement;

143

144

// Container for radio button items

145

function MenubarRadioGroup(props: MenubarRadioGroupProps): React.ReactElement;

146

147

// Menu item with radio button behavior

148

function MenubarRadioItem(props: MenubarRadioItemProps): React.ReactElement;

149

150

// Visual indicator for checked/selected items

151

function MenubarItemIndicator(props: MenubarItemIndicatorProps): React.ReactElement;

152

```

153

154

[Interactive Items](./interactive-items.md)

155

156

### Submenus and Advanced Features

157

158

Components for creating nested submenus and additional visual elements.

159

160

```typescript { .api }

161

// Container for submenu functionality

162

function MenubarSub(props: MenubarSubProps): React.ReactElement;

163

164

// Trigger that opens a submenu

165

function MenubarSubTrigger(props: MenubarSubTriggerProps): React.ReactElement;

166

167

// Content container for submenu items

168

function MenubarSubContent(props: MenubarSubContentProps): React.ReactElement;

169

170

// Optional arrow pointing from trigger to content

171

function MenubarArrow(props: MenubarArrowProps): React.ReactElement;

172

```

173

174

[Submenus](./submenus.md)

175

176

### Utilities

177

178

Utility functions for advanced usage patterns and context management.

179

180

```typescript { .api }

181

// Creates scoped context for nested menubars

182

function createMenubarScope(): ScopeHook;

183

```

184

185

[Utilities](./utilities.md)

186

187

## Common Type Definitions

188

189

```typescript { .api }

190

// Direction for text and navigation

191

type Direction = 'ltr' | 'rtl';

192

193

// Base element types

194

type MenubarElement = React.ComponentRef<'div'>;

195

type MenubarTriggerElement = React.ComponentRef<'button'>;

196

type MenubarContentElement = HTMLDivElement;

197

type MenubarGroupElement = HTMLDivElement;

198

type MenubarLabelElement = HTMLDivElement;

199

type MenubarItemElement = HTMLDivElement;

200

type MenubarCheckboxItemElement = HTMLDivElement;

201

type MenubarRadioGroupElement = HTMLDivElement;

202

type MenubarRadioItemElement = HTMLDivElement;

203

type MenubarItemIndicatorElement = HTMLSpanElement;

204

type MenubarSeparatorElement = HTMLDivElement;

205

type MenubarArrowElement = SVGSVGElement;

206

type MenubarSubTriggerElement = HTMLDivElement;

207

type MenubarSubContentElement = HTMLDivElement;

208

209

// Scoping types

210

interface Scope {

211

__scopeMenubar?: string;

212

}

213

214

type ScopeHook = () => Scope;

215

216

// Event types

217

interface FocusOutsideEvent {

218

target: HTMLElement;

219

preventDefault(): void;

220

}

221

222

interface InteractOutsideEvent {

223

target: HTMLElement;

224

preventDefault(): void;

225

}

226

227

interface PointerDownOutsideEvent {

228

target: HTMLElement;

229

preventDefault(): void;

230

}

231

232

interface SelectEvent {

233

preventDefault(): void;

234

target: HTMLElement;

235

}

236

237

// State types

238

type CheckedState = boolean | 'indeterminate';

239

240

// Collection item data

241

interface ItemData {

242

value: string;

243

disabled: boolean;

244

}

245

```