or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

core-components.mdindex.mdlayout-components.mdmenu-items.mdportal-context.mdsubmenus.md

layout-components.mddocs/

0

# Layout Components

1

2

Components for organizing and structuring menu layout including groups, labels, separators, and arrows. These components help create well-organized and visually structured dropdown menus.

3

4

## Capabilities

5

6

### DropdownMenuGroup (Group)

7

8

Container component for grouping related menu items together, providing semantic organization.

9

10

```typescript { .api }

11

/**

12

* Container for grouping related menu items

13

* Provides semantic grouping without visual changes

14

*/

15

interface DropdownMenuGroupProps {

16

children?: React.ReactNode;

17

}

18

19

const DropdownMenuGroup: React.ForwardRefExoticComponent<DropdownMenuGroupProps>;

20

```

21

22

**Usage Examples:**

23

24

```typescript

25

<DropdownMenu.Content>

26

<DropdownMenu.Group>

27

<DropdownMenu.Item>New File</DropdownMenu.Item>

28

<DropdownMenu.Item>New Folder</DropdownMenu.Item>

29

</DropdownMenu.Group>

30

31

<DropdownMenu.Separator />

32

33

<DropdownMenu.Group>

34

<DropdownMenu.Item>Cut</DropdownMenu.Item>

35

<DropdownMenu.Item>Copy</DropdownMenu.Item>

36

<DropdownMenu.Item>Paste</DropdownMenu.Item>

37

</DropdownMenu.Group>

38

</DropdownMenu.Content>

39

```

40

41

### DropdownMenuLabel (Label)

42

43

Label component for providing section headers and descriptions within menu groups.

44

45

```typescript { .api }

46

/**

47

* Label component for menu sections

48

* Provides descriptive text that doesn't receive focus

49

* @param asChild - Compose with child element

50

*/

51

interface DropdownMenuLabelProps {

52

asChild?: boolean;

53

children?: React.ReactNode;

54

}

55

56

const DropdownMenuLabel: React.ForwardRefExoticComponent<DropdownMenuLabelProps>;

57

```

58

59

**Usage Examples:**

60

61

```typescript

62

<DropdownMenu.Content>

63

<DropdownMenu.Label>File Operations</DropdownMenu.Label>

64

<DropdownMenu.Item>New File</DropdownMenu.Item>

65

<DropdownMenu.Item>Open File</DropdownMenu.Item>

66

67

<DropdownMenu.Separator />

68

69

<DropdownMenu.Label>Edit Operations</DropdownMenu.Label>

70

<DropdownMenu.Item>Cut</DropdownMenu.Item>

71

<DropdownMenu.Item>Copy</DropdownMenu.Item>

72

</DropdownMenu.Content>

73

74

// Custom label using asChild

75

<DropdownMenu.Label asChild>

76

<h3 className="menu-section-header">Recent Files</h3>

77

</DropdownMenu.Label>

78

```

79

80

### DropdownMenuSeparator (Separator)

81

82

Visual separator component for creating distinct sections within the menu.

83

84

```typescript { .api }

85

/**

86

* Visual separator for creating menu sections

87

* Renders as a horizontal line between menu items

88

*/

89

interface DropdownMenuSeparatorProps {

90

children?: React.ReactNode;

91

}

92

93

const DropdownMenuSeparator: React.ForwardRefExoticComponent<DropdownMenuSeparatorProps>;

94

```

95

96

**Usage Examples:**

97

98

```typescript

99

<DropdownMenu.Content>

100

<DropdownMenu.Item>New</DropdownMenu.Item>

101

<DropdownMenu.Item>Open</DropdownMenu.Item>

102

103

<DropdownMenu.Separator />

104

105

<DropdownMenu.Item>Settings</DropdownMenu.Item>

106

<DropdownMenu.Item>Help</DropdownMenu.Item>

107

108

<DropdownMenu.Separator />

109

110

<DropdownMenu.Item>Quit</DropdownMenu.Item>

111

</DropdownMenu.Content>

112

```

