@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.
Files changed (48) hide show
  1. package/README.md +11 -0
  2. package/dist/assets/llms/accordion.md +184 -0
  3. package/dist/assets/llms/alert-dialog.md +306 -0
  4. package/dist/assets/llms/autocomplete.md +756 -0
  5. package/dist/assets/llms/avatar.md +166 -0
  6. package/dist/assets/llms/badge.md +478 -0
  7. package/dist/assets/llms/button.md +238 -0
  8. package/dist/assets/llms/card.md +264 -0
  9. package/dist/assets/llms/checkbox-group.md +158 -0
  10. package/dist/assets/llms/checkbox.md +83 -0
  11. package/dist/assets/llms/collapsible.md +165 -0
  12. package/dist/assets/llms/combobox.md +1255 -0
  13. package/dist/assets/llms/context-menu.md +371 -0
  14. package/dist/assets/llms/dialog.md +592 -0
  15. package/dist/assets/llms/drawer.md +437 -0
  16. package/dist/assets/llms/field.md +74 -0
  17. package/dist/assets/llms/form.md +1931 -0
  18. package/dist/assets/llms/input.md +47 -0
  19. package/dist/assets/llms/menu.md +484 -0
  20. package/dist/assets/llms/menubar.md +804 -0
  21. package/dist/assets/llms/meter.md +181 -0
  22. package/dist/assets/llms/navigation-menu.md +187 -0
  23. package/dist/assets/llms/number-field.md +243 -0
  24. package/dist/assets/llms/pagination.md +514 -0
  25. package/dist/assets/llms/popover.md +206 -0
  26. package/dist/assets/llms/preview-card.md +146 -0
  27. package/dist/assets/llms/progress.md +60 -0
  28. package/dist/assets/llms/radio-group.md +105 -0
  29. package/dist/assets/llms/scroll-area.md +132 -0
  30. package/dist/assets/llms/select.md +276 -0
  31. package/dist/assets/llms/separator.md +49 -0
  32. package/dist/assets/llms/skeleton.md +96 -0
  33. package/dist/assets/llms/slider.md +161 -0
  34. package/dist/assets/llms/switch.md +101 -0
  35. package/dist/assets/llms/table.md +1325 -0
  36. package/dist/assets/llms/tabs.md +327 -0
  37. package/dist/assets/llms/textarea.md +38 -0
  38. package/dist/assets/llms/toast.md +349 -0
  39. package/dist/assets/llms/toggle-group.md +261 -0
  40. package/dist/assets/llms/toggle.md +161 -0
  41. package/dist/assets/llms/toolbar.md +148 -0
  42. package/dist/assets/llms/tooltip.md +486 -0
  43. package/dist/assets/llms-full.txt +14515 -0
  44. package/dist/assets/llms.txt +65 -0
  45. package/dist/index.d.mts +1 -0
  46. package/dist/index.mjs +161 -0
  47. package/dist/index.mjs.map +1 -0
  48. package/package.json +54 -0
