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.
Files changed (69) hide show
  1. package/dist/chunk-CH2CHRA7.js +122 -0
  2. package/dist/index.js +71 -71
  3. package/dist/mcp-server.js +1 -1
  4. package/package.json +1 -1
  5. package/registry/default/blocks/404-2/components/not-found.tsx +1 -1
  6. package/registry/default/blocks/auth1/components/auth-page.tsx +0 -7
  7. package/registry/default/blocks/auth1/components/logo.tsx +3 -14
  8. package/registry/default/blocks/auth2/components/auth.tsx +1 -1
  9. package/registry/default/blocks/auth2/components/ui/decor-icon.tsx +49 -36
  10. package/registry/default/blocks/auth3/components/logo.tsx +3 -14
  11. package/registry/default/blocks/auth3/components/ui/decor-icon.tsx +49 -36
  12. package/registry/default/blocks/contact5/components/decor-icon.tsx +49 -36
  13. package/registry/default/blocks/cta-3/components/cta.tsx +1 -1
  14. package/registry/default/blocks/cta-3/components/decor-icon.tsx +49 -36
  15. package/registry/default/blocks/cta-5/components/cta.tsx +3 -9
  16. package/registry/default/blocks/faq-3/components/decor-icon.tsx +49 -36
  17. package/registry/default/blocks/features1/components/feature-section.tsx +1 -1
  18. package/registry/default/blocks/features2/components/decor-icon.tsx +49 -36
  19. package/registry/default/blocks/features2/components/feature-section.tsx +1 -1
  20. package/registry/default/blocks/features4/components/decor-icon.tsx +49 -36
  21. package/registry/default/blocks/features4/components/feature-section.tsx +0 -2
  22. package/registry/default/blocks/features5/components/feature-section.tsx +1 -1
  23. package/registry/default/blocks/features6/components/feature-section.tsx +5 -21
  24. package/registry/default/blocks/footer1/components/logo.tsx +3 -14
  25. package/registry/default/blocks/footer2/components/footer.tsx +1 -1
  26. package/registry/default/blocks/footer2/components/logo.tsx +3 -14
  27. package/registry/default/blocks/footer3/components/footer.tsx +2 -2
  28. package/registry/default/blocks/footer3/components/logo.tsx +3 -14
  29. package/registry/default/blocks/footer4/components/footer.tsx +1 -1
  30. package/registry/default/blocks/footer4/components/logo.tsx +3 -14
  31. package/registry/default/blocks/footer5/components/footer.tsx +27 -30
  32. package/registry/default/blocks/footer5/components/logo.tsx +3 -14
  33. package/registry/default/blocks/footer6/components/footer.tsx +3 -3
  34. package/registry/default/blocks/footer6/components/logo.tsx +3 -14
  35. package/registry/default/blocks/header1/components/logo.tsx +3 -14
  36. package/registry/default/blocks/header2/components/logo.tsx +3 -14
  37. package/registry/default/blocks/header3/components/logo.tsx +3 -14
  38. package/registry/default/blocks/hero1/components/hero.tsx +7 -7
  39. package/registry/default/blocks/hero1/components/logo.tsx +3 -14
  40. package/registry/default/blocks/hero2/components/decor-icon.tsx +49 -36
  41. package/registry/default/blocks/hero2/components/hero.tsx +4 -5
  42. package/registry/default/blocks/hero2/components/logo.tsx +3 -14
  43. package/registry/default/blocks/hero3/components/hero.tsx +2 -3
  44. package/registry/default/blocks/hero3/components/logo.tsx +3 -14
  45. package/registry/default/blocks/integrations1/components/integrations.tsx +7 -1
  46. package/registry/default/blocks/integrations2/components/decor-icon.tsx +49 -36
  47. package/registry/default/blocks/integrations2/components/integrations.tsx +7 -1
  48. package/registry/default/blocks/integrations3/components/integrations.tsx +25 -34
  49. package/registry/default/blocks/integrations4/components/integrations.tsx +2 -5
  50. package/registry/default/blocks/integrations5/components/integrations.tsx +8 -5
  51. package/registry/default/blocks/logo-cloud-2/components/decor-icon.tsx +49 -36
  52. package/registry/default/blocks/logo-cloud-3/app/page.tsx +2 -2
  53. package/registry/default/blocks/logo-cloud-3/components/logo-cloud.tsx +1 -1
  54. package/registry/default/blocks/logo-cloud-4/components/logo-cloud.tsx +1 -1
  55. package/registry/default/blocks/logo-cloud-4/components/progressive-blur.tsx +30 -36
  56. package/registry/default/blocks/pricing1/components/decor-icon.tsx +49 -36
  57. package/registry/default/blocks/stats10/components/stats.tsx +1 -9
  58. package/registry/default/blocks/testimonials1/components/logo.tsx +3 -14
  59. package/registry/default/blocks/testimonials1/components/testimonials.tsx +1 -1
  60. package/registry/default/blocks/testimonials2/components/testimonials.tsx +3 -3
  61. package/registry/default/blocks/testimonials3/components/decor-icon.tsx +49 -36
  62. package/registry/default/blocks/testimonials3/components/testimonials.tsx +0 -1
  63. package/registry/default/blocks/testimonials5/components/testimonials.tsx +1 -1
  64. package/registry/default/blocks/testimonials6/components/testimonials.tsx +1 -1
  65. package/registry/default/examples/preview-card-profile.tsx +3 -3
  66. package/registry/default/ui/button.tsx +1 -1
  67. package/registry/default/ui/toggle.tsx +2 -1
  68. package/dist/chunk-VDMHIXDM.js +0 -121
  69. 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
