@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
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# ContextMenuSubTrigger
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
ContextMenuSubTrigger - Trigger element for opening sub-menus Menu item that opens a sub-menu on hover or focus. Automatically includes a chevron icon to indicate the presence of a sub-menu. Supports the same interaction patterns as regular menu items with additional sub-menu behavior.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { ContextMenuSubTrigger } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<ContextMenuSubTrigger
|
|
13
|
+
asChild={true}
|
|
14
|
+
disabled={true}
|
|
15
|
+
textValue="value"
|
|
16
|
+
inset={true}
|
|
17
|
+
className="value"
|
|
18
|
+
>
|
|
19
|
+
{/* Your content here */}
|
|
20
|
+
</ContextMenuSubTrigger>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Component Props
|
|
24
|
+
|
|
25
|
+
### asChild
|
|
26
|
+
- **Type**: `boolean`
|
|
27
|
+
- **Required**: No
|
|
28
|
+
- **Description**: Merges props with child element instead of rendering wrapper
|
|
29
|
+
|
|
30
|
+
### disabled
|
|
31
|
+
- **Type**: `boolean`
|
|
32
|
+
- **Required**: No
|
|
33
|
+
- **Description**: Prevents interaction and sub-menu opening
|
|
34
|
+
|
|
35
|
+
### textValue
|
|
36
|
+
- **Type**: `string`
|
|
37
|
+
- **Required**: No
|
|
38
|
+
- **Description**: Custom text for typeahead navigation
|
|
39
|
+
|
|
40
|
+
### inset
|
|
41
|
+
- **Type**: `boolean`
|
|
42
|
+
- **Required**: No
|
|
43
|
+
- **Description**: Whether to indent the trigger for proper visual alignment
|
|
44
|
+
|
|
45
|
+
### className
|
|
46
|
+
- **Type**: `string`
|
|
47
|
+
- **Required**: No
|
|
48
|
+
- **Description**: No description available
|
|
49
|
+
|
|
50
|
+
### children
|
|
51
|
+
- **Type**: `React.ReactNode`
|
|
52
|
+
- **Required**: Yes
|
|
53
|
+
- **Description**: Content of the trigger (text, icons, etc.)
|
|
54
|
+
|
|
55
|
+
## Examples
|
|
56
|
+
|
|
57
|
+
### Example 1
|
|
58
|
+
```tsx
|
|
59
|
+
<ContextMenuSubTrigger>
|
|
60
|
+
<Share className="mr-2 h-4 w-4" />
|
|
61
|
+
Share Options
|
|
62
|
+
</ContextMenuSubTrigger>
|
|
63
|
+
```
|
|
64
|
+
### Example 2
|
|
65
|
+
```tsx
|
|
66
|
+
// With inset alignment for icon consistency
|
|
67
|
+
<ContextMenuContent>
|
|
68
|
+
<ContextMenuItem inset>Regular Item</ContextMenuItem>
|
|
69
|
+
<ContextMenuSubTrigger inset>
|
|
70
|
+
More Actions
|
|
71
|
+
</ContextMenuSubTrigger>
|
|
72
|
+
</ContextMenuContent>
|
|
73
|
+
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# ContextMenuSub
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
ContextMenuSub - Container for sub-menu functionality Wraps a sub-menu trigger and its content to create nested menu structures. Enables hierarchical organization of menu items with proper state management for opening and closing sub-menus.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { ContextMenuSub } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<ContextMenuSub
|
|
13
|
+
open={true}
|
|
14
|
+
onOpenChange={handleOpenChange}
|
|
15
|
+
>
|
|
16
|
+
{/* Your content here */}
|
|
17
|
+
</ContextMenuSub>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Component Props
|
|
21
|
+
|
|
22
|
+
### open
|
|
23
|
+
- **Type**: `boolean`
|
|
24
|
+
- **Required**: No
|
|
25
|
+
- **Description**: Controlled open state of the sub-menu
|
|
26
|
+
|
|
27
|
+
### onOpenChange
|
|
28
|
+
- **Type**: `(open: boolean) => void`
|
|
29
|
+
- **Required**: No
|
|
30
|
+
- **Description**: Callback fired when sub-menu open state changes
|
|
31
|
+
|
|
32
|
+
### children
|
|
33
|
+
- **Type**: `React.ReactNode`
|
|
34
|
+
- **Required**: Yes
|
|
35
|
+
- **Description**: Sub-menu trigger and content components
|
|
36
|
+
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
### Example 1
|
|
40
|
+
```tsx
|
|
41
|
+
<ContextMenuSub>
|
|
42
|
+
<ContextMenuSubTrigger>Share</ContextMenuSubTrigger>
|
|
43
|
+
<ContextMenuSubContent>
|
|
44
|
+
<ContextMenuItem>Email</ContextMenuItem>
|
|
45
|
+
<ContextMenuItem>Copy Link</ContextMenuItem>
|
|
46
|
+
</ContextMenuSubContent>
|
|
47
|
+
</ContextMenuSub>
|
|
48
|
+
```
|
|
49
|
+
### Example 2
|
|
50
|
+
```tsx
|
|
51
|
+
// Controlled sub-menu
|
|
52
|
+
const [subOpen, setSubOpen] = useState(false)
|
|
53
|
+
<ContextMenuSub open={subOpen} onOpenChange={setSubOpen}>
|
|
54
|
+
<ContextMenuSubTrigger>More Actions</ContextMenuSubTrigger>
|
|
55
|
+
<ContextMenuSubContent>
|
|
56
|
+
<ContextMenuItem onClick={() => setSubOpen(false)}>
|
|
57
|
+
Archive
|
|
58
|
+
</ContextMenuItem>
|
|
59
|
+
</ContextMenuSubContent>
|
|
60
|
+
</ContextMenuSub>
|
|
61
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# ContextMenuTrigger
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
ContextMenuTrigger - The element that triggers the context menu Wraps any element to make it respond to right-click or long-press events. The trigger element should provide visual feedback about its interactive nature. Uses the `asChild` pattern to merge props with child elements for composition.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { ContextMenuTrigger } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<ContextMenuTrigger
|
|
13
|
+
asChild={true}
|
|
14
|
+
disabled={true}
|
|
15
|
+
>
|
|
16
|
+
{/* Your content here */}
|
|
17
|
+
</ContextMenuTrigger>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Component Props
|
|
21
|
+
|
|
22
|
+
### asChild
|
|
23
|
+
- **Type**: `boolean`
|
|
24
|
+
- **Required**: No
|
|
25
|
+
- **Description**: Merges props with child element instead of rendering wrapper
|
|
26
|
+
|
|
27
|
+
### disabled
|
|
28
|
+
- **Type**: `boolean`
|
|
29
|
+
- **Required**: No
|
|
30
|
+
- **Description**: Prevents context menu from opening when trigger is activated
|
|
31
|
+
|
|
32
|
+
### children
|
|
33
|
+
- **Type**: `React.ReactNode`
|
|
34
|
+
- **Required**: Yes
|
|
35
|
+
- **Description**: The element that should respond to right-click events
|
|
36
|
+
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
### Example 1
|
|
40
|
+
```tsx
|
|
41
|
+
<ContextMenuTrigger>
|
|
42
|
+
<Button variant="outline">Right-click me</Button>
|
|
43
|
+
</ContextMenuTrigger>
|
|
44
|
+
```
|
|
45
|
+
### Example 2
|
|
46
|
+
```tsx
|
|
47
|
+
// With asChild for direct prop merging
|
|
48
|
+
<ContextMenuTrigger asChild>
|
|
49
|
+
<div className="p-4 border rounded cursor-pointer">
|
|
50
|
+
Right-click target area
|
|
51
|
+
</div>
|
|
52
|
+
</ContextMenuTrigger>
|
|
53
|
+
```
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# ContextMenu
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
ContextMenu - A contextual menu that appears on right-click or long-press Context menus provide contextual actions for specific elements or areas. Built on Radix UI primitives, they appear when users right-click (or long-press on touch devices) and offer actions relevant to the clicked item or region.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { ContextMenu } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<ContextMenu
|
|
13
|
+
dir={value}
|
|
14
|
+
onOpenChange={handleOpenChange}
|
|
15
|
+
modal={true}
|
|
16
|
+
>
|
|
17
|
+
{/* Your content here */}
|
|
18
|
+
</ContextMenu>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Component Props
|
|
22
|
+
|
|
23
|
+
### dir
|
|
24
|
+
- **Type**: `"ltr" | "rtl"`
|
|
25
|
+
- **Required**: No
|
|
26
|
+
- **Description**: No description available
|
|
27
|
+
|
|
28
|
+
### onOpenChange
|
|
29
|
+
- **Type**: `(open: boolean) => void`
|
|
30
|
+
- **Required**: No
|
|
31
|
+
- **Description**: No description available
|
|
32
|
+
|
|
33
|
+
### modal
|
|
34
|
+
- **Type**: `boolean`
|
|
35
|
+
- **Required**: No
|
|
36
|
+
- **Description**: No description available
|
|
37
|
+
|
|
38
|
+
### children
|
|
39
|
+
- **Type**: `React.ReactNode`
|
|
40
|
+
- **Required**: No
|
|
41
|
+
- **Description**: No description available
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
|
|
45
|
+
### Example 1
|
|
46
|
+
```tsx
|
|
47
|
+
// Basic context menu with items
|
|
48
|
+
<ContextMenu>
|
|
49
|
+
<ContextMenuTrigger>
|
|
50
|
+
<div className="border rounded p-4">
|
|
51
|
+
Right-click here
|
|
52
|
+
</div>
|
|
53
|
+
</ContextMenuTrigger>
|
|
54
|
+
<ContextMenuContent>
|
|
55
|
+
<ContextMenuItem>Copy</ContextMenuItem>
|
|
56
|
+
<ContextMenuItem>Paste</ContextMenuItem>
|
|
57
|
+
<ContextMenuSeparator />
|
|
58
|
+
<ContextMenuItem variant="destructive">Delete</ContextMenuItem>
|
|
59
|
+
</ContextMenuContent>
|
|
60
|
+
</ContextMenu>
|
|
61
|
+
```
|
|
62
|
+
### Example 2
|
|
63
|
+
```tsx
|
|
64
|
+
// With sub-menus and shortcuts
|
|
65
|
+
<ContextMenu>
|
|
66
|
+
<ContextMenuTrigger>Right-click me</ContextMenuTrigger>
|
|
67
|
+
<ContextMenuContent>
|
|
68
|
+
<ContextMenuItem>
|
|
69
|
+
Edit <ContextMenuShortcut>⌘E</ContextMenuShortcut>
|
|
70
|
+
</ContextMenuItem>
|
|
71
|
+
<ContextMenuSub>
|
|
72
|
+
<ContextMenuSubTrigger>Share</ContextMenuSubTrigger>
|
|
73
|
+
<ContextMenuSubContent>
|
|
74
|
+
<ContextMenuItem>Email</ContextMenuItem>
|
|
75
|
+
<ContextMenuItem>Copy Link</ContextMenuItem>
|
|
76
|
+
</ContextMenuSubContent>
|
|
77
|
+
</ContextMenuSub>
|
|
78
|
+
</ContextMenuContent>
|
|
79
|
+
</ContextMenu>
|
|
80
|
+
```
|
|
81
|
+
### Example 3
|
|
82
|
+
```tsx
|
|
83
|
+
// With checkboxes and radio groups
|
|
84
|
+
<ContextMenu>
|
|
85
|
+
<ContextMenuTrigger>Settings Menu</ContextMenuTrigger>
|
|
86
|
+
<ContextMenuContent>
|
|
87
|
+
<ContextMenuLabel>Preferences</ContextMenuLabel>
|
|
88
|
+
<ContextMenuSeparator />
|
|
89
|
+
<ContextMenuCheckboxItem checked={showToolbar} onCheckedChange={setShowToolbar}>
|
|
90
|
+
Show Toolbar
|
|
91
|
+
</ContextMenuCheckboxItem>
|
|
92
|
+
<ContextMenuCheckboxItem checked={showSidebar} onCheckedChange={setShowSidebar}>
|
|
93
|
+
Show Sidebar
|
|
94
|
+
</ContextMenuCheckboxItem>
|
|
95
|
+
<ContextMenuSeparator />
|
|
96
|
+
<ContextMenuRadioGroup value={theme} onValueChange={setTheme}>
|
|
97
|
+
<ContextMenuRadioItem value="light">Light Theme</ContextMenuRadioItem>
|
|
98
|
+
<ContextMenuRadioItem value="dark">Dark Theme</ContextMenuRadioItem>
|
|
99
|
+
<ContextMenuRadioItem value="system">System Theme</ContextMenuRadioItem>
|
|
100
|
+
</ContextMenuRadioGroup>
|
|
101
|
+
</ContextMenuContent>
|
|
102
|
+
</ContextMenu>
|
|
103
|
+
```
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# DatePicker
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
DatePicker - A comprehensive date selection component with popover calendar interface A polished date selection component that combines an accessible trigger button with a full-featured calendar popover. Built on Radix UI Popover and Calendar primitives with shadcn/ui styling, providing intuitive date selection with proper accessibility, keyboard navigation, automatic positioning, and internationalization support. The component handles both controlled and uncontrolled usage patterns, integrates seamlessly with forms and validation systems, and provides consistent date formatting using date-fns. The popover automatically positions itself to stay within viewport bounds and includes smooth animations for a polished user experience.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { DatePicker } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<DatePicker
|
|
13
|
+
date={value}
|
|
14
|
+
onDateChange={handleDateChange}
|
|
15
|
+
placeholder="value"
|
|
16
|
+
disabled={true}
|
|
17
|
+
className="value"
|
|
18
|
+
/>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Component Props
|
|
22
|
+
|
|
23
|
+
### date
|
|
24
|
+
- **Type**: `Date`
|
|
25
|
+
- **Required**: No
|
|
26
|
+
- **Description**: No description available
|
|
27
|
+
|
|
28
|
+
### onDateChange
|
|
29
|
+
- **Type**: `(date: Date | undefined) => void`
|
|
30
|
+
- **Required**: No
|
|
31
|
+
- **Description**: No description available
|
|
32
|
+
|
|
33
|
+
### placeholder
|
|
34
|
+
- **Type**: `string`
|
|
35
|
+
- **Required**: No
|
|
36
|
+
- **Description**: No description available
|
|
37
|
+
|
|
38
|
+
### disabled
|
|
39
|
+
- **Type**: `boolean`
|
|
40
|
+
- **Required**: No
|
|
41
|
+
- **Description**: No description available
|
|
42
|
+
|
|
43
|
+
### className
|
|
44
|
+
- **Type**: `string`
|
|
45
|
+
- **Required**: No
|
|
46
|
+
- **Description**: No description available
|
|
47
|
+
|
|
48
|
+
## Examples
|
|
49
|
+
|
|
50
|
+
### Example 1
|
|
51
|
+
```tsx
|
|
52
|
+
// Basic controlled date picker
|
|
53
|
+
const [date, setDate] = useState<Date>();
|
|
54
|
+
<DatePicker
|
|
55
|
+
date={date}
|
|
56
|
+
onDateChange={setDate}
|
|
57
|
+
placeholder="Select date"
|
|
58
|
+
/>
|
|
59
|
+
```
|
|
60
|
+
### Example 2
|
|
61
|
+
```tsx
|
|
62
|
+
// Date picker for forms with validation
|
|
63
|
+
const [birthDate, setBirthDate] = useState<Date>();
|
|
64
|
+
<DatePicker
|
|
65
|
+
date={birthDate}
|
|
66
|
+
onDateChange={setBirthDate}
|
|
67
|
+
placeholder="Select birth date"
|
|
68
|
+
className="w-[280px]"
|
|
69
|
+
disabled={isSubmitting}
|
|
70
|
+
/>
|
|
71
|
+
```
|
|
72
|
+
### Example 3
|
|
73
|
+
```tsx
|
|
74
|
+
// Date range start/end picker
|
|
75
|
+
<div className="flex gap-2 items-center">
|
|
76
|
+
<DatePicker
|
|
77
|
+
date={startDate}
|
|
78
|
+
onDateChange={setStartDate}
|
|
79
|
+
placeholder="Start date"
|
|
80
|
+
className="w-[180px]"
|
|
81
|
+
/>
|
|
82
|
+
<span>to</span>
|
|
83
|
+
<DatePicker
|
|
84
|
+
date={endDate}
|
|
85
|
+
onDateChange={setEndDate}
|
|
86
|
+
placeholder="End date"
|
|
87
|
+
className="w-[180px]"
|
|
88
|
+
/>
|
|
89
|
+
</div>
|
|
90
|
+
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# DialogClose
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
DialogClose - A close button that dismisses the dialog Can be placed anywhere within DialogContent to provide a close action. Typically used for custom close buttons in addition to the default X button. Automatically closes the dialog when activated and returns focus to the trigger.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { DialogClose } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<DialogClose
|
|
13
|
+
asChild={true}
|
|
14
|
+
className="value"
|
|
15
|
+
>
|
|
16
|
+
{/* Your content here */}
|
|
17
|
+
</DialogClose>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Component Props
|
|
21
|
+
|
|
22
|
+
### asChild
|
|
23
|
+
- **Type**: `boolean`
|
|
24
|
+
- **Required**: No
|
|
25
|
+
- **Description**: No description available
|
|
26
|
+
|
|
27
|
+
### className
|
|
28
|
+
- **Type**: `string`
|
|
29
|
+
- **Required**: No
|
|
30
|
+
- **Description**: No description available
|
|
31
|
+
|
|
32
|
+
### children
|
|
33
|
+
- **Type**: `React.ReactNode`
|
|
34
|
+
- **Required**: No
|
|
35
|
+
- **Description**: No description available
|
|
36
|
+
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
### Example 1
|
|
40
|
+
```tsx
|
|
41
|
+
<DialogClose asChild>
|
|
42
|
+
<Button variant="outline">Cancel</Button>
|
|
43
|
+
</DialogClose>
|
|
44
|
+
```
|
|
45
|
+
### Example 2
|
|
46
|
+
```tsx
|
|
47
|
+
// Direct button without asChild
|
|
48
|
+
<DialogClose className="close-button">
|
|
49
|
+
Close Dialog
|
|
50
|
+
</DialogClose>
|
|
51
|
+
```
|
|
52
|
+
### Example 3
|
|
53
|
+
```tsx
|
|
54
|
+
// In footer with multiple actions
|
|
55
|
+
<DialogFooter>
|
|
56
|
+
<DialogClose asChild>
|
|
57
|
+
<Button variant="outline">Cancel</Button>
|
|
58
|
+
</DialogClose>
|
|
59
|
+
<Button type="submit">Save</Button>
|
|
60
|
+
</DialogFooter>
|
|
61
|
+
```
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# DialogContent
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
DialogContent - The main content container for the dialog The primary container for dialog content that automatically includes the overlay and portal. Provides the visual dialog box with animations, positioning, and focus management. Includes a close button (X) by default which can be hidden using the showCloseButton prop.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { DialogContent } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<DialogContent
|
|
13
|
+
asChild={true}
|
|
14
|
+
forceMount={true}
|
|
15
|
+
onOpenAutoFocus={handleOpenAutoFocus}
|
|
16
|
+
onCloseAutoFocus={handleCloseAutoFocus}
|
|
17
|
+
onEscapeKeyDown={handleEscapeKeyDown}
|
|
18
|
+
onPointerDownOutside={handlePointerDownOutside}
|
|
19
|
+
onInteractOutside={handleInteractOutside}
|
|
20
|
+
showCloseButton={true}
|
|
21
|
+
className="value"
|
|
22
|
+
>
|
|
23
|
+
{/* Your content here */}
|
|
24
|
+
</DialogContent>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Component Props
|
|
28
|
+
|
|
29
|
+
### asChild
|
|
30
|
+
- **Type**: `boolean`
|
|
31
|
+
- **Required**: No
|
|
32
|
+
- **Description**: No description available
|
|
33
|
+
|
|
34
|
+
### forceMount
|
|
35
|
+
- **Type**: `boolean`
|
|
36
|
+
- **Required**: No
|
|
37
|
+
- **Description**: No description available
|
|
38
|
+
|
|
39
|
+
### onOpenAutoFocus
|
|
40
|
+
- **Type**: `(event: Event) => void`
|
|
41
|
+
- **Required**: No
|
|
42
|
+
- **Description**: No description available
|
|
43
|
+
|
|
44
|
+
### onCloseAutoFocus
|
|
45
|
+
- **Type**: `(event: Event) => void`
|
|
46
|
+
- **Required**: No
|
|
47
|
+
- **Description**: No description available
|
|
48
|
+
|
|
49
|
+
### onEscapeKeyDown
|
|
50
|
+
- **Type**: `(event: KeyboardEvent) => void`
|
|
51
|
+
- **Required**: No
|
|
52
|
+
- **Description**: No description available
|
|
53
|
+
|
|
54
|
+
### onPointerDownOutside
|
|
55
|
+
- **Type**: `(event: PointerEvent) => void`
|
|
56
|
+
- **Required**: No
|
|
57
|
+
- **Description**: No description available
|
|
58
|
+
|
|
59
|
+
### onInteractOutside
|
|
60
|
+
- **Type**: `(
|
|
61
|
+
event: React.FocusEvent | MouseEvent | TouchEvent,
|
|
62
|
+
) => void`
|
|
63
|
+
- **Required**: No
|
|
64
|
+
- **Description**: No description available
|
|
65
|
+
|
|
66
|
+
### showCloseButton
|
|
67
|
+
- **Type**: `boolean`
|
|
68
|
+
- **Required**: No
|
|
69
|
+
- **Description**: Whether to show the X close button in top-right corner (default: true)
|
|
70
|
+
|
|
71
|
+
### className
|
|
72
|
+
- **Type**: `string`
|
|
73
|
+
- **Required**: No
|
|
74
|
+
- **Description**: Additional CSS classes to apply to the content container
|
|
75
|
+
|
|
76
|
+
### children
|
|
77
|
+
- **Type**: `React.ReactNode`
|
|
78
|
+
- **Required**: No
|
|
79
|
+
- **Description**: Dialog content including header, body, and footer elements
|
|
80
|
+
|
|
81
|
+
## Examples
|
|
82
|
+
|
|
83
|
+
### Example 1
|
|
84
|
+
```tsx
|
|
85
|
+
// Standard content with header and footer
|
|
86
|
+
<DialogContent>
|
|
87
|
+
<DialogHeader>
|
|
88
|
+
<DialogTitle>Dialog Title</DialogTitle>
|
|
89
|
+
<DialogDescription>
|
|
90
|
+
Detailed description of the dialog's purpose
|
|
91
|
+
</DialogDescription>
|
|
92
|
+
</DialogHeader>
|
|
93
|
+
<div className="py-4">
|
|
94
|
+
Main dialog content goes here
|
|
95
|
+
</div>
|
|
96
|
+
<DialogFooter>
|
|
97
|
+
<Button variant="outline">Cancel</Button>
|
|
98
|
+
<Button>Confirm</Button>
|
|
99
|
+
</DialogFooter>
|
|
100
|
+
</DialogContent>
|
|
101
|
+
```
|
|
102
|
+
### Example 2
|
|
103
|
+
```tsx
|
|
104
|
+
// Custom sizing and scrollable content
|
|
105
|
+
<DialogContent className="sm:max-w-[425px] max-h-[80vh] overflow-y-auto">
|
|
106
|
+
<DialogHeader>
|
|
107
|
+
<DialogTitle>Long Content</DialogTitle>
|
|
108
|
+
</DialogHeader>
|
|
109
|
+
<div className="space-y-4">
|
|
110
|
+
// Long scrollable content
|
|
111
|
+
</div>
|
|
112
|
+
</DialogContent>
|
|
113
|
+
```
|
|
114
|
+
### Example 3
|
|
115
|
+
```tsx
|
|
116
|
+
// Without default close button
|
|
117
|
+
<DialogContent showCloseButton={false}>
|
|
118
|
+
<DialogHeader>
|
|
119
|
+
<DialogTitle>Custom Close</DialogTitle>
|
|
120
|
+
</DialogHeader>
|
|
121
|
+
<div>Content without X button</div>
|
|
122
|
+
<DialogFooter>
|
|
123
|
+
<DialogClose asChild>
|
|
124
|
+
<Button>Close</Button>
|
|
125
|
+
</DialogClose>
|
|
126
|
+
</DialogFooter>
|
|
127
|
+
</DialogContent>
|
|
128
|
+
```
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# DialogDescription
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
DialogDescription - Supplementary description for the dialog Provides additional context or instructions for the dialog content. Helps users understand what action they're about to take.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { DialogDescription } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<DialogDescription
|
|
13
|
+
asChild={true}
|
|
14
|
+
className="value"
|
|
15
|
+
>
|
|
16
|
+
{/* Your content here */}
|
|
17
|
+
</DialogDescription>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Component Props
|
|
21
|
+
|
|
22
|
+
### asChild
|
|
23
|
+
- **Type**: `boolean`
|
|
24
|
+
- **Required**: No
|
|
25
|
+
- **Description**: No description available
|
|
26
|
+
|
|
27
|
+
### className
|
|
28
|
+
- **Type**: `string`
|
|
29
|
+
- **Required**: No
|
|
30
|
+
- **Description**: No description available
|
|
31
|
+
|
|
32
|
+
### children
|
|
33
|
+
- **Type**: `React.ReactNode`
|
|
34
|
+
- **Required**: No
|
|
35
|
+
- **Description**: No description available
|
|
36
|
+
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
<DialogDescription>
|
|
41
|
+
This action cannot be undone. This will permanently delete your
|
|
42
|
+
account and remove your data from our servers.
|
|
43
|
+
</DialogDescription>
|
|
44
|
+
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# DialogFooter
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
DialogFooter - Container for dialog action buttons Typically contains action buttons like Save, Cancel, or Submit. Automatically handles responsive layout with proper button alignment.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { DialogFooter } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<DialogFooter
|
|
13
|
+
className="value"
|
|
14
|
+
>
|
|
15
|
+
{/* Your content here */}
|
|
16
|
+
</DialogFooter>
|
|
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
|
+
```tsx
|
|
34
|
+
<DialogFooter>
|
|
35
|
+
<Button variant="outline">Cancel</Button>
|
|
36
|
+
<Button type="submit">Save changes</Button>
|
|
37
|
+
</DialogFooter>
|
|
38
|
+
```
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# DialogHeader
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
DialogHeader - Container for dialog title and description Groups the dialog's title and description at the top of the dialog content. Provides consistent spacing and alignment for header elements.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { DialogHeader } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<DialogHeader
|
|
13
|
+
className="value"
|
|
14
|
+
>
|
|
15
|
+
{/* Your content here */}
|
|
16
|
+
</DialogHeader>
|
|
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
|
+
```tsx
|
|
34
|
+
<DialogHeader>
|
|
35
|
+
<DialogTitle>Edit profile</DialogTitle>
|
|
36
|
+
<DialogDescription>
|
|
37
|
+
Make changes to your profile here. Click save when you're done.
|
|
38
|
+
</DialogDescription>
|
|
39
|
+
</DialogHeader>
|
|
40
|
+
```
|