"use client";
import React, { useState } from "react";
import { motion } from "motion/react";
import Link from "next/link";
import { cn } from "@/lib/utils";
export function FullBackgroundImageWithText({
gradientFade = true,
}: {
gradientFade?: boolean;
}) {
const logos = [
{
name: "Aceternity UI",
image: "https://assets.aceternity.com/pro/logos/aceternity-ui.png",
},
{
name: "Gamity",
image: "https://assets.aceternity.com/pro/logos/gamity.png",
},
{
name: "Host it",
image: "https://assets.aceternity.com/pro/logos/hostit.png",
},
{
name: "Asteroid Kit",
image: "https://assets.aceternity.com/pro/logos/asteroid-kit.png",
},
];
return (
The best community for
Indie Hackers
We're building a community of indie hackers to help each other
succeed. Get in touch with us to join the community.
{logos.map((logo) => (
))}
);
}
export const Button = ({
href,
as: Tag = "a",
children,
className,
variant = "primary",
...props
}: {
href?: string;
as?: React.ElementType | any;
children: React.ReactNode;
className?: string;
variant?: "primary" | "secondary" | "simple";
} & (
| React.ComponentPropsWithoutRef<"a">
| React.ComponentPropsWithoutRef<"button">
)) => {
const baseStyles =
"no-underline flex space-x-2 group cursor-pointer relative border-none transition duration-200 rounded-full p-px text-xs font-semibold leading-6 px-4 py-2";
const variantStyles = {
primary:
"w-full sm:w-44 h-10 rounded-lg text-sm text-center items-center justify-center relative z-20 bg-black text-white",
secondary:
"relative z-20 text-sm bg-white text-black w-full sm:w-44 h-10 flex items-center justify-center rounded-lg hover:-translate-y-0.5 ",
simple:
"relative z-20 text-sm bg-transparent text-white w-full sm:w-44 h-10 flex items-center justify-center rounded-lg hover:-translate-y-0.5 ",
};
return (
{children}
);
};
import Image from "next/image";
export const BlurImage = (props: React.ComponentProps) => {
const [isLoading, setLoading] = useState(true);
const { src, width, height, alt, layout, ...rest } = props;
return (
setLoading(false)}
src={src}
width={width}
height={height}
loading="lazy"
decoding="async"
blurDataURL={src as string}
layout={layout}
alt={alt ? alt : "Avatar"}
{...rest}
/>
);
};