@@ -0,0 +1,47 @@
1
+ # Input
2
+
3
+ A single-line text input element.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @lglab/compose-ui
9
+ ```
10
+
11
+ ## Import
12
+
13
+ ```tsx
14
+ import { Input } from '@lglab/compose-ui'
15
+ ```
16
+
17
+ ## Examples
18
+
19
+ ### Default
20
+
21
+ ```tsx
22
+ import { Input } from '@lglab/compose-ui/input'
23
+
24
+ export default function DefaultExample() {
25
+ return (
26
+ <div className='flex flex-col gap-4'>
27
+ <label className='flex flex-col gap-1'>
28
+ <span className='text-sm font-medium text-foreground'>Name</span>
29
+ <Input placeholder='Enter your name' />
30
+ </label>
31
+ <label className='flex flex-col gap-1'>
32
+ <span className='text-sm font-medium text-foreground'>Email</span>
33
+ <Input type='email' placeholder='Enter your email' />
34
+ </label>
35
+ <label className='flex flex-col gap-1'>
36
+ <span className='text-sm font-medium text-foreground'>Password</span>
37
+ <Input type='password' placeholder='Enter your password' />
38
+ </label>
39
+ </div>
40
+ )
41
+ }
42
+ ```
43
+
44
+ ## Resources
45
+
46
+ - [Base UI Input Documentation](https://base-ui.com/react/components/input)
47
+ - [API Reference](https://base-ui.com/react/components/input#api-reference)
@@ -0,0 +1,484 @@
1
+ # Menu
2
+
3
+ A component that displays a list of options on a temporary surface.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @lglab/compose-ui
9
+ ```
10
+
11
+ ## Import
12
+
13
+ ```tsx
14
+ import { MenuRoot, MenuTrigger, MenuPortal, MenuPositioner, MenuPopup, MenuArrow, MenuItem, MenuSeparator, MenuGroup, MenuGroupLabel, MenuRadioGroup, MenuRadioItem, MenuRadioItemIndicator, MenuRadioItemLabel, MenuCheckboxItem, MenuCheckboxItemIndicator, MenuCheckboxItemLabel, MenuSubmenuTrigger, MenuSubmenuRoot } from '@lglab/compose-ui'
15
+ ```
16
+
17
+ ## Examples
18
+
19
+ ### Basic
20
+
21
+ ```tsx
22
+ import { Button } from '@lglab/compose-ui/button'
23
+ import {
24
+ MenuArrow,
25
+ MenuItem,
26
+ MenuPopup,
27
+ MenuPortal,
28
+ MenuPositioner,
29
+ MenuRoot,
30
+ MenuSeparator,
31
+ MenuTrigger,
32
+ } from '@lglab/compose-ui/menu'
33
+ import { MoreVertical } from 'lucide-react'
34
+
35
+ export default function DefaultExample() {
36
+ const handleLogout = () => false
37
+
38
+ return (
39
+ <MenuRoot>
40
+ <MenuTrigger
41
+ render={(props) => (
42
+ <Button {...props} variant='outline' size='icon'>
43
+ <MoreVertical className='size-4' />
44
+ </Button>
45
+ )}
46
+ />
47
+ <MenuPortal>
48
+ <MenuPositioner side='bottom'>
49
+ <MenuPopup>
50
+ <MenuArrow />
51
+ <MenuItem>Profile</MenuItem>
52
+ <MenuItem>Settings</MenuItem>
53
+ <MenuSeparator />
54
+ <MenuItem onClick={handleLogout}>Logout</MenuItem>
55
+ </MenuPopup>
56
+ </MenuPositioner>
57
+ </MenuPortal>
58
+ </MenuRoot>
59
+ )
60
+ }
61
+ ```
62
+
63
+ ### Open on Hover
64
+
65
+ ```tsx
66
+ import { Button } from '@lglab/compose-ui/button'
67
+ import {
68
+ MenuArrow,
69
+ MenuItem,
70
+ MenuPopup,
71
+ MenuPortal,
72
+ MenuPositioner,
73
+ MenuRoot,
74
+ MenuSeparator,
75
+ MenuTrigger,
76
+ } from '@lglab/compose-ui/menu'
77
+ import { MoreVertical } from 'lucide-react'
78
+
79
+ export default function OpenOnHoverExample() {
80
+ return (
81
+ <MenuRoot>
82
+ <MenuTrigger
83
+ openOnHover
84
+ render={(props) => (
85
+ <Button {...props} variant='outline' size='icon'>
86
+ <MoreVertical className='size-4' />
87
+ </Button>
88
+ )}
89
+ />
90
+ <MenuPortal>
91
+ <MenuPositioner side='bottom'>
92
+ <MenuPopup>
93
+ <MenuArrow />
94
+ <MenuItem>Profile</MenuItem>
95
+ <MenuItem>Settings</MenuItem>
96
+ <MenuSeparator />
97
+ <MenuItem>Logout</MenuItem>
98
+ </MenuPopup>
99
+ </MenuPositioner>
100
+ </MenuPortal>
101
+ </MenuRoot>
102
+ )
103
+ }
104
+ ```
105
+
106
+ ### Sides
107
+
108
+ ```tsx
109
+ import { Button } from '@lglab/compose-ui/button'
110
+ import {
111
+ MenuArrow,
112
+ MenuItem,
113
+ MenuPopup,
114
+ MenuPortal,
115
+ MenuPositioner,
116
+ MenuRoot,
117
+ MenuSeparator,
118
+ MenuTrigger,
119
+ } from '@lglab/compose-ui/menu'
120
+
121
+ const sides = ['left', 'bottom', 'top', 'right'] as const
122
+
123
+ export default function SidesExample() {
124
+ return (
125
+ <div className='flex flex-wrap gap-2 items-center justify-center'>
126
+ {sides.map((side) => (
127
+ <MenuRoot key={side}>
128
+ <MenuTrigger
129
+ render={(props) => (
130
+ <Button {...props} variant='outline' className='capitalize'>
131
+ {side}
132
+ </Button>
133
+ )}
134
+ />
135
+ <MenuPortal>
136
+ <MenuPositioner side={side}>
137
+ <MenuPopup>
138
+ <MenuArrow />
139
+ <MenuItem>Profile</MenuItem>
140
+ <MenuItem>Settings</MenuItem>
141
+ <MenuSeparator />
142
+ <MenuItem>Logout</MenuItem>
143
+ </MenuPopup>
144
+ </MenuPositioner>
145
+ </MenuPortal>
146
+ </MenuRoot>
147
+ ))}
148
+ </div>
149
+ )
150
+ }
151
+ ```
152
+
153
+ ### With Icons
154
+
155
+ ```tsx
156
+ import { Button } from '@lglab/compose-ui/button'
157
+ import {
158
+ MenuArrow,
159
+ MenuItem,
160
+ MenuPopup,
161
+ MenuPortal,
162
+ MenuPositioner,
163
+ MenuRoot,
164
+ MenuSeparator,
165
+ MenuTrigger,
166
+ } from '@lglab/compose-ui/menu'
167
+ import { Copy, LogOut, MoreVertical, PenLine, Settings, Trash2, User } from 'lucide-react'
168
+
169
+ export default function WithIconsExample() {
170
+ return (
171
+ <MenuRoot>
172
+ <MenuTrigger
173
+ render={(props) => (
174
+ <Button {...props} variant='outline' size='icon'>
175
+ <MoreVertical className='size-4' />
176
+ </Button>
177
+ )}
178
+ />
179
+ <MenuPortal>
180
+ <MenuPositioner>
181
+ <MenuPopup>
182
+ <MenuArrow />
183
+ <MenuItem>
184
+ <User className='size-4' />
185
+ Profile
186
+ </MenuItem>
187
+ <MenuItem>
188
+ <Settings className='size-4' />
189
+ Settings
190
+ </MenuItem>
191
+ <MenuSeparator />
192
+ <MenuItem>
193
+ <PenLine className='size-4' />
194
+ Edit
195
+ </MenuItem>
196
+ <MenuItem>
197
+ <Copy className='size-4' />
198
+ Duplicate
199
+ </MenuItem>
200
+ <MenuSeparator />
201
+ <MenuItem className='text-destructive'>
202
+ <Trash2 className='size-4' />
203
+ Delete
204
+ </MenuItem>
205
+ <MenuItem>
206
+ <LogOut className='size-4' />
207
+ Logout
208
+ </MenuItem>
209
+ </MenuPopup>
210
+ </MenuPositioner>
211
+ </MenuPortal>
212
+ </MenuRoot>
213
+ )
214
+ }
215
+ ```
216
+
217
+ ### Groups
218
+
219
+ ```tsx
220
+ import { Button } from '@lglab/compose-ui/button'
221
+ import {
222
+ MenuArrow,
223
+ MenuGroup,
224
+ MenuGroupLabel,
225
+ MenuItem,
226
+ MenuPopup,
227
+ MenuPortal,
228
+ MenuPositioner,
229
+ MenuRoot,
230
+ MenuSeparator,
231
+ MenuTrigger,
232
+ } from '@lglab/compose-ui/menu'
233
+ import { Menu } from 'lucide-react'
234
+
235
+ export default function GroupsExample() {
236
+ return (
237
+ <MenuRoot>
238
+ <MenuTrigger
239
+ render={(props) => (
240
+ <Button {...props} variant='outline' className='gap-2'>
241
+ <Menu className='size-4' />
242
+ Menu
243
+ </Button>
244
+ )}
245
+ />
246
+ <MenuPortal>
247
+ <MenuPositioner>
248
+ <MenuPopup>
249
+ <MenuArrow />
250
+ <MenuGroup>
251
+ <MenuGroupLabel>Account</MenuGroupLabel>
252
+ <MenuItem>Profile</MenuItem>
253
+ <MenuItem>Billing</MenuItem>
254
+ <MenuItem>Settings</MenuItem>
255
+ </MenuGroup>
256
+ <MenuSeparator />
257
+ <MenuGroup>
258
+ <MenuGroupLabel>Support</MenuGroupLabel>
259
+ <MenuItem>Help Center</MenuItem>
260
+ <MenuItem>Contact Us</MenuItem>
261
+ </MenuGroup>
262
+ </MenuPopup>
263
+ </MenuPositioner>
264
+ </MenuPortal>
265
+ </MenuRoot>
266
+ )
267
+ }
268
+ ```
269
+
270
+ ### Checkbox Items
271
+
272
+ ```tsx
273
+ import { Button } from '@lglab/compose-ui/button'
274
+ import {
275
+ MenuArrow,
276
+ MenuCheckboxItem,
277
+ MenuCheckboxItemIndicator,
278
+ MenuCheckboxItemLabel,
279
+ MenuPopup,
280
+ MenuPortal,
281
+ MenuPositioner,
282
+ MenuRoot,
283
+ MenuSeparator,
284
+ MenuTrigger,
285
+ } from '@lglab/compose-ui/menu'
286
+ import { Check, Settings } from 'lucide-react'
287
+ import * as React from 'react'
288
+
289
+ export default function CheckboxItemsExample() {
290
+ const [showStatusBar, setShowStatusBar] = React.useState(true)
291
+ const [showActivityBar, setShowActivityBar] = React.useState(false)
292
+ const [showPanel, setShowPanel] = React.useState(false)
293
+
294
+ return (
295
+ <MenuRoot>
296
+ <MenuTrigger
297
+ render={(props) => (
298
+ <Button {...props} variant='outline' className='gap-2'>
299
+ <Settings className='size-4' />
300
+ View Options
301
+ </Button>
302
+ )}
303
+ />
304
+ <MenuPortal>
305
+ <MenuPositioner>
306
+ <MenuPopup>
307
+ <MenuArrow />
308
+ <MenuCheckboxItem checked={showStatusBar} onCheckedChange={setShowStatusBar}>
309
+ <MenuCheckboxItemIndicator>
310
+ <Check className='size-3.5' />
311
+ </MenuCheckboxItemIndicator>
312
+ <MenuCheckboxItemLabel>Status Bar</MenuCheckboxItemLabel>
313
+ </MenuCheckboxItem>
314
+ <MenuCheckboxItem
315
+ checked={showActivityBar}
316
+ onCheckedChange={setShowActivityBar}
317
+ >
318
+ <MenuCheckboxItemIndicator>
319
+ <Check className='size-3.5' />
320
+ </MenuCheckboxItemIndicator>
321
+ <MenuCheckboxItemLabel>Activity Bar</MenuCheckboxItemLabel>
322
+ </MenuCheckboxItem>
323
+ <MenuSeparator />
324
+ <MenuCheckboxItem checked={showPanel} onCheckedChange={setShowPanel}>
325
+ <MenuCheckboxItemIndicator>
326
+ <Check className='size-3.5' />
327
+ </MenuCheckboxItemIndicator>
328
+ <MenuCheckboxItemLabel>Panel</MenuCheckboxItemLabel>
329
+ </MenuCheckboxItem>
330
+ </MenuPopup>
331
+ </MenuPositioner>
332
+ </MenuPortal>
333
+ </MenuRoot>
334
+ )
335
+ }
336
+ ```
337
+
338
+ ### Radio Group
339
+
340
+ ```tsx
341
+ import { Button } from '@lglab/compose-ui/button'
342
+ import {
343
+ MenuArrow,
344
+ MenuGroup,
345
+ MenuGroupLabel,
346
+ MenuPopup,
347
+ MenuPortal,
348
+ MenuPositioner,
349
+ MenuRadioGroup,
350
+ MenuRadioItem,
351
+ MenuRadioItemIndicator,
352
+ MenuRadioItemLabel,
353
+ MenuRoot,
354
+ MenuTrigger,
355
+ } from '@lglab/compose-ui/menu'
356
+ import { Check, SunMoon } from 'lucide-react'
357
+ import * as React from 'react'
358
+
359
+ export default function RadioGroupExample() {
360
+ const [theme, setTheme] = React.useState('system')
361
+
362
+ return (
363
+ <MenuRoot>
364
+ <MenuTrigger
365
+ render={(props) => (
366
+ <Button {...props} variant='outline' className='gap-2'>
367
+ <SunMoon className='size-4' />
368
+ Theme
369
+ </Button>
370
+ )}
371
+ />
372
+ <MenuPortal>
373
+ <MenuPositioner>
374
+ <MenuPopup>
375
+ <MenuArrow />
376
+ <MenuGroup>
377
+ <MenuGroupLabel>Theme</MenuGroupLabel>
378
+ <MenuRadioGroup value={theme} onValueChange={setTheme}>
379
+ <MenuRadioItem value='light'>
380
+ <MenuRadioItemIndicator>
381
+ <Check className='size-3.5' />
382
+ </MenuRadioItemIndicator>
383
+ <MenuRadioItemLabel>Light</MenuRadioItemLabel>
384
+ </MenuRadioItem>
385
+ <MenuRadioItem value='dark'>
386
+ <MenuRadioItemIndicator>
387
+ <Check className='size-3.5' />
388
+ </MenuRadioItemIndicator>
389
+ <MenuRadioItemLabel>Dark</MenuRadioItemLabel>
390
+ </MenuRadioItem>
391
+ <MenuRadioItem value='system'>
392
+ <MenuRadioItemIndicator>
393
+ <Check className='size-3.5' />
394
+ </MenuRadioItemIndicator>
395
+ <MenuRadioItemLabel>System</MenuRadioItemLabel>
396
+ </MenuRadioItem>
397
+ </MenuRadioGroup>
398
+ </MenuGroup>
399
+ </MenuPopup>
400
+ </MenuPositioner>
401
+ </MenuPortal>
402
+ </MenuRoot>
403
+ )
404
+ }
405
+ ```
406
+
407
+ ### Submenu
408
+
409
+ ```tsx
410
+ import { Button } from '@lglab/compose-ui/button'
411
+ import {
412
+ MenuArrow,
413
+ MenuItem,
414
+ MenuPopup,
415
+ MenuPortal,
416
+ MenuPositioner,
417
+ MenuRoot,
418
+ MenuSeparator,
419
+ MenuSubmenuRoot,
420
+ MenuSubmenuTrigger,
421
+ MenuTrigger,
422
+ } from '@lglab/compose-ui/menu'
423
+ import { ChevronRight, Share } from 'lucide-react'
424
+
425
+ export default function SubmenuExample() {
426
+ return (
427
+ <MenuRoot>
428
+ <MenuTrigger
429
+ render={(props) => (
430
+ <Button {...props} variant='outline' className='gap-2'>
431
+ <Share className='size-4' />
432
+ Share
433
+ </Button>
434
+ )}
435
+ />
436
+ <MenuPortal>
437
+ <MenuPositioner>
438
+ <MenuPopup>
439
+ <MenuArrow />
440
+ <MenuItem>Copy Link</MenuItem>
441
+ <MenuItem>Email Link</MenuItem>
442
+ <MenuSeparator />
443
+ <MenuSubmenuRoot>
444
+ <MenuSubmenuTrigger>
445
+ Social Media
446
+ <ChevronRight className='size-4' />
447
+ </MenuSubmenuTrigger>
448
+ <MenuPortal>
449
+ <MenuPositioner side='right' sideOffset={4}>
450
+ <MenuPopup>
451
+ <MenuItem>Twitter</MenuItem>
452
+ <MenuItem>Facebook</MenuItem>
453
+ <MenuItem>LinkedIn</MenuItem>
454
+ <MenuSubmenuRoot>
455
+ <MenuSubmenuTrigger>
456
+ More
457
+ <ChevronRight className='size-4' />
458
+ </MenuSubmenuTrigger>
459
+ <MenuPortal>
460
+ <MenuPositioner side='right' sideOffset={4}>
461
+ <MenuPopup>
462
+ <MenuItem>Reddit</MenuItem>
463
+ <MenuItem>Pinterest</MenuItem>
464
+ <MenuItem>Mastodon</MenuItem>
465
+ </MenuPopup>
466
+ </MenuPositioner>
467
+ </MenuPortal>
468
+ </MenuSubmenuRoot>
469
+ </MenuPopup>
470
+ </MenuPositioner>
471
+ </MenuPortal>
472
+ </MenuSubmenuRoot>
473
+ </MenuPopup>
474
+ </MenuPositioner>
475
+ </MenuPortal>
476
+ </MenuRoot>
477
+ )
478
+ }
479
+ ```
480
+
481
+ ## Resources
482
+
483
+ - [Base UI Menu Documentation](https://base-ui.com/react/components/menu)
484
+ - [API Reference](https://base-ui.com/react/components/menu#api-reference)