love-ui 1.2.21 → 1.2.23
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/chunk-CH2CHRA7.js +122 -0
- package/dist/index.js +71 -71
- package/dist/mcp-server.js +1 -1
- package/package.json +1 -1
- package/registry/default/blocks/404-2/components/not-found.tsx +1 -1
- package/registry/default/blocks/auth1/components/auth-page.tsx +0 -7
- package/registry/default/blocks/auth1/components/logo.tsx +3 -14
- package/registry/default/blocks/auth2/components/auth.tsx +1 -1
- package/registry/default/blocks/auth2/components/ui/decor-icon.tsx +49 -36
- package/registry/default/blocks/auth3/components/logo.tsx +3 -14
- package/registry/default/blocks/auth3/components/ui/decor-icon.tsx +49 -36
- package/registry/default/blocks/contact5/components/decor-icon.tsx +49 -36
- package/registry/default/blocks/cta-3/components/cta.tsx +1 -1
- package/registry/default/blocks/cta-3/components/decor-icon.tsx +49 -36
- package/registry/default/blocks/cta-5/components/cta.tsx +3 -9
- package/registry/default/blocks/faq-3/components/decor-icon.tsx +49 -36
- package/registry/default/blocks/features1/components/feature-section.tsx +1 -1
- package/registry/default/blocks/features2/components/decor-icon.tsx +49 -36
- package/registry/default/blocks/features2/components/feature-section.tsx +1 -1
- package/registry/default/blocks/features4/components/decor-icon.tsx +49 -36
- package/registry/default/blocks/features4/components/feature-section.tsx +0 -2
- package/registry/default/blocks/features5/components/feature-section.tsx +1 -1
- package/registry/default/blocks/features6/components/feature-section.tsx +5 -21
- package/registry/default/blocks/footer1/components/logo.tsx +3 -14
- package/registry/default/blocks/footer2/components/footer.tsx +1 -1
- package/registry/default/blocks/footer2/components/logo.tsx +3 -14
- package/registry/default/blocks/footer3/components/footer.tsx +2 -2
- package/registry/default/blocks/footer3/components/logo.tsx +3 -14
- package/registry/default/blocks/footer4/components/footer.tsx +1 -1
- package/registry/default/blocks/footer4/components/logo.tsx +3 -14
- package/registry/default/blocks/footer5/components/footer.tsx +27 -30
- package/registry/default/blocks/footer5/components/logo.tsx +3 -14
- package/registry/default/blocks/footer6/components/footer.tsx +3 -3
- package/registry/default/blocks/footer6/components/logo.tsx +3 -14
- package/registry/default/blocks/header1/components/logo.tsx +3 -14
- package/registry/default/blocks/header2/components/logo.tsx +3 -14
- package/registry/default/blocks/header3/components/logo.tsx +3 -14
- package/registry/default/blocks/hero1/components/hero.tsx +7 -7
- package/registry/default/blocks/hero1/components/logo.tsx +3 -14
- package/registry/default/blocks/hero2/components/decor-icon.tsx +49 -36
- package/registry/default/blocks/hero2/components/hero.tsx +4 -5
- package/registry/default/blocks/hero2/components/logo.tsx +3 -14
- package/registry/default/blocks/hero3/components/hero.tsx +2 -3
- package/registry/default/blocks/hero3/components/logo.tsx +3 -14
- package/registry/default/blocks/integrations1/components/integrations.tsx +7 -1
- package/registry/default/blocks/integrations2/components/decor-icon.tsx +49 -36
- package/registry/default/blocks/integrations2/components/integrations.tsx +7 -1
- package/registry/default/blocks/integrations3/components/integrations.tsx +25 -34
- package/registry/default/blocks/integrations4/components/integrations.tsx +2 -5
- package/registry/default/blocks/integrations5/components/integrations.tsx +8 -5
- package/registry/default/blocks/logo-cloud-2/components/decor-icon.tsx +49 -36
- package/registry/default/blocks/logo-cloud-3/app/page.tsx +2 -2
- package/registry/default/blocks/logo-cloud-3/components/logo-cloud.tsx +1 -1
- package/registry/default/blocks/logo-cloud-4/components/logo-cloud.tsx +1 -1
- package/registry/default/blocks/logo-cloud-4/components/progressive-blur.tsx +30 -36
- package/registry/default/blocks/pricing1/components/decor-icon.tsx +49 -36
- package/registry/default/blocks/stats10/components/stats.tsx +1 -9
- package/registry/default/blocks/testimonials1/components/logo.tsx +3 -14
- package/registry/default/blocks/testimonials1/components/testimonials.tsx +1 -1
- package/registry/default/blocks/testimonials2/components/testimonials.tsx +3 -3
- package/registry/default/blocks/testimonials3/components/decor-icon.tsx +49 -36
- package/registry/default/blocks/testimonials3/components/testimonials.tsx +0 -1
- package/registry/default/blocks/testimonials5/components/testimonials.tsx +1 -1
- package/registry/default/blocks/testimonials6/components/testimonials.tsx +1 -1
- package/registry/default/examples/preview-card-profile.tsx +3 -3
- package/registry/default/ui/button.tsx +1 -1
- package/registry/default/ui/toggle.tsx +2 -1
- package/dist/chunk-VDMHIXDM.js +0 -121
- package/registry/default/blocks/auth1/components/particles.tsx +0 -321
|
@@ -7,18 +7,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
7
7
|
xmlns="http://www.w3.org/2000/svg"
|
|
8
8
|
{...props}
|
|
9
9
|
>
|
|
10
|
-
|
|
11
|
-
<linearGradient id="loveui-blue" x1="0" y1="0" x2="48" y2="48">
|
|
12
|
-
<stop stopColor="#38A3FF" />
|
|
13
|
-
<stop offset="0.55" stopColor="#1266F1" />
|
|
14
|
-
<stop offset="1" stopColor="#0B3FD8" />
|
|
15
|
-
</linearGradient>
|
|
16
|
-
|
|
17
|
-
<linearGradient id="loveui-shine" x1="0" y1="0" x2="1" y2="1">
|
|
18
|
-
<stop stopColor="#FFFFFF" stopOpacity="0.9" />
|
|
19
|
-
<stop offset="1" stopColor="#BBD8FF" stopOpacity="0.4" />
|
|
20
|
-
</linearGradient>
|
|
21
|
-
</defs>
|
|
10
|
+
|
|
22
11
|
|
|
23
12
|
<g transform="translate(0 0)">
|
|
24
13
|
<rect
|
|
@@ -27,7 +16,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
27
16
|
width="48"
|
|
28
17
|
height="48"
|
|
29
18
|
rx="12"
|
|
30
|
-
fill="
|
|
19
|
+
fill="#1266F1"
|
|
31
20
|
/>
|
|
32
21
|
|
|
33
22
|
<path
|
|
@@ -70,7 +59,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
70
59
|
H18
|
|
71
60
|
C19.7 29 21 27.7 21 25
|
|
72
61
|
Z"
|
|
73
|
-
fill="
|
|
62
|
+
fill="#BBD8FF"
|
|
74
63
|
opacity="0.5"
|
|
75
64
|
/>
|
|
76
65
|
</g>
|
|
@@ -7,18 +7,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
7
7
|
xmlns="http://www.w3.org/2000/svg"
|
|
8
8
|
{...props}
|
|
9
9
|
>
|
|
10
|
-
|
|
11
|
-
<linearGradient id="loveui-blue" x1="0" y1="0" x2="48" y2="48">
|
|
12
|
-
<stop stopColor="#38A3FF" />
|
|
13
|
-
<stop offset="0.55" stopColor="#1266F1" />
|
|
14
|
-
<stop offset="1" stopColor="#0B3FD8" />
|
|
15
|
-
</linearGradient>
|
|
16
|
-
|
|
17
|
-
<linearGradient id="loveui-shine" x1="0" y1="0" x2="1" y2="1">
|
|
18
|
-
<stop stopColor="#FFFFFF" stopOpacity="0.9" />
|
|
19
|
-
<stop offset="1" stopColor="#BBD8FF" stopOpacity="0.4" />
|
|
20
|
-
</linearGradient>
|
|
21
|
-
</defs>
|
|
10
|
+
|
|
22
11
|
|
|
23
12
|
<g transform="translate(0 0)">
|
|
24
13
|
<rect
|
|
@@ -27,7 +16,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
27
16
|
width="48"
|
|
28
17
|
height="48"
|
|
29
18
|
rx="12"
|
|
30
|
-
fill="
|
|
19
|
+
fill="#1266F1"
|
|
31
20
|
/>
|
|
32
21
|
|
|
33
22
|
<path
|
|
@@ -70,7 +59,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
70
59
|
H18
|
|
71
60
|
C19.7 29 21 27.7 21 25
|
|
72
61
|
Z"
|
|
73
|
-
fill="
|
|
62
|
+
fill="#BBD8FF"
|
|
74
63
|
opacity="0.5"
|
|
75
64
|
/>
|
|
76
65
|
</g>
|
|
@@ -7,18 +7,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
7
7
|
xmlns="http://www.w3.org/2000/svg"
|
|
8
8
|
{...props}
|
|
9
9
|
>
|
|
10
|
-
|
|
11
|
-
<linearGradient id="loveui-blue" x1="0" y1="0" x2="48" y2="48">
|
|
12
|
-
<stop stopColor="#38A3FF" />
|
|
13
|
-
<stop offset="0.55" stopColor="#1266F1" />
|
|
14
|
-
<stop offset="1" stopColor="#0B3FD8" />
|
|
15
|
-
</linearGradient>
|
|
16
|
-
|
|
17
|
-
<linearGradient id="loveui-shine" x1="0" y1="0" x2="1" y2="1">
|
|
18
|
-
<stop stopColor="#FFFFFF" stopOpacity="0.9" />
|
|
19
|
-
<stop offset="1" stopColor="#BBD8FF" stopOpacity="0.4" />
|
|
20
|
-
</linearGradient>
|
|
21
|
-
</defs>
|
|
10
|
+
|
|
22
11
|
|
|
23
12
|
<g transform="translate(0 0)">
|
|
24
13
|
<rect
|
|
@@ -27,7 +16,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
27
16
|
width="48"
|
|
28
17
|
height="48"
|
|
29
18
|
rx="12"
|
|
30
|
-
fill="
|
|
19
|
+
fill="#1266F1"
|
|
31
20
|
/>
|
|
32
21
|
|
|
33
22
|
<path
|
|
@@ -70,7 +59,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
70
59
|
H18
|
|
71
60
|
C19.7 29 21 27.7 21 25
|
|
72
61
|
Z"
|
|
73
|
-
fill="
|
|
62
|
+
fill="#BBD8FF"
|
|
74
63
|
opacity="0.5"
|
|
75
64
|
/>
|
|
76
65
|
</g>
|
|
@@ -7,18 +7,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
7
7
|
xmlns="http://www.w3.org/2000/svg"
|
|
8
8
|
{...props}
|
|
9
9
|
>
|
|
10
|
-
|
|
11
|
-
<linearGradient id="loveui-blue" x1="0" y1="0" x2="48" y2="48">
|
|
12
|
-
<stop stopColor="#38A3FF" />
|
|
13
|
-
<stop offset="0.55" stopColor="#1266F1" />
|
|
14
|
-
<stop offset="1" stopColor="#0B3FD8" />
|
|
15
|
-
</linearGradient>
|
|
16
|
-
|
|
17
|
-
<linearGradient id="loveui-shine" x1="0" y1="0" x2="1" y2="1">
|
|
18
|
-
<stop stopColor="#FFFFFF" stopOpacity="0.9" />
|
|
19
|
-
<stop offset="1" stopColor="#BBD8FF" stopOpacity="0.4" />
|
|
20
|
-
</linearGradient>
|
|
21
|
-
</defs>
|
|
10
|
+
|
|
22
11
|
|
|
23
12
|
<g transform="translate(0 0)">
|
|
24
13
|
<rect
|
|
@@ -27,7 +16,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
27
16
|
width="48"
|
|
28
17
|
height="48"
|
|
29
18
|
rx="12"
|
|
30
|
-
fill="
|
|
19
|
+
fill="#1266F1"
|
|
31
20
|
/>
|
|
32
21
|
|
|
33
22
|
<path
|
|
@@ -70,7 +59,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
70
59
|
H18
|
|
71
60
|
C19.7 29 21 27.7 21 25
|
|
72
61
|
Z"
|
|
73
|
-
fill="
|
|
62
|
+
fill="#BBD8FF"
|
|
74
63
|
opacity="0.5"
|
|
75
64
|
/>
|
|
76
65
|
</g>
|
|
@@ -10,7 +10,7 @@ export function HeroSection() {
|
|
|
10
10
|
aria-hidden="true"
|
|
11
11
|
className="absolute inset-0 isolate hidden overflow-hidden contain-strict lg:block"
|
|
12
12
|
>
|
|
13
|
-
<div className="absolute inset-0 -top-14 isolate -z-10
|
|
13
|
+
<div className="absolute inset-0 -top-14 isolate -z-10 contain-strict" />
|
|
14
14
|
</div>
|
|
15
15
|
|
|
16
16
|
{/* X Bold Faded Borders */}
|
|
@@ -18,8 +18,8 @@ export function HeroSection() {
|
|
|
18
18
|
aria-hidden="true"
|
|
19
19
|
className="absolute inset-0 mx-auto hidden min-h-screen w-full max-w-5xl lg:block"
|
|
20
20
|
>
|
|
21
|
-
<div className="
|
|
22
|
-
<div className="
|
|
21
|
+
<div className=" absolute inset-y-0 left-0 z-10 h-full w-px bg-foreground/15" />
|
|
22
|
+
<div className=" absolute inset-y-0 right-0 z-10 h-full w-px bg-foreground/15" />
|
|
23
23
|
</div>
|
|
24
24
|
|
|
25
25
|
{/* main content */}
|
|
@@ -30,10 +30,10 @@ export function HeroSection() {
|
|
|
30
30
|
aria-hidden="true"
|
|
31
31
|
className="absolute inset-0 -z-1 size-full overflow-hidden"
|
|
32
32
|
>
|
|
33
|
-
<div className="absolute inset-y-0 left-4 w-px bg-
|
|
34
|
-
<div className="absolute inset-y-0 right-4 w-px bg-
|
|
35
|
-
<div className="absolute inset-y-0 left-8 w-px bg-
|
|
36
|
-
<div className="absolute inset-y-0 right-8 w-px bg-
|
|
33
|
+
<div className="absolute inset-y-0 left-4 w-px bg-border md:left-8" />
|
|
34
|
+
<div className="absolute inset-y-0 right-4 w-px bg-border md:right-8" />
|
|
35
|
+
<div className="absolute inset-y-0 left-8 w-px bg-border/50 md:left-12" />
|
|
36
|
+
<div className="absolute inset-y-0 right-8 w-px bg-border/50 md:right-12" />
|
|
37
37
|
</div>
|
|
38
38
|
|
|
39
39
|
<a
|
|
@@ -7,18 +7,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
7
7
|
xmlns="http://www.w3.org/2000/svg"
|
|
8
8
|
{...props}
|
|
9
9
|
>
|
|
10
|
-
|
|
11
|
-
<linearGradient id="loveui-blue" x1="0" y1="0" x2="48" y2="48">
|
|
12
|
-
<stop stopColor="#38A3FF" />
|
|
13
|
-
<stop offset="0.55" stopColor="#1266F1" />
|
|
14
|
-
<stop offset="1" stopColor="#0B3FD8" />
|
|
15
|
-
</linearGradient>
|
|
16
|
-
|
|
17
|
-
<linearGradient id="loveui-shine" x1="0" y1="0" x2="1" y2="1">
|
|
18
|
-
<stop stopColor="#FFFFFF" stopOpacity="0.9" />
|
|
19
|
-
<stop offset="1" stopColor="#BBD8FF" stopOpacity="0.4" />
|
|
20
|
-
</linearGradient>
|
|
21
|
-
</defs>
|
|
10
|
+
|
|
22
11
|
|
|
23
12
|
<g transform="translate(0 0)">
|
|
24
13
|
<rect
|
|
@@ -27,7 +16,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
27
16
|
width="48"
|
|
28
17
|
height="48"
|
|
29
18
|
rx="12"
|
|
30
|
-
fill="
|
|
19
|
+
fill="#1266F1"
|
|
31
20
|
/>
|
|
32
21
|
|
|
33
22
|
<path
|
|
@@ -70,7 +59,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
70
59
|
H18
|
|
71
60
|
C19.7 29 21 27.7 21 25
|
|
72
61
|
Z"
|
|
73
|
-
fill="
|
|
62
|
+
fill="#BBD8FF"
|
|
74
63
|
opacity="0.5"
|
|
75
64
|
/>
|
|
76
65
|
</g>
|
|
@@ -2,44 +2,57 @@ import { cn } from "@/lib/utils";
|
|
|
2
2
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
3
3
|
|
|
4
4
|
const DecorIconVariants = cva(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
5
|
+
"pointer-events-none absolute z-1 size-4 shrink-0 stroke-1 stroke-muted-foreground transition-transform",
|
|
6
|
+
{
|
|
7
|
+
variants: {
|
|
8
|
+
position: {
|
|
9
|
+
// We also rotate the SVG inside the variant so the bracket always points inward
|
|
10
|
+
"top-left":
|
|
11
|
+
"top-0 left-0 -translate-x-1/2 -translate-y-1/2",
|
|
12
|
+
"top-right":
|
|
13
|
+
"top-0 right-0 translate-x-1/2 -translate-y-1/2 rotate-90",
|
|
14
|
+
"bottom-right":
|
|
15
|
+
"right-0 bottom-0 translate-x-1/2 translate-y-1/2 rotate-180",
|
|
16
|
+
"bottom-left":
|
|
17
|
+
"bottom-0 left-0 -translate-x-1/2 translate-y-1/2 -rotate-90",
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
defaultVariants: {
|
|
21
|
+
position: "top-left",
|
|
22
|
+
},
|
|
23
|
+
}
|
|
23
24
|
);
|
|
24
25
|
|
|
25
26
|
type DecorIconProps = React.ComponentProps<"svg"> &
|
|
26
|
-
|
|
27
|
+
VariantProps<typeof DecorIconVariants> & {
|
|
28
|
+
variant?: "bracket" | "dot" | "diagonal";
|
|
29
|
+
};
|
|
27
30
|
|
|
28
|
-
export function DecorIcon({ position, className, ...props }: DecorIconProps) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
31
|
+
export function DecorIcon({ position, variant = "bracket", className, ...props }: DecorIconProps) {
|
|
32
|
+
return (
|
|
33
|
+
<svg
|
|
34
|
+
aria-hidden="true"
|
|
35
|
+
className={cn(DecorIconVariants({ position, className }))}
|
|
36
|
+
fill="none"
|
|
37
|
+
stroke="currentColor"
|
|
38
|
+
viewBox="0 0 24 24"
|
|
39
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
40
|
+
{...props}
|
|
41
|
+
>
|
|
42
|
+
{/* OPTION 1: Corner Bracket (Default) */}
|
|
43
|
+
{variant === "bracket" && (
|
|
44
|
+
<path strokeLinecap="round" strokeLinejoin="round" d="M12 4H4v8" />
|
|
45
|
+
)}
|
|
46
|
+
|
|
47
|
+
{/* OPTION 2: Minimalist Dot (Change fill to currentColor in class if using this) */}
|
|
48
|
+
{variant === "dot" && (
|
|
49
|
+
<circle cx="12" cy="12" r="3" fill="currentColor" />
|
|
50
|
+
)}
|
|
51
|
+
|
|
52
|
+
{/* OPTION 3: Diagonal Accent Line */}
|
|
53
|
+
{variant === "diagonal" && (
|
|
54
|
+
<path strokeLinecap="round" d="M4 20L20 4" />
|
|
55
|
+
)}
|
|
56
|
+
</svg>
|
|
57
|
+
);
|
|
45
58
|
}
|
|
@@ -16,14 +16,13 @@ export function HeroSection() {
|
|
|
16
16
|
<div
|
|
17
17
|
className={cn(
|
|
18
18
|
"absolute -inset-x-20 inset-y-0 z-0 rounded-full",
|
|
19
|
-
"bg-[radial-gradient(ellipse_at_center,theme(--color-foreground/.1),transparent,transparent)]",
|
|
20
19
|
"blur-[50px]"
|
|
21
20
|
)}
|
|
22
21
|
/>
|
|
23
|
-
<div className="absolute inset-y-0 left-4 w-px bg-
|
|
24
|
-
<div className="absolute inset-y-0 right-4 w-px bg-
|
|
25
|
-
<div className="absolute inset-y-0 left-8 w-px bg-
|
|
26
|
-
<div className="absolute inset-y-0 right-8 w-px bg-
|
|
22
|
+
<div className="absolute inset-y-0 left-4 w-px bg-border md:left-8" />
|
|
23
|
+
<div className="absolute inset-y-0 right-4 w-px bg-border md:right-8" />
|
|
24
|
+
<div className="absolute inset-y-0 left-8 w-px bg-border/50 md:left-12" />
|
|
25
|
+
<div className="absolute inset-y-0 right-8 w-px bg-border/50 md:right-12" />
|
|
27
26
|
</div>
|
|
28
27
|
<a
|
|
29
28
|
className={cn(
|
|
@@ -7,18 +7,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
7
7
|
xmlns="http://www.w3.org/2000/svg"
|
|
8
8
|
{...props}
|
|
9
9
|
>
|
|
10
|
-
|
|
11
|
-
<linearGradient id="loveui-blue" x1="0" y1="0" x2="48" y2="48">
|
|
12
|
-
<stop stopColor="#38A3FF" />
|
|
13
|
-
<stop offset="0.55" stopColor="#1266F1" />
|
|
14
|
-
<stop offset="1" stopColor="#0B3FD8" />
|
|
15
|
-
</linearGradient>
|
|
16
|
-
|
|
17
|
-
<linearGradient id="loveui-shine" x1="0" y1="0" x2="1" y2="1">
|
|
18
|
-
<stop stopColor="#FFFFFF" stopOpacity="0.9" />
|
|
19
|
-
<stop offset="1" stopColor="#BBD8FF" stopOpacity="0.4" />
|
|
20
|
-
</linearGradient>
|
|
21
|
-
</defs>
|
|
10
|
+
|
|
22
11
|
|
|
23
12
|
<g transform="translate(0 0)">
|
|
24
13
|
<rect
|
|
@@ -27,7 +16,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
27
16
|
width="48"
|
|
28
17
|
height="48"
|
|
29
18
|
rx="12"
|
|
30
|
-
fill="
|
|
19
|
+
fill="#1266F1"
|
|
31
20
|
/>
|
|
32
21
|
|
|
33
22
|
<path
|
|
@@ -70,7 +59,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
70
59
|
H18
|
|
71
60
|
C19.7 29 21 27.7 21 25
|
|
72
61
|
Z"
|
|
73
|
-
fill="
|
|
62
|
+
fill="#BBD8FF"
|
|
74
63
|
opacity="0.5"
|
|
75
64
|
/>
|
|
76
65
|
</g>
|
|
@@ -13,7 +13,7 @@ export function HeroSection() {
|
|
|
13
13
|
<div
|
|
14
14
|
className={cn(
|
|
15
15
|
"absolute inset-0 isolate -z-10",
|
|
16
|
-
"
|
|
16
|
+
""
|
|
17
17
|
)}
|
|
18
18
|
/>
|
|
19
19
|
</div>
|
|
@@ -71,13 +71,12 @@ export function HeroSection() {
|
|
|
71
71
|
<div
|
|
72
72
|
className={cn(
|
|
73
73
|
"absolute -inset-x-20 inset-y-0 -translate-y-1/3 scale-120 rounded-full",
|
|
74
|
-
"bg-[radial-gradient(ellipse_at_center,theme(--color-foreground/.1),transparent,transparent)]",
|
|
75
74
|
"blur-[50px]"
|
|
76
75
|
)}
|
|
77
76
|
/>
|
|
78
77
|
<div
|
|
79
78
|
className={cn(
|
|
80
|
-
"
|
|
79
|
+
" relative mt-8 -mr-56 overflow-hidden px-2 sm:mt-12 sm:mr-0 md:mt-20",
|
|
81
80
|
"fade-in slide-in-from-bottom-5 animate-in fill-mode-backwards delay-100 duration-1000 ease-out"
|
|
82
81
|
)}
|
|
83
82
|
>
|
|
@@ -7,18 +7,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
7
7
|
xmlns="http://www.w3.org/2000/svg"
|
|
8
8
|
{...props}
|
|
9
9
|
>
|
|
10
|
-
|
|
11
|
-
<linearGradient id="loveui-blue" x1="0" y1="0" x2="48" y2="48">
|
|
12
|
-
<stop stopColor="#38A3FF" />
|
|
13
|
-
<stop offset="0.55" stopColor="#1266F1" />
|
|
14
|
-
<stop offset="1" stopColor="#0B3FD8" />
|
|
15
|
-
</linearGradient>
|
|
16
|
-
|
|
17
|
-
<linearGradient id="loveui-shine" x1="0" y1="0" x2="1" y2="1">
|
|
18
|
-
<stop stopColor="#FFFFFF" stopOpacity="0.9" />
|
|
19
|
-
<stop offset="1" stopColor="#BBD8FF" stopOpacity="0.4" />
|
|
20
|
-
</linearGradient>
|
|
21
|
-
</defs>
|
|
10
|
+
|
|
22
11
|
|
|
23
12
|
<g transform="translate(0 0)">
|
|
24
13
|
<rect
|
|
@@ -27,7 +16,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
27
16
|
width="48"
|
|
28
17
|
height="48"
|
|
29
18
|
rx="12"
|
|
30
|
-
fill="
|
|
19
|
+
fill="#1266F1"
|
|
31
20
|
/>
|
|
32
21
|
|
|
33
22
|
<path
|
|
@@ -70,7 +59,7 @@ export const Logo = (props: React.ComponentProps<"svg">) => (
|
|
|
70
59
|
H18
|
|
71
60
|
C19.7 29 21 27.7 21 25
|
|
72
61
|
Z"
|
|
73
|
-
fill="
|
|
62
|
+
fill="#BBD8FF"
|
|
74
63
|
opacity="0.5"
|
|
75
64
|
/>
|
|
76
65
|
</g>
|
|
@@ -17,6 +17,7 @@ type Integration = {
|
|
|
17
17
|
name: string;
|
|
18
18
|
description: string;
|
|
19
19
|
isInvertable?: boolean;
|
|
20
|
+
logoClassName?: string;
|
|
20
21
|
};
|
|
21
22
|
|
|
22
23
|
const data: Integration[] = [
|
|
@@ -44,6 +45,7 @@ const data: Integration[] = [
|
|
|
44
45
|
name: "Notion",
|
|
45
46
|
description:
|
|
46
47
|
"Document component decisions, block usage, and product patterns.",
|
|
48
|
+
logoClassName: "text-black",
|
|
47
49
|
},
|
|
48
50
|
];
|
|
49
51
|
|
|
@@ -97,7 +99,11 @@ function LogoAsset({
|
|
|
97
99
|
return (
|
|
98
100
|
<Component
|
|
99
101
|
aria-label={integration.name}
|
|
100
|
-
className={cn(
|
|
102
|
+
className={cn(
|
|
103
|
+
className,
|
|
104
|
+
integration.isInvertable && "text-foreground",
|
|
105
|
+
integration.logoClassName
|
|
106
|
+
)}
|
|
101
107
|
role="img"
|
|
102
108
|
/>
|
|
103
109
|
);
|
|
@@ -2,44 +2,57 @@ import { cn } from "@/lib/utils";
|
|
|
2
2
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
3
3
|
|
|
4
4
|
const DecorIconVariants = cva(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
5
|
+
"pointer-events-none absolute z-1 size-4 shrink-0 stroke-1 stroke-muted-foreground transition-transform",
|
|
6
|
+
{
|
|
7
|
+
variants: {
|
|
8
|
+
position: {
|
|
9
|
+
// We also rotate the SVG inside the variant so the bracket always points inward
|
|
10
|
+
"top-left":
|
|
11
|
+
"top-0 left-0 -translate-x-1/2 -translate-y-1/2",
|
|
12
|
+
"top-right":
|
|
13
|
+
"top-0 right-0 translate-x-1/2 -translate-y-1/2 rotate-90",
|
|
14
|
+
"bottom-right":
|
|
15
|
+
"right-0 bottom-0 translate-x-1/2 translate-y-1/2 rotate-180",
|
|
16
|
+
"bottom-left":
|
|
17
|
+
"bottom-0 left-0 -translate-x-1/2 translate-y-1/2 -rotate-90",
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
defaultVariants: {
|
|
21
|
+
position: "top-left",
|
|
22
|
+
},
|
|
23
|
+
}
|
|
23
24
|
);
|
|
24
25
|
|
|
25
26
|
type DecorIconProps = React.ComponentProps<"svg"> &
|
|
26
|
-
|
|
27
|
+
VariantProps<typeof DecorIconVariants> & {
|
|
28
|
+
variant?: "bracket" | "dot" | "diagonal";
|
|
29
|
+
};
|
|
27
30
|
|
|
28
|
-
export function DecorIcon({ position, className, ...props }: DecorIconProps) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
31
|
+
export function DecorIcon({ position, variant = "bracket", className, ...props }: DecorIconProps) {
|
|
32
|
+
return (
|
|
33
|
+
<svg
|
|
34
|
+
aria-hidden="true"
|
|
35
|
+
className={cn(DecorIconVariants({ position, className }))}
|
|
36
|
+
fill="none"
|
|
37
|
+
stroke="currentColor"
|
|
38
|
+
viewBox="0 0 24 24"
|
|
39
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
40
|
+
{...props}
|
|
41
|
+
>
|
|
42
|
+
{/* OPTION 1: Corner Bracket (Default) */}
|
|
43
|
+
{variant === "bracket" && (
|
|
44
|
+
<path strokeLinecap="round" strokeLinejoin="round" d="M12 4H4v8" />
|
|
45
|
+
)}
|
|
46
|
+
|
|
47
|
+
{/* OPTION 2: Minimalist Dot (Change fill to currentColor in class if using this) */}
|
|
48
|
+
{variant === "dot" && (
|
|
49
|
+
<circle cx="12" cy="12" r="3" fill="currentColor" />
|
|
50
|
+
)}
|
|
51
|
+
|
|
52
|
+
{/* OPTION 3: Diagonal Accent Line */}
|
|
53
|
+
{variant === "diagonal" && (
|
|
54
|
+
<path strokeLinecap="round" d="M4 20L20 4" />
|
|
55
|
+
)}
|
|
56
|
+
</svg>
|
|
57
|
+
);
|
|
45
58
|
}
|
|
@@ -18,6 +18,7 @@ type Integration = {
|
|
|
18
18
|
name: string;
|
|
19
19
|
description: string;
|
|
20
20
|
isInvertable?: boolean;
|
|
21
|
+
logoClassName?: string;
|
|
21
22
|
icon?: React.ReactNode;
|
|
22
23
|
};
|
|
23
24
|
|
|
@@ -53,6 +54,7 @@ const data: Integration[] = [
|
|
|
53
54
|
Component: NotionLogo,
|
|
54
55
|
name: "Notion",
|
|
55
56
|
description: "Track component decisions, block adoption, and design system notes.",
|
|
57
|
+
logoClassName: "text-black",
|
|
56
58
|
},
|
|
57
59
|
{
|
|
58
60
|
Component: GmailLogo,
|
|
@@ -121,7 +123,11 @@ function LogoAsset({
|
|
|
121
123
|
return (
|
|
122
124
|
<Component
|
|
123
125
|
aria-label={integration.name}
|
|
124
|
-
className={cn(
|
|
126
|
+
className={cn(
|
|
127
|
+
className,
|
|
128
|
+
integration.isInvertable && "text-foreground",
|
|
129
|
+
integration.logoClassName
|
|
130
|
+
)}
|
|
125
131
|
role="img"
|
|
126
132
|
/>
|
|
127
133
|
);
|