diff --git a/apps/landing/src/components/hero.tsx b/apps/landing/src/components/hero.tsx new file mode 100644 index 00000000..28656d8e --- /dev/null +++ b/apps/landing/src/components/hero.tsx @@ -0,0 +1,51 @@ +import { Github } from "lucide-react"; +import { FadeIn } from "./fade-in"; +import { TypingCursor } from "./typing-cursor"; + +export function Hero() { + return ( + + + + + Your images. + + Your infrastructure. + + + + + + + + + + + + + Try the Demo → + + + + View on GitHub + + + + + + + AGPL-3.0 · Docker one-liner · Free forever + + + + + ); +} diff --git a/apps/landing/src/components/navbar.tsx b/apps/landing/src/components/navbar.tsx new file mode 100644 index 00000000..16e8b7a3 --- /dev/null +++ b/apps/landing/src/components/navbar.tsx @@ -0,0 +1,83 @@ +"use client"; + +import { Github, Menu, X } from "lucide-react"; +import { useState } from "react"; + +const links = [ + { label: "Features", href: "#features" }, + { label: "Enterprise", href: "#enterprise" }, + { label: "Docs", href: "https://docs.snapotter.com" }, + { label: "GitHub", href: "https://github.com/ashim-hq/ashim", icon: Github }, +]; + +export function Navbar() { + const [open, setOpen] = useState(false); + + return ( + + + + + S + + SnapOtter + + + + {links.map((link) => ( + + {link.icon && } + {link.label} + + ))} + + + + + Try Demo + + + + setOpen(!open)} + aria-label="Toggle menu" + type="button" + > + {open ? : } + + + + {open && ( + + {links.map((link) => ( + setOpen(false)} + > + {link.label} + + ))} + + Try Demo + + + )} + + ); +}
+ +
+ AGPL-3.0 · Docker one-liner · Free forever +