@lglab/compose-ui-mcp 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/assets/llms/accordion.md +184 -0
- package/dist/assets/llms/alert-dialog.md +306 -0
- package/dist/assets/llms/autocomplete.md +756 -0
- package/dist/assets/llms/avatar.md +166 -0
- package/dist/assets/llms/badge.md +478 -0
- package/dist/assets/llms/button.md +238 -0
- package/dist/assets/llms/card.md +264 -0
- package/dist/assets/llms/checkbox-group.md +158 -0
- package/dist/assets/llms/checkbox.md +83 -0
- package/dist/assets/llms/collapsible.md +165 -0
- package/dist/assets/llms/combobox.md +1255 -0
- package/dist/assets/llms/context-menu.md +371 -0
- package/dist/assets/llms/dialog.md +592 -0
- package/dist/assets/llms/drawer.md +437 -0
- package/dist/assets/llms/field.md +74 -0
- package/dist/assets/llms/form.md +1931 -0
- package/dist/assets/llms/input.md +47 -0
- package/dist/assets/llms/menu.md +484 -0
- package/dist/assets/llms/menubar.md +804 -0
- package/dist/assets/llms/meter.md +181 -0
- package/dist/assets/llms/navigation-menu.md +187 -0
- package/dist/assets/llms/number-field.md +243 -0
- package/dist/assets/llms/pagination.md +514 -0
- package/dist/assets/llms/popover.md +206 -0
- package/dist/assets/llms/preview-card.md +146 -0
- package/dist/assets/llms/progress.md +60 -0
- package/dist/assets/llms/radio-group.md +105 -0
- package/dist/assets/llms/scroll-area.md +132 -0
- package/dist/assets/llms/select.md +276 -0
- package/dist/assets/llms/separator.md +49 -0
- package/dist/assets/llms/skeleton.md +96 -0
- package/dist/assets/llms/slider.md +161 -0
- package/dist/assets/llms/switch.md +101 -0
- package/dist/assets/llms/table.md +1325 -0
- package/dist/assets/llms/tabs.md +327 -0
- package/dist/assets/llms/textarea.md +38 -0
- package/dist/assets/llms/toast.md +349 -0
- package/dist/assets/llms/toggle-group.md +261 -0
- package/dist/assets/llms/toggle.md +161 -0
- package/dist/assets/llms/toolbar.md +148 -0
- package/dist/assets/llms/tooltip.md +486 -0
- package/dist/assets/llms-full.txt +14515 -0
- package/dist/assets/llms.txt +65 -0
- package/dist/index.d.mts +1 -0
- package/dist/index.mjs +161 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
# Context Menu
|
|
2
|
+
|
|
3
|
+
A menu triggered by right-click or long press, rendering at the pointer position.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @lglab/compose-ui
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Import
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
import { ContextMenuRoot, ContextMenuTrigger, ContextMenuPortal, ContextMenuPositioner, ContextMenuPopup, ContextMenuArrow, ContextMenuItem, ContextMenuSeparator, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRadioItemIndicator, ContextMenuRadioItemLabel, ContextMenuCheckboxItem, ContextMenuCheckboxItemIndicator, ContextMenuCheckboxItemLabel, ContextMenuSubmenuTrigger, ContextMenuSubmenuRoot } from '@lglab/compose-ui'
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Examples
|
|
18
|
+
|
|
19
|
+
### Basic
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
import {
|
|
23
|
+
ContextMenuItem,
|
|
24
|
+
ContextMenuPopup,
|
|
25
|
+
ContextMenuPortal,
|
|
26
|
+
ContextMenuPositioner,
|
|
27
|
+
ContextMenuRoot,
|
|
28
|
+
ContextMenuSeparator,
|
|
29
|
+
ContextMenuTrigger,
|
|
30
|
+
} from '@lglab/compose-ui/context-menu'
|
|
31
|
+
|
|
32
|
+
export default function DefaultExample() {
|
|
33
|
+
return (
|
|
34
|
+
<ContextMenuRoot>
|
|
35
|
+
<ContextMenuTrigger className='flex h-40 w-full sm:w-72 p-2 items-center justify-center rounded-lg border border-dashed border-border bg-muted/50 text-sm text-muted-foreground text-center'>
|
|
36
|
+
Right-click here
|
|
37
|
+
</ContextMenuTrigger>
|
|
38
|
+
<ContextMenuPortal>
|
|
39
|
+
<ContextMenuPositioner>
|
|
40
|
+
<ContextMenuPopup>
|
|
41
|
+
<ContextMenuItem>Profile</ContextMenuItem>
|
|
42
|
+
<ContextMenuItem>Settings</ContextMenuItem>
|
|
43
|
+
<ContextMenuSeparator />
|
|
44
|
+
<ContextMenuItem>Logout</ContextMenuItem>
|
|
45
|
+
</ContextMenuPopup>
|
|
46
|
+
</ContextMenuPositioner>
|
|
47
|
+
</ContextMenuPortal>
|
|
48
|
+
</ContextMenuRoot>
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### With Icons
|
|
54
|
+
|
|
55
|
+
```tsx
|
|
56
|
+
import {
|
|
57
|
+
ContextMenuItem,
|
|
58
|
+
ContextMenuPopup,
|
|
59
|
+
ContextMenuPortal,
|
|
60
|
+
ContextMenuPositioner,
|
|
61
|
+
ContextMenuRoot,
|
|
62
|
+
ContextMenuSeparator,
|
|
63
|
+
ContextMenuTrigger,
|
|
64
|
+
} from '@lglab/compose-ui/context-menu'
|
|
65
|
+
import { Copy, LogOut, PenLine, Settings, Trash2, User } from 'lucide-react'
|
|
66
|
+
|
|
67
|
+
export default function WithIconsExample() {
|
|
68
|
+
return (
|
|
69
|
+
<ContextMenuRoot>
|
|
70
|
+
<ContextMenuTrigger className='flex h-40 w-full sm:w-72 p-2 items-center justify-center rounded-lg border border-dashed border-border bg-muted/50 text-sm text-muted-foreground text-center'>
|
|
71
|
+
Right-click here
|
|
72
|
+
</ContextMenuTrigger>
|
|
73
|
+
<ContextMenuPortal>
|
|
74
|
+
<ContextMenuPositioner>
|
|
75
|
+
<ContextMenuPopup>
|
|
76
|
+
<ContextMenuItem>
|
|
77
|
+
<User className='size-4' />
|
|
78
|
+
Profile
|
|
79
|
+
</ContextMenuItem>
|
|
80
|
+
<ContextMenuItem>
|
|
81
|
+
<Settings className='size-4' />
|
|
82
|
+
Settings
|
|
83
|
+
</ContextMenuItem>
|
|
84
|
+
<ContextMenuSeparator />
|
|
85
|
+
<ContextMenuItem>
|
|
86
|
+
<PenLine className='size-4' />
|
|
87
|
+
Edit
|
|
88
|
+
</ContextMenuItem>
|
|
89
|
+
<ContextMenuItem>
|
|
90
|
+
<Copy className='size-4' />
|
|
91
|
+
Duplicate
|
|
92
|
+
</ContextMenuItem>
|
|
93
|
+
<ContextMenuSeparator />
|
|
94
|
+
<ContextMenuItem className='text-destructive'>
|
|
95
|
+
<Trash2 className='size-4' />
|
|
96
|
+
Delete
|
|
97
|
+
</ContextMenuItem>
|
|
98
|
+
<ContextMenuItem>
|
|
99
|
+
<LogOut className='size-4' />
|
|
100
|
+
Logout
|
|
101
|
+
</ContextMenuItem>
|
|
102
|
+
</ContextMenuPopup>
|
|
103
|
+
</ContextMenuPositioner>
|
|
104
|
+
</ContextMenuPortal>
|
|
105
|
+
</ContextMenuRoot>
|
|
106
|
+
)
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Groups
|
|
111
|
+
|
|
112
|
+
```tsx
|
|
113
|
+
import {
|
|
114
|
+
ContextMenuGroup,
|
|
115
|
+
ContextMenuGroupLabel,
|
|
116
|
+
ContextMenuItem,
|
|
117
|
+
ContextMenuPopup,
|
|
118
|
+
ContextMenuPortal,
|
|
119
|
+
ContextMenuPositioner,
|
|
120
|
+
ContextMenuRoot,
|
|
121
|
+
ContextMenuSeparator,
|
|
122
|
+
ContextMenuTrigger,
|
|
123
|
+
} from '@lglab/compose-ui/context-menu'
|
|
124
|
+
import { Copy, FilePlus, FolderOpen, Save, Settings, User } from 'lucide-react'
|
|
125
|
+
|
|
126
|
+
export default function GroupsExample() {
|
|
127
|
+
return (
|
|
128
|
+
<ContextMenuRoot>
|
|
129
|
+
<ContextMenuTrigger className='flex h-40 w-full sm:w-72 p-2 items-center justify-center rounded-lg border border-dashed border-border bg-muted/50 text-sm text-muted-foreground text-center'>
|
|
130
|
+
Right-click for grouped options
|
|
131
|
+
</ContextMenuTrigger>
|
|
132
|
+
<ContextMenuPortal>
|
|
133
|
+
<ContextMenuPositioner>
|
|
134
|
+
<ContextMenuPopup>
|
|
135
|
+
<ContextMenuGroup>
|
|
136
|
+
<ContextMenuGroupLabel>File</ContextMenuGroupLabel>
|
|
137
|
+
<ContextMenuItem>
|
|
138
|
+
<FilePlus className='size-4' />
|
|
139
|
+
New File
|
|
140
|
+
</ContextMenuItem>
|
|
141
|
+
<ContextMenuItem>
|
|
142
|
+
<FolderOpen className='size-4' />
|
|
143
|
+
Open
|
|
144
|
+
</ContextMenuItem>
|
|
145
|
+
<ContextMenuItem>
|
|
146
|
+
<Save className='size-4' />
|
|
147
|
+
Save
|
|
148
|
+
</ContextMenuItem>
|
|
149
|
+
</ContextMenuGroup>
|
|
150
|
+
<ContextMenuSeparator />
|
|
151
|
+
<ContextMenuGroup>
|
|
152
|
+
<ContextMenuGroupLabel>Edit</ContextMenuGroupLabel>
|
|
153
|
+
<ContextMenuItem>
|
|
154
|
+
<Copy className='size-4' />
|
|
155
|
+
Copy
|
|
156
|
+
</ContextMenuItem>
|
|
157
|
+
</ContextMenuGroup>
|
|
158
|
+
<ContextMenuSeparator />
|
|
159
|
+
<ContextMenuGroup>
|
|
160
|
+
<ContextMenuGroupLabel>Account</ContextMenuGroupLabel>
|
|
161
|
+
<ContextMenuItem>
|
|
162
|
+
<User className='size-4' />
|
|
163
|
+
Profile
|
|
164
|
+
</ContextMenuItem>
|
|
165
|
+
<ContextMenuItem>
|
|
166
|
+
<Settings className='size-4' />
|
|
167
|
+
Settings
|
|
168
|
+
</ContextMenuItem>
|
|
169
|
+
</ContextMenuGroup>
|
|
170
|
+
</ContextMenuPopup>
|
|
171
|
+
</ContextMenuPositioner>
|
|
172
|
+
</ContextMenuPortal>
|
|
173
|
+
</ContextMenuRoot>
|
|
174
|
+
)
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Checkbox Items
|
|
179
|
+
|
|
180
|
+
```tsx
|
|
181
|
+
import {
|
|
182
|
+
ContextMenuCheckboxItem,
|
|
183
|
+
ContextMenuCheckboxItemIndicator,
|
|
184
|
+
ContextMenuCheckboxItemLabel,
|
|
185
|
+
ContextMenuPopup,
|
|
186
|
+
ContextMenuPortal,
|
|
187
|
+
ContextMenuPositioner,
|
|
188
|
+
ContextMenuRoot,
|
|
189
|
+
ContextMenuSeparator,
|
|
190
|
+
ContextMenuTrigger,
|
|
191
|
+
} from '@lglab/compose-ui/context-menu'
|
|
192
|
+
import { Check } from 'lucide-react'
|
|
193
|
+
import * as React from 'react'
|
|
194
|
+
|
|
195
|
+
export default function CheckboxItemsExample() {
|
|
196
|
+
const [showStatusBar, setShowStatusBar] = React.useState(true)
|
|
197
|
+
const [showActivityBar, setShowActivityBar] = React.useState(false)
|
|
198
|
+
const [showPanel, setShowPanel] = React.useState(false)
|
|
199
|
+
|
|
200
|
+
return (
|
|
201
|
+
<ContextMenuRoot>
|
|
202
|
+
<ContextMenuTrigger className='flex h-40 w-full sm:w-72 p-2 items-center justify-center rounded-lg border border-dashed border-border bg-muted/50 text-sm text-muted-foreground text-center'>
|
|
203
|
+
Right-click to toggle options
|
|
204
|
+
</ContextMenuTrigger>
|
|
205
|
+
<ContextMenuPortal>
|
|
206
|
+
<ContextMenuPositioner>
|
|
207
|
+
<ContextMenuPopup>
|
|
208
|
+
<ContextMenuCheckboxItem
|
|
209
|
+
checked={showStatusBar}
|
|
210
|
+
onCheckedChange={setShowStatusBar}
|
|
211
|
+
>
|
|
212
|
+
<ContextMenuCheckboxItemIndicator>
|
|
213
|
+
<Check className='size-3.5' />
|
|
214
|
+
</ContextMenuCheckboxItemIndicator>
|
|
215
|
+
<ContextMenuCheckboxItemLabel>Status Bar</ContextMenuCheckboxItemLabel>
|
|
216
|
+
</ContextMenuCheckboxItem>
|
|
217
|
+
<ContextMenuCheckboxItem
|
|
218
|
+
checked={showActivityBar}
|
|
219
|
+
onCheckedChange={setShowActivityBar}
|
|
220
|
+
>
|
|
221
|
+
<ContextMenuCheckboxItemIndicator>
|
|
222
|
+
<Check className='size-3.5' />
|
|
223
|
+
</ContextMenuCheckboxItemIndicator>
|
|
224
|
+
<ContextMenuCheckboxItemLabel>Activity Bar</ContextMenuCheckboxItemLabel>
|
|
225
|
+
</ContextMenuCheckboxItem>
|
|
226
|
+
<ContextMenuSeparator />
|
|
227
|
+
<ContextMenuCheckboxItem checked={showPanel} onCheckedChange={setShowPanel}>
|
|
228
|
+
<ContextMenuCheckboxItemIndicator>
|
|
229
|
+
<Check className='size-3.5' />
|
|
230
|
+
</ContextMenuCheckboxItemIndicator>
|
|
231
|
+
<ContextMenuCheckboxItemLabel>Panel</ContextMenuCheckboxItemLabel>
|
|
232
|
+
</ContextMenuCheckboxItem>
|
|
233
|
+
</ContextMenuPopup>
|
|
234
|
+
</ContextMenuPositioner>
|
|
235
|
+
</ContextMenuPortal>
|
|
236
|
+
</ContextMenuRoot>
|
|
237
|
+
)
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Radio Group
|
|
242
|
+
|
|
243
|
+
```tsx
|
|
244
|
+
import {
|
|
245
|
+
ContextMenuGroup,
|
|
246
|
+
ContextMenuGroupLabel,
|
|
247
|
+
ContextMenuPopup,
|
|
248
|
+
ContextMenuPortal,
|
|
249
|
+
ContextMenuPositioner,
|
|
250
|
+
ContextMenuRadioGroup,
|
|
251
|
+
ContextMenuRadioItem,
|
|
252
|
+
ContextMenuRadioItemIndicator,
|
|
253
|
+
ContextMenuRadioItemLabel,
|
|
254
|
+
ContextMenuRoot,
|
|
255
|
+
ContextMenuTrigger,
|
|
256
|
+
} from '@lglab/compose-ui/context-menu'
|
|
257
|
+
import { Check } from 'lucide-react'
|
|
258
|
+
import * as React from 'react'
|
|
259
|
+
|
|
260
|
+
export default function RadioGroupExample() {
|
|
261
|
+
const [theme, setTheme] = React.useState('system')
|
|
262
|
+
|
|
263
|
+
return (
|
|
264
|
+
<ContextMenuRoot>
|
|
265
|
+
<ContextMenuTrigger className='flex h-40 w-full sm:w-72 p-2 items-center justify-center rounded-lg border border-dashed border-border bg-muted/50 text-sm text-muted-foreground text-center'>
|
|
266
|
+
Right-click to select theme
|
|
267
|
+
</ContextMenuTrigger>
|
|
268
|
+
<ContextMenuPortal>
|
|
269
|
+
<ContextMenuPositioner>
|
|
270
|
+
<ContextMenuPopup>
|
|
271
|
+
<ContextMenuGroup>
|
|
272
|
+
<ContextMenuGroupLabel>Theme</ContextMenuGroupLabel>
|
|
273
|
+
<ContextMenuRadioGroup value={theme} onValueChange={setTheme}>
|
|
274
|
+
<ContextMenuRadioItem value='light'>
|
|
275
|
+
<ContextMenuRadioItemIndicator>
|
|
276
|
+
<Check className='size-3.5' />
|
|
277
|
+
</ContextMenuRadioItemIndicator>
|
|
278
|
+
<ContextMenuRadioItemLabel>Light</ContextMenuRadioItemLabel>
|
|
279
|
+
</ContextMenuRadioItem>
|
|
280
|
+
<ContextMenuRadioItem value='dark'>
|
|
281
|
+
<ContextMenuRadioItemIndicator>
|
|
282
|
+
<Check className='size-3.5' />
|
|
283
|
+
</ContextMenuRadioItemIndicator>
|
|
284
|
+
<ContextMenuRadioItemLabel>Dark</ContextMenuRadioItemLabel>
|
|
285
|
+
</ContextMenuRadioItem>
|
|
286
|
+
<ContextMenuRadioItem value='system'>
|
|
287
|
+
<ContextMenuRadioItemIndicator>
|
|
288
|
+
<Check className='size-3.5' />
|
|
289
|
+
</ContextMenuRadioItemIndicator>
|
|
290
|
+
<ContextMenuRadioItemLabel>System</ContextMenuRadioItemLabel>
|
|
291
|
+
</ContextMenuRadioItem>
|
|
292
|
+
</ContextMenuRadioGroup>
|
|
293
|
+
</ContextMenuGroup>
|
|
294
|
+
</ContextMenuPopup>
|
|
295
|
+
</ContextMenuPositioner>
|
|
296
|
+
</ContextMenuPortal>
|
|
297
|
+
</ContextMenuRoot>
|
|
298
|
+
)
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### Submenu
|
|
303
|
+
|
|
304
|
+
```tsx
|
|
305
|
+
import {
|
|
306
|
+
ContextMenuItem,
|
|
307
|
+
ContextMenuPopup,
|
|
308
|
+
ContextMenuPortal,
|
|
309
|
+
ContextMenuPositioner,
|
|
310
|
+
ContextMenuRoot,
|
|
311
|
+
ContextMenuSeparator,
|
|
312
|
+
ContextMenuSubmenuRoot,
|
|
313
|
+
ContextMenuSubmenuTrigger,
|
|
314
|
+
ContextMenuTrigger,
|
|
315
|
+
} from '@lglab/compose-ui/context-menu'
|
|
316
|
+
import { ChevronRight } from 'lucide-react'
|
|
317
|
+
|
|
318
|
+
export default function SubmenuExample() {
|
|
319
|
+
return (
|
|
320
|
+
<ContextMenuRoot>
|
|
321
|
+
<ContextMenuTrigger className='flex h-40 w-full sm:w-72 p-2 items-center justify-center rounded-lg border border-dashed border-border bg-muted/50 text-sm text-muted-foreground text-center'>
|
|
322
|
+
Right-click for share options
|
|
323
|
+
</ContextMenuTrigger>
|
|
324
|
+
<ContextMenuPortal>
|
|
325
|
+
<ContextMenuPositioner>
|
|
326
|
+
<ContextMenuPopup>
|
|
327
|
+
<ContextMenuItem>Copy Link</ContextMenuItem>
|
|
328
|
+
<ContextMenuItem>Email Link</ContextMenuItem>
|
|
329
|
+
<ContextMenuSeparator />
|
|
330
|
+
<ContextMenuSubmenuRoot>
|
|
331
|
+
<ContextMenuSubmenuTrigger>
|
|
332
|
+
Social Media
|
|
333
|
+
<ChevronRight className='size-4' />
|
|
334
|
+
</ContextMenuSubmenuTrigger>
|
|
335
|
+
<ContextMenuPortal>
|
|
336
|
+
<ContextMenuPositioner side='right' sideOffset={4}>
|
|
337
|
+
<ContextMenuPopup>
|
|
338
|
+
<ContextMenuItem>Twitter</ContextMenuItem>
|
|
339
|
+
<ContextMenuItem>Facebook</ContextMenuItem>
|
|
340
|
+
<ContextMenuItem>LinkedIn</ContextMenuItem>
|
|
341
|
+
<ContextMenuSubmenuRoot>
|
|
342
|
+
<ContextMenuSubmenuTrigger>
|
|
343
|
+
More
|
|
344
|
+
<ChevronRight className='size-4' />
|
|
345
|
+
</ContextMenuSubmenuTrigger>
|
|
346
|
+
<ContextMenuPortal>
|
|
347
|
+
<ContextMenuPositioner side='right' sideOffset={4}>
|
|
348
|
+
<ContextMenuPopup>
|
|
349
|
+
<ContextMenuItem>Reddit</ContextMenuItem>
|
|
350
|
+
<ContextMenuItem>Pinterest</ContextMenuItem>
|
|
351
|
+
<ContextMenuItem>Mastodon</ContextMenuItem>
|
|
352
|
+
</ContextMenuPopup>
|
|
353
|
+
</ContextMenuPositioner>
|
|
354
|
+
</ContextMenuPortal>
|
|
355
|
+
</ContextMenuSubmenuRoot>
|
|
356
|
+
</ContextMenuPopup>
|
|
357
|
+
</ContextMenuPositioner>
|
|
358
|
+
</ContextMenuPortal>
|
|
359
|
+
</ContextMenuSubmenuRoot>
|
|
360
|
+
</ContextMenuPopup>
|
|
361
|
+
</ContextMenuPositioner>
|
|
362
|
+
</ContextMenuPortal>
|
|
363
|
+
</ContextMenuRoot>
|
|
364
|
+
)
|
|
365
|
+
}
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
## Resources
|
|
369
|
+
|
|
370
|
+
- [Base UI Context Menu Documentation](https://base-ui.com/react/components/context-menu)
|
|
371
|
+
- [API Reference](https://base-ui.com/react/components/context-menu#api-reference)
|