113

114

### DropdownMenuArrow (Arrow)

115

116

Arrow component that points from the menu content to the trigger element.

117

118

```typescript { .api }

119

/**

120

* Arrow pointing from content to trigger element

121

* @param width - Width of the arrow in pixels

122

* @param height - Height of the arrow in pixels

123

* @param asChild - Compose with child element

124

*/

125

interface DropdownMenuArrowProps {

126

width?: number;

127

height?: number;

128

asChild?: boolean;

129

}

130

131

const DropdownMenuArrow: React.ForwardRefExoticComponent<DropdownMenuArrowProps>;

132

```

133

134

**Usage Examples:**

135

136

```typescript

137

<DropdownMenu.Content>

138

<DropdownMenu.Arrow />

139

<DropdownMenu.Item>Menu Item</DropdownMenu.Item>

140

</DropdownMenu.Content>

141

142

// Custom sized arrow

143

<DropdownMenu.Content>

144

<DropdownMenu.Arrow width={10} height={5} />

145

<DropdownMenu.Item>Menu Item</DropdownMenu.Item>

146

</DropdownMenu.Content>

147

148

// Custom arrow using asChild

149

<DropdownMenu.Content>

150

<DropdownMenu.Arrow asChild>

151

<div className="custom-arrow" />

152

</DropdownMenu.Arrow>

153

<DropdownMenu.Item>Menu Item</DropdownMenu.Item>

154

</DropdownMenu.Content>

155

```

156

157

## Complete Layout Example

158

159

```typescript

160

function ComplexDropdownMenu() {

161

const [showGrid, setShowGrid] = React.useState(false);

162

const [viewMode, setViewMode] = React.useState('list');

163

164

return (

165

<DropdownMenu.Root>

166

<DropdownMenu.Trigger>View Options</DropdownMenu.Trigger>

167

168

<DropdownMenu.Portal>

169

<DropdownMenu.Content>

170

<DropdownMenu.Arrow />

171

172

<DropdownMenu.Label>View Settings</DropdownMenu.Label>

173

174

<DropdownMenu.Group>

175

<DropdownMenu.CheckboxItem

176

checked={showGrid}

177

onCheckedChange={setShowGrid}

178

>

179

<DropdownMenu.ItemIndicator>✓</DropdownMenu.ItemIndicator>

180

Show Grid

181

</DropdownMenu.CheckboxItem>

182

</DropdownMenu.Group>

183

184

<DropdownMenu.Separator />

185

186

<DropdownMenu.Label>View Mode</DropdownMenu.Label>

187

188

<DropdownMenu.RadioGroup value={viewMode} onValueChange={setViewMode}>

189

<DropdownMenu.RadioItem value="list">

190

<DropdownMenu.ItemIndicator>●</DropdownMenu.ItemIndicator>

191

List View

192

</DropdownMenu.RadioItem>

193

<DropdownMenu.RadioItem value="grid">

194

<DropdownMenu.ItemIndicator>●</DropdownMenu.ItemIndicator>

195

Grid View

196

</DropdownMenu.RadioItem>

197

</DropdownMenu.RadioGroup>

198

199

<DropdownMenu.Separator />

200

201

<DropdownMenu.Group>

202

<DropdownMenu.Item>Refresh</DropdownMenu.Item>

203

<DropdownMenu.Item>Reset View</DropdownMenu.Item>

204

</DropdownMenu.Group>

205

</DropdownMenu.Content>

206

</DropdownMenu.Portal>

207

</DropdownMenu.Root>

208

);

209

}

210

```

211

212

## Component Aliases

213

214

```typescript { .api }

215

// Short aliases for composition patterns

216

const Group = DropdownMenuGroup;

217

const Label = DropdownMenuLabel;

218

const Separator = DropdownMenuSeparator;

219

const Arrow = DropdownMenuArrow;

220

```

221

222

These layout components help create well-structured and visually organized dropdown menus with proper semantic grouping and visual separation.