@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
|
@@ -1,97 +1,26 @@
|
|
|
1
1
|
# Typography Components
|
|
2
2
|
|
|
3
3
|
## Typography
|
|
4
|
-
Consistent text styling with semantic variants and accessibility features.
|
|
5
|
-
|
|
6
|
-
```tsx
|
|
7
|
-
import { Typography } from "@neynar/ui"
|
|
8
|
-
|
|
9
|
-
// Basic usage with semantic variants
|
|
10
|
-
<Typography variant="heading" as="h1">
|
|
11
|
-
Main Page Title
|
|
12
|
-
</Typography>
|
|
13
|
-
|
|
14
|
-
<Typography variant="subheading" as="h2">
|
|
15
|
-
Section Header
|
|
16
|
-
</Typography>
|
|
17
|
-
|
|
18
|
-
<Typography variant="body">
|
|
19
|
-
Standard paragraph text content with proper line height and spacing.
|
|
20
|
-
</Typography>
|
|
21
|
-
|
|
22
|
-
<Typography variant="bodyEmphasized">
|
|
23
|
-
Emphasized text for important information.
|
|
24
|
-
</Typography>
|
|
25
|
-
|
|
26
|
-
// Color and styling options
|
|
27
|
-
<Typography variant="body" color="muted">
|
|
28
|
-
Secondary information in muted color
|
|
29
|
-
</Typography>
|
|
30
|
-
|
|
31
|
-
<Typography variant="details" color="destructive">
|
|
32
|
-
Error or warning text
|
|
33
|
-
</Typography>
|
|
34
|
-
|
|
35
|
-
// Form field labels
|
|
36
|
-
<Typography variant="field" as="label" htmlFor="email">
|
|
37
|
-
Email Address
|
|
38
|
-
</Typography>
|
|
39
4
|
|
|
40
|
-
|
|
41
|
-
<Typography variant="code" as="code">
|
|
42
|
-
const example = "Hello, world!";
|
|
43
|
-
</Typography>
|
|
44
|
-
|
|
45
|
-
// Table content
|
|
46
|
-
<Typography variant="tableHeader" as="th">
|
|
47
|
-
Column Header
|
|
48
|
-
</Typography>
|
|
49
|
-
|
|
50
|
-
<Typography variant="tableCell" as="td">
|
|
51
|
-
Cell content
|
|
52
|
-
</Typography>
|
|
53
|
-
|
|
54
|
-
// Microcopy for fine print
|
|
55
|
-
<Typography variant="microcopy" color="muted">
|
|
56
|
-
Terms and conditions apply
|
|
57
|
-
</Typography>
|
|
58
|
-
|
|
59
|
-
// Advanced styling
|
|
60
|
-
<Typography
|
|
61
|
-
variant="body"
|
|
62
|
-
color="accent"
|
|
63
|
-
italic
|
|
64
|
-
underline
|
|
65
|
-
align="center"
|
|
66
|
-
>
|
|
67
|
-
Styled text with multiple options
|
|
68
|
-
</Typography>
|
|
69
|
-
|
|
70
|
-
// Truncated text
|
|
71
|
-
<Typography variant="body" truncate className="max-w-xs">
|
|
72
|
-
Long text that will be truncated with ellipsis
|
|
73
|
-
</Typography>
|
|
74
|
-
|
|
75
|
-
// Screen reader only content
|
|
76
|
-
<Typography variant="details" srOnly>
|
|
77
|
-
Additional context for accessibility
|
|
78
|
-
</Typography>
|
|
79
|
-
```
|
|
5
|
+
Consistent text styling with semantic variants and accessibility features.
|
|
80
6
|
|
|
81
7
|
### Typography Design System
|
|
82
8
|
|
|
83
9
|
The Typography component uses a carefully designed font scale that maps to your design system:
|
|
84
10
|
|
|
85
|
-
- **
|
|
86
|
-
- **
|
|
87
|
-
- **body** (
|
|
88
|
-
- **
|
|
89
|
-
- **
|
|
90
|
-
- **
|
|
91
|
-
- **
|
|
92
|
-
- **
|
|
93
|
-
- **
|
|
94
|
-
- **
|
|
11
|
+
- **microcopy** (10px / 1.2)
|
|
12
|
+
- **detail** (13px / 1.2)
|
|
13
|
+
- **body** (15px / 1.1)
|
|
14
|
+
- **bodyBlog** (17px / 1.5)
|
|
15
|
+
- **paragraphLead** (17px 1.2)
|
|
16
|
+
- **eyebrow** (20px / 1.2)
|
|
17
|
+
- **subHeadline** (22px / 1.2)
|
|
18
|
+
- **headline** (36px / 1.2)
|
|
19
|
+
- **sectionTitle** (45px / 1.4)
|
|
20
|
+
- **pageTitle** (56px / 1.4)
|
|
21
|
+
- **displayTitle** (72px / 1.1)
|
|
22
|
+
- **heroTitle** (90px 1.1)
|
|
23
|
+
- **code** (15px / 1.2)
|
|
95
24
|
|
|
96
25
|
### Accessibility Features
|
|
97
26
|
|
|
@@ -106,6 +35,7 @@ The Typography component uses a carefully designed font scale that maps to your
|
|
|
106
35
|
The Typography system includes semantic HTML components for better accessibility and developer experience:
|
|
107
36
|
|
|
108
37
|
### H1-H6 (Headings)
|
|
38
|
+
|
|
109
39
|
```tsx
|
|
110
40
|
import { H1, H2, H3, H4, H5, H6 } from "@neynar/ui"
|
|
111
41
|
|
|
@@ -116,6 +46,7 @@ import { H1, H2, H3, H4, H5, H6 } from "@neynar/ui"
|
|
|
116
46
|
```
|
|
117
47
|
|
|
118
48
|
### P (Paragraph)
|
|
49
|
+
|
|
119
50
|
```tsx
|
|
120
51
|
import { P } from "@neynar/ui"
|
|
121
52
|
|
|
@@ -124,6 +55,7 @@ import { P } from "@neynar/ui"
|
|
|
124
55
|
```
|
|
125
56
|
|
|
126
57
|
### A (Anchor/Link)
|
|
58
|
+
|
|
127
59
|
```tsx
|
|
128
60
|
import { A } from "@neynar/ui"
|
|
129
61
|
|
|
@@ -142,6 +74,7 @@ import { A } from "@neynar/ui"
|
|
|
142
74
|
```
|
|
143
75
|
|
|
144
76
|
### Other Semantic Elements
|
|
77
|
+
|
|
145
78
|
```tsx
|
|
146
79
|
import { Span, Code, Small, Strong, Lead, Blockquote } from "@neynar/ui"
|
|
147
80
|
|
|
@@ -156,6 +89,7 @@ import { Span, Code, Small, Strong, Lead, Blockquote } from "@neynar/ui"
|
|
|
156
89
|
## Framework Integration
|
|
157
90
|
|
|
158
91
|
### Next.js Link Integration
|
|
92
|
+
|
|
159
93
|
```tsx
|
|
160
94
|
// Create a custom Link component
|
|
161
95
|
import Link from "next/link";
|
|
@@ -170,10 +104,13 @@ function AppLink({ href, children, ...props }) {
|
|
|
170
104
|
}
|
|
171
105
|
|
|
172
106
|
// Usage
|
|
173
|
-
<AppLink href="/about" variant="subheading">
|
|
107
|
+
<AppLink href="/about" variant="subheading">
|
|
108
|
+
About Us
|
|
109
|
+
</AppLink>;
|
|
174
110
|
```
|
|
175
111
|
|
|
176
112
|
### React Router Integration
|
|
113
|
+
|
|
177
114
|
```tsx
|
|
178
115
|
// Custom Link for React Router
|
|
179
116
|
import { Link } from "react-router-dom";
|
|
@@ -188,7 +125,74 @@ function AppLink({ to, children, ...props }) {
|
|
|
188
125
|
}
|
|
189
126
|
|
|
190
127
|
// Usage
|
|
191
|
-
<AppLink to="/contact" color="accent">
|
|
128
|
+
<AppLink to="/contact" color="accent">
|
|
129
|
+
Contact
|
|
130
|
+
</AppLink>;
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Typography Component
|
|
134
|
+
|
|
135
|
+
Only use as a last resort if none of the other components apply
|
|
136
|
+
|
|
137
|
+
```tsx
|
|
138
|
+
import { Typography } from "@neynar/ui"
|
|
139
|
+
|
|
140
|
+
// Basic usage with semantic variants
|
|
141
|
+
<Typography variant="heroTitle" as="h1">
|
|
142
|
+
Main Page Title
|
|
143
|
+
</Typography>
|
|
144
|
+
|
|
145
|
+
<Typography variant="pageTitle" as="h2">
|
|
146
|
+
Section Header
|
|
147
|
+
</Typography>
|
|
148
|
+
|
|
149
|
+
<Typography variant="body">
|
|
150
|
+
Standard paragraph text content with proper line height and spacing.
|
|
151
|
+
</Typography>
|
|
152
|
+
|
|
153
|
+
<Typography variant="body" weight="bold">
|
|
154
|
+
Emphasized text for important information.
|
|
155
|
+
</Typography>
|
|
156
|
+
|
|
157
|
+
// Color and styling options
|
|
158
|
+
<Typography variant="body" color="muted">
|
|
159
|
+
Secondary information in muted color
|
|
160
|
+
</Typography>
|
|
161
|
+
|
|
162
|
+
<Typography variant="detail" color="destructive">
|
|
163
|
+
Error or warning text
|
|
164
|
+
</Typography>
|
|
165
|
+
|
|
166
|
+
// Form field labels
|
|
167
|
+
<Typography variant="detail" as="label" htmlFor="email">
|
|
168
|
+
Email Address
|
|
169
|
+
</Typography>
|
|
170
|
+
|
|
171
|
+
// Microcopy for fine print
|
|
172
|
+
<Typography variant="microcopy" color="muted">
|
|
173
|
+
Terms and conditions apply
|
|
174
|
+
</Typography>
|
|
175
|
+
|
|
176
|
+
// Advanced styling
|
|
177
|
+
<Typography
|
|
178
|
+
variant="body"
|
|
179
|
+
color="accent"
|
|
180
|
+
italic
|
|
181
|
+
underline
|
|
182
|
+
align="center"
|
|
183
|
+
>
|
|
184
|
+
Styled text with multiple options
|
|
185
|
+
</Typography>
|
|
186
|
+
|
|
187
|
+
// Truncated text
|
|
188
|
+
<Typography variant="body" truncate className="max-w-xs">
|
|
189
|
+
Long text that will be truncated with ellipsis
|
|
190
|
+
</Typography>
|
|
191
|
+
|
|
192
|
+
// Screen reader only content
|
|
193
|
+
<Typography variant="details" srOnly>
|
|
194
|
+
Additional context for accessibility
|
|
195
|
+
</Typography>
|
|
192
196
|
```
|
|
193
197
|
|
|
194
198
|
### Performance Notes
|
|
@@ -196,4 +200,4 @@ function AppLink({ to, children, ...props }) {
|
|
|
196
200
|
- Uses CSS custom properties for consistent theming
|
|
197
201
|
- Leverages Tailwind's default font scale for optimal bundle size
|
|
198
202
|
- Supports tree-shaking when used with selective imports
|
|
199
|
-
- Semantic components improve SEO and accessibility
|
|
203
|
+
- Semantic components improve SEO and accessibility
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# A
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
A - Anchor component for interactive text links Semantic anchor element for links with built-in hover states and accessibility features. Uses "body" variant with underline and smooth color transitions.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { A } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<A
|
|
13
|
+
variant={value}
|
|
14
|
+
color={value}
|
|
15
|
+
align={value}
|
|
16
|
+
transform={value}
|
|
17
|
+
weight={value}
|
|
18
|
+
htmlFor="value"
|
|
19
|
+
asChild={true}
|
|
20
|
+
italic={true}
|
|
21
|
+
underline={true}
|
|
22
|
+
strikethrough={true}
|
|
23
|
+
truncate={true}
|
|
24
|
+
srOnly={true}
|
|
25
|
+
href="value"
|
|
26
|
+
className="value"
|
|
27
|
+
>
|
|
28
|
+
{/* Your content here */}
|
|
29
|
+
</A>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Component Props
|
|
33
|
+
|
|
34
|
+
### variant
|
|
35
|
+
- **Type**: `| "heading"
|
|
36
|
+
| "subheading"
|
|
37
|
+
| "body"
|
|
38
|
+
| "bodyEmphasized"
|
|
39
|
+
| "details"
|
|
40
|
+
| "field"
|
|
41
|
+
| "code"
|
|
42
|
+
| "microcopy"
|
|
43
|
+
| "tableCell"
|
|
44
|
+
| "tableHeader"`
|
|
45
|
+
- **Required**: No
|
|
46
|
+
- **Description**: No description available
|
|
47
|
+
|
|
48
|
+
### color
|
|
49
|
+
- **Type**: `| "default"
|
|
50
|
+
| "muted"
|
|
51
|
+
| "accent"
|
|
52
|
+
| "destructive"
|
|
53
|
+
| "success"
|
|
54
|
+
| "warning"`
|
|
55
|
+
- **Required**: No
|
|
56
|
+
- **Description**: No description available
|
|
57
|
+
|
|
58
|
+
### align
|
|
59
|
+
- **Type**: `"left" | "center" | "right" | "justify"`
|
|
60
|
+
- **Required**: No
|
|
61
|
+
- **Description**: No description available
|
|
62
|
+
|
|
63
|
+
### transform
|
|
64
|
+
- **Type**: `"uppercase" | "lowercase" | "capitalize"`
|
|
65
|
+
- **Required**: No
|
|
66
|
+
- **Description**: No description available
|
|
67
|
+
|
|
68
|
+
### weight
|
|
69
|
+
- **Type**: `"normal" | "medium" | "semibold" | "bold"`
|
|
70
|
+
- **Required**: No
|
|
71
|
+
- **Description**: No description available
|
|
72
|
+
|
|
73
|
+
### htmlFor
|
|
74
|
+
- **Type**: `string`
|
|
75
|
+
- **Required**: No
|
|
76
|
+
- **Description**: No description available
|
|
77
|
+
|
|
78
|
+
### asChild
|
|
79
|
+
- **Type**: `boolean`
|
|
80
|
+
- **Required**: No
|
|
81
|
+
- **Description**: No description available
|
|
82
|
+
|
|
83
|
+
### italic
|
|
84
|
+
- **Type**: `boolean`
|
|
85
|
+
- **Required**: No
|
|
86
|
+
- **Description**: No description available
|
|
87
|
+
|
|
88
|
+
### underline
|
|
89
|
+
- **Type**: `boolean`
|
|
90
|
+
- **Required**: No
|
|
91
|
+
- **Description**: No description available
|
|
92
|
+
|
|
93
|
+
### strikethrough
|
|
94
|
+
- **Type**: `boolean`
|
|
95
|
+
- **Required**: No
|
|
96
|
+
- **Description**: No description available
|
|
97
|
+
|
|
98
|
+
### truncate
|
|
99
|
+
- **Type**: `boolean`
|
|
100
|
+
- **Required**: No
|
|
101
|
+
- **Description**: No description available
|
|
102
|
+
|
|
103
|
+
### srOnly
|
|
104
|
+
- **Type**: `boolean`
|
|
105
|
+
- **Required**: No
|
|
106
|
+
- **Description**: No description available
|
|
107
|
+
|
|
108
|
+
### href
|
|
109
|
+
- **Type**: `string`
|
|
110
|
+
- **Required**: No
|
|
111
|
+
- **Description**: No description available
|
|
112
|
+
|
|
113
|
+
### className
|
|
114
|
+
- **Type**: `string`
|
|
115
|
+
- **Required**: No
|
|
116
|
+
- **Description**: No description available
|
|
117
|
+
|
|
118
|
+
### children
|
|
119
|
+
- **Type**: `React.ReactNode`
|
|
120
|
+
- **Required**: No
|
|
121
|
+
- **Description**: No description available
|
|
122
|
+
|
|
123
|
+
## Examples
|
|
124
|
+
|
|
125
|
+
```tsx
|
|
126
|
+
// External link
|
|
127
|
+
<A href="https://neynar.com" target="_blank" rel="noopener noreferrer">
|
|
128
|
+
Visit Neynar Website
|
|
129
|
+
</A>
|
|
130
|
+
// Internal navigation
|
|
131
|
+
<A href="/dashboard" color="accent">
|
|
132
|
+
Go to Dashboard
|
|
133
|
+
</A>
|
|
134
|
+
// Composition with Next.js Link
|
|
135
|
+
<A asChild>
|
|
136
|
+
<Link href="/about">
|
|
137
|
+
Learn More About Us
|
|
138
|
+
</Link>
|
|
139
|
+
</A>
|
|
140
|
+
// In paragraph text
|
|
141
|
+
<P>
|
|
142
|
+
For more information, <A href="/docs">check our documentation</A> or
|
|
143
|
+
contact support.
|
|
144
|
+
</P>
|
|
145
|
+
```
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# AccordionContent
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
AccordionContent - Collapsible content area of an accordion item The expandable content section that is revealed or hidden when the associated AccordionTrigger is activated. Features smooth height-based animations using Tailwind CSS keyframes and supports any React content including complex layouts.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { AccordionContent } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<AccordionContent
|
|
13
|
+
className="value"
|
|
14
|
+
forceMount={value}
|
|
15
|
+
>
|
|
16
|
+
{/* Your content here */}
|
|
17
|
+
</AccordionContent>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Component Props
|
|
21
|
+
|
|
22
|
+
### className
|
|
23
|
+
- **Type**: `string`
|
|
24
|
+
- **Required**: No
|
|
25
|
+
- **Description**: No description available
|
|
26
|
+
|
|
27
|
+
### children
|
|
28
|
+
- **Type**: `React.ReactNode`
|
|
29
|
+
- **Required**: No
|
|
30
|
+
- **Description**: No description available
|
|
31
|
+
|
|
32
|
+
### forceMount
|
|
33
|
+
- **Type**: `true`
|
|
34
|
+
- **Required**: No
|
|
35
|
+
- **Description**: No description available
|
|
36
|
+
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
### Example 1
|
|
40
|
+
```tsx
|
|
41
|
+
// Simple text content
|
|
42
|
+
<AccordionContent>
|
|
43
|
+
<p>This content is revealed when the accordion is expanded.</p>
|
|
44
|
+
<p>It can contain any React components or HTML elements.</p>
|
|
45
|
+
</AccordionContent>
|
|
46
|
+
```
|
|
47
|
+
### Example 2
|
|
48
|
+
```tsx
|
|
49
|
+
// Rich content with components
|
|
50
|
+
<AccordionContent>
|
|
51
|
+
<div className="space-y-4">
|
|
52
|
+
<Alert>
|
|
53
|
+
<InfoIcon className="h-4 w-4" />
|
|
54
|
+
<AlertTitle>Important Note</AlertTitle>
|
|
55
|
+
<AlertDescription>This is highlighted information.</AlertDescription>
|
|
56
|
+
</Alert>
|
|
57
|
+
<Button variant="outline">Take Action</Button>
|
|
58
|
+
</div>
|
|
59
|
+
</AccordionContent>
|
|
60
|
+
```
|
|
61
|
+
### Example 3
|
|
62
|
+
```tsx
|
|
63
|
+
// Content with custom padding
|
|
64
|
+
<AccordionContent className="pt-6 pb-6">
|
|
65
|
+
Content with extra vertical padding for better spacing.
|
|
66
|
+
</AccordionContent>
|
|
67
|
+
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# AccordionItem
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
AccordionItem - Individual collapsible panel within an accordion A container component that wraps a single accordion section consisting of a trigger and collapsible content. Each item requires a unique value prop for identification and state management. Provides consistent spacing and border styling.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { AccordionItem } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<AccordionItem
|
|
13
|
+
value="value"
|
|
14
|
+
disabled={true}
|
|
15
|
+
className="value"
|
|
16
|
+
>
|
|
17
|
+
{/* Your content here */}
|
|
18
|
+
</AccordionItem>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Component Props
|
|
22
|
+
|
|
23
|
+
### value
|
|
24
|
+
- **Type**: `string`
|
|
25
|
+
- **Required**: Yes
|
|
26
|
+
- **Description**: No description available
|
|
27
|
+
|
|
28
|
+
### disabled
|
|
29
|
+
- **Type**: `boolean`
|
|
30
|
+
- **Required**: No
|
|
31
|
+
- **Description**: No description available
|
|
32
|
+
|
|
33
|
+
### className
|
|
34
|
+
- **Type**: `string`
|
|
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
|
+
<AccordionItem value="settings">
|
|
48
|
+
<AccordionTrigger>Account Settings</AccordionTrigger>
|
|
49
|
+
<AccordionContent>
|
|
50
|
+
<p>Manage your account preferences and security settings.</p>
|
|
51
|
+
</AccordionContent>
|
|
52
|
+
</AccordionItem>
|
|
53
|
+
```
|
|
54
|
+
### Example 2
|
|
55
|
+
```tsx
|
|
56
|
+
// With custom styling
|
|
57
|
+
<AccordionItem value="custom" className="border-l-4 border-blue-500">
|
|
58
|
+
<AccordionTrigger>Custom Styled Item</AccordionTrigger>
|
|
59
|
+
<AccordionContent>Content with custom left border</AccordionContent>
|
|
60
|
+
</AccordionItem>
|
|
61
|
+
```
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# AccordionTrigger
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
AccordionTrigger - Clickable header that toggles accordion content visibility An interactive button element that users click or activate via keyboard to expand or collapse the associated accordion content. Features a rotating chevron icon for visual state indication and supports both text and custom content.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { AccordionTrigger } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<AccordionTrigger
|
|
13
|
+
className="value"
|
|
14
|
+
disabled={true}
|
|
15
|
+
asChild={true}
|
|
16
|
+
>
|
|
17
|
+
{/* Your content here */}
|
|
18
|
+
</AccordionTrigger>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Component Props
|
|
22
|
+
|
|
23
|
+
### className
|
|
24
|
+
- **Type**: `string`
|
|
25
|
+
- **Required**: No
|
|
26
|
+
- **Description**: No description available
|
|
27
|
+
|
|
28
|
+
### children
|
|
29
|
+
- **Type**: `React.ReactNode`
|
|
30
|
+
- **Required**: No
|
|
31
|
+
- **Description**: No description available
|
|
32
|
+
|
|
33
|
+
### disabled
|
|
34
|
+
- **Type**: `boolean`
|
|
35
|
+
- **Required**: No
|
|
36
|
+
- **Description**: No description available
|
|
37
|
+
|
|
38
|
+
### asChild
|
|
39
|
+
- **Type**: `boolean`
|
|
40
|
+
- **Required**: No
|
|
41
|
+
- **Description**: No description available
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
|
|
45
|
+
### Example 1
|
|
46
|
+
```tsx
|
|
47
|
+
// Simple text trigger
|
|
48
|
+
<AccordionTrigger>
|
|
49
|
+
Click to expand this section
|
|
50
|
+
</AccordionTrigger>
|
|
51
|
+
```
|
|
52
|
+
### Example 2
|
|
53
|
+
```tsx
|
|
54
|
+
// With icon and custom styling
|
|
55
|
+
<AccordionTrigger className="text-lg font-semibold">
|
|
56
|
+
<User className="mr-2 h-4 w-4" />
|
|
57
|
+
User Profile Settings
|
|
58
|
+
</AccordionTrigger>
|
|
59
|
+
```
|
|
60
|
+
### Example 3
|
|
61
|
+
```tsx
|
|
62
|
+
// With complex content
|
|
63
|
+
<AccordionTrigger>
|
|
64
|
+
<div className="flex items-center justify-between w-full">
|
|
65
|
+
<span>Section Title</span>
|
|
66
|
+
<Badge variant="secondary">5 items</Badge>
|
|
67
|
+
</div>
|
|
68
|
+
</AccordionTrigger>
|
|
69
|
+
```
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Accordion
|
|
2
|
+
|
|
3
|
+
**Type**: component
|
|
4
|
+
|
|
5
|
+
Accordion - Collapsible content panels for organizing information A vertically stacked set of interactive headings that each reveal a section of content. Built on Radix UI Accordion primitives with optimized animations and accessibility. Supports both single and multiple expanded items simultaneously based on the type prop.
|
|
6
|
+
|
|
7
|
+
## JSX Usage
|
|
8
|
+
|
|
9
|
+
```jsx
|
|
10
|
+
import { Accordion } from '@neynar/ui';
|
|
11
|
+
|
|
12
|
+
<Accordion
|
|
13
|
+
disabled={true}
|
|
14
|
+
orientation={value}
|
|
15
|
+
dir={value}
|
|
16
|
+
className="value"
|
|
17
|
+
>
|
|
18
|
+
{/* Your content here */}
|
|
19
|
+
</Accordion>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Component Props
|
|
23
|
+
|
|
24
|
+
### disabled
|
|
25
|
+
- **Type**: `boolean`
|
|
26
|
+
- **Required**: No
|
|
27
|
+
- **Description**: No description available
|
|
28
|
+
|
|
29
|
+
### orientation
|
|
30
|
+
- **Type**: `"horizontal" | "vertical"`
|
|
31
|
+
- **Required**: No
|
|
32
|
+
- **Description**: No description available
|
|
33
|
+
|
|
34
|
+
### dir
|
|
35
|
+
- **Type**: `"ltr" | "rtl"`
|
|
36
|
+
- **Required**: No
|
|
37
|
+
- **Description**: No description available
|
|
38
|
+
|
|
39
|
+
### className
|
|
40
|
+
- **Type**: `string`
|
|
41
|
+
- **Required**: No
|
|
42
|
+
- **Description**: No description available
|
|
43
|
+
|
|
44
|
+
### children
|
|
45
|
+
- **Type**: `React.ReactNode`
|
|
46
|
+
- **Required**: No
|
|
47
|
+
- **Description**: No description available
|
|
48
|
+
|
|
49
|
+
## Examples
|
|
50
|
+
|
|
51
|
+
### Example 1
|
|
52
|
+
```tsx
|
|
53
|
+
// Basic single accordion (only one item can be open)
|
|
54
|
+
<Accordion type="single" collapsible>
|
|
55
|
+
<AccordionItem value="item-1">
|
|
56
|
+
<AccordionTrigger>Is it accessible?</AccordionTrigger>
|
|
57
|
+
<AccordionContent>
|
|
58
|
+
Yes. It adheres to the WAI-ARIA design pattern.
|
|
59
|
+
</AccordionContent>
|
|
60
|
+
</AccordionItem>
|
|
61
|
+
</Accordion>
|
|
62
|
+
```
|
|
63
|
+
### Example 2
|
|
64
|
+
```tsx
|
|
65
|
+
// Multiple accordion (multiple items can be open)
|
|
66
|
+
<Accordion type="multiple">
|
|
67
|
+
<AccordionItem value="item-1">
|
|
68
|
+
<AccordionTrigger>Section 1</AccordionTrigger>
|
|
69
|
+
<AccordionContent>Content for section 1</AccordionContent>
|
|
70
|
+
</AccordionItem>
|
|
71
|
+
<AccordionItem value="item-2">
|
|
72
|
+
<AccordionTrigger>Section 2</AccordionTrigger>
|
|
73
|
+
<AccordionContent>Content for section 2</AccordionContent>
|
|
74
|
+
</AccordionItem>
|
|
75
|
+
</Accordion>
|
|
76
|
+
```
|
|
77
|
+
### Example 3
|
|
78
|
+
```tsx
|
|
79
|
+
// FAQ-style accordion with default open state
|
|
80
|
+
<Accordion type="single" collapsible defaultValue="faq-1">
|
|
81
|
+
<AccordionItem value="faq-1">
|
|
82
|
+
<AccordionTrigger>How do I get started?</AccordionTrigger>
|
|
83
|
+
<AccordionContent>
|
|
84
|
+
Follow our quick start guide to set up your first project.
|
|
85
|
+
</AccordionContent>
|
|
86
|
+
</AccordionItem>
|
|
87
|
+
</Accordion>
|
|
88
|
+
```
|