@neynar/ui 0.3.0 → 0.4.0
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/.llm/accordion-content.llm.md +67 -0
- package/.llm/accordion-item.llm.md +61 -0
- package/.llm/accordion-trigger.llm.md +69 -0
- package/.llm/accordion.llm.md +88 -0
- package/.llm/alert-description.llm.md +78 -0
- package/.llm/alert-dialog-action.llm.md +51 -0
- package/.llm/alert-dialog-cancel.llm.md +48 -0
- package/.llm/alert-dialog-content.llm.md +88 -0
- package/.llm/alert-dialog-description.llm.md +53 -0
- package/.llm/alert-dialog-footer.llm.md +41 -0
- package/.llm/alert-dialog-header.llm.md +39 -0
- package/.llm/alert-dialog-overlay.llm.md +44 -0
- package/.llm/alert-dialog-portal.llm.md +41 -0
- package/.llm/alert-dialog-title.llm.md +46 -0
- package/.llm/alert-dialog-trigger.llm.md +40 -0
- package/.llm/alert-dialog.llm.md +80 -0
- package/.llm/alert-title.llm.md +48 -0
- package/.llm/alert.llm.md +92 -0
- package/.llm/aspect-ratio.llm.md +41 -0
- package/.llm/avatar-fallback.llm.md +41 -0
- package/.llm/avatar-image.llm.md +48 -0
- package/.llm/avatar.llm.md +35 -0
- package/.llm/badge.llm.md +117 -0
- package/.llm/blockquote.llm.md +55 -0
- package/.llm/body-text-large.llm.md +49 -0
- package/.llm/body-text-small.llm.md +49 -0
- package/.llm/body-text.llm.md +52 -0
- package/.llm/breadcrumb-ellipsis.llm.md +73 -0
- package/.llm/breadcrumb-item.llm.md +53 -0
- package/.llm/breadcrumb-link.llm.md +84 -0
- package/.llm/breadcrumb-list.llm.md +54 -0
- package/.llm/breadcrumb-page.llm.md +52 -0
- package/.llm/breadcrumb-separator.llm.md +60 -0
- package/.llm/breadcrumb.llm.md +110 -0
- package/.llm/button-group-separator.llm.md +53 -0
- package/.llm/button-group-text.llm.md +56 -0
- package/.llm/button-group.llm.md +81 -0
- package/.llm/button.llm.md +281 -0
- package/.llm/calendar-day-button.llm.md +57 -0
- package/.llm/calendar.llm.md +340 -0
- package/.llm/caption.llm.md +48 -0
- package/.llm/card-action.llm.md +64 -0
- package/.llm/card-content.llm.md +48 -0
- package/.llm/card-description.llm.md +46 -0
- package/.llm/card-footer.llm.md +56 -0
- package/.llm/card-header.llm.md +53 -0
- package/.llm/card-title.llm.md +43 -0
- package/.llm/card.llm.md +100 -0
- package/.llm/carousel-content.llm.md +77 -0
- package/.llm/carousel-item.llm.md +96 -0
- package/.llm/carousel-next.llm.md +95 -0
- package/.llm/carousel-previous.llm.md +95 -0
- package/.llm/carousel.llm.md +211 -0
- package/.llm/chart-config.llm.md +71 -0
- package/.llm/chart-container.llm.md +148 -0
- package/.llm/chart-legend-content.llm.md +85 -0
- package/.llm/chart-legend.llm.md +144 -0
- package/.llm/chart-style.llm.md +28 -0
- package/.llm/chart-tooltip-content.llm.md +149 -0
- package/.llm/chart-tooltip.llm.md +184 -0
- package/.llm/checkbox.llm.md +100 -0
- package/.llm/cn.llm.md +46 -0
- package/.llm/code.llm.md +45 -0
- package/.llm/collapsible-content.llm.md +109 -0
- package/.llm/collapsible-trigger.llm.md +75 -0
- package/.llm/collapsible.llm.md +109 -0
- package/.llm/combobox-option.llm.md +53 -0
- package/.llm/combobox.llm.md +208 -0
- package/.llm/command-dialog.llm.md +112 -0
- package/.llm/command-empty.llm.md +63 -0
- package/.llm/command-group.llm.md +83 -0
- package/.llm/command-input.llm.md +82 -0
- package/.llm/command-item.llm.md +97 -0
- package/.llm/command-list.llm.md +53 -0
- package/.llm/command-loading.llm.md +48 -0
- package/.llm/command-separator.llm.md +44 -0
- package/.llm/command-shortcut.llm.md +63 -0
- package/.llm/command.llm.md +147 -0
- package/.llm/container.llm.md +236 -0
- package/.llm/context-menu-checkbox-item.llm.md +97 -0
- package/.llm/context-menu-content.llm.md +91 -0
- package/.llm/context-menu-group.llm.md +61 -0
- package/.llm/context-menu-item.llm.md +94 -0
- package/.llm/context-menu-label.llm.md +60 -0
- package/.llm/context-menu-portal.llm.md +49 -0
- package/.llm/context-menu-radio-group.llm.md +66 -0
- package/.llm/context-menu-radio-item.llm.md +76 -0
- package/.llm/context-menu-separator.llm.md +51 -0
- package/.llm/context-menu-shortcut.llm.md +57 -0
- package/.llm/context-menu-sub-content.llm.md +90 -0
- package/.llm/context-menu-sub-trigger.llm.md +73 -0
- package/.llm/context-menu-sub.llm.md +61 -0
- package/.llm/context-menu-trigger.llm.md +53 -0
- package/.llm/context-menu.llm.md +103 -0
- package/.llm/date-picker.llm.md +90 -0
- package/.llm/dialog-close.llm.md +61 -0
- package/.llm/dialog-content.llm.md +128 -0
- package/.llm/dialog-description.llm.md +44 -0
- package/.llm/dialog-footer.llm.md +38 -0
- package/.llm/dialog-header.llm.md +40 -0
- package/.llm/dialog-overlay.llm.md +57 -0
- package/.llm/dialog-portal.llm.md +47 -0
- package/.llm/dialog-title.llm.md +41 -0
- package/.llm/dialog-trigger.llm.md +51 -0
- package/.llm/dialog.llm.md +113 -0
- package/.llm/drawer-close.llm.md +53 -0
- package/.llm/drawer-content.llm.md +58 -0
- package/.llm/drawer-description.llm.md +54 -0
- package/.llm/drawer-footer.llm.md +67 -0
- package/.llm/drawer-header.llm.md +60 -0
- package/.llm/drawer-overlay.llm.md +40 -0
- package/.llm/drawer-portal.llm.md +42 -0
- package/.llm/drawer-title.llm.md +51 -0
- package/.llm/drawer-trigger.llm.md +44 -0
- package/.llm/drawer.llm.md +194 -0
- package/.llm/dropdown-menu-checkbox-item.llm.md +111 -0
- package/.llm/dropdown-menu-content.llm.md +109 -0
- package/.llm/dropdown-menu-group.llm.md +38 -0
- package/.llm/dropdown-menu-item.llm.md +94 -0
- package/.llm/dropdown-menu-label.llm.md +66 -0
- package/.llm/dropdown-menu-portal.llm.md +32 -0
- package/.llm/dropdown-menu-radio-group.llm.md +73 -0
- package/.llm/dropdown-menu-radio-item.llm.md +92 -0
- package/.llm/dropdown-menu-separator.llm.md +55 -0
- package/.llm/dropdown-menu-shortcut.llm.md +74 -0
- package/.llm/dropdown-menu-sub-content.llm.md +80 -0
- package/.llm/dropdown-menu-sub-trigger.llm.md +84 -0
- package/.llm/dropdown-menu-sub.llm.md +74 -0
- package/.llm/dropdown-menu-trigger.llm.md +48 -0
- package/.llm/dropdown-menu.llm.md +120 -0
- package/.llm/empty-content.llm.md +103 -0
- package/.llm/empty-description.llm.md +70 -0
- package/.llm/empty-header.llm.md +64 -0
- package/.llm/empty-media.llm.md +81 -0
- package/.llm/empty-state.llm.md +174 -0
- package/.llm/empty-title.llm.md +54 -0
- package/.llm/empty.llm.md +158 -0
- package/.llm/field-content.llm.md +28 -0
- package/.llm/field-description.llm.md +28 -0
- package/.llm/field-error.llm.md +41 -0
- package/.llm/field-group.llm.md +84 -0
- package/.llm/field-label.llm.md +28 -0
- package/.llm/field-legend.llm.md +77 -0
- package/.llm/field-separator.llm.md +35 -0
- package/.llm/field-set.llm.md +80 -0
- package/.llm/field-title.llm.md +28 -0
- package/.llm/field.llm.md +35 -0
- package/.llm/hover-card-content.llm.md +167 -0
- package/.llm/hover-card-trigger.llm.md +65 -0
- package/.llm/hover-card.llm.md +121 -0
- package/.llm/input-group-addon.llm.md +91 -0
- package/.llm/input-group-button.llm.md +120 -0
- package/.llm/input-group-input.llm.md +145 -0
- package/.llm/input-group-text.llm.md +75 -0
- package/.llm/input-group-textarea.llm.md +157 -0
- package/.llm/input-group.llm.md +108 -0
- package/.llm/input.llm.md +319 -0
- package/.llm/item-actions.llm.md +77 -0
- package/.llm/item-content.llm.md +73 -0
- package/.llm/item-description.llm.md +61 -0
- package/.llm/item-footer.llm.md +68 -0
- package/.llm/item-group.llm.md +73 -0
- package/.llm/item-header.llm.md +66 -0
- package/.llm/item-media.llm.md +75 -0
- package/.llm/item-separator.llm.md +80 -0
- package/.llm/item-title.llm.md +59 -0
- package/.llm/item.llm.md +115 -0
- package/.llm/kbd-group.llm.md +71 -0
- package/.llm/kbd.llm.md +71 -0
- package/.llm/label.llm.md +145 -0
- package/.llm/menubar-checkbox-item.llm.md +66 -0
- package/.llm/menubar-content.llm.md +128 -0
- package/.llm/menubar-group.llm.md +40 -0
- package/.llm/menubar-item.llm.md +62 -0
- package/.llm/menubar-label.llm.md +40 -0
- package/.llm/menubar-menu.llm.md +32 -0
- package/.llm/menubar-portal.llm.md +38 -0
- package/.llm/menubar-radio-group.llm.md +39 -0
- package/.llm/menubar-radio-item.llm.md +59 -0
- package/.llm/menubar-separator.llm.md +35 -0
- package/.llm/menubar-shortcut.llm.md +37 -0
- package/.llm/menubar-sub-content.llm.md +127 -0
- package/.llm/menubar-sub-trigger.llm.md +51 -0
- package/.llm/menubar-sub.llm.md +53 -0
- package/.llm/menubar-trigger.llm.md +37 -0
- package/.llm/menubar.llm.md +115 -0
- package/.llm/navigation-menu-content.llm.md +116 -0
- package/.llm/navigation-menu-indicator.llm.md +68 -0
- package/.llm/navigation-menu-item.llm.md +62 -0
- package/.llm/navigation-menu-link.llm.md +109 -0
- package/.llm/navigation-menu-list.llm.md +52 -0
- package/.llm/navigation-menu-trigger-style.llm.md +22 -0
- package/.llm/navigation-menu-trigger.llm.md +57 -0
- package/.llm/navigation-menu-viewport.llm.md +51 -0
- package/.llm/navigation-menu.llm.md +184 -0
- package/.llm/overline.llm.md +51 -0
- package/.llm/page-title.llm.md +52 -0
- package/.llm/pagination-content.llm.md +60 -0
- package/.llm/pagination-ellipsis.llm.md +107 -0
- package/.llm/pagination-item.llm.md +59 -0
- package/.llm/pagination-link.llm.md +150 -0
- package/.llm/pagination-next.llm.md +115 -0
- package/.llm/pagination-previous.llm.md +115 -0
- package/.llm/pagination.llm.md +190 -0
- package/.llm/popover-anchor.llm.md +53 -0
- package/.llm/popover-content.llm.md +109 -0
- package/.llm/popover-trigger.llm.md +54 -0
- package/.llm/popover.llm.md +116 -0
- package/.llm/progress.llm.md +76 -0
- package/.llm/radio-group-indicator.llm.md +28 -0
- package/.llm/radio-group-item.llm.md +40 -0
- package/.llm/radio-group.llm.md +76 -0
- package/.llm/resizable-handle.llm.md +156 -0
- package/.llm/resizable-panel-group.llm.md +149 -0
- package/.llm/resizable-panel.llm.md +157 -0
- package/.llm/scroll-area-corner.llm.md +41 -0
- package/.llm/scroll-area-thumb.llm.md +39 -0
- package/.llm/scroll-area-viewport.llm.md +60 -0
- package/.llm/scroll-area.llm.md +125 -0
- package/.llm/scroll-bar.llm.md +78 -0
- package/.llm/sdk-items-registry.json +2984 -0
- package/.llm/section-title.llm.md +48 -0
- package/.llm/select-content.llm.md +139 -0
- package/.llm/select-group.llm.md +60 -0
- package/.llm/select-item.llm.md +75 -0
- package/.llm/select-label.llm.md +62 -0
- package/.llm/select-scroll-down-button.llm.md +45 -0
- package/.llm/select-scroll-up-button.llm.md +45 -0
- package/.llm/select-separator.llm.md +59 -0
- package/.llm/select-trigger.llm.md +66 -0
- package/.llm/select-value.llm.md +67 -0
- package/.llm/select.llm.md +159 -0
- package/.llm/separator.llm.md +129 -0
- package/.llm/sheet-close.llm.md +49 -0
- package/.llm/sheet-content.llm.md +115 -0
- package/.llm/sheet-description.llm.md +62 -0
- package/.llm/sheet-footer.llm.md +64 -0
- package/.llm/sheet-header.llm.md +52 -0
- package/.llm/sheet-title.llm.md +53 -0
- package/.llm/sheet-trigger.llm.md +46 -0
- package/.llm/sheet.llm.md +126 -0
- package/.llm/sidebar-content.llm.md +63 -0
- package/.llm/sidebar-footer.llm.md +50 -0
- package/.llm/sidebar-group-action.llm.md +60 -0
- package/.llm/sidebar-group-content.llm.md +64 -0
- package/.llm/sidebar-group-label.llm.md +53 -0
- package/.llm/sidebar-group.llm.md +56 -0
- package/.llm/sidebar-header.llm.md +67 -0
- package/.llm/sidebar-input.llm.md +50 -0
- package/.llm/sidebar-inset.llm.md +52 -0
- package/.llm/sidebar-menu-action.llm.md +84 -0
- package/.llm/sidebar-menu-badge.llm.md +60 -0
- package/.llm/sidebar-menu-button.llm.md +103 -0
- package/.llm/sidebar-menu-item.llm.md +75 -0
- package/.llm/sidebar-menu-skeleton.llm.md +76 -0
- package/.llm/sidebar-menu-sub-button.llm.md +85 -0
- package/.llm/sidebar-menu-sub-item.llm.md +54 -0
- package/.llm/sidebar-menu-sub.llm.md +74 -0
- package/.llm/sidebar-menu.llm.md +65 -0
- package/.llm/sidebar-provider.llm.md +79 -0
- package/.llm/sidebar-rail.llm.md +34 -0
- package/.llm/sidebar-separator.llm.md +57 -0
- package/.llm/sidebar-trigger.llm.md +49 -0
- package/.llm/sidebar.llm.md +129 -0
- package/.llm/skeleton.llm.md +134 -0
- package/.llm/slider.llm.md +173 -0
- package/.llm/spinner.llm.md +182 -0
- package/.llm/stack.llm.md +28 -0
- package/.llm/subsection-title.llm.md +46 -0
- package/.llm/switch.llm.md +76 -0
- package/.llm/table-body.llm.md +36 -0
- package/.llm/table-caption.llm.md +48 -0
- package/.llm/table-cell.llm.md +53 -0
- package/.llm/table-footer.llm.md +41 -0
- package/.llm/table-head.llm.md +69 -0
- package/.llm/table-header.llm.md +41 -0
- package/.llm/table-row.llm.md +42 -0
- package/.llm/table.llm.md +123 -0
- package/.llm/tabs-content.llm.md +47 -0
- package/.llm/tabs-list.llm.md +41 -0
- package/.llm/tabs-trigger.llm.md +47 -0
- package/.llm/tabs.llm.md +71 -0
- package/.llm/text-field.llm.md +327 -0
- package/.llm/textarea.llm.md +311 -0
- package/.llm/theme-preference.llm.md +25 -0
- package/.llm/theme-toggle.llm.md +57 -0
- package/.llm/theme.llm.md +14 -0
- package/.llm/toaster.llm.md +193 -0
- package/.llm/toggle-group-item.llm.md +59 -0
- package/.llm/toggle-group.llm.md +101 -0
- package/.llm/toggle.llm.md +40 -0
- package/.llm/tooltip-content.llm.md +185 -0
- package/.llm/tooltip-provider.llm.md +68 -0
- package/.llm/tooltip-trigger.llm.md +70 -0
- package/.llm/tooltip.llm.md +129 -0
- package/.llm/use-carousel.llm.md +55 -0
- package/.llm/use-command-state.llm.md +32 -0
- package/.llm/use-is-mobile.llm.md +73 -0
- package/.llm/use-sidebar.llm.md +61 -0
- package/dist/components/ui/scroll-area.d.ts +5 -5
- package/dist/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/components/ui/stack.d.ts.map +1 -1
- package/dist/components/ui/stories/scroll-area.stories.d.ts +1 -1
- package/dist/components/ui/stories/typography.stories.d.ts +8 -108
- package/dist/components/ui/stories/typography.stories.d.ts.map +1 -1
- package/dist/components/ui/theme-toggle.d.ts +0 -3
- package/dist/components/ui/theme-toggle.d.ts.map +1 -1
- package/dist/components/ui/theme.d.ts.map +1 -1
- package/dist/components/ui/typography.d.ts +211 -474
- package/dist/components/ui/typography.d.ts.map +1 -1
- package/dist/index.js +5160 -9875
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/components/ui/stack.tsx +3 -1
- package/src/components/ui/stories/typography.stories.tsx +261 -1512
- package/src/components/ui/theme-toggle.tsx +1 -3
- package/src/components/ui/theme.tsx +6 -1
- package/src/components/ui/typography.tsx +416 -1136
- package/src/styles/globals.css +57 -106
package/.llm/item.llm.md
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Item
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Item - Flexible container for displaying structured content A composable component for creating rich list items, cards, and data displays. Built with a slot-based architecture allowing flexible combinations of media, content, actions, headers, and footers. Supports rendering as any HTML element via the asChild prop for semantic flexibility (e.g., links, buttons).
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { Item } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<Item
|
|
13
|
+
variant={value}
|
|
14
|
+
size={value}
|
|
15
|
+
asChild={true}
|
|
16
|
+
className="value"
|
|
17
|
+
>
|
|
18
|
+
{/* Your content here */}
|
|
19
|
+
</Item>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Component Props
|
|
23
|
+
|
|
24
|
+
### variant
|
|
25
|
+
- **Type**: `"default" | "outline" | "muted"`
|
|
26
|
+
- **Required**: No
|
|
27
|
+
- **Description**: No description available
|
|
28
|
+
|
|
29
|
+
### size
|
|
30
|
+
- **Type**: `"default" | "sm"`
|
|
31
|
+
- **Required**: No
|
|
32
|
+
- **Description**: No description available
|
|
33
|
+
|
|
34
|
+
### asChild
|
|
35
|
+
- **Type**: `boolean`
|
|
36
|
+
- **Required**: No
|
|
37
|
+
- **Description**: No description available
|
|
38
|
+
|
|
39
|
+
### className
|
|
40
|
+
- **Type**: `string`
|
|
41
|
+
- **Required**: No
|
|
42
|
+
- **Description**: No description available
|
|
43
|
+
|
|
44
|
+
### children
|
|
45
|
+
- **Type**: `React.ReactNode`
|
|
46
|
+
- **Required**: No
|
|
47
|
+
- **Description**: No description available
|
|
48
|
+
|
|
49
|
+
## Examples
|
|
50
|
+
|
|
51
|
+
### Example 1
|
|
52
|
+
```tsx
|
|
53
|
+
// Basic item with icon and content
|
|
54
|
+
<Item>
|
|
55
|
+
<ItemMedia variant="icon">
|
|
56
|
+
<FileText />
|
|
57
|
+
</ItemMedia>
|
|
58
|
+
<ItemContent>
|
|
59
|
+
<ItemTitle>Document.pdf</ItemTitle>
|
|
60
|
+
<ItemDescription>Last modified today</ItemDescription>
|
|
61
|
+
</ItemContent>
|
|
62
|
+
</Item>
|
|
63
|
+
```
|
|
64
|
+
### Example 2
|
|
65
|
+
```tsx
|
|
66
|
+
// Item as a clickable link with asChild
|
|
67
|
+
<Item asChild>
|
|
68
|
+
<a href="/dashboard">
|
|
69
|
+
<ItemMedia variant="icon">
|
|
70
|
+
<Home />
|
|
71
|
+
</ItemMedia>
|
|
72
|
+
<ItemContent>
|
|
73
|
+
<ItemTitle>Dashboard</ItemTitle>
|
|
74
|
+
<ItemDescription>View your account overview</ItemDescription>
|
|
75
|
+
</ItemContent>
|
|
76
|
+
<ItemActions>
|
|
77
|
+
<ChevronRight />
|
|
78
|
+
</ItemActions>
|
|
79
|
+
</a>
|
|
80
|
+
</Item>
|
|
81
|
+
```
|
|
82
|
+
### Example 3
|
|
83
|
+
```tsx
|
|
84
|
+
// Rich item with header, footer, and actions
|
|
85
|
+
<Item variant="outline">
|
|
86
|
+
<ItemMedia variant="image">
|
|
87
|
+
<img src="/avatar.jpg" alt="User" />
|
|
88
|
+
</ItemMedia>
|
|
89
|
+
<ItemContent>
|
|
90
|
+
<ItemHeader>
|
|
91
|
+
<ItemTitle>John Doe</ItemTitle>
|
|
92
|
+
<Badge>Pro</Badge>
|
|
93
|
+
</ItemHeader>
|
|
94
|
+
<ItemDescription>Product Manager</ItemDescription>
|
|
95
|
+
<ItemFooter>
|
|
96
|
+
<span className="text-xs">Last active 5m ago</span>
|
|
97
|
+
</ItemFooter>
|
|
98
|
+
</ItemContent>
|
|
99
|
+
<ItemActions>
|
|
100
|
+
<Button size="sm">Message</Button>
|
|
101
|
+
</ItemActions>
|
|
102
|
+
</Item>
|
|
103
|
+
```
|
|
104
|
+
### Example 4
|
|
105
|
+
```tsx
|
|
106
|
+
// Small size variant for compact layouts
|
|
107
|
+
<Item size="sm">
|
|
108
|
+
<ItemContent>
|
|
109
|
+
<ItemTitle>Settings</ItemTitle>
|
|
110
|
+
</ItemContent>
|
|
111
|
+
<ItemActions>
|
|
112
|
+
<ChevronRight className="size-4" />
|
|
113
|
+
</ItemActions>
|
|
114
|
+
</Item>
|
|
115
|
+
```
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# KbdGroup
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
KbdGroup - Group multiple keyboard keys together A container component for grouping multiple Kbd components to represent complex keyboard shortcuts or key combinations. Automatically handles spacing between individual keys and provides semantic grouping. Useful for displaying shortcuts like "Ctrl+Shift+P" or "Cmd+K".
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { KbdGroup } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<KbdGroup
|
|
13
|
+
className="value"
|
|
14
|
+
>
|
|
15
|
+
{/* Your content here */}
|
|
16
|
+
</KbdGroup>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Component Props
|
|
20
|
+
|
|
21
|
+
### className
|
|
22
|
+
- **Type**: `string`
|
|
23
|
+
- **Required**: No
|
|
24
|
+
- **Description**: No description available
|
|
25
|
+
|
|
26
|
+
### children
|
|
27
|
+
- **Type**: `React.ReactNode`
|
|
28
|
+
- **Required**: No
|
|
29
|
+
- **Description**: No description available
|
|
30
|
+
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
### Example 1
|
|
34
|
+
```tsx
|
|
35
|
+
// Basic keyboard shortcut
|
|
36
|
+
<KbdGroup>
|
|
37
|
+
<Kbd>Ctrl</Kbd>
|
|
38
|
+
<Kbd>C</Kbd>
|
|
39
|
+
</KbdGroup>
|
|
40
|
+
```
|
|
41
|
+
### Example 2
|
|
42
|
+
```tsx
|
|
43
|
+
// Multiple modifier keys
|
|
44
|
+
<KbdGroup>
|
|
45
|
+
<Kbd>⌘</Kbd>
|
|
46
|
+
<Kbd>⇧</Kbd>
|
|
47
|
+
<Kbd>P</Kbd>
|
|
48
|
+
</KbdGroup>
|
|
49
|
+
```
|
|
50
|
+
### Example 3
|
|
51
|
+
```tsx
|
|
52
|
+
// With custom separators using text
|
|
53
|
+
<KbdGroup>
|
|
54
|
+
<Kbd>Ctrl</Kbd>
|
|
55
|
+
<span className="text-muted-foreground">+</span>
|
|
56
|
+
<Kbd>Alt</Kbd>
|
|
57
|
+
<span className="text-muted-foreground">+</span>
|
|
58
|
+
<Kbd>Delete</Kbd>
|
|
59
|
+
</KbdGroup>
|
|
60
|
+
```
|
|
61
|
+
### Example 4
|
|
62
|
+
```tsx
|
|
63
|
+
// In a command palette or menu item
|
|
64
|
+
<div className="flex items-center justify-between">
|
|
65
|
+
<span>Open command palette</span>
|
|
66
|
+
<KbdGroup>
|
|
67
|
+
<Kbd>⌘</Kbd>
|
|
68
|
+
<Kbd>K</Kbd>
|
|
69
|
+
</KbdGroup>
|
|
70
|
+
</div>
|
|
71
|
+
```
|
package/.llm/kbd.llm.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Kbd
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Kbd - Display keyboard input and shortcuts A semantic component for representing keyboard keys, shortcuts, and input in documentation, tutorials, and UI instructions. Uses the HTML kbd element with consistent styling for monospace text, subtle background, and appropriate sizing. Supports icons, text, and modifier keys like Cmd, Shift, Ctrl, and Alt.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { Kbd } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<Kbd
|
|
13
|
+
className="value"
|
|
14
|
+
>
|
|
15
|
+
{/* Your content here */}
|
|
16
|
+
</Kbd>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Component Props
|
|
20
|
+
|
|
21
|
+
### className
|
|
22
|
+
- **Type**: `string`
|
|
23
|
+
- **Required**: No
|
|
24
|
+
- **Description**: No description available
|
|
25
|
+
|
|
26
|
+
### children
|
|
27
|
+
- **Type**: `React.ReactNode`
|
|
28
|
+
- **Required**: No
|
|
29
|
+
- **Description**: No description available
|
|
30
|
+
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
### Example 1
|
|
34
|
+
```tsx
|
|
35
|
+
// Display a single keyboard key
|
|
36
|
+
<Kbd>K</Kbd>
|
|
37
|
+
```
|
|
38
|
+
### Example 2
|
|
39
|
+
```tsx
|
|
40
|
+
// Display keyboard shortcuts with modifiers
|
|
41
|
+
<KbdGroup>
|
|
42
|
+
<Kbd>⌘</Kbd>
|
|
43
|
+
<Kbd>K</Kbd>
|
|
44
|
+
</KbdGroup>
|
|
45
|
+
```
|
|
46
|
+
### Example 3
|
|
47
|
+
```tsx
|
|
48
|
+
// Display keyboard shortcuts in help text
|
|
49
|
+
<p>
|
|
50
|
+
Press <Kbd>Ctrl</Kbd> + <Kbd>S</Kbd> to save your work
|
|
51
|
+
</p>
|
|
52
|
+
```
|
|
53
|
+
### Example 4
|
|
54
|
+
```tsx
|
|
55
|
+
// Complex keyboard shortcut with multiple modifiers
|
|
56
|
+
<KbdGroup>
|
|
57
|
+
<Kbd>Ctrl</Kbd>
|
|
58
|
+
<Kbd>Shift</Kbd>
|
|
59
|
+
<Kbd>P</Kbd>
|
|
60
|
+
</KbdGroup>
|
|
61
|
+
```
|
|
62
|
+
### Example 5
|
|
63
|
+
```tsx
|
|
64
|
+
// Display keyboard shortcuts with icons
|
|
65
|
+
<KbdGroup>
|
|
66
|
+
<Kbd>
|
|
67
|
+
<Command className="h-3 w-3" />
|
|
68
|
+
</Kbd>
|
|
69
|
+
<Kbd>K</Kbd>
|
|
70
|
+
</KbdGroup>
|
|
71
|
+
```
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Label
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Label component for form controls with full accessibility support A fundamental form component that provides accessible text labels for form controls. Built on Radix UI Label primitive, it automatically associates with form elements and expands their clickable area for improved usability and accessibility. Essential for creating accessible forms that meet WCAG guidelines.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { Label } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<Label
|
|
13
|
+
className="value"
|
|
14
|
+
htmlFor="value"
|
|
15
|
+
asChild={true}
|
|
16
|
+
onClick={handleClick}
|
|
17
|
+
onKeyDown={handleKeyDown}
|
|
18
|
+
id="value"
|
|
19
|
+
style={value}
|
|
20
|
+
tabIndex={0}
|
|
21
|
+
"aria-label"="value"
|
|
22
|
+
"aria-describedby"="value"
|
|
23
|
+
"aria-invalid"={true}
|
|
24
|
+
"aria-required"={true}
|
|
25
|
+
>
|
|
26
|
+
{/* Your content here */}
|
|
27
|
+
</Label>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Component Props
|
|
31
|
+
|
|
32
|
+
### className
|
|
33
|
+
- **Type**: `string`
|
|
34
|
+
- **Required**: No
|
|
35
|
+
- **Description**: No description available
|
|
36
|
+
|
|
37
|
+
### htmlFor
|
|
38
|
+
- **Type**: `string`
|
|
39
|
+
- **Required**: No
|
|
40
|
+
- **Description**: No description available
|
|
41
|
+
|
|
42
|
+
### children
|
|
43
|
+
- **Type**: `React.ReactNode`
|
|
44
|
+
- **Required**: No
|
|
45
|
+
- **Description**: No description available
|
|
46
|
+
|
|
47
|
+
### asChild
|
|
48
|
+
- **Type**: `boolean`
|
|
49
|
+
- **Required**: No
|
|
50
|
+
- **Description**: No description available
|
|
51
|
+
|
|
52
|
+
### onClick
|
|
53
|
+
- **Type**: `React.MouseEventHandler<HTMLLabelElement>`
|
|
54
|
+
- **Required**: No
|
|
55
|
+
- **Description**: No description available
|
|
56
|
+
|
|
57
|
+
### onKeyDown
|
|
58
|
+
- **Type**: `React.KeyboardEventHandler<HTMLLabelElement>`
|
|
59
|
+
- **Required**: No
|
|
60
|
+
- **Description**: No description available
|
|
61
|
+
|
|
62
|
+
### id
|
|
63
|
+
- **Type**: `string`
|
|
64
|
+
- **Required**: No
|
|
65
|
+
- **Description**: No description available
|
|
66
|
+
|
|
67
|
+
### style
|
|
68
|
+
- **Type**: `React.CSSProperties`
|
|
69
|
+
- **Required**: No
|
|
70
|
+
- **Description**: No description available
|
|
71
|
+
|
|
72
|
+
### tabIndex
|
|
73
|
+
- **Type**: `number`
|
|
74
|
+
- **Required**: No
|
|
75
|
+
- **Description**: No description available
|
|
76
|
+
|
|
77
|
+
### "aria-label"
|
|
78
|
+
- **Type**: `string`
|
|
79
|
+
- **Required**: No
|
|
80
|
+
- **Description**: No description available
|
|
81
|
+
|
|
82
|
+
### "aria-describedby"
|
|
83
|
+
- **Type**: `string`
|
|
84
|
+
- **Required**: No
|
|
85
|
+
- **Description**: No description available
|
|
86
|
+
|
|
87
|
+
### "aria-invalid"
|
|
88
|
+
- **Type**: `boolean`
|
|
89
|
+
- **Required**: No
|
|
90
|
+
- **Description**: No description available
|
|
91
|
+
|
|
92
|
+
### "aria-required"
|
|
93
|
+
- **Type**: `boolean`
|
|
94
|
+
- **Required**: No
|
|
95
|
+
- **Description**: No description available
|
|
96
|
+
|
|
97
|
+
## Examples
|
|
98
|
+
|
|
99
|
+
### Example 1
|
|
100
|
+
```tsx
|
|
101
|
+
// Basic label with input
|
|
102
|
+
<div className="space-y-2">
|
|
103
|
+
<Label htmlFor="email">Email address</Label>
|
|
104
|
+
<Input id="email" type="email" placeholder="Enter your email" />
|
|
105
|
+
</div>
|
|
106
|
+
```
|
|
107
|
+
### Example 2
|
|
108
|
+
```tsx
|
|
109
|
+
// Required field with indicator
|
|
110
|
+
<Label htmlFor="username">
|
|
111
|
+
Username <span className="text-destructive">*</span>
|
|
112
|
+
</Label>
|
|
113
|
+
<Input id="username" required />
|
|
114
|
+
```
|
|
115
|
+
### Example 3
|
|
116
|
+
```tsx
|
|
117
|
+
// Checkbox with label
|
|
118
|
+
<div className="flex items-center space-x-2">
|
|
119
|
+
<Checkbox id="terms" />
|
|
120
|
+
<Label htmlFor="terms" className="text-sm font-normal">
|
|
121
|
+
I agree to the terms and conditions
|
|
122
|
+
</Label>
|
|
123
|
+
</div>
|
|
124
|
+
```
|
|
125
|
+
### Example 4
|
|
126
|
+
```tsx
|
|
127
|
+
// Label with helper text
|
|
128
|
+
<div className="space-y-1">
|
|
129
|
+
<Label htmlFor="password">Password</Label>
|
|
130
|
+
<Input id="password" type="password" />
|
|
131
|
+
<p className="text-sm text-muted-foreground">
|
|
132
|
+
Must be at least 8 characters long
|
|
133
|
+
</p>
|
|
134
|
+
</div>
|
|
135
|
+
```
|
|
136
|
+
### Example 5
|
|
137
|
+
```tsx
|
|
138
|
+
// Complex label with nested content
|
|
139
|
+
<Label htmlFor="plan" className="flex flex-col space-y-1 cursor-pointer">
|
|
140
|
+
<span className="font-semibold">Choose your plan</span>
|
|
141
|
+
<span className="text-sm text-muted-foreground">
|
|
142
|
+
You can upgrade or downgrade anytime
|
|
143
|
+
</span>
|
|
144
|
+
</Label>
|
|
145
|
+
```
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# MenubarCheckboxItem
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
A menu item that can be checked/unchecked. Perfect for toggle options like "Show Toolbar", "Enable Feature", or any binary setting that can be turned on/off. Displays a checkmark icon when checked.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { MenubarCheckboxItem } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<MenubarCheckboxItem
|
|
13
|
+
className="value"
|
|
14
|
+
checked={value}
|
|
15
|
+
onCheckedChange={handleCheckedChange}
|
|
16
|
+
disabled={true}
|
|
17
|
+
onSelect={handleSelect}
|
|
18
|
+
textValue="value"
|
|
19
|
+
>
|
|
20
|
+
{/* Your content here */}
|
|
21
|
+
</MenubarCheckboxItem>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Component Props
|
|
25
|
+
|
|
26
|
+
### className
|
|
27
|
+
- **Type**: `string`
|
|
28
|
+
- **Required**: No
|
|
29
|
+
- **Description**: Additional CSS classes to apply to the checkbox item
|
|
30
|
+
|
|
31
|
+
### checked
|
|
32
|
+
- **Type**: `boolean | "indeterminate"`
|
|
33
|
+
- **Required**: No
|
|
34
|
+
- **Description**: The controlled checked state of the item. Must be used in conjunction with onCheckedChange
|
|
35
|
+
|
|
36
|
+
### onCheckedChange
|
|
37
|
+
- **Type**: `(checked: boolean) => void`
|
|
38
|
+
- **Required**: No
|
|
39
|
+
- **Description**: Event handler called when the checked state changes
|
|
40
|
+
|
|
41
|
+
### disabled
|
|
42
|
+
- **Type**: `boolean`
|
|
43
|
+
- **Required**: No
|
|
44
|
+
- **Description**: When true, prevents the user from interacting with the item
|
|
45
|
+
|
|
46
|
+
### onSelect
|
|
47
|
+
- **Type**: `(event: Event) => void`
|
|
48
|
+
- **Required**: No
|
|
49
|
+
- **Description**: Event handler called when the user selects an item (via mouse or keyboard)
|
|
50
|
+
|
|
51
|
+
### textValue
|
|
52
|
+
- **Type**: `string`
|
|
53
|
+
- **Required**: No
|
|
54
|
+
- **Description**: Optional text used for typeahead purposes when content is complex
|
|
55
|
+
|
|
56
|
+
## Examples
|
|
57
|
+
|
|
58
|
+
```tsx
|
|
59
|
+
<MenubarCheckboxItem
|
|
60
|
+
checked={showLineNumbers}
|
|
61
|
+
onCheckedChange={setShowLineNumbers}
|
|
62
|
+
>
|
|
63
|
+
Show Line Numbers
|
|
64
|
+
</MenubarCheckboxItem>
|
|
65
|
+
```
|
|
66
|
+
/
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# MenubarContent
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Dropdown content container for menu items. Contains the actual menu items, separators, and submenus that appear when a MenubarTrigger is activated. Automatically portaled and positioned.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { MenubarContent } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<MenubarContent
|
|
13
|
+
className="value"
|
|
14
|
+
align={value}
|
|
15
|
+
alignOffset={0}
|
|
16
|
+
sideOffset={0}
|
|
17
|
+
side={value}
|
|
18
|
+
avoidCollisions={true}
|
|
19
|
+
collisionBoundary={value}
|
|
20
|
+
arrowPadding={0}
|
|
21
|
+
sticky={value}
|
|
22
|
+
hideWhenDetached={true}
|
|
23
|
+
loop={true}
|
|
24
|
+
onEscapeKeyDown={handleEscapeKeyDown}
|
|
25
|
+
onPointerDownOutside={handlePointerDownOutside}
|
|
26
|
+
onFocusOutside={handleFocusOutside}
|
|
27
|
+
onInteractOutside={handleInteractOutside}
|
|
28
|
+
forceMount={value}
|
|
29
|
+
/>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Component Props
|
|
33
|
+
|
|
34
|
+
### className
|
|
35
|
+
- **Type**: `string`
|
|
36
|
+
- **Required**: No
|
|
37
|
+
- **Description**: Additional CSS classes to apply to the content container
|
|
38
|
+
|
|
39
|
+
### align
|
|
40
|
+
- **Type**: `"start" | "center" | "end"`
|
|
41
|
+
- **Required**: No
|
|
42
|
+
- **Description**: The preferred alignment against the trigger. May change when collisions occur
|
|
43
|
+
|
|
44
|
+
### alignOffset
|
|
45
|
+
- **Type**: `number`
|
|
46
|
+
- **Required**: No
|
|
47
|
+
- **Description**: An offset in pixels from the "start" or "end" alignment options
|
|
48
|
+
|
|
49
|
+
### sideOffset
|
|
50
|
+
- **Type**: `number`
|
|
51
|
+
- **Required**: No
|
|
52
|
+
- **Description**: The distance in pixels from the trigger
|
|
53
|
+
|
|
54
|
+
### side
|
|
55
|
+
- **Type**: `"top" | "right" | "bottom" | "left"`
|
|
56
|
+
- **Required**: No
|
|
57
|
+
- **Description**: The preferred side of the trigger to render against when open
|
|
58
|
+
|
|
59
|
+
### avoidCollisions
|
|
60
|
+
- **Type**: `boolean`
|
|
61
|
+
- **Required**: No
|
|
62
|
+
- **Description**: When true, overrides the side and align preferences to prevent collisions with viewport edges
|
|
63
|
+
|
|
64
|
+
### collisionBoundary
|
|
65
|
+
- **Type**: `Element | null | Array<Element | null>`
|
|
66
|
+
- **Required**: No
|
|
67
|
+
- **Description**: The element used as the collision boundary for positioning
|
|
68
|
+
|
|
69
|
+
### arrowPadding
|
|
70
|
+
- **Type**: `number`
|
|
71
|
+
- **Required**: No
|
|
72
|
+
- **Description**: No description available
|
|
73
|
+
|
|
74
|
+
### sticky
|
|
75
|
+
- **Type**: `"partial" | "always"`
|
|
76
|
+
- **Required**: No
|
|
77
|
+
- **Description**: No description available
|
|
78
|
+
|
|
79
|
+
### hideWhenDetached
|
|
80
|
+
- **Type**: `boolean`
|
|
81
|
+
- **Required**: No
|
|
82
|
+
- **Description**: No description available
|
|
83
|
+
|
|
84
|
+
### loop
|
|
85
|
+
- **Type**: `boolean`
|
|
86
|
+
- **Required**: No
|
|
87
|
+
- **Description**: Whether keyboard navigation should loop from last item to first, and vice versa
|
|
88
|
+
|
|
89
|
+
### onEscapeKeyDown
|
|
90
|
+
- **Type**: `(event: KeyboardEvent) => void`
|
|
91
|
+
- **Required**: No
|
|
92
|
+
- **Description**: Event handler called when the escape key is down
|
|
93
|
+
|
|
94
|
+
### onPointerDownOutside
|
|
95
|
+
- **Type**: `(
|
|
96
|
+
event: CustomEvent<{ originalEvent: PointerEvent }>,
|
|
97
|
+
) => void`
|
|
98
|
+
- **Required**: No
|
|
99
|
+
- **Description**: Event handler called when a pointerdown event happens outside of the component
|
|
100
|
+
|
|
101
|
+
### onFocusOutside
|
|
102
|
+
- **Type**: `(event: CustomEvent<{ originalEvent: FocusEvent }>) => void`
|
|
103
|
+
- **Required**: No
|
|
104
|
+
- **Description**: Event handler called when focus moves outside of the component
|
|
105
|
+
|
|
106
|
+
### onInteractOutside
|
|
107
|
+
- **Type**: `(
|
|
108
|
+
event: CustomEvent<{ originalEvent: PointerEvent | FocusEvent }>,
|
|
109
|
+
) => void`
|
|
110
|
+
- **Required**: No
|
|
111
|
+
- **Description**: Event handler called when an interaction happens outside the component
|
|
112
|
+
|
|
113
|
+
### forceMount
|
|
114
|
+
- **Type**: `true`
|
|
115
|
+
- **Required**: No
|
|
116
|
+
- **Description**: No description available
|
|
117
|
+
|
|
118
|
+
## Examples
|
|
119
|
+
|
|
120
|
+
```tsx
|
|
121
|
+
<MenubarContent align="center" sideOffset={12}>
|
|
122
|
+
<MenubarItem>New File</MenubarItem>
|
|
123
|
+
<MenubarItem>Open File</MenubarItem>
|
|
124
|
+
<MenubarSeparator />
|
|
125
|
+
<MenubarItem>Exit</MenubarItem>
|
|
126
|
+
</MenubarContent>
|
|
127
|
+
```
|
|
128
|
+
/
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# MenubarGroup
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Groups related menu items together within MenubarContent. Used to create logical groupings of menu items, often separated by MenubarSeparator components. Helps organize complex menus.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { MenubarGroup } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<MenubarGroup
|
|
13
|
+
...props={value}
|
|
14
|
+
/>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Component Props
|
|
18
|
+
|
|
19
|
+
### ...props
|
|
20
|
+
- **Type**: `unknown`
|
|
21
|
+
- **Required**: Yes
|
|
22
|
+
- **Description**: No description available
|
|
23
|
+
|
|
24
|
+
## Examples
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
<MenubarContent>
|
|
28
|
+
<MenubarGroup>
|
|
29
|
+
<MenubarItem>Cut</MenubarItem>
|
|
30
|
+
<MenubarItem>Copy</MenubarItem>
|
|
31
|
+
<MenubarItem>Paste</MenubarItem>
|
|
32
|
+
</MenubarGroup>
|
|
33
|
+
<MenubarSeparator />
|
|
34
|
+
<MenubarGroup>
|
|
35
|
+
<MenubarItem>Find</MenubarItem>
|
|
36
|
+
<MenubarItem>Replace</MenubarItem>
|
|
37
|
+
</MenubarGroup>
|
|
38
|
+
</MenubarContent>
|
|
39
|
+
```
|
|
40
|
+
/
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# MenubarItem
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
A selectable menu item within MenubarContent. Can be enhanced with icons, keyboard shortcuts, and supports different variants including destructive actions. Automatically handles selection events and keyboard navigation.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { MenubarItem } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<MenubarItem
|
|
13
|
+
className="value"
|
|
14
|
+
inset={true}
|
|
15
|
+
variant={value}
|
|
16
|
+
disabled={true}
|
|
17
|
+
onSelect={handleSelect}
|
|
18
|
+
textValue="value"
|
|
19
|
+
/>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Component Props
|
|
23
|
+
|
|
24
|
+
### className
|
|
25
|
+
- **Type**: `string`
|
|
26
|
+
- **Required**: No
|
|
27
|
+
- **Description**: Additional CSS classes to apply to the menu item
|
|
28
|
+
|
|
29
|
+
### inset
|
|
30
|
+
- **Type**: `boolean`
|
|
31
|
+
- **Required**: No
|
|
32
|
+
- **Description**: Whether to add left padding for alignment with items that have icons
|
|
33
|
+
|
|
34
|
+
### variant
|
|
35
|
+
- **Type**: `"default" | "destructive"`
|
|
36
|
+
- **Required**: No
|
|
37
|
+
- **Description**: Visual variant of the menu item
|
|
38
|
+
|
|
39
|
+
### disabled
|
|
40
|
+
- **Type**: `boolean`
|
|
41
|
+
- **Required**: No
|
|
42
|
+
- **Description**: When true, prevents the user from interacting with the item
|
|
43
|
+
|
|
44
|
+
### onSelect
|
|
45
|
+
- **Type**: `(event: Event) => void`
|
|
46
|
+
- **Required**: No
|
|
47
|
+
- **Description**: Event handler called when the user selects an item (via mouse or keyboard)
|
|
48
|
+
|
|
49
|
+
### textValue
|
|
50
|
+
- **Type**: `string`
|
|
51
|
+
- **Required**: No
|
|
52
|
+
- **Description**: Optional text used for typeahead purposes when content is complex
|
|
53
|
+
|
|
54
|
+
## Examples
|
|
55
|
+
|
|
56
|
+
```tsx
|
|
57
|
+
<MenubarItem onSelect={() => deleteFile()} variant="destructive">
|
|
58
|
+
Delete File
|
|
59
|
+
<MenubarShortcut>⌫</MenubarShortcut>
|
|
60
|
+
</MenubarItem>
|
|
61
|
+
```
|
|
62
|
+
/
|