@neynar/ui 0.1.2 → 0.2.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/dist/components/ui/stack.d.ts +2 -1
- package/dist/components/ui/stack.d.ts.map +1 -1
- package/dist/components/ui/stories/stack.stories.d.ts +1 -1
- package/dist/components/ui/stories/typography.stories.d.ts.map +1 -1
- package/dist/components/ui/typography.d.ts +41 -40
- package/dist/components/ui/typography.d.ts.map +1 -1
- package/dist/index.js +26807 -18714
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/llm/components/typography.md +92 -88
- package/llm-docs/a.llm.md +145 -0
- package/llm-docs/accordion-content.llm.md +67 -0
- package/llm-docs/accordion-item.llm.md +61 -0
- package/llm-docs/accordion-trigger.llm.md +69 -0
- package/llm-docs/accordion.llm.md +88 -0
- package/llm-docs/alert-description.llm.md +78 -0
- package/llm-docs/alert-dialog-action.llm.md +51 -0
- package/llm-docs/alert-dialog-cancel.llm.md +48 -0
- package/llm-docs/alert-dialog-content.llm.md +88 -0
- package/llm-docs/alert-dialog-description.llm.md +53 -0
- package/llm-docs/alert-dialog-footer.llm.md +41 -0
- package/llm-docs/alert-dialog-header.llm.md +39 -0
- package/llm-docs/alert-dialog-overlay.llm.md +44 -0
- package/llm-docs/alert-dialog-portal.llm.md +41 -0
- package/llm-docs/alert-dialog-title.llm.md +46 -0
- package/llm-docs/alert-dialog-trigger.llm.md +40 -0
- package/llm-docs/alert-dialog.llm.md +80 -0
- package/llm-docs/alert-title.llm.md +48 -0
- package/llm-docs/alert.llm.md +92 -0
- package/llm-docs/aspect-ratio.llm.md +41 -0
- package/llm-docs/avatar-fallback.llm.md +41 -0
- package/llm-docs/avatar-image.llm.md +48 -0
- package/llm-docs/avatar.llm.md +35 -0
- package/llm-docs/badge.llm.md +108 -0
- package/llm-docs/blockquote.llm.md +122 -0
- package/llm-docs/breadcrumb-ellipsis.llm.md +73 -0
- package/llm-docs/breadcrumb-item.llm.md +53 -0
- package/llm-docs/breadcrumb-link.llm.md +84 -0
- package/llm-docs/breadcrumb-list.llm.md +54 -0
- package/llm-docs/breadcrumb-page.llm.md +52 -0
- package/llm-docs/breadcrumb-separator.llm.md +60 -0
- package/llm-docs/breadcrumb.llm.md +110 -0
- package/llm-docs/button.llm.md +281 -0
- package/llm-docs/calendar-day-button.llm.md +57 -0
- package/llm-docs/calendar.llm.md +340 -0
- package/llm-docs/card-action.llm.md +64 -0
- package/llm-docs/card-content.llm.md +48 -0
- package/llm-docs/card-description.llm.md +46 -0
- package/llm-docs/card-footer.llm.md +56 -0
- package/llm-docs/card-header.llm.md +53 -0
- package/llm-docs/card-title.llm.md +43 -0
- package/llm-docs/card.llm.md +100 -0
- package/llm-docs/carousel-content.llm.md +77 -0
- package/llm-docs/carousel-item.llm.md +96 -0
- package/llm-docs/carousel-next.llm.md +95 -0
- package/llm-docs/carousel-previous.llm.md +95 -0
- package/llm-docs/carousel.llm.md +211 -0
- package/llm-docs/chart-config.llm.md +71 -0
- package/llm-docs/chart-container.llm.md +148 -0
- package/llm-docs/chart-legend-content.llm.md +85 -0
- package/llm-docs/chart-legend.llm.md +144 -0
- package/llm-docs/chart-style.llm.md +28 -0
- package/llm-docs/chart-tooltip-content.llm.md +149 -0
- package/llm-docs/chart-tooltip.llm.md +184 -0
- package/llm-docs/checkbox.llm.md +100 -0
- package/llm-docs/cn.llm.md +46 -0
- package/llm-docs/code.llm.md +108 -0
- package/llm-docs/collapsible-content.llm.md +109 -0
- package/llm-docs/collapsible-trigger.llm.md +75 -0
- package/llm-docs/collapsible.llm.md +109 -0
- package/llm-docs/combobox-option.llm.md +53 -0
- package/llm-docs/combobox.llm.md +208 -0
- package/llm-docs/command-dialog.llm.md +112 -0
- package/llm-docs/command-empty.llm.md +63 -0
- package/llm-docs/command-group.llm.md +83 -0
- package/llm-docs/command-input.llm.md +82 -0
- package/llm-docs/command-item.llm.md +97 -0
- package/llm-docs/command-list.llm.md +53 -0
- package/llm-docs/command-loading.llm.md +48 -0
- package/llm-docs/command-separator.llm.md +44 -0
- package/llm-docs/command-shortcut.llm.md +63 -0
- package/llm-docs/command.llm.md +147 -0
- package/llm-docs/container.llm.md +236 -0
- package/llm-docs/context-menu-checkbox-item.llm.md +97 -0
- package/llm-docs/context-menu-content.llm.md +91 -0
- package/llm-docs/context-menu-group.llm.md +61 -0
- package/llm-docs/context-menu-item.llm.md +94 -0
- package/llm-docs/context-menu-label.llm.md +60 -0
- package/llm-docs/context-menu-portal.llm.md +49 -0
- package/llm-docs/context-menu-radio-group.llm.md +66 -0
- package/llm-docs/context-menu-radio-item.llm.md +76 -0
- package/llm-docs/context-menu-separator.llm.md +51 -0
- package/llm-docs/context-menu-shortcut.llm.md +57 -0
- package/llm-docs/context-menu-sub-content.llm.md +90 -0
- package/llm-docs/context-menu-sub-trigger.llm.md +73 -0
- package/llm-docs/context-menu-sub.llm.md +61 -0
- package/llm-docs/context-menu-trigger.llm.md +53 -0
- package/llm-docs/context-menu.llm.md +103 -0
- package/llm-docs/date-picker.llm.md +90 -0
- package/llm-docs/dialog-close.llm.md +61 -0
- package/llm-docs/dialog-content.llm.md +128 -0
- package/llm-docs/dialog-description.llm.md +44 -0
- package/llm-docs/dialog-footer.llm.md +38 -0
- package/llm-docs/dialog-header.llm.md +40 -0
- package/llm-docs/dialog-overlay.llm.md +57 -0
- package/llm-docs/dialog-portal.llm.md +47 -0
- package/llm-docs/dialog-title.llm.md +41 -0
- package/llm-docs/dialog-trigger.llm.md +51 -0
- package/llm-docs/dialog.llm.md +113 -0
- package/llm-docs/drawer-close.llm.md +53 -0
- package/llm-docs/drawer-content.llm.md +58 -0
- package/llm-docs/drawer-description.llm.md +54 -0
- package/llm-docs/drawer-footer.llm.md +67 -0
- package/llm-docs/drawer-header.llm.md +60 -0
- package/llm-docs/drawer-overlay.llm.md +40 -0
- package/llm-docs/drawer-portal.llm.md +42 -0
- package/llm-docs/drawer-title.llm.md +51 -0
- package/llm-docs/drawer-trigger.llm.md +44 -0
- package/llm-docs/drawer.llm.md +194 -0
- package/llm-docs/dropdown-menu-checkbox-item.llm.md +111 -0
- package/llm-docs/dropdown-menu-content.llm.md +109 -0
- package/llm-docs/dropdown-menu-group.llm.md +38 -0
- package/llm-docs/dropdown-menu-item.llm.md +94 -0
- package/llm-docs/dropdown-menu-label.llm.md +66 -0
- package/llm-docs/dropdown-menu-portal.llm.md +32 -0
- package/llm-docs/dropdown-menu-radio-group.llm.md +73 -0
- package/llm-docs/dropdown-menu-radio-item.llm.md +92 -0
- package/llm-docs/dropdown-menu-separator.llm.md +55 -0
- package/llm-docs/dropdown-menu-shortcut.llm.md +74 -0
- package/llm-docs/dropdown-menu-sub-content.llm.md +80 -0
- package/llm-docs/dropdown-menu-sub-trigger.llm.md +84 -0
- package/llm-docs/dropdown-menu-sub.llm.md +74 -0
- package/llm-docs/dropdown-menu-trigger.llm.md +48 -0
- package/llm-docs/dropdown-menu.llm.md +120 -0
- package/llm-docs/empty-state.llm.md +174 -0
- package/llm-docs/h1.llm.md +113 -0
- package/llm-docs/h2.llm.md +113 -0
- package/llm-docs/h3.llm.md +111 -0
- package/llm-docs/h4.llm.md +109 -0
- package/llm-docs/h5.llm.md +110 -0
- package/llm-docs/h6.llm.md +110 -0
- package/llm-docs/hover-card-content.llm.md +167 -0
- package/llm-docs/hover-card-trigger.llm.md +65 -0
- package/llm-docs/hover-card.llm.md +121 -0
- package/llm-docs/input.llm.md +319 -0
- package/llm-docs/label.llm.md +145 -0
- package/llm-docs/lead.llm.md +119 -0
- package/llm-docs/menubar-checkbox-item.llm.md +66 -0
- package/llm-docs/menubar-content.llm.md +128 -0
- package/llm-docs/menubar-group.llm.md +40 -0
- package/llm-docs/menubar-item.llm.md +62 -0
- package/llm-docs/menubar-label.llm.md +40 -0
- package/llm-docs/menubar-menu.llm.md +32 -0
- package/llm-docs/menubar-portal.llm.md +38 -0
- package/llm-docs/menubar-radio-group.llm.md +39 -0
- package/llm-docs/menubar-radio-item.llm.md +59 -0
- package/llm-docs/menubar-separator.llm.md +35 -0
- package/llm-docs/menubar-shortcut.llm.md +37 -0
- package/llm-docs/menubar-sub-content.llm.md +127 -0
- package/llm-docs/menubar-sub-trigger.llm.md +51 -0
- package/llm-docs/menubar-sub.llm.md +53 -0
- package/llm-docs/menubar-trigger.llm.md +37 -0
- package/llm-docs/menubar.llm.md +115 -0
- package/llm-docs/navigation-menu-content.llm.md +116 -0
- package/llm-docs/navigation-menu-indicator.llm.md +68 -0
- package/llm-docs/navigation-menu-item.llm.md +62 -0
- package/llm-docs/navigation-menu-link.llm.md +109 -0
- package/llm-docs/navigation-menu-list.llm.md +52 -0
- package/llm-docs/navigation-menu-trigger-style.llm.md +22 -0
- package/llm-docs/navigation-menu-trigger.llm.md +57 -0
- package/llm-docs/navigation-menu-viewport.llm.md +51 -0
- package/llm-docs/navigation-menu.llm.md +184 -0
- package/llm-docs/p.llm.md +115 -0
- package/llm-docs/pagination-content.llm.md +60 -0
- package/llm-docs/pagination-ellipsis.llm.md +107 -0
- package/llm-docs/pagination-item.llm.md +59 -0
- package/llm-docs/pagination-link.llm.md +150 -0
- package/llm-docs/pagination-next.llm.md +115 -0
- package/llm-docs/pagination-previous.llm.md +115 -0
- package/llm-docs/pagination.llm.md +190 -0
- package/llm-docs/popover-anchor.llm.md +53 -0
- package/llm-docs/popover-content.llm.md +109 -0
- package/llm-docs/popover-trigger.llm.md +54 -0
- package/llm-docs/popover.llm.md +116 -0
- package/llm-docs/progress.llm.md +76 -0
- package/llm-docs/radio-group-indicator.llm.md +28 -0
- package/llm-docs/radio-group-item.llm.md +40 -0
- package/llm-docs/radio-group.llm.md +76 -0
- package/llm-docs/resizable-handle.llm.md +156 -0
- package/llm-docs/resizable-panel-group.llm.md +149 -0
- package/llm-docs/resizable-panel.llm.md +157 -0
- package/llm-docs/scroll-area-corner.llm.md +41 -0
- package/llm-docs/scroll-area-thumb.llm.md +39 -0
- package/llm-docs/scroll-area-viewport.llm.md +60 -0
- package/llm-docs/scroll-area.llm.md +125 -0
- package/llm-docs/scroll-bar.llm.md +78 -0
- package/llm-docs/sdk-items-registry.json +2638 -0
- package/llm-docs/select-content.llm.md +139 -0
- package/llm-docs/select-group.llm.md +60 -0
- package/llm-docs/select-item.llm.md +75 -0
- package/llm-docs/select-label.llm.md +62 -0
- package/llm-docs/select-scroll-down-button.llm.md +45 -0
- package/llm-docs/select-scroll-up-button.llm.md +45 -0
- package/llm-docs/select-separator.llm.md +59 -0
- package/llm-docs/select-trigger.llm.md +66 -0
- package/llm-docs/select-value.llm.md +67 -0
- package/llm-docs/select.llm.md +159 -0
- package/llm-docs/separator.llm.md +129 -0
- package/llm-docs/sheet-close.llm.md +49 -0
- package/llm-docs/sheet-content.llm.md +115 -0
- package/llm-docs/sheet-description.llm.md +62 -0
- package/llm-docs/sheet-footer.llm.md +64 -0
- package/llm-docs/sheet-header.llm.md +52 -0
- package/llm-docs/sheet-title.llm.md +53 -0
- package/llm-docs/sheet-trigger.llm.md +46 -0
- package/llm-docs/sheet.llm.md +126 -0
- package/llm-docs/sidebar-content.llm.md +63 -0
- package/llm-docs/sidebar-footer.llm.md +50 -0
- package/llm-docs/sidebar-group-action.llm.md +60 -0
- package/llm-docs/sidebar-group-content.llm.md +64 -0
- package/llm-docs/sidebar-group-label.llm.md +53 -0
- package/llm-docs/sidebar-group.llm.md +56 -0
- package/llm-docs/sidebar-header.llm.md +67 -0
- package/llm-docs/sidebar-input.llm.md +50 -0
- package/llm-docs/sidebar-inset.llm.md +52 -0
- package/llm-docs/sidebar-menu-action.llm.md +84 -0
- package/llm-docs/sidebar-menu-badge.llm.md +60 -0
- package/llm-docs/sidebar-menu-button.llm.md +103 -0
- package/llm-docs/sidebar-menu-item.llm.md +75 -0
- package/llm-docs/sidebar-menu-skeleton.llm.md +76 -0
- package/llm-docs/sidebar-menu-sub-button.llm.md +85 -0
- package/llm-docs/sidebar-menu-sub-item.llm.md +54 -0
- package/llm-docs/sidebar-menu-sub.llm.md +74 -0
- package/llm-docs/sidebar-menu.llm.md +65 -0
- package/llm-docs/sidebar-provider.llm.md +79 -0
- package/llm-docs/sidebar-rail.llm.md +34 -0
- package/llm-docs/sidebar-separator.llm.md +57 -0
- package/llm-docs/sidebar-trigger.llm.md +49 -0
- package/llm-docs/sidebar.llm.md +129 -0
- package/llm-docs/skeleton.llm.md +134 -0
- package/llm-docs/slider.llm.md +173 -0
- package/llm-docs/small.llm.md +115 -0
- package/llm-docs/span.llm.md +132 -0
- package/llm-docs/stack.llm.md +28 -0
- package/llm-docs/strong.llm.md +115 -0
- package/llm-docs/switch.llm.md +76 -0
- package/llm-docs/table-body.llm.md +36 -0
- package/llm-docs/table-caption.llm.md +48 -0
- package/llm-docs/table-cell.llm.md +53 -0
- package/llm-docs/table-footer.llm.md +41 -0
- package/llm-docs/table-head.llm.md +69 -0
- package/llm-docs/table-header.llm.md +41 -0
- package/llm-docs/table-row.llm.md +42 -0
- package/llm-docs/table.llm.md +123 -0
- package/llm-docs/tabs-content.llm.md +47 -0
- package/llm-docs/tabs-list.llm.md +41 -0
- package/llm-docs/tabs-trigger.llm.md +47 -0
- package/llm-docs/tabs.llm.md +71 -0
- package/llm-docs/text-field.llm.md +327 -0
- package/llm-docs/textarea.llm.md +311 -0
- package/llm-docs/theme-preference.llm.md +25 -0
- package/llm-docs/theme-toggle.llm.md +57 -0
- package/llm-docs/theme.llm.md +14 -0
- package/llm-docs/toast.llm.md +32 -0
- package/llm-docs/toaster.llm.md +193 -0
- package/llm-docs/toggle-group-item.llm.md +59 -0
- package/llm-docs/toggle-group.llm.md +101 -0
- package/llm-docs/toggle.llm.md +40 -0
- package/llm-docs/tooltip-content.llm.md +185 -0
- package/llm-docs/tooltip-provider.llm.md +68 -0
- package/llm-docs/tooltip-trigger.llm.md +70 -0
- package/llm-docs/tooltip.llm.md +129 -0
- package/llm-docs/typography.llm.md +175 -0
- package/llm-docs/use-carousel.llm.md +55 -0
- package/llm-docs/use-command-state.llm.md +32 -0
- package/llm-docs/use-is-mobile.llm.md +73 -0
- package/llm-docs/use-sidebar.llm.md +61 -0
- package/package.json +3 -2
- package/src/components/ui/stack.tsx +5 -1
- package/src/components/ui/stories/typography.stories.tsx +248 -205
- package/src/components/ui/typography.tsx +90 -79
- package/src/styles/globals.css +33 -10
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# BreadcrumbLink
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Navigable link within breadcrumb trail Represents a clickable parent page in the breadcrumb hierarchy with smooth hover effects and transition animations. Supports composition via the `asChild` prop for seamless integration with routing libraries like Next.js Link, React Router, or Reach Router using the Radix UI Slot primitive for prop merging. Built on Radix UI Slot primitive which enables the asChild pattern - when asChild is true, the component merges its props with the immediate child element instead of rendering its own anchor tag. This allows for flexible composition while maintaining consistent styling and behavior.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { BreadcrumbLink } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<BreadcrumbLink
|
|
13
|
+
asChild={true}
|
|
14
|
+
className="value"
|
|
15
|
+
href="value"
|
|
16
|
+
onClick={handleClick}
|
|
17
|
+
>
|
|
18
|
+
{/* Your content here */}
|
|
19
|
+
</BreadcrumbLink>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Component Props
|
|
23
|
+
|
|
24
|
+
### asChild
|
|
25
|
+
- **Type**: `boolean`
|
|
26
|
+
- **Required**: No
|
|
27
|
+
- **Description**: When true, merges props with child element instead of rendering anchor. Enables composition with routing components
|
|
28
|
+
|
|
29
|
+
### className
|
|
30
|
+
- **Type**: `string`
|
|
31
|
+
- **Required**: No
|
|
32
|
+
- **Description**: Additional CSS classes to apply to the link element
|
|
33
|
+
|
|
34
|
+
### href
|
|
35
|
+
- **Type**: `string`
|
|
36
|
+
- **Required**: No
|
|
37
|
+
- **Description**: Link destination URL (when asChild is false)
|
|
38
|
+
|
|
39
|
+
### children
|
|
40
|
+
- **Type**: `React.ReactNode`
|
|
41
|
+
- **Required**: No
|
|
42
|
+
- **Description**: Link content to display (text, icons, etc.)
|
|
43
|
+
|
|
44
|
+
### onClick
|
|
45
|
+
- **Type**: `(event: React.MouseEvent<HTMLAnchorElement>) => void`
|
|
46
|
+
- **Required**: No
|
|
47
|
+
- **Description**: Click handler for the link interaction
|
|
48
|
+
|
|
49
|
+
## Examples
|
|
50
|
+
|
|
51
|
+
### Example 1
|
|
52
|
+
```tsx
|
|
53
|
+
// Standard anchor link
|
|
54
|
+
<BreadcrumbLink href="/products">Products</BreadcrumbLink>
|
|
55
|
+
```
|
|
56
|
+
### Example 2
|
|
57
|
+
```tsx
|
|
58
|
+
// With Next.js Link using asChild
|
|
59
|
+
import { Link } from "next/link"
|
|
60
|
+
<BreadcrumbLink asChild>
|
|
61
|
+
<Link href="/products">Products</Link>
|
|
62
|
+
</BreadcrumbLink>
|
|
63
|
+
```
|
|
64
|
+
### Example 3
|
|
65
|
+
```tsx
|
|
66
|
+
// With React Router Link
|
|
67
|
+
import { Link } from "react-router-dom"
|
|
68
|
+
<BreadcrumbLink asChild>
|
|
69
|
+
<Link to="/products">Products</Link>
|
|
70
|
+
</BreadcrumbLink>
|
|
71
|
+
```
|
|
72
|
+
### Example 4
|
|
73
|
+
```tsx
|
|
74
|
+
// With click handler
|
|
75
|
+
<BreadcrumbLink
|
|
76
|
+
href="/products"
|
|
77
|
+
onClick={(e) => {
|
|
78
|
+
e.preventDefault();
|
|
79
|
+
navigate('/products');
|
|
80
|
+
}}
|
|
81
|
+
>
|
|
82
|
+
Products
|
|
83
|
+
</BreadcrumbLink>
|
|
84
|
+
```
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# BreadcrumbList
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Ordered list container for breadcrumb items Provides the structured list layout for breadcrumb navigation items with responsive spacing and text overflow handling. Uses semantic `ol` element for proper accessibility and screen reader navigation. Contains flexible layout with word breaking and responsive gap adjustments.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { BreadcrumbList } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<BreadcrumbList
|
|
13
|
+
className="value"
|
|
14
|
+
>
|
|
15
|
+
{/* Your content here */}
|
|
16
|
+
</BreadcrumbList>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Component Props
|
|
20
|
+
|
|
21
|
+
### className
|
|
22
|
+
- **Type**: `string`
|
|
23
|
+
- **Required**: No
|
|
24
|
+
- **Description**: Additional CSS classes to apply to the ordered list element
|
|
25
|
+
|
|
26
|
+
### children
|
|
27
|
+
- **Type**: `React.ReactNode`
|
|
28
|
+
- **Required**: No
|
|
29
|
+
- **Description**: Child breadcrumb items (BreadcrumbItem elements)
|
|
30
|
+
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
### Example 1
|
|
34
|
+
```tsx
|
|
35
|
+
// Basic list with multiple items
|
|
36
|
+
<BreadcrumbList>
|
|
37
|
+
<BreadcrumbItem>
|
|
38
|
+
<BreadcrumbLink href="/">Home</BreadcrumbLink>
|
|
39
|
+
</BreadcrumbItem>
|
|
40
|
+
<BreadcrumbSeparator />
|
|
41
|
+
<BreadcrumbItem>
|
|
42
|
+
<BreadcrumbPage>Current</BreadcrumbPage>
|
|
43
|
+
</BreadcrumbItem>
|
|
44
|
+
</BreadcrumbList>
|
|
45
|
+
```
|
|
46
|
+
### Example 2
|
|
47
|
+
```tsx
|
|
48
|
+
// With custom styling
|
|
49
|
+
<BreadcrumbList className="gap-4 text-base">
|
|
50
|
+
<BreadcrumbItem>
|
|
51
|
+
<BreadcrumbLink href="/">Home</BreadcrumbLink>
|
|
52
|
+
</BreadcrumbItem>
|
|
53
|
+
</BreadcrumbList>
|
|
54
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# BreadcrumbPage
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Current page indicator in breadcrumb trail Represents the current page (non-clickable) at the end of the breadcrumb trail. Styled with prominent text color and marked with comprehensive accessibility attributes including `aria-current="page"` for precise screen reader identification of the user's current location within the site hierarchy. This component uses specific ARIA attributes to indicate it represents a link-like element that is disabled, providing semantic meaning while maintaining the visual breadcrumb structure. The `aria-current="page"` attribute is the standard way to identify the current page in navigation components.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { BreadcrumbPage } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<BreadcrumbPage
|
|
13
|
+
className="value"
|
|
14
|
+
>
|
|
15
|
+
{/* Your content here */}
|
|
16
|
+
</BreadcrumbPage>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Component Props
|
|
20
|
+
|
|
21
|
+
### className
|
|
22
|
+
- **Type**: `string`
|
|
23
|
+
- **Required**: No
|
|
24
|
+
- **Description**: Additional CSS classes to apply to the span element
|
|
25
|
+
|
|
26
|
+
### children
|
|
27
|
+
- **Type**: `React.ReactNode`
|
|
28
|
+
- **Required**: No
|
|
29
|
+
- **Description**: Current page name or content to display
|
|
30
|
+
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
### Example 1
|
|
34
|
+
```tsx
|
|
35
|
+
// Simple page name
|
|
36
|
+
<BreadcrumbPage>Current Page Name</BreadcrumbPage>
|
|
37
|
+
```
|
|
38
|
+
### Example 2
|
|
39
|
+
```tsx
|
|
40
|
+
// With icon and text
|
|
41
|
+
<BreadcrumbPage>
|
|
42
|
+
<FileIcon className="mr-1" />
|
|
43
|
+
Document.pdf
|
|
44
|
+
</BreadcrumbPage>
|
|
45
|
+
```
|
|
46
|
+
### Example 3
|
|
47
|
+
```tsx
|
|
48
|
+
// With custom styling
|
|
49
|
+
<BreadcrumbPage className="font-semibold text-primary">
|
|
50
|
+
Important Page
|
|
51
|
+
</BreadcrumbPage>
|
|
52
|
+
```
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# BreadcrumbSeparator
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Visual separator between breadcrumb items Displays a separator icon (default: ChevronRight) between breadcrumb items to provide visual hierarchy and direction in the breadcrumb trail. Supports complete customization with any icon or content. Properly hidden from assistive technologies with accessibility attributes for clean screen reader navigation experience. The component uses CSS sizing constraints to ensure consistent icon sizing across different separator types and maintains visual alignment within the breadcrumb flow.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { BreadcrumbSeparator } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<BreadcrumbSeparator
|
|
13
|
+
className="value"
|
|
14
|
+
>
|
|
15
|
+
{/* Your content here */}
|
|
16
|
+
</BreadcrumbSeparator>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Component Props
|
|
20
|
+
|
|
21
|
+
### children
|
|
22
|
+
- **Type**: `React.ReactNode`
|
|
23
|
+
- **Required**: No
|
|
24
|
+
- **Description**: Custom separator icon or content to display instead of default ChevronRight. Typically Lucide icons like Slash, ArrowRight, etc.
|
|
25
|
+
|
|
26
|
+
### className
|
|
27
|
+
- **Type**: `string`
|
|
28
|
+
- **Required**: No
|
|
29
|
+
- **Description**: Additional CSS classes to apply to the list item container
|
|
30
|
+
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
### Example 1
|
|
34
|
+
```tsx
|
|
35
|
+
// Default ChevronRight separator
|
|
36
|
+
<BreadcrumbSeparator />
|
|
37
|
+
```
|
|
38
|
+
### Example 2
|
|
39
|
+
```tsx
|
|
40
|
+
// Custom Slash separator
|
|
41
|
+
import { Slash } from "lucide-react"
|
|
42
|
+
<BreadcrumbSeparator>
|
|
43
|
+
<Slash />
|
|
44
|
+
</BreadcrumbSeparator>
|
|
45
|
+
```
|
|
46
|
+
### Example 3
|
|
47
|
+
```tsx
|
|
48
|
+
// Arrow right separator
|
|
49
|
+
import { ArrowRight } from "lucide-react"
|
|
50
|
+
<BreadcrumbSeparator>
|
|
51
|
+
<ArrowRight />
|
|
52
|
+
</BreadcrumbSeparator>
|
|
53
|
+
```
|
|
54
|
+
### Example 4
|
|
55
|
+
```tsx
|
|
56
|
+
// Text separator
|
|
57
|
+
<BreadcrumbSeparator>
|
|
58
|
+
<span className="text-muted-foreground">/</span>
|
|
59
|
+
</BreadcrumbSeparator>
|
|
60
|
+
```
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Breadcrumb
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Breadcrumb navigation component that displays hierarchical page location A breadcrumb navigation component built on semantic HTML that shows the current page location within a navigational hierarchy. Provides users with contextual awareness of their position in the site structure and enables easy navigation to parent pages. Based on the shadcn/ui Breadcrumb component with accessibility features and support for composition patterns including custom separators, ellipsis for long paths, dropdown menus, and custom link components via the asChild prop.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { Breadcrumb } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<Breadcrumb
|
|
13
|
+
className="value"
|
|
14
|
+
>
|
|
15
|
+
{/* Your content here */}
|
|
16
|
+
</Breadcrumb>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Component Props
|
|
20
|
+
|
|
21
|
+
### className
|
|
22
|
+
- **Type**: `string`
|
|
23
|
+
- **Required**: No
|
|
24
|
+
- **Description**: Additional CSS classes to apply to the navigation element
|
|
25
|
+
|
|
26
|
+
### children
|
|
27
|
+
- **Type**: `React.ReactNode`
|
|
28
|
+
- **Required**: No
|
|
29
|
+
- **Description**: Child breadcrumb elements (typically BreadcrumbList)
|
|
30
|
+
|
|
31
|
+
## Examples
|
|
32
|
+
|
|
33
|
+
### Example 1
|
|
34
|
+
```tsx
|
|
35
|
+
// Basic breadcrumb navigation
|
|
36
|
+
<Breadcrumb>
|
|
37
|
+
<BreadcrumbList>
|
|
38
|
+
<BreadcrumbItem>
|
|
39
|
+
<BreadcrumbLink href="/">Home</BreadcrumbLink>
|
|
40
|
+
</BreadcrumbItem>
|
|
41
|
+
<BreadcrumbSeparator />
|
|
42
|
+
<BreadcrumbItem>
|
|
43
|
+
<BreadcrumbLink href="/products">Products</BreadcrumbLink>
|
|
44
|
+
</BreadcrumbItem>
|
|
45
|
+
<BreadcrumbSeparator />
|
|
46
|
+
<BreadcrumbItem>
|
|
47
|
+
<BreadcrumbPage>Laptop</BreadcrumbPage>
|
|
48
|
+
</BreadcrumbItem>
|
|
49
|
+
</BreadcrumbList>
|
|
50
|
+
</Breadcrumb>
|
|
51
|
+
```
|
|
52
|
+
### Example 2
|
|
53
|
+
```tsx
|
|
54
|
+
// With ellipsis for long paths
|
|
55
|
+
<Breadcrumb>
|
|
56
|
+
<BreadcrumbList>
|
|
57
|
+
<BreadcrumbItem>
|
|
58
|
+
<BreadcrumbLink href="/">Home</BreadcrumbLink>
|
|
59
|
+
</BreadcrumbItem>
|
|
60
|
+
<BreadcrumbSeparator />
|
|
61
|
+
<BreadcrumbItem>
|
|
62
|
+
<BreadcrumbEllipsis />
|
|
63
|
+
</BreadcrumbItem>
|
|
64
|
+
<BreadcrumbSeparator />
|
|
65
|
+
<BreadcrumbItem>
|
|
66
|
+
<BreadcrumbLink href="/products/laptops">Laptops</BreadcrumbLink>
|
|
67
|
+
</BreadcrumbItem>
|
|
68
|
+
<BreadcrumbSeparator />
|
|
69
|
+
<BreadcrumbItem>
|
|
70
|
+
<BreadcrumbPage>Gaming Laptop</BreadcrumbPage>
|
|
71
|
+
</BreadcrumbItem>
|
|
72
|
+
</BreadcrumbList>
|
|
73
|
+
</Breadcrumb>
|
|
74
|
+
```
|
|
75
|
+
### Example 3
|
|
76
|
+
```tsx
|
|
77
|
+
// With Next.js Link integration using asChild
|
|
78
|
+
import { Link } from "next/link"
|
|
79
|
+
<Breadcrumb>
|
|
80
|
+
<BreadcrumbList>
|
|
81
|
+
<BreadcrumbItem>
|
|
82
|
+
<BreadcrumbLink asChild>
|
|
83
|
+
<Link href="/">Home</Link>
|
|
84
|
+
</BreadcrumbLink>
|
|
85
|
+
</BreadcrumbItem>
|
|
86
|
+
<BreadcrumbSeparator />
|
|
87
|
+
<BreadcrumbItem>
|
|
88
|
+
<BreadcrumbPage>Current Page</BreadcrumbPage>
|
|
89
|
+
</BreadcrumbItem>
|
|
90
|
+
</BreadcrumbList>
|
|
91
|
+
</Breadcrumb>
|
|
92
|
+
```
|
|
93
|
+
### Example 4
|
|
94
|
+
```tsx
|
|
95
|
+
// With custom separator
|
|
96
|
+
import { Slash } from "lucide-react"
|
|
97
|
+
<Breadcrumb>
|
|
98
|
+
<BreadcrumbList>
|
|
99
|
+
<BreadcrumbItem>
|
|
100
|
+
<BreadcrumbLink href="/">Home</BreadcrumbLink>
|
|
101
|
+
</BreadcrumbItem>
|
|
102
|
+
<BreadcrumbSeparator>
|
|
103
|
+
<Slash />
|
|
104
|
+
</BreadcrumbSeparator>
|
|
105
|
+
<BreadcrumbItem>
|
|
106
|
+
<BreadcrumbPage>Current Page</BreadcrumbPage>
|
|
107
|
+
</BreadcrumbItem>
|
|
108
|
+
</BreadcrumbList>
|
|
109
|
+
</Breadcrumb>
|
|
110
|
+
```
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# Button
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Button - A versatile, accessible button component with multiple style variants A fundamental UI element built on Radix UI's Slot primitive that supports extensive customization through variants, composition patterns, and comprehensive accessibility features. The component automatically handles icon styling, focus management, form integration, and can be rendered as other elements using the asChild pattern.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { Button } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<Button
|
|
13
|
+
variant={value}
|
|
14
|
+
size={value}
|
|
15
|
+
asChild={true}
|
|
16
|
+
className="value"
|
|
17
|
+
disabled={true}
|
|
18
|
+
type={value}
|
|
19
|
+
onClick={handleClick}
|
|
20
|
+
onFocus={handleFocus}
|
|
21
|
+
onBlur={handleBlur}
|
|
22
|
+
onMouseEnter={handleMouseEnter}
|
|
23
|
+
onMouseLeave={handleMouseLeave}
|
|
24
|
+
"aria-label"="value"
|
|
25
|
+
"aria-describedby"="value"
|
|
26
|
+
"aria-invalid"={value}
|
|
27
|
+
"aria-expanded"={value}
|
|
28
|
+
"aria-controls"="value"
|
|
29
|
+
"aria-pressed"={value}
|
|
30
|
+
tabIndex={0}
|
|
31
|
+
autoFocus={true}
|
|
32
|
+
form="value"
|
|
33
|
+
formAction={() => {}}
|
|
34
|
+
formEncType="value"
|
|
35
|
+
formMethod="value"
|
|
36
|
+
formNoValidate={true}
|
|
37
|
+
formTarget="value"
|
|
38
|
+
name="value"
|
|
39
|
+
value={value}
|
|
40
|
+
ref={value}
|
|
41
|
+
>
|
|
42
|
+
{/* Your content here */}
|
|
43
|
+
</Button>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Component Props
|
|
47
|
+
|
|
48
|
+
### variant
|
|
49
|
+
- **Type**: `| "default"
|
|
50
|
+
| "destructive"
|
|
51
|
+
| "outline"
|
|
52
|
+
| "secondary"
|
|
53
|
+
| "ghost"
|
|
54
|
+
| "link"`
|
|
55
|
+
- **Required**: No
|
|
56
|
+
- **Description**: No description available
|
|
57
|
+
|
|
58
|
+
### size
|
|
59
|
+
- **Type**: `"default" | "sm" | "lg" | "icon"`
|
|
60
|
+
- **Required**: No
|
|
61
|
+
- **Description**: No description available
|
|
62
|
+
|
|
63
|
+
### asChild
|
|
64
|
+
- **Type**: `boolean`
|
|
65
|
+
- **Required**: No
|
|
66
|
+
- **Description**: No description available
|
|
67
|
+
|
|
68
|
+
### children
|
|
69
|
+
- **Type**: `React.ReactNode`
|
|
70
|
+
- **Required**: No
|
|
71
|
+
- **Description**: No description available
|
|
72
|
+
|
|
73
|
+
### className
|
|
74
|
+
- **Type**: `string`
|
|
75
|
+
- **Required**: No
|
|
76
|
+
- **Description**: No description available
|
|
77
|
+
|
|
78
|
+
### disabled
|
|
79
|
+
- **Type**: `boolean`
|
|
80
|
+
- **Required**: No
|
|
81
|
+
- **Description**: No description available
|
|
82
|
+
|
|
83
|
+
### type
|
|
84
|
+
- **Type**: `"button" | "submit" | "reset"`
|
|
85
|
+
- **Required**: No
|
|
86
|
+
- **Description**: No description available
|
|
87
|
+
|
|
88
|
+
### onClick
|
|
89
|
+
- **Type**: `React.MouseEventHandler<HTMLButtonElement>`
|
|
90
|
+
- **Required**: No
|
|
91
|
+
- **Description**: No description available
|
|
92
|
+
|
|
93
|
+
### onFocus
|
|
94
|
+
- **Type**: `React.FocusEventHandler<HTMLButtonElement>`
|
|
95
|
+
- **Required**: No
|
|
96
|
+
- **Description**: No description available
|
|
97
|
+
|
|
98
|
+
### onBlur
|
|
99
|
+
- **Type**: `React.FocusEventHandler<HTMLButtonElement>`
|
|
100
|
+
- **Required**: No
|
|
101
|
+
- **Description**: No description available
|
|
102
|
+
|
|
103
|
+
### onMouseEnter
|
|
104
|
+
- **Type**: `React.MouseEventHandler<HTMLButtonElement>`
|
|
105
|
+
- **Required**: No
|
|
106
|
+
- **Description**: No description available
|
|
107
|
+
|
|
108
|
+
### onMouseLeave
|
|
109
|
+
- **Type**: `React.MouseEventHandler<HTMLButtonElement>`
|
|
110
|
+
- **Required**: No
|
|
111
|
+
- **Description**: No description available
|
|
112
|
+
|
|
113
|
+
### "aria-label"
|
|
114
|
+
- **Type**: `string`
|
|
115
|
+
- **Required**: No
|
|
116
|
+
- **Description**: No description available
|
|
117
|
+
|
|
118
|
+
### "aria-describedby"
|
|
119
|
+
- **Type**: `string`
|
|
120
|
+
- **Required**: No
|
|
121
|
+
- **Description**: No description available
|
|
122
|
+
|
|
123
|
+
### "aria-invalid"
|
|
124
|
+
- **Type**: `boolean | "false" | "true" | "grammar" | "spelling"`
|
|
125
|
+
- **Required**: No
|
|
126
|
+
- **Description**: No description available
|
|
127
|
+
|
|
128
|
+
### "aria-expanded"
|
|
129
|
+
- **Type**: `React.AriaAttributes['aria-expanded']`
|
|
130
|
+
- **Required**: No
|
|
131
|
+
- **Description**: No description available
|
|
132
|
+
|
|
133
|
+
### "aria-controls"
|
|
134
|
+
- **Type**: `string`
|
|
135
|
+
- **Required**: No
|
|
136
|
+
- **Description**: No description available
|
|
137
|
+
|
|
138
|
+
### "aria-pressed"
|
|
139
|
+
- **Type**: `boolean | "false" | "true" | "mixed"`
|
|
140
|
+
- **Required**: No
|
|
141
|
+
- **Description**: No description available
|
|
142
|
+
|
|
143
|
+
### tabIndex
|
|
144
|
+
- **Type**: `number`
|
|
145
|
+
- **Required**: No
|
|
146
|
+
- **Description**: No description available
|
|
147
|
+
|
|
148
|
+
### autoFocus
|
|
149
|
+
- **Type**: `boolean`
|
|
150
|
+
- **Required**: No
|
|
151
|
+
- **Description**: No description available
|
|
152
|
+
|
|
153
|
+
### form
|
|
154
|
+
- **Type**: `string`
|
|
155
|
+
- **Required**: No
|
|
156
|
+
- **Description**: No description available
|
|
157
|
+
|
|
158
|
+
### formAction
|
|
159
|
+
- **Type**: `string | ((formData: FormData) => void | Promise<void>)`
|
|
160
|
+
- **Required**: No
|
|
161
|
+
- **Description**: No description available
|
|
162
|
+
|
|
163
|
+
### formEncType
|
|
164
|
+
- **Type**: `string`
|
|
165
|
+
- **Required**: No
|
|
166
|
+
- **Description**: No description available
|
|
167
|
+
|
|
168
|
+
### formMethod
|
|
169
|
+
- **Type**: `string`
|
|
170
|
+
- **Required**: No
|
|
171
|
+
- **Description**: No description available
|
|
172
|
+
|
|
173
|
+
### formNoValidate
|
|
174
|
+
- **Type**: `boolean`
|
|
175
|
+
- **Required**: No
|
|
176
|
+
- **Description**: No description available
|
|
177
|
+
|
|
178
|
+
### formTarget
|
|
179
|
+
- **Type**: `string`
|
|
180
|
+
- **Required**: No
|
|
181
|
+
- **Description**: No description available
|
|
182
|
+
|
|
183
|
+
### name
|
|
184
|
+
- **Type**: `string`
|
|
185
|
+
- **Required**: No
|
|
186
|
+
- **Description**: No description available
|
|
187
|
+
|
|
188
|
+
### value
|
|
189
|
+
- **Type**: `string | ReadonlyArray<string> | number`
|
|
190
|
+
- **Required**: No
|
|
191
|
+
- **Description**: No description available
|
|
192
|
+
|
|
193
|
+
### ref
|
|
194
|
+
- **Type**: `React.Ref<HTMLButtonElement>`
|
|
195
|
+
- **Required**: No
|
|
196
|
+
- **Description**: No description available
|
|
197
|
+
|
|
198
|
+
## Examples
|
|
199
|
+
|
|
200
|
+
### Example 1
|
|
201
|
+
```tsx
|
|
202
|
+
// Basic usage with different variants
|
|
203
|
+
<Button>Default Button</Button>
|
|
204
|
+
<Button variant="destructive">Delete Item</Button>
|
|
205
|
+
<Button variant="outline" size="lg">Large Outline</Button>
|
|
206
|
+
<Button variant="ghost" size="sm">Small Ghost</Button>
|
|
207
|
+
<Button variant="link">Link Button</Button>
|
|
208
|
+
```
|
|
209
|
+
### Example 2
|
|
210
|
+
```tsx
|
|
211
|
+
// Icon usage (automatically styled with proper spacing)
|
|
212
|
+
import { Download, ArrowRight, Plus, Trash2 } from "lucide-react";
|
|
213
|
+
<Button>
|
|
214
|
+
<Download className="mr-2" /> Download File
|
|
215
|
+
</Button>
|
|
216
|
+
<Button variant="outline">
|
|
217
|
+
Continue <ArrowRight className="ml-2" />
|
|
218
|
+
</Button>
|
|
219
|
+
// Icon-only button (always include aria-label)
|
|
220
|
+
<Button size="icon" aria-label="Add new item">
|
|
221
|
+
<Plus />
|
|
222
|
+
</Button>
|
|
223
|
+
<Button size="icon" variant="destructive" aria-label="Delete item">
|
|
224
|
+
<Trash2 />
|
|
225
|
+
</Button>
|
|
226
|
+
```
|
|
227
|
+
### Example 3
|
|
228
|
+
```tsx
|
|
229
|
+
// Composition with asChild (render as different elements)
|
|
230
|
+
import Link from "next/link";
|
|
231
|
+
import { ExternalLink } from "lucide-react";
|
|
232
|
+
<Button asChild>
|
|
233
|
+
<Link href="/dashboard">Go to Dashboard</Link>
|
|
234
|
+
</Button>
|
|
235
|
+
<Button asChild variant="outline">
|
|
236
|
+
<a href="https://example.com" target="_blank" rel="noopener noreferrer">
|
|
237
|
+
External Link <ExternalLink className="ml-2 h-4 w-4" />
|
|
238
|
+
</a>
|
|
239
|
+
</Button>
|
|
240
|
+
```
|
|
241
|
+
### Example 4
|
|
242
|
+
```tsx
|
|
243
|
+
// Form integration and states
|
|
244
|
+
<Button type="submit" disabled={isSubmitting}>
|
|
245
|
+
{isSubmitting ? "Submitting..." : "Submit Form"}
|
|
246
|
+
</Button>
|
|
247
|
+
<Button
|
|
248
|
+
variant="destructive"
|
|
249
|
+
onClick={() => handleDelete()}
|
|
250
|
+
aria-describedby="delete-warning"
|
|
251
|
+
>
|
|
252
|
+
Delete Account
|
|
253
|
+
</Button>
|
|
254
|
+
<p id="delete-warning" className="sr-only">
|
|
255
|
+
This action cannot be undone
|
|
256
|
+
</p>
|
|
257
|
+
// Toggle button with pressed state
|
|
258
|
+
<Button
|
|
259
|
+
variant="outline"
|
|
260
|
+
aria-pressed={isToggled}
|
|
261
|
+
onClick={() => setIsToggled(!isToggled)}
|
|
262
|
+
>
|
|
263
|
+
{isToggled ? "Enabled" : "Disabled"}
|
|
264
|
+
</Button>
|
|
265
|
+
```
|
|
266
|
+
### Example 5
|
|
267
|
+
```tsx
|
|
268
|
+
// Loading states and advanced usage
|
|
269
|
+
import { Loader2, Save } from "lucide-react";
|
|
270
|
+
<Button disabled={isLoading}>
|
|
271
|
+
{isLoading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
|
|
272
|
+
{isLoading ? "Saving..." : "Save Changes"}
|
|
273
|
+
</Button>
|
|
274
|
+
// With custom styling
|
|
275
|
+
<Button
|
|
276
|
+
className="bg-gradient-to-r from-purple-500 to-pink-500 hover:from-purple-600 hover:to-pink-600"
|
|
277
|
+
size="lg"
|
|
278
|
+
>
|
|
279
|
+
Gradient Button
|
|
280
|
+
</Button>
|
|
281
|
+
```
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# CalendarDayButton
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
CalendarDayButton - Individual day button component for calendar dates Renders a single interactive day button with appropriate styling for different states including selected, today, disabled, and range selection indicators. This component is used internally by the Calendar component but can be customized if needed.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { CalendarDayButton } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<CalendarDayButton
|
|
13
|
+
className={value}
|
|
14
|
+
day={value}
|
|
15
|
+
modifiers={value}
|
|
16
|
+
...props={value}
|
|
17
|
+
/>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Component Props
|
|
21
|
+
|
|
22
|
+
### className
|
|
23
|
+
- **Type**: `unknown`
|
|
24
|
+
- **Required**: Yes
|
|
25
|
+
- **Description**: No description available
|
|
26
|
+
|
|
27
|
+
### day
|
|
28
|
+
- **Type**: `unknown`
|
|
29
|
+
- **Required**: Yes
|
|
30
|
+
- **Description**: No description available
|
|
31
|
+
|
|
32
|
+
### modifiers
|
|
33
|
+
- **Type**: `unknown`
|
|
34
|
+
- **Required**: Yes
|
|
35
|
+
- **Description**: No description available
|
|
36
|
+
|
|
37
|
+
### ...props
|
|
38
|
+
- **Type**: `unknown`
|
|
39
|
+
- **Required**: Yes
|
|
40
|
+
- **Description**: No description available
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
// Used internally by Calendar component
|
|
46
|
+
<CalendarDayButton
|
|
47
|
+
day={dayObject}
|
|
48
|
+
modifiers={{
|
|
49
|
+
selected: true,
|
|
50
|
+
today: false,
|
|
51
|
+
disabled: false,
|
|
52
|
+
range_start: false,
|
|
53
|
+
range_end: false,
|
|
54
|
+
range_middle: false
|
|
55
|
+
}}
|
|
56
|
+
/>
|
|
57
|
+
```
|