@ugurdemirel/landcraft 0.1.4 → 0.1.9
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/styles.css +12 -0
- package/package.json +14 -7
- package/src/components/Badge.tsx +0 -68
- package/src/components/Blog/BlogCard.tsx +0 -12
- package/src/components/Blog/BlogSection.tsx +0 -95
- package/src/components/Blog/index.ts +0 -8
- package/src/components/Blog/parts.tsx +0 -38
- package/src/components/Blog/types.ts +0 -42
- package/src/components/Blog/variants/Card.tsx +0 -62
- package/src/components/Blog/variants/Row.tsx +0 -41
- package/src/components/Button.tsx +0 -113
- package/src/components/CTA/CTA.tsx +0 -12
- package/src/components/CTA/index.ts +0 -2
- package/src/components/CTA/parts.tsx +0 -26
- package/src/components/CTA/types.ts +0 -12
- package/src/components/CTA/variants/Inverse.tsx +0 -50
- package/src/components/CTA/variants/Panel.tsx +0 -60
- package/src/components/CTA/variants/Surface.tsx +0 -34
- package/src/components/Card.tsx +0 -80
- package/src/components/Container.tsx +0 -86
- package/src/components/FAQ/FAQ.tsx +0 -48
- package/src/components/FAQ/index.ts +0 -2
- package/src/components/FAQ/parts.tsx +0 -74
- package/src/components/FAQ/types.ts +0 -18
- package/src/components/FAQ/variants/Accordion.tsx +0 -46
- package/src/components/FAQ/variants/Cards.tsx +0 -40
- package/src/components/FAQ/variants/Split.tsx +0 -44
- package/src/components/Features/FeatureCard.tsx +0 -44
- package/src/components/Features/FeatureGrid.tsx +0 -14
- package/src/components/Features/index.ts +0 -3
- package/src/components/Features/parts.ts +0 -15
- package/src/components/Features/types.ts +0 -25
- package/src/components/Features/variants/Bento.tsx +0 -32
- package/src/components/Features/variants/Columns.tsx +0 -21
- package/src/components/Features/variants/EditorialRows.tsx +0 -38
- package/src/components/Footer/Footer.tsx +0 -11
- package/src/components/Footer/index.ts +0 -2
- package/src/components/Footer/parts.tsx +0 -101
- package/src/components/Footer/types.ts +0 -32
- package/src/components/Footer/variants/Classic.tsx +0 -59
- package/src/components/Footer/variants/Editorial.tsx +0 -47
- package/src/components/Footer/variants/Minimal.tsx +0 -33
- package/src/components/Hero/Hero.tsx +0 -12
- package/src/components/Hero/index.ts +0 -2
- package/src/components/Hero/parts.tsx +0 -29
- package/src/components/Hero/types.ts +0 -20
- package/src/components/Hero/variants/Centered.tsx +0 -54
- package/src/components/Hero/variants/Split.tsx +0 -53
- package/src/components/Hero/variants/Statement.tsx +0 -60
- package/src/components/LanguageSwitcher/LanguageSwitcher.tsx +0 -37
- package/src/components/LanguageSwitcher/index.ts +0 -6
- package/src/components/LanguageSwitcher/parts.tsx +0 -144
- package/src/components/LanguageSwitcher/types.ts +0 -40
- package/src/components/LanguageSwitcher/useLanguageSwitcher.ts +0 -23
- package/src/components/LanguageSwitcher/variants/Dropdown.tsx +0 -88
- package/src/components/LanguageSwitcher/variants/Modal.tsx +0 -56
- package/src/components/LogoCloud/LogoCloud.tsx +0 -14
- package/src/components/LogoCloud/index.ts +0 -2
- package/src/components/LogoCloud/parts.tsx +0 -32
- package/src/components/LogoCloud/types.ts +0 -16
- package/src/components/LogoCloud/variants/Marquee.tsx +0 -30
- package/src/components/LogoCloud/variants/Quiet.tsx +0 -26
- package/src/components/LogoCloud/variants/Strip.tsx +0 -25
- package/src/components/MegaMenu/MegaMenu.tsx +0 -454
- package/src/components/MegaMenu/index.ts +0 -9
- package/src/components/MegaMenu/types.ts +0 -56
- package/src/components/Modal.tsx +0 -125
- package/src/components/Navbar/Navbar.tsx +0 -185
- package/src/components/Navbar/index.ts +0 -2
- package/src/components/Navbar/types.ts +0 -30
- package/src/components/Newsletter/Newsletter.tsx +0 -12
- package/src/components/Newsletter/index.ts +0 -2
- package/src/components/Newsletter/parts.tsx +0 -23
- package/src/components/Newsletter/types.ts +0 -12
- package/src/components/Newsletter/useNewsletterForm.ts +0 -27
- package/src/components/Newsletter/variants/Card.tsx +0 -62
- package/src/components/Newsletter/variants/Inline.tsx +0 -54
- package/src/components/Newsletter/variants/Underline.tsx +0 -52
- package/src/components/Pricing/Pricing.tsx +0 -37
- package/src/components/Pricing/index.ts +0 -2
- package/src/components/Pricing/parts.tsx +0 -132
- package/src/components/Pricing/types.ts +0 -28
- package/src/components/Pricing/variants/Bento.tsx +0 -72
- package/src/components/Pricing/variants/Cards.tsx +0 -79
- package/src/components/Pricing/variants/Compact.tsx +0 -69
- package/src/components/Prose.tsx +0 -55
- package/src/components/Section.tsx +0 -106
- package/src/components/Slot.tsx +0 -78
- package/src/components/Stats/Stats.tsx +0 -16
- package/src/components/Stats/index.ts +0 -2
- package/src/components/Stats/parts.tsx +0 -29
- package/src/components/Stats/types.ts +0 -23
- package/src/components/Stats/variants/Cells.tsx +0 -34
- package/src/components/Stats/variants/Editorial.tsx +0 -41
- package/src/components/Stats/variants/Hairline.tsx +0 -31
- package/src/components/Stats/variants/Ticker.tsx +0 -36
- package/src/components/Testimonials/TestimonialCard.tsx +0 -61
- package/src/components/Testimonials/Testimonials.tsx +0 -14
- package/src/components/Testimonials/index.ts +0 -3
- package/src/components/Testimonials/parts.ts +0 -7
- package/src/components/Testimonials/types.ts +0 -24
- package/src/components/Testimonials/variants/Carousel.tsx +0 -94
- package/src/components/Testimonials/variants/Grid.tsx +0 -19
- package/src/components/Testimonials/variants/Marquee.tsx +0 -28
- package/src/icons.tsx +0 -290
- package/src/index.ts +0 -120
- package/src/styles/index.css +0 -18
- package/src/utils/cn.ts +0 -6
- package/src/utils/contrast.ts +0 -107
- package/src/utils/iso2Flag.ts +0 -26
- package/src/utils/useTokenForeground.ts +0 -39
- /package/{src/styles → dist}/theme.css +0 -0
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { forwardRef, type HTMLAttributes } from "react";
|
|
2
|
-
import { cn } from "../../../utils/cn";
|
|
3
|
-
import { valueBase, suffixBase, DeltaBadge } from "../parts";
|
|
4
|
-
import type { Stat } from "../types";
|
|
5
|
-
|
|
6
|
-
interface TickerProps extends HTMLAttributes<HTMLDListElement> {
|
|
7
|
-
stats: Stat[];
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const StatsTicker = forwardRef<HTMLDListElement, TickerProps>(
|
|
11
|
-
({ className, stats, ...props }, ref) => (
|
|
12
|
-
<dl ref={ref} className={cn("flex w-full items-stretch overflow-x-auto rounded-2xl border border-border bg-surface", className)} {...props}>
|
|
13
|
-
{stats.map((stat, i) => (
|
|
14
|
-
<div
|
|
15
|
-
key={stat.label}
|
|
16
|
-
className={cn("flex min-w-[11rem] flex-1 flex-col gap-3 p-6", i > 0 && "border-l border-border")}
|
|
17
|
-
>
|
|
18
|
-
<div className="flex items-center justify-between gap-3">
|
|
19
|
-
<dt className="text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground">
|
|
20
|
-
{stat.label}
|
|
21
|
-
</dt>
|
|
22
|
-
{typeof stat.delta === "number" ? <DeltaBadge delta={stat.delta} /> : null}
|
|
23
|
-
</div>
|
|
24
|
-
<dd className={cn(valueBase, "text-3xl", stat.accent ? "text-primary" : undefined)}>
|
|
25
|
-
{stat.value}
|
|
26
|
-
{stat.suffix ? <span className={suffixBase}>{stat.suffix}</span> : null}
|
|
27
|
-
</dd>
|
|
28
|
-
{stat.sub ? (
|
|
29
|
-
<p className="text-[13px] leading-5 text-muted-foreground">{stat.sub}</p>
|
|
30
|
-
) : null}
|
|
31
|
-
</div>
|
|
32
|
-
))}
|
|
33
|
-
</dl>
|
|
34
|
-
),
|
|
35
|
-
);
|
|
36
|
-
StatsTicker.displayName = "StatsTicker";
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { forwardRef } from "react";
|
|
2
|
-
import { cn } from "../../utils/cn";
|
|
3
|
-
import { getContrastText } from "../../utils/contrast";
|
|
4
|
-
import { Quote, Star } from "../../icons";
|
|
5
|
-
import { initials } from "./parts";
|
|
6
|
-
import type { TestimonialCardProps } from "./types";
|
|
7
|
-
|
|
8
|
-
export const TestimonialCard = forwardRef<HTMLElement, TestimonialCardProps>(
|
|
9
|
-
function TestimonialCard({ className, testimonial, ...props }, ref) {
|
|
10
|
-
const { quote, author, role, company, avatar, accent, rating } = testimonial;
|
|
11
|
-
const badgeStyle = accent
|
|
12
|
-
? { backgroundColor: accent, color: getContrastText(accent, "#111111", "#ffffff") }
|
|
13
|
-
: undefined;
|
|
14
|
-
|
|
15
|
-
return (
|
|
16
|
-
<figure
|
|
17
|
-
ref={ref}
|
|
18
|
-
className={cn(
|
|
19
|
-
"mb-4 flex flex-col break-inside-avoid rounded-2xl border border-border bg-surface p-7",
|
|
20
|
-
className,
|
|
21
|
-
)}
|
|
22
|
-
{...props}
|
|
23
|
-
>
|
|
24
|
-
<div className="mb-5 flex items-center justify-between">
|
|
25
|
-
<Quote className={cn("h-6 w-6", accent ? undefined : "text-primary/30")} style={accent ? { color: accent } : undefined} />
|
|
26
|
-
{rating ? (
|
|
27
|
-
<span className="flex items-center gap-0.5 text-amber-500" aria-label={`${rating} / 5`}>
|
|
28
|
-
{Array.from({ length: 5 }).map((_, i) => (
|
|
29
|
-
<Star key={i} className="h-3.5 w-3.5" />
|
|
30
|
-
))}
|
|
31
|
-
</span>
|
|
32
|
-
) : null}
|
|
33
|
-
</div>
|
|
34
|
-
<blockquote className="flex-1 text-[15px] leading-7 text-foreground/85">{quote}</blockquote>
|
|
35
|
-
<figcaption className="mt-6 flex items-center gap-3">
|
|
36
|
-
{avatar ? (
|
|
37
|
-
avatar
|
|
38
|
-
) : (
|
|
39
|
-
<span
|
|
40
|
-
style={badgeStyle}
|
|
41
|
-
className={cn(
|
|
42
|
-
"inline-flex h-10 w-10 shrink-0 items-center justify-center rounded-full text-xs font-bold",
|
|
43
|
-
!accent && "bg-primary-soft text-primary",
|
|
44
|
-
)}
|
|
45
|
-
>
|
|
46
|
-
{initials(author)}
|
|
47
|
-
</span>
|
|
48
|
-
)}
|
|
49
|
-
<div>
|
|
50
|
-
<div className="text-sm font-semibold text-foreground">{author}</div>
|
|
51
|
-
{(role || company) && (
|
|
52
|
-
<div className="text-xs text-muted-foreground">
|
|
53
|
-
{[role, company].filter(Boolean).join(" · ")}
|
|
54
|
-
</div>
|
|
55
|
-
)}
|
|
56
|
-
</div>
|
|
57
|
-
</figcaption>
|
|
58
|
-
</figure>
|
|
59
|
-
);
|
|
60
|
-
},
|
|
61
|
-
);
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { forwardRef } from "react";
|
|
2
|
-
import type { TestimonialsProps } from "./types";
|
|
3
|
-
import { TestimonialsGrid } from "./variants/Grid";
|
|
4
|
-
import { TestimonialsMarquee } from "./variants/Marquee";
|
|
5
|
-
import { TestimonialsCarousel } from "./variants/Carousel";
|
|
6
|
-
|
|
7
|
-
export const Testimonials = forwardRef<HTMLDivElement, TestimonialsProps>(
|
|
8
|
-
({ option = "grid", ...props }, ref) => {
|
|
9
|
-
if (option === "carousel") return <TestimonialsCarousel ref={ref} {...props} />;
|
|
10
|
-
if (option === "marquee") return <TestimonialsMarquee ref={ref} {...props} />;
|
|
11
|
-
return <TestimonialsGrid ref={ref} {...props} />;
|
|
12
|
-
},
|
|
13
|
-
);
|
|
14
|
-
Testimonials.displayName = "Testimonials";
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
-
|
|
3
|
-
export type TestimonialsOption = "grid" | "carousel" | "marquee";
|
|
4
|
-
|
|
5
|
-
export interface Testimonial {
|
|
6
|
-
quote: string;
|
|
7
|
-
author: string;
|
|
8
|
-
role?: string;
|
|
9
|
-
company?: string;
|
|
10
|
-
avatar?: ReactNode;
|
|
11
|
-
/** Arbitrary CSS color for the initials avatar. */
|
|
12
|
-
accent?: string;
|
|
13
|
-
rating?: number;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export interface TestimonialCardProps extends HTMLAttributes<HTMLElement> {
|
|
17
|
-
testimonial: Testimonial;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export interface TestimonialsProps extends HTMLAttributes<HTMLDivElement> {
|
|
21
|
-
items: Testimonial[];
|
|
22
|
-
option?: TestimonialsOption;
|
|
23
|
-
title?: string;
|
|
24
|
-
}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { forwardRef, useState, type HTMLAttributes } from "react";
|
|
3
|
-
import { cn } from "../../../utils/cn";
|
|
4
|
-
import { getContrastText } from "../../../utils/contrast";
|
|
5
|
-
import { ChevronLeft, ChevronRight, Quote } from "../../../icons";
|
|
6
|
-
import { initials } from "../parts";
|
|
7
|
-
import type { Testimonial } from "../types";
|
|
8
|
-
|
|
9
|
-
interface CarouselProps extends HTMLAttributes<HTMLDivElement> {
|
|
10
|
-
items: Testimonial[];
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export const TestimonialsCarousel = forwardRef<HTMLDivElement, CarouselProps>(
|
|
14
|
-
({ className, items, ...props }, ref) => {
|
|
15
|
-
const [index, setIndex] = useState(0);
|
|
16
|
-
const item = items[index % items.length];
|
|
17
|
-
const badgeStyle = item.accent
|
|
18
|
-
? { backgroundColor: item.accent, color: getContrastText(item.accent, "#111111", "#ffffff") }
|
|
19
|
-
: undefined;
|
|
20
|
-
|
|
21
|
-
const go = (dir: 1 | -1) => setIndex((i) => (i + dir + items.length) % items.length);
|
|
22
|
-
|
|
23
|
-
return (
|
|
24
|
-
<div className={cn("mx-auto w-full max-w-3xl", className)} ref={ref} {...props}>
|
|
25
|
-
<figure className="relative rounded-2xl border border-border bg-surface p-10 text-center sm:p-14">
|
|
26
|
-
<Quote
|
|
27
|
-
className={cn("mx-auto mb-6 h-8 w-8", item.accent ? undefined : "text-primary/25")}
|
|
28
|
-
style={item.accent ? { color: item.accent } : undefined}
|
|
29
|
-
aria-hidden
|
|
30
|
-
/>
|
|
31
|
-
<blockquote className="font-display text-balance text-xl font-medium leading-relaxed tracking-tight text-foreground sm:text-2xl">
|
|
32
|
-
{item.quote}
|
|
33
|
-
</blockquote>
|
|
34
|
-
<figcaption className="mt-8 flex items-center justify-center gap-3">
|
|
35
|
-
{item.avatar ? (
|
|
36
|
-
item.avatar
|
|
37
|
-
) : (
|
|
38
|
-
<span
|
|
39
|
-
style={badgeStyle}
|
|
40
|
-
className={cn(
|
|
41
|
-
"inline-flex h-11 w-11 items-center justify-center rounded-full text-xs font-bold",
|
|
42
|
-
!item.accent && "bg-foreground text-background",
|
|
43
|
-
)}
|
|
44
|
-
>
|
|
45
|
-
{initials(item.author)}
|
|
46
|
-
</span>
|
|
47
|
-
)}
|
|
48
|
-
<div className="text-left">
|
|
49
|
-
<div className="text-sm font-semibold text-foreground">{item.author}</div>
|
|
50
|
-
<div className="text-xs text-muted-foreground">
|
|
51
|
-
{[item.role, item.company].filter(Boolean).join(" · ")}
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
</figcaption>
|
|
55
|
-
</figure>
|
|
56
|
-
|
|
57
|
-
<div className="mt-6 flex items-center justify-center gap-4">
|
|
58
|
-
<button
|
|
59
|
-
type="button"
|
|
60
|
-
aria-label="Previous testimonial"
|
|
61
|
-
onClick={() => go(-1)}
|
|
62
|
-
className="inline-flex h-10 w-10 cursor-pointer items-center justify-center rounded-full border border-border bg-surface text-foreground transition-colors duration-150 hover:border-foreground/25 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
63
|
-
>
|
|
64
|
-
<ChevronLeft className="h-4 w-4" />
|
|
65
|
-
</button>
|
|
66
|
-
<div className="flex items-center gap-1.5">
|
|
67
|
-
{items.map((_, i) => (
|
|
68
|
-
<button
|
|
69
|
-
key={i}
|
|
70
|
-
type="button"
|
|
71
|
-
aria-label={`Testimonial ${i + 1}`}
|
|
72
|
-
aria-current={i === index}
|
|
73
|
-
onClick={() => setIndex(i)}
|
|
74
|
-
className={cn(
|
|
75
|
-
"h-1.5 cursor-pointer rounded-full transition-all duration-200",
|
|
76
|
-
i === index ? "w-6 bg-foreground" : "w-1.5 bg-foreground/25 hover:bg-foreground/50",
|
|
77
|
-
)}
|
|
78
|
-
/>
|
|
79
|
-
))}
|
|
80
|
-
</div>
|
|
81
|
-
<button
|
|
82
|
-
type="button"
|
|
83
|
-
aria-label="Next testimonial"
|
|
84
|
-
onClick={() => go(1)}
|
|
85
|
-
className="inline-flex h-10 w-10 cursor-pointer items-center justify-center rounded-full border border-border bg-surface text-foreground transition-colors duration-150 hover:border-foreground/25 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
86
|
-
>
|
|
87
|
-
<ChevronRight className="h-4 w-4" />
|
|
88
|
-
</button>
|
|
89
|
-
</div>
|
|
90
|
-
</div>
|
|
91
|
-
);
|
|
92
|
-
},
|
|
93
|
-
);
|
|
94
|
-
TestimonialsCarousel.displayName = "TestimonialsCarousel";
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { forwardRef, type HTMLAttributes } from "react";
|
|
2
|
-
import { cn } from "../../../utils/cn";
|
|
3
|
-
import { TestimonialCard } from "../TestimonialCard";
|
|
4
|
-
import type { Testimonial } from "../types";
|
|
5
|
-
|
|
6
|
-
interface GridProps extends HTMLAttributes<HTMLDivElement> {
|
|
7
|
-
items: Testimonial[];
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const TestimonialsGrid = forwardRef<HTMLDivElement, GridProps>(
|
|
11
|
-
({ className, items, ...props }, ref) => (
|
|
12
|
-
<div className={cn("columns-1 gap-4 md:columns-2 lg:columns-3", className)} ref={ref} {...props}>
|
|
13
|
-
{items.map((item, i) => (
|
|
14
|
-
<TestimonialCard key={i} testimonial={item} />
|
|
15
|
-
))}
|
|
16
|
-
</div>
|
|
17
|
-
),
|
|
18
|
-
);
|
|
19
|
-
TestimonialsGrid.displayName = "TestimonialsGrid";
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { forwardRef, type HTMLAttributes } from "react";
|
|
2
|
-
import { cn } from "../../../utils/cn";
|
|
3
|
-
import { TestimonialCard } from "../TestimonialCard";
|
|
4
|
-
import type { Testimonial } from "../types";
|
|
5
|
-
|
|
6
|
-
interface MarqueeProps extends HTMLAttributes<HTMLDivElement> {
|
|
7
|
-
items: Testimonial[];
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const TestimonialsMarquee = forwardRef<HTMLDivElement, MarqueeProps>(
|
|
11
|
-
({ className, items, ...props }, ref) => {
|
|
12
|
-
const doubled = [...items, ...items];
|
|
13
|
-
return (
|
|
14
|
-
<div className={cn("w-full overflow-hidden", className)} ref={ref} {...props}>
|
|
15
|
-
<div className="mask-fade-x">
|
|
16
|
-
<div className="flex w-max animate-marquee gap-4 pr-4 motion-reduce:animate-none">
|
|
17
|
-
{doubled.map((item, i) => (
|
|
18
|
-
<div key={i} className="w-[19rem] shrink-0 sm:w-[24rem]">
|
|
19
|
-
<TestimonialCard testimonial={item} className="m-0" />
|
|
20
|
-
</div>
|
|
21
|
-
))}
|
|
22
|
-
</div>
|
|
23
|
-
</div>
|
|
24
|
-
</div>
|
|
25
|
-
);
|
|
26
|
-
},
|
|
27
|
-
);
|
|
28
|
-
TestimonialsMarquee.displayName = "TestimonialsMarquee";
|
package/src/icons.tsx
DELETED
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
import type { SVGProps } from "react";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Minimal 1.5px stroke icon set (Lucide/Heroicons inspired).
|
|
5
|
-
* No emojis — the library ships a single, consistent icon vocabulary.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* <ArrowRight className="h-4 w-4" />
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
type IconProps = SVGProps<SVGSVGElement>;
|
|
12
|
-
|
|
13
|
-
const base: IconProps = {
|
|
14
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
15
|
-
viewBox: "0 0 24 24",
|
|
16
|
-
fill: "none",
|
|
17
|
-
stroke: "currentColor",
|
|
18
|
-
strokeWidth: 1.5,
|
|
19
|
-
strokeLinecap: "round",
|
|
20
|
-
strokeLinejoin: "round",
|
|
21
|
-
"aria-hidden": true as never,
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export const ArrowRight = (props: IconProps) => (
|
|
25
|
-
<svg {...base} {...props}>
|
|
26
|
-
<path d="M5 12h14" />
|
|
27
|
-
<path d="m13 6 6 6-6 6" />
|
|
28
|
-
</svg>
|
|
29
|
-
);
|
|
30
|
-
|
|
31
|
-
export const ArrowUpRight = (props: IconProps) => (
|
|
32
|
-
<svg {...base} {...props}>
|
|
33
|
-
<path d="M7 17 17 7" />
|
|
34
|
-
<path d="M8 7h9v9" />
|
|
35
|
-
</svg>
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
export const ArrowDown = (props: IconProps) => (
|
|
39
|
-
<svg {...base} {...props}>
|
|
40
|
-
<path d="M12 5v14" />
|
|
41
|
-
<path d="m6 13 6 6 6-6" />
|
|
42
|
-
</svg>
|
|
43
|
-
);
|
|
44
|
-
|
|
45
|
-
export const ArrowUp = (props: IconProps) => (
|
|
46
|
-
<svg {...base} {...props}>
|
|
47
|
-
<path d="M12 19V5" />
|
|
48
|
-
<path d="m6 11 6-6 6 6" />
|
|
49
|
-
</svg>
|
|
50
|
-
);
|
|
51
|
-
|
|
52
|
-
export const Check = (props: IconProps) => (
|
|
53
|
-
<svg {...base} {...props}>
|
|
54
|
-
<path d="M20 6 9 17l-5-5" />
|
|
55
|
-
</svg>
|
|
56
|
-
);
|
|
57
|
-
|
|
58
|
-
export const Plus = (props: IconProps) => (
|
|
59
|
-
<svg {...base} {...props}>
|
|
60
|
-
<path d="M12 5v14" />
|
|
61
|
-
<path d="M5 12h14" />
|
|
62
|
-
</svg>
|
|
63
|
-
);
|
|
64
|
-
|
|
65
|
-
export const X = (props: IconProps) => (
|
|
66
|
-
<svg {...base} {...props}>
|
|
67
|
-
<path d="M18 6 6 18" />
|
|
68
|
-
<path d="m6 6 12 12" />
|
|
69
|
-
</svg>
|
|
70
|
-
);
|
|
71
|
-
|
|
72
|
-
export const Menu = (props: IconProps) => (
|
|
73
|
-
<svg {...base} {...props}>
|
|
74
|
-
<path d="M4 7h16" />
|
|
75
|
-
<path d="M4 12h16" />
|
|
76
|
-
<path d="M4 17h16" />
|
|
77
|
-
</svg>
|
|
78
|
-
);
|
|
79
|
-
|
|
80
|
-
export const ChevronDown = (props: IconProps) => (
|
|
81
|
-
<svg {...base} {...props}>
|
|
82
|
-
<path d="m6 9 6 6 6-6" />
|
|
83
|
-
</svg>
|
|
84
|
-
);
|
|
85
|
-
|
|
86
|
-
export const ChevronRight = (props: IconProps) => (
|
|
87
|
-
<svg {...base} {...props}>
|
|
88
|
-
<path d="m9 6 6 6-6 6" />
|
|
89
|
-
</svg>
|
|
90
|
-
);
|
|
91
|
-
|
|
92
|
-
export const ChevronLeft = (props: IconProps) => (
|
|
93
|
-
<svg {...base} {...props}>
|
|
94
|
-
<path d="m15 6-6 6 6 6" />
|
|
95
|
-
</svg>
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
export const Zap = (props: IconProps) => (
|
|
99
|
-
<svg {...base} {...props}>
|
|
100
|
-
<path d="M13 2 3 14h7l-1 8 10-12h-7l1-8z" />
|
|
101
|
-
</svg>
|
|
102
|
-
);
|
|
103
|
-
|
|
104
|
-
export const ShieldCheck = (props: IconProps) => (
|
|
105
|
-
<svg {...base} {...props}>
|
|
106
|
-
<path d="M12 3 5 6v5c0 4.5 3 7.5 7 9 4-1.5 7-4.5 7-9V6l-7-3z" />
|
|
107
|
-
<path d="m9 12 2 2 4-4" />
|
|
108
|
-
</svg>
|
|
109
|
-
);
|
|
110
|
-
|
|
111
|
-
export const Layers = (props: IconProps) => (
|
|
112
|
-
<svg {...base} {...props}>
|
|
113
|
-
<path d="m12 2 9 5-9 5-9-5 9-5z" />
|
|
114
|
-
<path d="m3 12 9 5 9-5" />
|
|
115
|
-
<path d="m3 17 9 5 9-5" />
|
|
116
|
-
</svg>
|
|
117
|
-
);
|
|
118
|
-
|
|
119
|
-
export const Smartphone = (props: IconProps) => (
|
|
120
|
-
<svg {...base} {...props}>
|
|
121
|
-
<rect width="14" height="20" x="5" y="2" rx="2.5" />
|
|
122
|
-
<path d="M12 18h.01" />
|
|
123
|
-
</svg>
|
|
124
|
-
);
|
|
125
|
-
|
|
126
|
-
export const Gauge = (props: IconProps) => (
|
|
127
|
-
<svg {...base} {...props}>
|
|
128
|
-
<path d="M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16z" />
|
|
129
|
-
<path d="m12 14 4-4" />
|
|
130
|
-
<path d="M12 10.5 9 13.5" />
|
|
131
|
-
</svg>
|
|
132
|
-
);
|
|
133
|
-
|
|
134
|
-
export const BarChart = (props: IconProps) => (
|
|
135
|
-
<svg {...base} {...props}>
|
|
136
|
-
<path d="M3 20h18" />
|
|
137
|
-
<path d="M7 20V8" />
|
|
138
|
-
<path d="M12 20V4" />
|
|
139
|
-
<path d="M17 20v-7" />
|
|
140
|
-
</svg>
|
|
141
|
-
);
|
|
142
|
-
|
|
143
|
-
export const Users = (props: IconProps) => (
|
|
144
|
-
<svg {...base} {...props}>
|
|
145
|
-
<path d="M16 21v-2a4 4 0 0 0-4-4H7a4 4 0 0 0-4 4v2" />
|
|
146
|
-
<circle cx="9" cy="7" r="4" />
|
|
147
|
-
<path d="M22 21v-2a4 4 0 0 0-3-3.87" />
|
|
148
|
-
<path d="M16 3.13a4 4 0 0 1 0 7.75" />
|
|
149
|
-
</svg>
|
|
150
|
-
);
|
|
151
|
-
|
|
152
|
-
export const Star = (props: IconProps) => (
|
|
153
|
-
<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden {...props}>
|
|
154
|
-
<path d="M12 2.5c.33 0 .63.19.77.5l1.98 4.01 4.42.64c.62.09.87.85.42 1.29l-3.2 3.12.76 4.4c.11.62-.55 1.1-1.1.8L12 15.13l-3.95 2.08c-.56.29-1.21-.18-1.1-.8l.76-4.4-3.2-3.12a.78.78 0 0 1 .42-1.29l4.42-.64L11.23 3c.14-.31.44-.5.77-.5z" />
|
|
155
|
-
</svg>
|
|
156
|
-
);
|
|
157
|
-
|
|
158
|
-
export const Quote = (props: IconProps) => (
|
|
159
|
-
<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden {...props}>
|
|
160
|
-
<path d="M10.5 5C7 5 4.5 7.5 4.5 11c0 3.3 2.2 5.5 5.2 5.5.2 0 .4 0 .5-.1-.2 1.5-1.3 2.6-2.9 3.2a.75.75 0 1 0 .4 1.4c3.6-1 5.8-3.8 5.8-7.7V7.5C13 6.1 11.9 5 10.5 5zm9 0C16 5 13.5 7.5 13.5 11c0 3.3 2.2 5.5 5.2 5.5.2 0 .4 0 .5-.1-.2 1.5-1.3 2.6-2.9 3.2a.75.75 0 1 0 .4 1.4c3.6-1 5.8-3.8 5.8-7.7V7.5C22 6.1 20.9 5 19.5 5z" />
|
|
161
|
-
</svg>
|
|
162
|
-
);
|
|
163
|
-
|
|
164
|
-
export const Globe = (props: IconProps) => (
|
|
165
|
-
<svg {...base} {...props}>
|
|
166
|
-
<circle cx="12" cy="12" r="9" />
|
|
167
|
-
<path d="M3 12h18" />
|
|
168
|
-
<path d="M12 3a14 14 0 0 1 0 18 14 14 0 0 1 0-18z" />
|
|
169
|
-
</svg>
|
|
170
|
-
);
|
|
171
|
-
|
|
172
|
-
export const Mail = (props: IconProps) => (
|
|
173
|
-
<svg {...base} {...props}>
|
|
174
|
-
<rect width="18" height="14" x="3" y="5" rx="2" />
|
|
175
|
-
<path d="m3 7 9 6 9-6" />
|
|
176
|
-
</svg>
|
|
177
|
-
);
|
|
178
|
-
|
|
179
|
-
export const Lock = (props: IconProps) => (
|
|
180
|
-
<svg {...base} {...props}>
|
|
181
|
-
<rect width="18" height="11" x="3" y="11" rx="2" />
|
|
182
|
-
<path d="M7 11V7a5 5 0 0 1 10 0v4" />
|
|
183
|
-
</svg>
|
|
184
|
-
);
|
|
185
|
-
|
|
186
|
-
export const Clock = (props: IconProps) => (
|
|
187
|
-
<svg {...base} {...props}>
|
|
188
|
-
<circle cx="12" cy="12" r="9" />
|
|
189
|
-
<path d="M12 7v5l3 2" />
|
|
190
|
-
</svg>
|
|
191
|
-
);
|
|
192
|
-
|
|
193
|
-
export const DollarSign = (props: IconProps) => (
|
|
194
|
-
<svg {...base} {...props}>
|
|
195
|
-
<path d="M12 2v20" />
|
|
196
|
-
<path d="M17 5.5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6" />
|
|
197
|
-
</svg>
|
|
198
|
-
);
|
|
199
|
-
|
|
200
|
-
export const Code = (props: IconProps) => (
|
|
201
|
-
<svg {...base} {...props}>
|
|
202
|
-
<path d="m16 18 6-6-6-6" />
|
|
203
|
-
<path d="m8 6-6 6 6 6" />
|
|
204
|
-
</svg>
|
|
205
|
-
);
|
|
206
|
-
|
|
207
|
-
export const Terminal = (props: IconProps) => (
|
|
208
|
-
<svg {...base} {...props}>
|
|
209
|
-
<path d="m5 17 5-5-5-5" />
|
|
210
|
-
<path d="M13 19h6" />
|
|
211
|
-
</svg>
|
|
212
|
-
);
|
|
213
|
-
|
|
214
|
-
export const Send = (props: IconProps) => (
|
|
215
|
-
<svg {...base} {...props}>
|
|
216
|
-
<path d="m3 11 18-8-7 18-3-7-8-3z" />
|
|
217
|
-
<path d="M11 14 21 3" />
|
|
218
|
-
</svg>
|
|
219
|
-
);
|
|
220
|
-
|
|
221
|
-
export const Play = (props: IconProps) => (
|
|
222
|
-
<svg {...base} {...props}>
|
|
223
|
-
<path d="m8 5 11 7-11 7V5z" />
|
|
224
|
-
</svg>
|
|
225
|
-
);
|
|
226
|
-
|
|
227
|
-
export const ExternalLink = (props: IconProps) => (
|
|
228
|
-
<svg {...base} {...props}>
|
|
229
|
-
<path d="M15 3h6v6" />
|
|
230
|
-
<path d="M10 14 21 3" />
|
|
231
|
-
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
|
|
232
|
-
</svg>
|
|
233
|
-
);
|
|
234
|
-
|
|
235
|
-
export const Sliders = (props: IconProps) => (
|
|
236
|
-
<svg {...base} {...props}>
|
|
237
|
-
<path d="M4 6h10" />
|
|
238
|
-
<path d="M18 6h2" />
|
|
239
|
-
<circle cx="16" cy="6" r="2" />
|
|
240
|
-
<path d="M4 12h2" />
|
|
241
|
-
<path d="M10 12h10" />
|
|
242
|
-
<circle cx="8" cy="12" r="2" />
|
|
243
|
-
<path d="M4 18h10" />
|
|
244
|
-
<path d="M18 18h2" />
|
|
245
|
-
<circle cx="16" cy="18" r="2" />
|
|
246
|
-
</svg>
|
|
247
|
-
);
|
|
248
|
-
|
|
249
|
-
export const Database = (props: IconProps) => (
|
|
250
|
-
<svg {...base} {...props}>
|
|
251
|
-
<ellipse cx="12" cy="5" rx="8" ry="3" />
|
|
252
|
-
<path d="M4 5v7c0 1.66 3.58 3 8 3s8-1.34 8-3V5" />
|
|
253
|
-
<path d="M4 12v7c0 1.66 3.58 3 8 3s8-1.34 8-3v-7" />
|
|
254
|
-
</svg>
|
|
255
|
-
);
|
|
256
|
-
|
|
257
|
-
export const Box = (props: IconProps) => (
|
|
258
|
-
<svg {...base} {...props}>
|
|
259
|
-
<path d="M21 8 12 3 3 8v8l9 5 9-5V8z" />
|
|
260
|
-
<path d="m3 8 9 5 9-5" />
|
|
261
|
-
<path d="M12 13v8" />
|
|
262
|
-
</svg>
|
|
263
|
-
);
|
|
264
|
-
|
|
265
|
-
export const Cpu = (props: IconProps) => (
|
|
266
|
-
<svg {...base} {...props}>
|
|
267
|
-
<rect width="16" height="16" x="4" y="4" rx="2" />
|
|
268
|
-
<rect width="8" height="8" x="8" y="8" rx="1" />
|
|
269
|
-
<path d="M9 2v2M15 2v2M9 20v2M15 20v2M2 9h2M2 15h2M20 9h2M20 15h2" />
|
|
270
|
-
</svg>
|
|
271
|
-
);
|
|
272
|
-
|
|
273
|
-
export const Palette = (props: IconProps) => (
|
|
274
|
-
<svg {...base} {...props}>
|
|
275
|
-
<path d="M12 3a9 9 0 1 0 0 18c1.66 0 2-1.34 2-2 0-.66-.27-1.16-.58-1.66-.3-.48-.42-.84-.42-1.34 0-.83.67-1.5 1.5-1.5h3.2A4.3 4.3 0 0 0 21 10 9 9 0 0 0 12 3z" />
|
|
276
|
-
<circle cx="7.5" cy="10.5" r="0.8" fill="currentColor" stroke="none" />
|
|
277
|
-
<circle cx="12" cy="7.5" r="0.8" fill="currentColor" stroke="none" />
|
|
278
|
-
<circle cx="16.5" cy="10.5" r="0.8" fill="currentColor" stroke="none" />
|
|
279
|
-
</svg>
|
|
280
|
-
);
|
|
281
|
-
|
|
282
|
-
export const Rocket = (props: IconProps) => (
|
|
283
|
-
<svg {...base} {...props}>
|
|
284
|
-
<path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z" />
|
|
285
|
-
<path d="m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z" />
|
|
286
|
-
<path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0" />
|
|
287
|
-
<path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5" />
|
|
288
|
-
<circle cx="15.5" cy="8.5" r="1.5" fill="currentColor" stroke="none" />
|
|
289
|
-
</svg>
|
|
290
|
-
);
|