- <defs>
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="url(#loveui-blue)"
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="url(#loveui-shine)"
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
- <defs>
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="url(#loveui-blue)"
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="url(#loveui-shine)"
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
- <defs>
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="url(#loveui-blue)"
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="url(#loveui-shine)"
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
- <defs>
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="url(#loveui-blue)"
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="url(#loveui-shine)"
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 bg-[radial-gradient(35%_80%_at_49%_0%,--theme(--color-foreground/.08),transparent)] contain-strict" />
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="mask-y-from-80% mask-y-to-100% absolute inset-y-0 left-0 z-10 h-full w-px bg-foreground/15" />
22
- <div className="mask-y-from-80% mask-y-to-100% absolute inset-y-0 right-0 z-10 h-full w-px bg-foreground/15" />
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-linear-to-b from-transparent via-border to-border md:left-8" />
34
- <div className="absolute inset-y-0 right-4 w-px bg-linear-to-b from-transparent via-border to-border md:right-8" />
35
- <div className="absolute inset-y-0 left-8 w-px bg-linear-to-b from-transparent via-border/50 to-border/50 md:left-12" />
36
- <div className="absolute inset-y-0 right-8 w-px bg-linear-to-b from-transparent via-border/50 to-border/50 md:right-12" />
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
- <defs>
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="url(#loveui-blue)"
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="url(#loveui-shine)"
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
- "pointer-events-none absolute z-1 size-5 shrink-0 stroke-1 stroke-muted-foreground",
6
- {
7
- variants: {
8
- position: {
9
- "top-left":
10
- "top-0 left-0 -translate-x-[calc(50%+0.5px)] -translate-y-[calc(50%+0.5px)]",
11
- "top-right":
12
- "top-0 right-0 translate-x-[calc(50%+0.5px)] -translate-y-[calc(50%+0.5px)]",
13
- "bottom-right":
14
- "right-0 bottom-0 translate-x-[calc(50%+0.5px)] translate-y-[calc(50%+0.5px)]",
15
- "bottom-left":
16
- "bottom-0 left-0 -translate-x-[calc(50%+0.5px)] translate-y-[calc(50%+0.5px)]",
17
- },
18
- },
19
- defaultVariants: {
20
- position: "top-left",
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
- VariantProps<typeof DecorIconVariants>;
27
+ VariantProps<typeof DecorIconVariants> & {
28
+ variant?: "bracket" | "dot" | "diagonal";
29
+ };
27
30
 
28
- export function DecorIcon({ position, className, ...props }: DecorIconProps) {
29
- return (
30
- <svg
31
- aria-hidden="true"
32
- className={cn(DecorIconVariants({ position, className }))}
33
- fill="none"
34
- stroke="currentColor"
35
- strokeLinecap="round"
36
- strokeLinejoin="round"
37
- viewBox="0 0 24 24"
38
- xmlns="http://www.w3.org/2000/svg"
39
- {...props}
40
- >
41
- <path d="M5 12h14" />
42
- <path d="M12 5v14" />
43
- </svg>
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-linear-to-b from-transparent via-border to-border md:left-8" />
24
- <div className="absolute inset-y-0 right-4 w-px bg-linear-to-b from-transparent via-border to-border md:right-8" />
25
- <div className="absolute inset-y-0 left-8 w-px bg-linear-to-b from-transparent via-border/50 to-border/50 md:left-12" />
26
- <div className="absolute inset-y-0 right-8 w-px bg-linear-to-b from-transparent via-border/50 to-border/50 md:right-12" />
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
- <defs>
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="url(#loveui-blue)"
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="url(#loveui-shine)"
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
- "bg-[radial-gradient(20%_80%_at_20%_0%,--theme(--color-foreground/.1),transparent)]"
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
- "mask-b-from-60% relative mt-8 -mr-56 overflow-hidden px-2 sm:mt-12 sm:mr-0 md:mt-20",
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
- <defs>
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="url(#loveui-blue)"
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="url(#loveui-shine)"
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(className, integration.isInvertable && "dark:invert")}
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
- "pointer-events-none absolute z-1 size-5 shrink-0 stroke-1 stroke-muted-foreground",
6
- {
7
- variants: {
8
- position: {
9
- "top-left":
10
- "top-0 left-0 -translate-x-[calc(50%+0.5px)] -translate-y-[calc(50%+0.5px)]",
11
- "top-right":
12
- "top-0 right-0 translate-x-[calc(50%+0.5px)] -translate-y-[calc(50%+0.5px)]",
13
- "bottom-right":
14
- "right-0 bottom-0 translate-x-[calc(50%+0.5px)] translate-y-[calc(50%+0.5px)]",
15
- "bottom-left":
16
- "bottom-0 left-0 -translate-x-[calc(50%+0.5px)] translate-y-[calc(50%+0.5px)]",
17
- },
18
- },
19
- defaultVariants: {
20
- position: "top-left",
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
- VariantProps<typeof DecorIconVariants>;
27
+ VariantProps<typeof DecorIconVariants> & {
28
+ variant?: "bracket" | "dot" | "diagonal";
29
+ };
27
30
 
28
- export function DecorIcon({ position, className, ...props }: DecorIconProps) {
29
- return (
30
- <svg
31
- aria-hidden="true"
32
- className={cn(DecorIconVariants({ position, className }))}
33
- fill="none"
34
- stroke="currentColor"
35
- strokeLinecap="round"
36
- strokeLinejoin="round"
37
- viewBox="0 0 24 24"
38
- xmlns="http://www.w3.org/2000/svg"
39
- {...props}
40
- >
41
- <path d="M5 12h14" />
42
- <path d="M12 5v14" />
43
- </svg>
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(className, integration.isInvertable && "dark:invert")}
126
+ className={cn(
127
+ className,
128
+ integration.isInvertable && "text-foreground",
129
+ integration.logoClassName
130
+ )}
125
131
  role="img"
126
132
  />
127
133
  );