@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,184 @@
|
|
|
1
|
+
# ChartTooltip
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Tooltip component for charts Re-export of Recharts Tooltip component with support for custom content. Use with ChartTooltipContent for consistent styling and theming integration.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { ChartTooltip } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<ChartTooltip
|
|
13
|
+
content={value}
|
|
14
|
+
active={true}
|
|
15
|
+
payload={[]}
|
|
16
|
+
label={value}
|
|
17
|
+
formatter={() => {}}
|
|
18
|
+
labelFormatter={[]}
|
|
19
|
+
cursor={value}
|
|
20
|
+
position={value}
|
|
21
|
+
offset={0}
|
|
22
|
+
shared={true}
|
|
23
|
+
portal={value}
|
|
24
|
+
wrapperStyle={value}
|
|
25
|
+
wrapperClassName="value"
|
|
26
|
+
animationDuration={0}
|
|
27
|
+
animationEasing="value"
|
|
28
|
+
allowEscapeViewBox={value}
|
|
29
|
+
separator="value"
|
|
30
|
+
useTranslate3d={true}
|
|
31
|
+
coordinate={value}
|
|
32
|
+
filterNull={true}
|
|
33
|
+
itemSorter={() => {}}
|
|
34
|
+
itemStyle={value}
|
|
35
|
+
labelStyle={value}
|
|
36
|
+
contentStyle={value}
|
|
37
|
+
/>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Component Props
|
|
41
|
+
|
|
42
|
+
### content
|
|
43
|
+
- **Type**: `React.ComponentType<any> | React.ReactElement`
|
|
44
|
+
- **Required**: No
|
|
45
|
+
- **Description**: No description available
|
|
46
|
+
|
|
47
|
+
### active
|
|
48
|
+
- **Type**: `boolean`
|
|
49
|
+
- **Required**: No
|
|
50
|
+
- **Description**: No description available
|
|
51
|
+
|
|
52
|
+
### payload
|
|
53
|
+
- **Type**: `any[]`
|
|
54
|
+
- **Required**: No
|
|
55
|
+
- **Description**: No description available
|
|
56
|
+
|
|
57
|
+
### label
|
|
58
|
+
- **Type**: `string | number`
|
|
59
|
+
- **Required**: No
|
|
60
|
+
- **Description**: No description available
|
|
61
|
+
|
|
62
|
+
### formatter
|
|
63
|
+
- **Type**: `(
|
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
65
|
+
value: any,
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
67
|
+
name: any,
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
69
|
+
props: any,
|
|
70
|
+
) => [React.ReactNode, React.ReactNode] | React.ReactNode`
|
|
71
|
+
- **Required**: No
|
|
72
|
+
- **Description**: No description available
|
|
73
|
+
|
|
74
|
+
### labelFormatter
|
|
75
|
+
- **Type**: `(label: any, payload: any[]) => React.ReactNode`
|
|
76
|
+
- **Required**: No
|
|
77
|
+
- **Description**: No description available
|
|
78
|
+
|
|
79
|
+
### cursor
|
|
80
|
+
- **Type**: `boolean | React.ComponentType<any> | React.ReactElement | object`
|
|
81
|
+
- **Required**: No
|
|
82
|
+
- **Description**: No description available
|
|
83
|
+
|
|
84
|
+
### position
|
|
85
|
+
- **Type**: `{ x?: number; y?: number }`
|
|
86
|
+
- **Required**: No
|
|
87
|
+
- **Description**: No description available
|
|
88
|
+
|
|
89
|
+
### offset
|
|
90
|
+
- **Type**: `number`
|
|
91
|
+
- **Required**: No
|
|
92
|
+
- **Description**: No description available
|
|
93
|
+
|
|
94
|
+
### shared
|
|
95
|
+
- **Type**: `boolean`
|
|
96
|
+
- **Required**: No
|
|
97
|
+
- **Description**: No description available
|
|
98
|
+
|
|
99
|
+
### portal
|
|
100
|
+
- **Type**: `HTMLElement`
|
|
101
|
+
- **Required**: No
|
|
102
|
+
- **Description**: No description available
|
|
103
|
+
|
|
104
|
+
### wrapperStyle
|
|
105
|
+
- **Type**: `React.CSSProperties`
|
|
106
|
+
- **Required**: No
|
|
107
|
+
- **Description**: No description available
|
|
108
|
+
|
|
109
|
+
### wrapperClassName
|
|
110
|
+
- **Type**: `string`
|
|
111
|
+
- **Required**: No
|
|
112
|
+
- **Description**: No description available
|
|
113
|
+
|
|
114
|
+
### animationDuration
|
|
115
|
+
- **Type**: `number`
|
|
116
|
+
- **Required**: No
|
|
117
|
+
- **Description**: No description available
|
|
118
|
+
|
|
119
|
+
### animationEasing
|
|
120
|
+
- **Type**: `string`
|
|
121
|
+
- **Required**: No
|
|
122
|
+
- **Description**: No description available
|
|
123
|
+
|
|
124
|
+
### allowEscapeViewBox
|
|
125
|
+
- **Type**: `{ x?: boolean; y?: boolean }`
|
|
126
|
+
- **Required**: No
|
|
127
|
+
- **Description**: No description available
|
|
128
|
+
|
|
129
|
+
### separator
|
|
130
|
+
- **Type**: `string`
|
|
131
|
+
- **Required**: No
|
|
132
|
+
- **Description**: No description available
|
|
133
|
+
|
|
134
|
+
### useTranslate3d
|
|
135
|
+
- **Type**: `boolean`
|
|
136
|
+
- **Required**: No
|
|
137
|
+
- **Description**: No description available
|
|
138
|
+
|
|
139
|
+
### coordinate
|
|
140
|
+
- **Type**: `{ x?: number; y?: number }`
|
|
141
|
+
- **Required**: No
|
|
142
|
+
- **Description**: No description available
|
|
143
|
+
|
|
144
|
+
### filterNull
|
|
145
|
+
- **Type**: `boolean`
|
|
146
|
+
- **Required**: No
|
|
147
|
+
- **Description**: No description available
|
|
148
|
+
|
|
149
|
+
### itemSorter
|
|
150
|
+
- **Type**: `(item: any) => number`
|
|
151
|
+
- **Required**: No
|
|
152
|
+
- **Description**: No description available
|
|
153
|
+
|
|
154
|
+
### itemStyle
|
|
155
|
+
- **Type**: `React.CSSProperties`
|
|
156
|
+
- **Required**: No
|
|
157
|
+
- **Description**: No description available
|
|
158
|
+
|
|
159
|
+
### labelStyle
|
|
160
|
+
- **Type**: `React.CSSProperties`
|
|
161
|
+
- **Required**: No
|
|
162
|
+
- **Description**: No description available
|
|
163
|
+
|
|
164
|
+
### contentStyle
|
|
165
|
+
- **Type**: `React.CSSProperties`
|
|
166
|
+
- **Required**: No
|
|
167
|
+
- **Description**: No description available
|
|
168
|
+
|
|
169
|
+
## Examples
|
|
170
|
+
|
|
171
|
+
### Example 1
|
|
172
|
+
```tsx
|
|
173
|
+
// Basic tooltip
|
|
174
|
+
<ChartTooltip content={<ChartTooltipContent />} />
|
|
175
|
+
```
|
|
176
|
+
### Example 2
|
|
177
|
+
```tsx
|
|
178
|
+
// Tooltip with custom positioning
|
|
179
|
+
<ChartTooltip
|
|
180
|
+
content={<ChartTooltipContent />}
|
|
181
|
+
cursor={false}
|
|
182
|
+
position={{ x: 10, y: 10 }}
|
|
183
|
+
/>
|
|
184
|
+
```
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Checkbox
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
A versatile checkbox component for binary and multi-selection interfaces Built on Radix UI Checkbox primitive, this component provides a fully accessible checkbox with support for controlled/uncontrolled states, indeterminate state, and comprehensive form integration. Features consistent styling with the design system and proper keyboard navigation. The component automatically renders a hidden input element when used within a form to ensure proper form submission and native validation support. Supports three states: checked (true), unchecked (false), and indeterminate for partial selections.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { Checkbox } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<Checkbox
|
|
13
|
+
className="value"
|
|
14
|
+
asChild={true}
|
|
15
|
+
checked={value}
|
|
16
|
+
defaultChecked={value}
|
|
17
|
+
onCheckedChange={handleCheckedChange}
|
|
18
|
+
disabled={true}
|
|
19
|
+
required={true}
|
|
20
|
+
name="value"
|
|
21
|
+
value="value"
|
|
22
|
+
id="value"
|
|
23
|
+
"aria-label"="value"
|
|
24
|
+
"aria-labelledby"="value"
|
|
25
|
+
"aria-describedby"="value"
|
|
26
|
+
"aria-invalid"={value}
|
|
27
|
+
/>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Component Props
|
|
31
|
+
|
|
32
|
+
### className
|
|
33
|
+
- **Type**: `string`
|
|
34
|
+
- **Required**: No
|
|
35
|
+
- **Description**: No description available
|
|
36
|
+
|
|
37
|
+
### asChild
|
|
38
|
+
- **Type**: `boolean`
|
|
39
|
+
- **Required**: No
|
|
40
|
+
- **Description**: No description available
|
|
41
|
+
|
|
42
|
+
### checked
|
|
43
|
+
- **Type**: `boolean | "indeterminate"`
|
|
44
|
+
- **Required**: No
|
|
45
|
+
- **Description**: No description available
|
|
46
|
+
|
|
47
|
+
### defaultChecked
|
|
48
|
+
- **Type**: `boolean | "indeterminate"`
|
|
49
|
+
- **Required**: No
|
|
50
|
+
- **Description**: No description available
|
|
51
|
+
|
|
52
|
+
### onCheckedChange
|
|
53
|
+
- **Type**: `(checked: boolean | "indeterminate") => void`
|
|
54
|
+
- **Required**: No
|
|
55
|
+
- **Description**: No description available
|
|
56
|
+
|
|
57
|
+
### disabled
|
|
58
|
+
- **Type**: `boolean`
|
|
59
|
+
- **Required**: No
|
|
60
|
+
- **Description**: No description available
|
|
61
|
+
|
|
62
|
+
### required
|
|
63
|
+
- **Type**: `boolean`
|
|
64
|
+
- **Required**: No
|
|
65
|
+
- **Description**: No description available
|
|
66
|
+
|
|
67
|
+
### name
|
|
68
|
+
- **Type**: `string`
|
|
69
|
+
- **Required**: No
|
|
70
|
+
- **Description**: No description available
|
|
71
|
+
|
|
72
|
+
### value
|
|
73
|
+
- **Type**: `string`
|
|
74
|
+
- **Required**: No
|
|
75
|
+
- **Description**: No description available
|
|
76
|
+
|
|
77
|
+
### id
|
|
78
|
+
- **Type**: `string`
|
|
79
|
+
- **Required**: No
|
|
80
|
+
- **Description**: No description available
|
|
81
|
+
|
|
82
|
+
### "aria-label"
|
|
83
|
+
- **Type**: `string`
|
|
84
|
+
- **Required**: No
|
|
85
|
+
- **Description**: No description available
|
|
86
|
+
|
|
87
|
+
### "aria-labelledby"
|
|
88
|
+
- **Type**: `string`
|
|
89
|
+
- **Required**: No
|
|
90
|
+
- **Description**: No description available
|
|
91
|
+
|
|
92
|
+
### "aria-describedby"
|
|
93
|
+
- **Type**: `string`
|
|
94
|
+
- **Required**: No
|
|
95
|
+
- **Description**: No description available
|
|
96
|
+
|
|
97
|
+
### "aria-invalid"
|
|
98
|
+
- **Type**: `boolean | "false" | "true" | "grammar" | "spelling"`
|
|
99
|
+
- **Required**: No
|
|
100
|
+
- **Description**: No description available
|
package/.llm/cn.llm.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# cn
|
|
2
|
+
|
|
3
|
+
**Type**: function
|
|
4
|
+
|
|
5
|
+
cn - Combines class names with Tailwind CSS conflict resolution This utility function combines multiple class names into a single string, automatically resolving Tailwind CSS class conflicts. It uses clsx for conditional class handling and tailwind-merge to ensure later classes override earlier ones when they conflict.
|
|
6
|
+
|
|
7
|
+
## API Surface
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import { cn } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
export function cn(inputs: ClassValue[]): void { ... }
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Parameters
|
|
16
|
+
|
|
17
|
+
### inputs
|
|
18
|
+
- **Type**: `ClassValue[]`
|
|
19
|
+
- **Required**: Yes
|
|
20
|
+
- **Description**: Class names to combine. Can be strings, objects, arrays,
|
|
21
|
+
## Returns
|
|
22
|
+
|
|
23
|
+
- **Description**: A single string of combined and merged class names
|
|
24
|
+
## Examples
|
|
25
|
+
|
|
26
|
+
### Example 1
|
|
27
|
+
```tsx
|
|
28
|
+
// Basic usage
|
|
29
|
+
cn("px-2 py-1", "bg-blue-500", "text-white")
|
|
30
|
+
// Returns: "px-2 py-1 bg-blue-500 text-white"
|
|
31
|
+
```
|
|
32
|
+
### Example 2
|
|
33
|
+
```tsx
|
|
34
|
+
// With conditional classes
|
|
35
|
+
cn(
|
|
36
|
+
"base-class",
|
|
37
|
+
isActive && "active-class",
|
|
38
|
+
isDisabled && "disabled-class"
|
|
39
|
+
)
|
|
40
|
+
```
|
|
41
|
+
### Example 3
|
|
42
|
+
```tsx
|
|
43
|
+
// Overriding Tailwind classes
|
|
44
|
+
cn("px-4", "px-2") // Returns: "px-2" (later class wins)
|
|
45
|
+
cn("text-red-500", "text-blue-500") // Returns: "text-blue-500"
|
|
46
|
+
```
|
package/.llm/code.llm.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Code
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Code - Inline code component Monospace text for inline code snippets and technical references. Uses text-sm with monospace font and subtle background. Defaults to code element.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { Code } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<Code
|
|
13
|
+
as={value}
|
|
14
|
+
className="value"
|
|
15
|
+
>
|
|
16
|
+
{/* Your content here */}
|
|
17
|
+
</Code>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Component Props
|
|
21
|
+
|
|
22
|
+
### as
|
|
23
|
+
- **Type**: `React.ElementType`
|
|
24
|
+
- **Required**: No
|
|
25
|
+
- **Description**: HTML element to render
|
|
26
|
+
|
|
27
|
+
### className
|
|
28
|
+
- **Type**: `string`
|
|
29
|
+
- **Required**: No
|
|
30
|
+
- **Description**: Additional Tailwind classes
|
|
31
|
+
|
|
32
|
+
### children
|
|
33
|
+
- **Type**: `React.ReactNode`
|
|
34
|
+
- **Required**: No
|
|
35
|
+
- **Description**: Content to render
|
|
36
|
+
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
// Inline code
|
|
41
|
+
<Code>const message = "Hello, world!";</Code>
|
|
42
|
+
// Variable reference
|
|
43
|
+
<p>Set the <Code>API_KEY</Code> environment variable.</p>
|
|
44
|
+
// Terminal command
|
|
45
|
+
<Code className="bg-accent">npm install
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# CollapsibleContent
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Content container that can be expanded or collapsed The panel containing content that is shown or hidden based on the collapsible state. Built on Radix UI CollapsibleContent primitive with automatic height animations, accessibility attributes, and smooth transitions when toggling between expanded and collapsed states. **Key Features:** - Automatic height animations using CSS variables - Proper accessibility tree management (hidden when collapsed) - CSS data attributes for custom styling and animations - Support for forceMount to keep content in DOM when collapsed - Seamless composition via asChild pattern
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { CollapsibleContent } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<CollapsibleContent
|
|
13
|
+
asChild={true}
|
|
14
|
+
forceMount={true}
|
|
15
|
+
/>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Component Props
|
|
19
|
+
|
|
20
|
+
### asChild
|
|
21
|
+
- **Type**: `boolean`
|
|
22
|
+
- **Required**: No
|
|
23
|
+
- **Description**: When true, merges props onto immediate child instead of rendering div
|
|
24
|
+
|
|
25
|
+
### forceMount
|
|
26
|
+
- **Type**: `boolean`
|
|
27
|
+
- **Required**: No
|
|
28
|
+
- **Description**: When true, forces content to stay in DOM even when collapsed
|
|
29
|
+
|
|
30
|
+
## Examples
|
|
31
|
+
|
|
32
|
+
### Example 1
|
|
33
|
+
```tsx
|
|
34
|
+
// Basic content panel with simple styling
|
|
35
|
+
<CollapsibleContent className="pt-2">
|
|
36
|
+
<div className="rounded-md border px-4 py-2 text-sm bg-muted/50">
|
|
37
|
+
Yes. Free to use for personal and commercial projects.
|
|
38
|
+
No attribution required.
|
|
39
|
+
</div>
|
|
40
|
+
</CollapsibleContent>
|
|
41
|
+
```
|
|
42
|
+
### Example 2
|
|
43
|
+
```tsx
|
|
44
|
+
// Content with multiple elements and spacing
|
|
45
|
+
<CollapsibleContent className="space-y-2 pt-2">
|
|
46
|
+
<div className="rounded-md border px-4 py-3 font-mono text-sm shadow-sm">
|
|
47
|
+
### Example 3
|
|
48
|
+
```tsx
|
|
49
|
+
// Content with custom animations using CSS variables
|
|
50
|
+
<CollapsibleContent className="overflow-hidden text-sm transition-all data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down">
|
|
51
|
+
<div className="pb-4 pt-0 px-1">
|
|
52
|
+
Content with smooth height animations. The CSS variables
|
|
53
|
+
--radix-collapsible-content-height and --radix-collapsible-content-width
|
|
54
|
+
are available for custom animation implementations.
|
|
55
|
+
</div>
|
|
56
|
+
</CollapsibleContent>
|
|
57
|
+
```
|
|
58
|
+
### Example 4
|
|
59
|
+
```tsx
|
|
60
|
+
// Force mounted content (stays in DOM when collapsed)
|
|
61
|
+
<CollapsibleContent forceMount className="data-[state=closed]:hidden">
|
|
62
|
+
<div className="p-4 text-sm">
|
|
63
|
+
This content remains in the DOM even when collapsed,
|
|
64
|
+
useful for maintaining form state or for SSR consistency.
|
|
65
|
+
</div>
|
|
66
|
+
</CollapsibleContent>
|
|
67
|
+
```
|
|
68
|
+
### Example 5
|
|
69
|
+
```tsx
|
|
70
|
+
// Content with asChild composition
|
|
71
|
+
<CollapsibleContent asChild>
|
|
72
|
+
<motion.div
|
|
73
|
+
initial={{ height: 0 }}
|
|
74
|
+
animate={{ height: "auto" }}
|
|
75
|
+
exit={{ height: 0 }}
|
|
76
|
+
className="overflow-hidden"
|
|
77
|
+
>
|
|
78
|
+
<div className="p-4">
|
|
79
|
+
Content with custom Framer Motion animations
|
|
80
|
+
</div>
|
|
81
|
+
</motion.div>
|
|
82
|
+
</CollapsibleContent>
|
|
83
|
+
```
|
|
84
|
+
### Example 6
|
|
85
|
+
```tsx
|
|
86
|
+
// Content with complex nested structure
|
|
87
|
+
<CollapsibleContent className="overflow-hidden">
|
|
88
|
+
<div className="border-t pt-4 mt-2">
|
|
89
|
+
<div className="grid grid-cols-2 gap-4">
|
|
90
|
+
<div className="space-y-2">
|
|
91
|
+
<h4 className="font-medium">Documentation</h4>
|
|
92
|
+
<ul className="text-sm space-y-1 text-muted-foreground">
|
|
93
|
+
<li>Getting Started</li>
|
|
94
|
+
<li>Installation</li>
|
|
95
|
+
<li>Configuration</li>
|
|
96
|
+
</ul>
|
|
97
|
+
</div>
|
|
98
|
+
<div className="space-y-2">
|
|
99
|
+
<h4 className="font-medium">Examples</h4>
|
|
100
|
+
<ul className="text-sm space-y-1 text-muted-foreground">
|
|
101
|
+
<li>Basic Usage</li>
|
|
102
|
+
<li>Advanced Patterns</li>
|
|
103
|
+
<li>Custom Styling</li>
|
|
104
|
+
</ul>
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
</CollapsibleContent>
|
|
109
|
+
```
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# CollapsibleTrigger
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Interactive trigger element that toggles collapsible content visibility The clickable element that controls the expanded/collapsed state of the associated CollapsibleContent. Built on Radix UI CollapsibleTrigger primitive with automatic ARIA management and keyboard support. Supports the asChild prop for composition with custom button components or other interactive elements. **Key Features:** - Automatic `aria-expanded` state management - Built-in keyboard navigation (Space/Enter) - Flexible composition via `asChild` pattern - Seamless integration with any interactive element
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { CollapsibleTrigger } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<CollapsibleTrigger
|
|
13
|
+
asChild={true}
|
|
14
|
+
/>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Component Props
|
|
18
|
+
|
|
19
|
+
### asChild
|
|
20
|
+
- **Type**: `boolean`
|
|
21
|
+
- **Required**: No
|
|
22
|
+
- **Description**: When true, merges props onto immediate child instead of rendering button
|
|
23
|
+
|
|
24
|
+
## Examples
|
|
25
|
+
|
|
26
|
+
### Example 1
|
|
27
|
+
```tsx
|
|
28
|
+
// Simple text trigger with default button styling
|
|
29
|
+
<CollapsibleTrigger className="font-medium hover:underline">
|
|
30
|
+
Can I use this in my project?
|
|
31
|
+
</CollapsibleTrigger>
|
|
32
|
+
```
|
|
33
|
+
### Example 2
|
|
34
|
+
```tsx
|
|
35
|
+
// Composed with Button component for consistent styling
|
|
36
|
+
<CollapsibleTrigger asChild>
|
|
37
|
+
<Button variant="outline" className="w-full justify-between">
|
|
38
|
+
Advanced Settings
|
|
39
|
+
<ChevronDown className="h-4 w-4 transition-transform duration-200 group-data-[state=open]:rotate-180" />
|
|
40
|
+
</Button>
|
|
41
|
+
</CollapsibleTrigger>
|
|
42
|
+
```
|
|
43
|
+
### Example 3
|
|
44
|
+
```tsx
|
|
45
|
+
// Custom styled trigger with icon animation
|
|
46
|
+
<CollapsibleTrigger className="flex w-full items-center justify-between py-4 text-left text-sm font-medium transition-all hover:underline focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring">
|
|
47
|
+
How does it work?
|
|
48
|
+
<ChevronDown className="h-4 w-4 shrink-0 transition-transform duration-200 data-[state=open]:rotate-180" />
|
|
49
|
+
</CollapsibleTrigger>
|
|
50
|
+
```
|
|
51
|
+
### Example 4
|
|
52
|
+
```tsx
|
|
53
|
+
// Trigger composed with icon button
|
|
54
|
+
<CollapsibleTrigger asChild>
|
|
55
|
+
<Button variant="ghost" size="sm" className="h-8 w-8 p-0">
|
|
56
|
+
<MoreHorizontal className="h-4 w-4" />
|
|
57
|
+
<span className="sr-only">Toggle options</span>
|
|
58
|
+
</Button>
|
|
59
|
+
</CollapsibleTrigger>
|
|
60
|
+
```
|
|
61
|
+
### Example 5
|
|
62
|
+
```tsx
|
|
63
|
+
// Trigger with custom element using asChild
|
|
64
|
+
<CollapsibleTrigger asChild>
|
|
65
|
+
<div
|
|
66
|
+
role="button"
|
|
67
|
+
tabIndex={0}
|
|
68
|
+
className="flex items-center gap-2 p-2 rounded cursor-pointer hover:bg-accent"
|
|
69
|
+
>
|
|
70
|
+
<FolderIcon className="h-4 w-4" />
|
|
71
|
+
<span>Project Files</span>
|
|
72
|
+
<ChevronRight className="h-3 w-3 transition-transform data-[state=open]:rotate-90" />
|
|
73
|
+
</div>
|
|
74
|
+
</CollapsibleTrigger>
|
|
75
|
+
```
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Collapsible
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
An interactive component which expands/collapses a panel A flexible container component built on Radix UI Collapsible primitives that allows users to toggle the visibility of content sections. Unlike Accordion, Collapsible provides more flexibility without enforcing specific visual structures or mutual exclusivity. Perfect for FAQ sections, expandable details, settings panels, sidebar navigation, and any content that should be conditionally visible. Built on `@radix-ui/react-collapsible` with enhanced TypeScript support and comprehensive prop documentation.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { Collapsible } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<Collapsible
|
|
13
|
+
asChild={true}
|
|
14
|
+
defaultOpen={true}
|
|
15
|
+
open={true}
|
|
16
|
+
onOpenChange={handleOpenChange}
|
|
17
|
+
disabled={true}
|
|
18
|
+
/>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Component Props
|
|
22
|
+
|
|
23
|
+
### asChild
|
|
24
|
+
- **Type**: `boolean`
|
|
25
|
+
- **Required**: No
|
|
26
|
+
- **Description**: No description available
|
|
27
|
+
|
|
28
|
+
### defaultOpen
|
|
29
|
+
- **Type**: `boolean`
|
|
30
|
+
- **Required**: No
|
|
31
|
+
- **Description**: No description available
|
|
32
|
+
|
|
33
|
+
### open
|
|
34
|
+
- **Type**: `boolean`
|
|
35
|
+
- **Required**: No
|
|
36
|
+
- **Description**: No description available
|
|
37
|
+
|
|
38
|
+
### onOpenChange
|
|
39
|
+
- **Type**: `(open: boolean) => void`
|
|
40
|
+
- **Required**: No
|
|
41
|
+
- **Description**: No description available
|
|
42
|
+
|
|
43
|
+
### disabled
|
|
44
|
+
- **Type**: `boolean`
|
|
45
|
+
- **Required**: No
|
|
46
|
+
- **Description**: No description available
|
|
47
|
+
|
|
48
|
+
## Examples
|
|
49
|
+
|
|
50
|
+
### Example 1
|
|
51
|
+
```tsx
|
|
52
|
+
// Basic controlled collapsible with state management
|
|
53
|
+
const [isOpen, setIsOpen] = React.useState(false)
|
|
54
|
+
<Collapsible open={isOpen} onOpenChange={setIsOpen}>
|
|
55
|
+
<CollapsibleTrigger asChild>
|
|
56
|
+
<Button variant="outline" className="w-full justify-between">
|
|
57
|
+
Can I use this in my project?
|
|
58
|
+
<ChevronDown className={cn(
|
|
59
|
+
"h-4 w-4 transition-transform duration-200",
|
|
60
|
+
isOpen && "rotate-180"
|
|
61
|
+
)} />
|
|
62
|
+
</Button>
|
|
63
|
+
</CollapsibleTrigger>
|
|
64
|
+
<CollapsibleContent className="overflow-hidden data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down">
|
|
65
|
+
<div className="p-4 border rounded-md bg-muted/50 mt-2">
|
|
66
|
+
Yes. Free to use for personal and commercial projects.
|
|
67
|
+
No attribution required.
|
|
68
|
+
</div>
|
|
69
|
+
</CollapsibleContent>
|
|
70
|
+
</Collapsible>
|
|
71
|
+
```
|
|
72
|
+
### Example 2
|
|
73
|
+
```tsx
|
|
74
|
+
// Uncontrolled collapsible with default state
|
|
75
|
+
<Collapsible defaultOpen={true} className="w-full space-y-2">
|
|
76
|
+
<div className="flex items-center justify-between">
|
|
77
|
+
<h4 className="text-sm font-semibold">
|
|
78
|
+
### Example 3
|
|
79
|
+
```tsx
|
|
80
|
+
// FAQ-style implementation with custom animations
|
|
81
|
+
<Collapsible className="group" data-orientation="vertical">
|
|
82
|
+
<CollapsibleTrigger className="flex w-full items-center justify-between py-4 text-sm font-medium transition-all hover:underline focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring">
|
|
83
|
+
How do I get started?
|
|
84
|
+
<ChevronDown className="h-4 w-4 shrink-0 transition-transform duration-200 group-data-[state=open]:rotate-180" />
|
|
85
|
+
</CollapsibleTrigger>
|
|
86
|
+
<CollapsibleContent className="overflow-hidden text-sm transition-all data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down">
|
|
87
|
+
<div className="pb-4 pt-0">
|
|
88
|
+
Getting started is easy! Simply follow our quick setup guide,
|
|
89
|
+
install the required dependencies, and begin building your application.
|
|
90
|
+
Check out our documentation for detailed instructions.
|
|
91
|
+
</div>
|
|
92
|
+
</CollapsibleContent>
|
|
93
|
+
</Collapsible>
|
|
94
|
+
```
|
|
95
|
+
### Example 4
|
|
96
|
+
```tsx
|
|
97
|
+
// Disabled collapsible state
|
|
98
|
+
<Collapsible disabled className="opacity-50 cursor-not-allowed">
|
|
99
|
+
<CollapsibleTrigger className="flex w-full items-center justify-between py-4 text-sm font-medium">
|
|
100
|
+
This section is temporarily unavailable
|
|
101
|
+
<ChevronDown className="h-4 w-4" />
|
|
102
|
+
</CollapsibleTrigger>
|
|
103
|
+
<CollapsibleContent>
|
|
104
|
+
<div className="pb-4 pt-0 text-sm text-muted-foreground">
|
|
105
|
+
This content is currently disabled and cannot be accessed.
|
|
106
|
+
</div>
|
|
107
|
+
</CollapsibleContent>
|
|
108
|
+
</Collapsible>
|
|
109
|
+
```
|