@neynar/ui 0.1.3 → 0.2.1
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/badge.d.ts +7 -1
- package/dist/components/ui/badge.d.ts.map +1 -1
- 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 +28410 -18854
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/llm/components/typography.md +92 -88
- package/llm-docs/badge.llm.md +24 -10
- package/package.json +1 -1
- package/src/components/ui/badge.tsx +21 -3
- 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 +38 -11
|
@@ -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
|
package/llm-docs/badge.llm.md
CHANGED
|
@@ -7,35 +7,35 @@ Badge - Versatile status indicator component for labels, counts, and notificatio
|
|
|
7
7
|
## JSX Usage
|
|
8
8
|
|
|
9
9
|
```jsx
|
|
10
|
-
import { Badge } from
|
|
10
|
+
import { Badge } from "@neynar/ui";
|
|
11
11
|
|
|
12
|
-
<Badge
|
|
13
|
-
variant={value}
|
|
14
|
-
className="value"
|
|
15
|
-
asChild={true}
|
|
16
|
-
>
|
|
12
|
+
<Badge variant={value} className="value" asChild={true}>
|
|
17
13
|
{/* Your content here */}
|
|
18
|
-
</Badge
|
|
14
|
+
</Badge>;
|
|
19
15
|
```
|
|
20
16
|
|
|
21
17
|
## Component Props
|
|
22
18
|
|
|
23
19
|
### variant
|
|
24
|
-
|
|
20
|
+
|
|
21
|
+
- **Type**: `"default" | "secondary" | "destructive" | "success" | "warning" | "info" | "outline"`
|
|
25
22
|
- **Required**: No
|
|
26
23
|
- **Description**: No description available
|
|
27
24
|
|
|
28
25
|
### className
|
|
26
|
+
|
|
29
27
|
- **Type**: `string`
|
|
30
28
|
- **Required**: No
|
|
31
29
|
- **Description**: No description available
|
|
32
30
|
|
|
33
31
|
### children
|
|
32
|
+
|
|
34
33
|
- **Type**: `React.ReactNode`
|
|
35
34
|
- **Required**: No
|
|
36
35
|
- **Description**: No description available
|
|
37
36
|
|
|
38
37
|
### asChild
|
|
38
|
+
|
|
39
39
|
- **Type**: `boolean`
|
|
40
40
|
- **Required**: No
|
|
41
41
|
- **Description**: No description available
|
|
@@ -43,14 +43,20 @@ import { Badge } from '@neynar/ui';
|
|
|
43
43
|
## Examples
|
|
44
44
|
|
|
45
45
|
### Example 1
|
|
46
|
+
|
|
46
47
|
```tsx
|
|
47
48
|
// Basic status badges
|
|
48
49
|
<Badge>New</Badge>
|
|
49
50
|
<Badge variant="secondary">Draft</Badge>
|
|
50
51
|
<Badge variant="destructive">Error</Badge>
|
|
52
|
+
<Badge variant="success">Success</Badge>
|
|
53
|
+
<Badge variant="warning">Warning</Badge>
|
|
54
|
+
<Badge variant="info">Info</Badge>
|
|
51
55
|
<Badge variant="outline">Pending</Badge>
|
|
52
56
|
```
|
|
57
|
+
|
|
53
58
|
### Example 2
|
|
59
|
+
|
|
54
60
|
```tsx
|
|
55
61
|
// Badge with icon content
|
|
56
62
|
import { Check, AlertTriangle } from "lucide-react";
|
|
@@ -63,7 +69,9 @@ import { Check, AlertTriangle } from "lucide-react";
|
|
|
63
69
|
Failed
|
|
64
70
|
</Badge>
|
|
65
71
|
```
|
|
72
|
+
|
|
66
73
|
### Example 3
|
|
74
|
+
|
|
67
75
|
```tsx
|
|
68
76
|
// Notification count badge
|
|
69
77
|
<div className="relative inline-block">
|
|
@@ -73,7 +81,9 @@ import { Check, AlertTriangle } from "lucide-react";
|
|
|
73
81
|
</Badge>
|
|
74
82
|
</div>
|
|
75
83
|
```
|
|
84
|
+
|
|
76
85
|
### Example 4
|
|
86
|
+
|
|
77
87
|
```tsx
|
|
78
88
|
// Interactive badge as link using asChild
|
|
79
89
|
import Link from "next/link";
|
|
@@ -81,9 +91,11 @@ import Link from "next/link";
|
|
|
81
91
|
<Link href="/notifications" className="cursor-pointer">
|
|
82
92
|
3 new messages
|
|
83
93
|
</Link>
|
|
84
|
-
</Badge
|
|
94
|
+
</Badge>;
|
|
85
95
|
```
|
|
96
|
+
|
|
86
97
|
### Example 5
|
|
98
|
+
|
|
87
99
|
```tsx
|
|
88
100
|
// Interactive badge as button
|
|
89
101
|
<Badge asChild>
|
|
@@ -92,7 +104,9 @@ import Link from "next/link";
|
|
|
92
104
|
</button>
|
|
93
105
|
</Badge>
|
|
94
106
|
```
|
|
107
|
+
|
|
95
108
|
### Example 6
|
|
109
|
+
|
|
96
110
|
```tsx
|
|
97
111
|
// Removable tag badge with close button
|
|
98
112
|
<Badge className="pr-1 gap-1">
|
|
@@ -105,4 +119,4 @@ import Link from "next/link";
|
|
|
105
119
|
<X className="h-3 w-3" />
|
|
106
120
|
</button>
|
|
107
121
|
</Badge>
|
|
108
|
-
```
|
|
122
|
+
```
|
package/package.json
CHANGED
|
@@ -23,6 +23,9 @@ import { cn } from "@/lib/utils";
|
|
|
23
23
|
* @variant default - Primary brand color badge for important status indicators and primary actions
|
|
24
24
|
* @variant secondary - Muted background badge for supplementary information and low-priority labels
|
|
25
25
|
* @variant destructive - Error/warning badge for critical states, failures, and urgent attention
|
|
26
|
+
* @variant success - Success badge for positive states, successes, and positive attention
|
|
27
|
+
* @variant warning - Warning badge for warning states, warnings, and negative attention
|
|
28
|
+
* @variant info - Info badge for informational states, information, and neutral attention
|
|
26
29
|
* @variant outline - Subtle border-only badge for minimal emphasis and subtle labeling
|
|
27
30
|
*
|
|
28
31
|
* @param props - Variant configuration object
|
|
@@ -43,7 +46,7 @@ import { cn } from "@/lib/utils";
|
|
|
43
46
|
* ```
|
|
44
47
|
*/
|
|
45
48
|
const badgeVariants = cva(
|
|
46
|
-
"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-
|
|
49
|
+
"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-bold w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
|
47
50
|
{
|
|
48
51
|
variants: {
|
|
49
52
|
variant: {
|
|
@@ -52,7 +55,12 @@ const badgeVariants = cva(
|
|
|
52
55
|
secondary:
|
|
53
56
|
"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
54
57
|
destructive:
|
|
55
|
-
"border-transparent bg-destructive text-
|
|
58
|
+
"border-transparent bg-destructive text-destructive-foreground [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
59
|
+
success:
|
|
60
|
+
"border-transparent bg-success text-success-foreground [a&]:hover:bg-success/90",
|
|
61
|
+
warning:
|
|
62
|
+
"border-transparent bg-warning text-warning-foreground [a&]:hover:bg-warning/90",
|
|
63
|
+
info: "border-transparent bg-info text-info-foreground [a&]:hover:bg-info/90",
|
|
56
64
|
outline:
|
|
57
65
|
"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
|
|
58
66
|
},
|
|
@@ -70,7 +78,14 @@ const badgeVariants = cva(
|
|
|
70
78
|
// eslint-disable-next-line unused-imports/no-unused-vars
|
|
71
79
|
type BadgeDocsProps = {
|
|
72
80
|
/** The visual variant of the badge that determines its color scheme and emphasis level */
|
|
73
|
-
variant?:
|
|
81
|
+
variant?:
|
|
82
|
+
| "default"
|
|
83
|
+
| "secondary"
|
|
84
|
+
| "destructive"
|
|
85
|
+
| "success"
|
|
86
|
+
| "warning"
|
|
87
|
+
| "info"
|
|
88
|
+
| "outline";
|
|
74
89
|
/** Additional CSS classes to apply to the badge for custom styling */
|
|
75
90
|
className?: string;
|
|
76
91
|
/** Content to display inside the badge (text, icons, or React components) */
|
|
@@ -100,6 +115,9 @@ type BadgeDocsProps = {
|
|
|
100
115
|
* <Badge>New</Badge>
|
|
101
116
|
* <Badge variant="secondary">Draft</Badge>
|
|
102
117
|
* <Badge variant="destructive">Error</Badge>
|
|
118
|
+
* <Badge variant="success">Success</Badge>
|
|
119
|
+
* <Badge variant="warning">Warning</Badge>
|
|
120
|
+
* <Badge variant="info">Info</Badge>
|
|
103
121
|
* <Badge variant="outline">Pending</Badge>
|
|
104
122
|
* ```
|
|
105
123
|
*
|
|
@@ -5,6 +5,7 @@ import { cn } from "@/lib/utils";
|
|
|
5
5
|
* Spacing options for Stack component using Tailwind CSS spacing scale
|
|
6
6
|
*
|
|
7
7
|
* Maps to Tailwind spacing utilities:
|
|
8
|
+
* - 0 = 0rem (0px) - No spacing
|
|
8
9
|
* - 1 = 0.25rem (4px) - Ultra-tight spacing for dense layouts
|
|
9
10
|
* - 2 = 0.5rem (8px) - Tight spacing for compact components
|
|
10
11
|
* - 3 = 0.75rem (12px) - Close spacing for related items
|
|
@@ -13,7 +14,7 @@ import { cn } from "@/lib/utils";
|
|
|
13
14
|
* - 8 = 2rem (32px) - Wide spacing for distinct content areas
|
|
14
15
|
* - 12 = 3rem (48px) - Extra-wide spacing for major layout divisions
|
|
15
16
|
*/
|
|
16
|
-
type StackSpacing = 1 | 2 | 3 | 4 | 6 | 8 | 12;
|
|
17
|
+
type StackSpacing = 0 | 1 | 2 | 3 | 4 | 6 | 8 | 12;
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* Layout direction options for Stack component
|
|
@@ -49,6 +50,7 @@ type StackDocsProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
|
49
50
|
* rem values for predictable visual hierarchy.
|
|
50
51
|
*
|
|
51
52
|
* **Spacing Guidelines:**
|
|
53
|
+
* - Use `0` for no spacing, good for typography and inline elements
|
|
52
54
|
* - Use `1-2` for tightly related items (button groups, form fields)
|
|
53
55
|
* - Use `3-4` for standard component spacing (default recommended)
|
|
54
56
|
* - Use `6-8` for section separation and content areas
|
|
@@ -475,6 +477,7 @@ const Stack = React.forwardRef<
|
|
|
475
477
|
className={cn(
|
|
476
478
|
direction === "vertical" ? "flex flex-col" : "flex flex-row",
|
|
477
479
|
{
|
|
480
|
+
"space-y-0": direction === "vertical" && spacing === 0,
|
|
478
481
|
"space-y-1": direction === "vertical" && spacing === 1,
|
|
479
482
|
"space-y-2": direction === "vertical" && spacing === 2,
|
|
480
483
|
"space-y-3": direction === "vertical" && spacing === 3,
|
|
@@ -482,6 +485,7 @@ const Stack = React.forwardRef<
|
|
|
482
485
|
"space-y-6": direction === "vertical" && spacing === 6,
|
|
483
486
|
"space-y-8": direction === "vertical" && spacing === 8,
|
|
484
487
|
"space-y-12": direction === "vertical" && spacing === 12,
|
|
488
|
+
"space-x-0": direction === "horizontal" && spacing === 0,
|
|
485
489
|
"space-x-1": direction === "horizontal" && spacing === 1,
|
|
486
490
|
"space-x-2": direction === "horizontal" && spacing === 2,
|
|
487
491
|
"space-x-3": direction === "horizontal" && spacing === 3,
|