@ugurdemirel/landcraft 0.1.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/README.md +132 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +589 -0
- package/dist/index.js +4521 -0
- package/dist/index.js.map +1 -0
- package/dist/styles.css +5979 -0
- package/package.json +67 -0
- package/src/components/Badge.tsx +68 -0
- package/src/components/Blog.tsx +243 -0
- package/src/components/Button.tsx +94 -0
- package/src/components/CTA.tsx +155 -0
- package/src/components/Card.tsx +80 -0
- package/src/components/Container.tsx +86 -0
- package/src/components/FAQ.tsx +163 -0
- package/src/components/Features.tsx +153 -0
- package/src/components/Footer.tsx +145 -0
- package/src/components/Hero.tsx +169 -0
- package/src/components/LogoCloud.tsx +100 -0
- package/src/components/MegaMenu.tsx +468 -0
- package/src/components/Navbar.tsx +183 -0
- package/src/components/Newsletter.tsx +180 -0
- package/src/components/Pricing.tsx +336 -0
- package/src/components/Prose.tsx +55 -0
- package/src/components/Section.tsx +106 -0
- package/src/components/Stats.tsx +181 -0
- package/src/components/Testimonials.tsx +205 -0
- package/src/icons.tsx +290 -0
- package/src/index.ts +111 -0
- package/src/styles/index.css +87 -0
- package/src/utils/cn.ts +6 -0
- package/src/utils/contrast.ts +107 -0
- package/src/utils/useTokenForeground.ts +38 -0
- package/tailwind.preset.cjs +121 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,589 @@
|
|
|
1
|
+
import { ButtonHTMLAttributes } from 'react';
|
|
2
|
+
import { ClassValue } from 'clsx';
|
|
3
|
+
import { ElementType } from 'react';
|
|
4
|
+
import { ForwardRefExoticComponent } from 'react';
|
|
5
|
+
import { HTMLAttributes } from 'react';
|
|
6
|
+
import { JSX as JSX_2 } from 'react';
|
|
7
|
+
import { ReactNode } from 'react';
|
|
8
|
+
import { RefAttributes } from 'react';
|
|
9
|
+
import { SVGProps } from 'react';
|
|
10
|
+
|
|
11
|
+
export declare const ArrowDown: (props: IconProps) => JSX_2.Element;
|
|
12
|
+
|
|
13
|
+
export declare const ArrowRight: (props: IconProps) => JSX_2.Element;
|
|
14
|
+
|
|
15
|
+
export declare const ArrowUp: (props: IconProps) => JSX_2.Element;
|
|
16
|
+
|
|
17
|
+
export declare const ArrowUpRight: (props: IconProps) => JSX_2.Element;
|
|
18
|
+
|
|
19
|
+
export declare const Badge: ForwardRefExoticComponent<BadgeProps & RefAttributes<HTMLSpanElement>>;
|
|
20
|
+
|
|
21
|
+
export declare interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
|
|
22
|
+
variant?: BadgeVariant;
|
|
23
|
+
size?: BadgeSize;
|
|
24
|
+
icon?: ReactNode;
|
|
25
|
+
/** Paints the chip with an arbitrary CSS color; text color is computed for contrast. */
|
|
26
|
+
customColor?: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export declare type BadgeSize = "sm" | "md";
|
|
30
|
+
|
|
31
|
+
export declare type BadgeVariant = "solid" | "soft" | "outline" | "dot";
|
|
32
|
+
|
|
33
|
+
export declare const BarChart: (props: IconProps) => JSX_2.Element;
|
|
34
|
+
|
|
35
|
+
export declare interface BlogAuthor {
|
|
36
|
+
name: string;
|
|
37
|
+
avatar?: ReactNode;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export declare const BlogCard: ForwardRefExoticComponent<BlogCardProps & RefAttributes<HTMLAnchorElement>>;
|
|
41
|
+
|
|
42
|
+
export declare interface BlogCardProps extends HTMLAttributes<HTMLAnchorElement> {
|
|
43
|
+
post: BlogPost;
|
|
44
|
+
option?: "card" | "row";
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export declare interface BlogPost {
|
|
48
|
+
title: string;
|
|
49
|
+
excerpt?: string;
|
|
50
|
+
/** Display date, e.g. "12 Aug 2026". */
|
|
51
|
+
date: string;
|
|
52
|
+
readTime?: string;
|
|
53
|
+
category?: string;
|
|
54
|
+
cover?: string;
|
|
55
|
+
/** Arbitrary CSS color for the cover placeholder accent. */
|
|
56
|
+
accent?: string;
|
|
57
|
+
href?: string;
|
|
58
|
+
author?: BlogAuthor;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export declare const BlogSection: ForwardRefExoticComponent<BlogSectionProps & RefAttributes<HTMLElement>>;
|
|
62
|
+
|
|
63
|
+
export declare interface BlogSectionProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
64
|
+
posts: BlogPost[];
|
|
65
|
+
/** Show only the first N posts. */
|
|
66
|
+
limit?: number;
|
|
67
|
+
columns?: 2 | 3;
|
|
68
|
+
option?: "card" | "row";
|
|
69
|
+
eyebrow?: ReactNode;
|
|
70
|
+
eyebrowStyle?: "caps" | "soft" | "plain";
|
|
71
|
+
title?: ReactNode;
|
|
72
|
+
description?: ReactNode;
|
|
73
|
+
showAllLabel?: string;
|
|
74
|
+
showAllHref?: string;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export declare const Box: (props: IconProps) => JSX_2.Element;
|
|
78
|
+
|
|
79
|
+
export declare const Button: ForwardRefExoticComponent<ButtonProps & RefAttributes<HTMLButtonElement>>;
|
|
80
|
+
|
|
81
|
+
export declare interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
82
|
+
variant?: ButtonVariant;
|
|
83
|
+
size?: ButtonSize;
|
|
84
|
+
iconLeft?: ReactNode;
|
|
85
|
+
iconRight?: ReactNode;
|
|
86
|
+
/** Paints the button with an arbitrary CSS color; text color is computed for contrast. */
|
|
87
|
+
customColor?: string;
|
|
88
|
+
fullWidth?: boolean;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export declare type ButtonSize = "sm" | "md" | "lg";
|
|
92
|
+
|
|
93
|
+
export declare type ButtonVariant = "primary" | "dark" | "outline" | "ghost" | "link";
|
|
94
|
+
|
|
95
|
+
export declare const Card: ForwardRefExoticComponent<CardProps & RefAttributes<HTMLDivElement>>;
|
|
96
|
+
|
|
97
|
+
export declare const CardContent: ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>;
|
|
98
|
+
|
|
99
|
+
export declare const CardDescription: ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & RefAttributes<HTMLParagraphElement>>;
|
|
100
|
+
|
|
101
|
+
export declare const CardFooter: ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>;
|
|
102
|
+
|
|
103
|
+
export declare const CardHeader: ForwardRefExoticComponent<CardHeaderProps & RefAttributes<HTMLDivElement>>;
|
|
104
|
+
|
|
105
|
+
export declare interface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {
|
|
106
|
+
icon?: ReactNode;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export declare interface CardProps extends HTMLAttributes<HTMLDivElement> {
|
|
110
|
+
variant?: CardVariant;
|
|
111
|
+
/** Softens the whole card with hover lift + border tint. */
|
|
112
|
+
interactive?: boolean;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export declare const CardTitle: ForwardRefExoticComponent<HTMLAttributes<HTMLHeadingElement> & RefAttributes<HTMLHeadingElement>>;
|
|
116
|
+
|
|
117
|
+
export declare type CardVariant = "outlined" | "elevated" | "inset";
|
|
118
|
+
|
|
119
|
+
export declare const Check: (props: IconProps) => JSX_2.Element;
|
|
120
|
+
|
|
121
|
+
export declare const ChevronDown: (props: IconProps) => JSX_2.Element;
|
|
122
|
+
|
|
123
|
+
export declare const ChevronLeft: (props: IconProps) => JSX_2.Element;
|
|
124
|
+
|
|
125
|
+
export declare const ChevronRight: (props: IconProps) => JSX_2.Element;
|
|
126
|
+
|
|
127
|
+
export declare const Clock: (props: IconProps) => JSX_2.Element;
|
|
128
|
+
|
|
129
|
+
export declare function cn(...inputs: ClassValue[]): string;
|
|
130
|
+
|
|
131
|
+
export declare const Code: (props: IconProps) => JSX_2.Element;
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Contrast utilities.
|
|
135
|
+
*
|
|
136
|
+
* The library ships paired semantic tokens (e.g. --color-primary /
|
|
137
|
+
* --color-on-primary) so explicit pairings stay safe. For the few places where
|
|
138
|
+
* a *dynamic* color paints a background (a `customColor` prop, a token-based
|
|
139
|
+
* highlight card...) we pick the text color that yields the **best WCAG
|
|
140
|
+
* contrast ratio** at runtime.
|
|
141
|
+
*
|
|
142
|
+
* Inputs may be hex colors, bare RGB channels ("21 128 61"), rgb() functions
|
|
143
|
+
* (`rgb(21 128 61 / 0.95)`) or CSS variable references
|
|
144
|
+
* (`rgb(var(--color-primary) / 0.85)`). Variable references are resolved
|
|
145
|
+
* against the live stylesheet before computing luminance, so a re-themed
|
|
146
|
+
* palette never produces a low-contrast combination.
|
|
147
|
+
*/
|
|
148
|
+
export declare type ColorInput = string;
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Shared layout wrapper — the single source of the container + gutter rules
|
|
152
|
+
* used across Section, Footer, CTA, templates…
|
|
153
|
+
*/
|
|
154
|
+
export declare const Container: ForwardRefExoticComponent<ContainerProps & RefAttributes<HTMLElement>>;
|
|
155
|
+
|
|
156
|
+
export declare interface ContainerProps extends HTMLAttributes<HTMLElement> {
|
|
157
|
+
/** Render as a specific element (section, header, …). */
|
|
158
|
+
as?: ElementType;
|
|
159
|
+
/**
|
|
160
|
+
* Maximum content width:
|
|
161
|
+
* `sm` → prose · `md` → reading · `lg` → plans/splits ·
|
|
162
|
+
* `xl` → default marketing page · `full` → edge-to-edge.
|
|
163
|
+
*/
|
|
164
|
+
size?: ContainerSize;
|
|
165
|
+
/** Responsive gutters (px-5 / sm:px-8). Disable for flush content. */
|
|
166
|
+
gutters?: boolean;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export declare type ContainerSize = "sm" | "md" | "lg" | "xl" | "full";
|
|
170
|
+
|
|
171
|
+
export declare const Cpu: (props: IconProps) => JSX_2.Element;
|
|
172
|
+
|
|
173
|
+
export declare const CTA: ForwardRefExoticComponent<CTAProps & RefAttributes<HTMLElement>>;
|
|
174
|
+
|
|
175
|
+
export declare interface CTAProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
176
|
+
title: ReactNode;
|
|
177
|
+
description?: ReactNode;
|
|
178
|
+
action?: ReactNode;
|
|
179
|
+
secondaryAction?: ReactNode;
|
|
180
|
+
option?: "panel" | "surface" | "inverse";
|
|
181
|
+
align?: "left" | "center";
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export declare const Database: (props: IconProps) => JSX_2.Element;
|
|
185
|
+
|
|
186
|
+
export declare const DollarSign: (props: IconProps) => JSX_2.Element;
|
|
187
|
+
|
|
188
|
+
export declare const ExternalLink: (props: IconProps) => JSX_2.Element;
|
|
189
|
+
|
|
190
|
+
export declare type EyebrowStyle = "caps" | "soft" | "plain";
|
|
191
|
+
|
|
192
|
+
export declare const FAQ: {
|
|
193
|
+
({ className, items, option, allowMultiple, defaultOpen, eyebrow, title, description, ...props }: FAQProps): JSX_2.Element;
|
|
194
|
+
displayName: string;
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
export declare interface FaqItem {
|
|
198
|
+
question: string;
|
|
199
|
+
answer: string;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
export declare interface FAQProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
203
|
+
items: FaqItem[];
|
|
204
|
+
option?: "accordion" | "split" | "cards";
|
|
205
|
+
allowMultiple?: boolean;
|
|
206
|
+
defaultOpen?: number[];
|
|
207
|
+
eyebrow?: ReactNode;
|
|
208
|
+
title?: ReactNode;
|
|
209
|
+
description?: ReactNode;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
export declare const FeatureCard: ForwardRefExoticComponent<FeatureCardProps & RefAttributes<HTMLDivElement>>;
|
|
213
|
+
|
|
214
|
+
export declare interface FeatureCardProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
215
|
+
icon?: ReactNode;
|
|
216
|
+
title: ReactNode;
|
|
217
|
+
description?: ReactNode;
|
|
218
|
+
/** Arbitrary CSS color for the icon chip; glyph color computed for contrast. */
|
|
219
|
+
accent?: string;
|
|
220
|
+
large?: boolean;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
export declare const FeatureGrid: ForwardRefExoticComponent<FeatureGridProps & RefAttributes<HTMLDivElement>>;
|
|
224
|
+
|
|
225
|
+
export declare interface FeatureGridProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
226
|
+
features: FeatureItem[];
|
|
227
|
+
option?: "columns" | "bento" | "editorialRows";
|
|
228
|
+
columns?: 2 | 3 | 4;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
export declare interface FeatureItem {
|
|
232
|
+
icon?: ReactNode;
|
|
233
|
+
title: string;
|
|
234
|
+
description?: string;
|
|
235
|
+
accent?: string;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export declare const Footer: {
|
|
239
|
+
({ className, brand, description, columns, socials, bottom, option, badge, ...props }: FooterProps): JSX_2.Element;
|
|
240
|
+
displayName: string;
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
export declare interface FooterColumn {
|
|
244
|
+
title: string;
|
|
245
|
+
links: FooterLink[];
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export declare interface FooterLink {
|
|
249
|
+
label: string;
|
|
250
|
+
href: string;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export declare interface FooterProps extends HTMLAttributes<HTMLElement> {
|
|
254
|
+
brand?: ReactNode;
|
|
255
|
+
description?: string;
|
|
256
|
+
columns: FooterColumn[];
|
|
257
|
+
socials?: ReactNode;
|
|
258
|
+
bottom?: ReactNode;
|
|
259
|
+
option?: "classic" | "minimal" | "editorial";
|
|
260
|
+
badge?: ReactNode;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
export declare const Gauge: (props: IconProps) => JSX_2.Element;
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Returns the more readable of the two candidate text colors for a given
|
|
267
|
+
* background. Both candidates are evaluated with the WCAG contrast formula and
|
|
268
|
+
* the winning (highest ratio) color is returned — not a fixed luminance
|
|
269
|
+
* breakpoint — so mid-luminance backgrounds (amber, pastels, light violet…)
|
|
270
|
+
* always fall on the correct side.
|
|
271
|
+
*/
|
|
272
|
+
export declare function getContrastText(bg: ColorInput, light?: string, dark?: string): string;
|
|
273
|
+
|
|
274
|
+
export declare const Globe: (props: IconProps) => JSX_2.Element;
|
|
275
|
+
|
|
276
|
+
export declare const Hero: ForwardRefExoticComponent<HeroProps & RefAttributes<HTMLElement>>;
|
|
277
|
+
|
|
278
|
+
export declare interface HeroMeta {
|
|
279
|
+
label: string;
|
|
280
|
+
icon?: ReactNode;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
export declare interface HeroProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
284
|
+
variant?: "split" | "centered" | "statement";
|
|
285
|
+
eyebrow?: ReactNode;
|
|
286
|
+
title: ReactNode;
|
|
287
|
+
description?: ReactNode;
|
|
288
|
+
primaryAction?: ReactNode;
|
|
289
|
+
secondaryAction?: ReactNode;
|
|
290
|
+
media?: ReactNode;
|
|
291
|
+
/** Small trust/status row shown under the copy or CTAs. */
|
|
292
|
+
meta?: HeroMeta[];
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Minimal 1.5px stroke icon set (Lucide/Heroicons inspired).
|
|
297
|
+
* No emojis — the library ships a single, consistent icon vocabulary.
|
|
298
|
+
*
|
|
299
|
+
* Usage:
|
|
300
|
+
* <ArrowRight className="h-4 w-4" />
|
|
301
|
+
*/
|
|
302
|
+
declare type IconProps = SVGProps<SVGSVGElement>;
|
|
303
|
+
|
|
304
|
+
export declare const Layers: (props: IconProps) => JSX_2.Element;
|
|
305
|
+
|
|
306
|
+
declare const Lock_2: (props: IconProps) => JSX_2.Element;
|
|
307
|
+
export { Lock_2 as Lock }
|
|
308
|
+
|
|
309
|
+
export declare const LogoCloud: ForwardRefExoticComponent<LogoCloudProps & RefAttributes<HTMLDivElement>>;
|
|
310
|
+
|
|
311
|
+
export declare interface LogoCloudProps extends HTMLAttributes<HTMLDivElement> {
|
|
312
|
+
logos: LogoItem[];
|
|
313
|
+
title?: string;
|
|
314
|
+
/** Visual option: quiet list · infinite marquee · hairline strip */
|
|
315
|
+
option?: "quiet" | "marquee" | "strip";
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
export declare interface LogoItem {
|
|
319
|
+
name: string;
|
|
320
|
+
src?: string;
|
|
321
|
+
href?: string;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
export declare const Mail: (props: IconProps) => JSX_2.Element;
|
|
325
|
+
|
|
326
|
+
export declare const MegaMenu: {
|
|
327
|
+
({ className, variant, brand, logo, logoSrc, logoAlt, logoClassName, brandHref, items, actions, cta, sticky, onKeyDown, ...props }: MegaMenuProps): JSX_2.Element;
|
|
328
|
+
displayName: string;
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
export declare interface MegaMenuColumn {
|
|
332
|
+
title?: string;
|
|
333
|
+
links: MegaMenuLink[];
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
export declare interface MegaMenuFeatured {
|
|
337
|
+
title: string;
|
|
338
|
+
description?: string;
|
|
339
|
+
href: string;
|
|
340
|
+
cta?: string;
|
|
341
|
+
/** Background color for the card; glyph text color is computed for contrast. */
|
|
342
|
+
accent?: string;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
export declare interface MegaMenuItem {
|
|
346
|
+
label: string;
|
|
347
|
+
href?: string;
|
|
348
|
+
/** When set, the item becomes a trigger that opens a mega panel. */
|
|
349
|
+
columns?: MegaMenuColumn[];
|
|
350
|
+
/** Optional highlighted card pinned to the right side of the panel. */
|
|
351
|
+
featured?: MegaMenuFeatured;
|
|
352
|
+
/** Small pill rendered next to the trigger label. */
|
|
353
|
+
badge?: string;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
export declare interface MegaMenuLink {
|
|
357
|
+
label: string;
|
|
358
|
+
href: string;
|
|
359
|
+
description?: string;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
export declare interface MegaMenuProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
363
|
+
variant?: "classic" | "floating" | "inverse";
|
|
364
|
+
/** Wordmark rendered when no logo is supplied. */
|
|
365
|
+
brand?: ReactNode;
|
|
366
|
+
/** Custom logo node (component, <img>, inline SVG…). Replaces the wordmark. */
|
|
367
|
+
logo?: ReactNode;
|
|
368
|
+
/** Quick logo image source. */
|
|
369
|
+
logoSrc?: string;
|
|
370
|
+
logoAlt?: string;
|
|
371
|
+
logoClassName?: string;
|
|
372
|
+
brandHref?: string;
|
|
373
|
+
items: MegaMenuItem[];
|
|
374
|
+
/** Rendered at the right side of the bar (desktop) and inside the mobile panel. */
|
|
375
|
+
actions?: ReactNode;
|
|
376
|
+
cta?: ReactNode;
|
|
377
|
+
sticky?: boolean;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
export declare const Menu: (props: IconProps) => JSX_2.Element;
|
|
381
|
+
|
|
382
|
+
export declare const Navbar: {
|
|
383
|
+
({ className, variant, brand, logo, logoSrc, logoAlt, logoClassName, brandHref, links, actions, cta, sticky, ...props }: NavbarProps): JSX_2.Element;
|
|
384
|
+
displayName: string;
|
|
385
|
+
};
|
|
386
|
+
|
|
387
|
+
export declare interface NavbarProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
388
|
+
variant?: "classic" | "floating" | "inverse";
|
|
389
|
+
/** Wordmark or fallback text rendered when no logo is supplied. */
|
|
390
|
+
brand?: ReactNode;
|
|
391
|
+
/** Custom logo node (component, <img>, inline SVG…). Replaces the wordmark. */
|
|
392
|
+
logo?: ReactNode;
|
|
393
|
+
/** Quick logo image source. */
|
|
394
|
+
logoSrc?: string;
|
|
395
|
+
logoAlt?: string;
|
|
396
|
+
/** Size / position tuning for logo images. Defaults to `h-7 w-auto`. */
|
|
397
|
+
logoClassName?: string;
|
|
398
|
+
brandHref?: string;
|
|
399
|
+
links: NavLink[];
|
|
400
|
+
actions?: ReactNode;
|
|
401
|
+
sticky?: boolean;
|
|
402
|
+
cta?: ReactNode;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
export declare interface NavLink {
|
|
406
|
+
label: string;
|
|
407
|
+
href: string;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
export declare const Newsletter: {
|
|
411
|
+
({ className, option, placeholder, buttonLabel, successMessage, note, onSubmit, ...props }: NewsletterProps): JSX_2.Element;
|
|
412
|
+
displayName: string;
|
|
413
|
+
};
|
|
414
|
+
|
|
415
|
+
export declare interface NewsletterProps extends Omit<HTMLAttributes<HTMLFormElement>, "onSubmit"> {
|
|
416
|
+
option?: "inline" | "card" | "underline";
|
|
417
|
+
placeholder?: string;
|
|
418
|
+
buttonLabel?: string;
|
|
419
|
+
successMessage?: string;
|
|
420
|
+
note?: string;
|
|
421
|
+
onSubmit?: (email: string) => void;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
export declare const Palette: (props: IconProps) => JSX_2.Element;
|
|
425
|
+
|
|
426
|
+
export declare interface Plan {
|
|
427
|
+
name: string;
|
|
428
|
+
description?: string;
|
|
429
|
+
monthly: number | null;
|
|
430
|
+
yearly: number | null;
|
|
431
|
+
features: string[];
|
|
432
|
+
cta?: string;
|
|
433
|
+
href?: string;
|
|
434
|
+
highlighted?: boolean;
|
|
435
|
+
customColor?: string;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
export declare const Play: (props: IconProps) => JSX_2.Element;
|
|
439
|
+
|
|
440
|
+
export declare const Plus: (props: IconProps) => JSX_2.Element;
|
|
441
|
+
|
|
442
|
+
export declare const Pricing: {
|
|
443
|
+
({ className, plans, option, defaultBilling, onSelect, ...props }: PricingProps): JSX_2.Element;
|
|
444
|
+
displayName: string;
|
|
445
|
+
};
|
|
446
|
+
|
|
447
|
+
export declare interface PricingProps extends Omit<HTMLAttributes<HTMLDivElement>, "onSelect"> {
|
|
448
|
+
plans: Plan[];
|
|
449
|
+
option?: "cards" | "bento" | "compact";
|
|
450
|
+
defaultBilling?: "monthly" | "yearly";
|
|
451
|
+
onSelect?: (plan: Plan, billing: "monthly" | "yearly") => void;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
* Blog / article / documentation body text.
|
|
456
|
+
*
|
|
457
|
+
* Wraps Tailwind Typography (`@tailwindcss/typography`) and re-skins its
|
|
458
|
+
* colors, type scale and code blocks through the same design tokens as every
|
|
459
|
+
* other component, so dark palettes and font swaps work out of the box.
|
|
460
|
+
*/
|
|
461
|
+
export declare const Prose: ForwardRefExoticComponent<ProseProps & RefAttributes<HTMLElement>>;
|
|
462
|
+
|
|
463
|
+
/** Intro / stand-first paragraph styled with the `prose` lead class. */
|
|
464
|
+
export declare const ProseLead: ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & RefAttributes<HTMLParagraphElement>>;
|
|
465
|
+
|
|
466
|
+
export declare interface ProseProps extends HTMLAttributes<HTMLElement> {
|
|
467
|
+
/** Content scale. `lg` (prose-lg) is the comfortable blog default. */
|
|
468
|
+
size?: ProseSize;
|
|
469
|
+
/** Renders raw HTML (CMS / MDX output). Mutually exclusive with children. */
|
|
470
|
+
html?: string;
|
|
471
|
+
/** When true, removes the reading-width cap. */
|
|
472
|
+
wide?: boolean;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
export declare type ProseSize = "sm" | "md" | "lg" | "xl" | "2xl";
|
|
476
|
+
|
|
477
|
+
export declare const Quote: (props: IconProps) => JSX_2.Element;
|
|
478
|
+
|
|
479
|
+
export declare const Rocket: (props: IconProps) => JSX_2.Element;
|
|
480
|
+
|
|
481
|
+
export declare const Section: ForwardRefExoticComponent<SectionProps & RefAttributes<HTMLElement>>;
|
|
482
|
+
|
|
483
|
+
export declare const SectionHeader: ForwardRefExoticComponent<SectionHeaderProps & RefAttributes<HTMLDivElement>>;
|
|
484
|
+
|
|
485
|
+
export declare interface SectionHeaderProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
|
|
486
|
+
eyebrow?: ReactNode;
|
|
487
|
+
eyebrowStyle?: EyebrowStyle;
|
|
488
|
+
title?: ReactNode;
|
|
489
|
+
description?: ReactNode;
|
|
490
|
+
align?: "left" | "center";
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
export declare interface SectionProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
494
|
+
size?: "sm" | "md" | "lg";
|
|
495
|
+
eyebrow?: ReactNode;
|
|
496
|
+
eyebrowStyle?: EyebrowStyle;
|
|
497
|
+
title?: ReactNode;
|
|
498
|
+
description?: ReactNode;
|
|
499
|
+
align?: "left" | "center";
|
|
500
|
+
containerClassName?: string;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
export declare const Send: (props: IconProps) => JSX_2.Element;
|
|
504
|
+
|
|
505
|
+
export declare const ShieldCheck: (props: IconProps) => JSX_2.Element;
|
|
506
|
+
|
|
507
|
+
export declare const Sliders: (props: IconProps) => JSX_2.Element;
|
|
508
|
+
|
|
509
|
+
export declare const Smartphone: (props: IconProps) => JSX_2.Element;
|
|
510
|
+
|
|
511
|
+
/** Vertical (or horizontal) rhythm helper using flex gaps. */
|
|
512
|
+
export declare const Stack: ForwardRefExoticComponent<StackProps & RefAttributes<HTMLDivElement>>;
|
|
513
|
+
|
|
514
|
+
export declare type StackGap = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20;
|
|
515
|
+
|
|
516
|
+
export declare interface StackProps extends HTMLAttributes<HTMLDivElement> {
|
|
517
|
+
gap?: StackGap;
|
|
518
|
+
horizontal?: boolean;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
export declare const Star: (props: IconProps) => JSX_2.Element;
|
|
522
|
+
|
|
523
|
+
export declare interface Stat {
|
|
524
|
+
value: string;
|
|
525
|
+
label: string;
|
|
526
|
+
/** Small unit rendered inline with the value, e.g. "ms" or "₺". */
|
|
527
|
+
suffix?: string;
|
|
528
|
+
/** Trend change in percent — renders an up/down badge. */
|
|
529
|
+
delta?: number;
|
|
530
|
+
/** Optional supporting copy. */
|
|
531
|
+
sub?: string;
|
|
532
|
+
icon?: ReactNode;
|
|
533
|
+
/** Highlights the value with the primary token. */
|
|
534
|
+
accent?: boolean;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
export declare const Stats: ForwardRefExoticComponent<StatsProps & RefAttributes<HTMLDListElement>>;
|
|
538
|
+
|
|
539
|
+
export declare interface StatsProps extends HTMLAttributes<HTMLDListElement> {
|
|
540
|
+
stats: Stat[];
|
|
541
|
+
option?: "editorial" | "hairline" | "cells" | "ticker";
|
|
542
|
+
columns?: 2 | 3 | 4;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
export declare const Terminal: (props: IconProps) => JSX_2.Element;
|
|
546
|
+
|
|
547
|
+
export declare interface Testimonial {
|
|
548
|
+
quote: string;
|
|
549
|
+
author: string;
|
|
550
|
+
role?: string;
|
|
551
|
+
company?: string;
|
|
552
|
+
avatar?: ReactNode;
|
|
553
|
+
/** Arbitrary CSS color for the initials avatar. */
|
|
554
|
+
accent?: string;
|
|
555
|
+
rating?: number;
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
export declare const TestimonialCard: ForwardRefExoticComponent<TestimonialCardProps & RefAttributes<HTMLElement>>;
|
|
559
|
+
|
|
560
|
+
export declare interface TestimonialCardProps extends HTMLAttributes<HTMLElement> {
|
|
561
|
+
testimonial: Testimonial;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
export declare const Testimonials: {
|
|
565
|
+
({ className, items, option, ...props }: TestimonialsProps): JSX_2.Element;
|
|
566
|
+
displayName: string;
|
|
567
|
+
};
|
|
568
|
+
|
|
569
|
+
/** Holds per-option rendering + controls together. */
|
|
570
|
+
export declare interface TestimonialsProps extends HTMLAttributes<HTMLDivElement> {
|
|
571
|
+
items: Testimonial[];
|
|
572
|
+
option?: "grid" | "carousel" | "marquee";
|
|
573
|
+
title?: string;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
export declare const Users: (props: IconProps) => JSX_2.Element;
|
|
577
|
+
|
|
578
|
+
/**
|
|
579
|
+
* Reads a `--color-*` token from the live stylesheet and returns a text color
|
|
580
|
+
* that is always readable against it. Recomputes whenever the palette changes
|
|
581
|
+
* at runtime (e.g. the Storybook theme switcher or an app-level theme swap).
|
|
582
|
+
*/
|
|
583
|
+
export declare function useTokenForeground(variable: string, fallback?: string): string;
|
|
584
|
+
|
|
585
|
+
export declare const X: (props: IconProps) => JSX_2.Element;
|
|
586
|
+
|
|
587
|
+
export declare const Zap: (props: IconProps) => JSX_2.Element;
|
|
588
|
+
|
|
589
|
+
export { }
|