mirror of
https://github.com/community-scripts/ProxmoxVE
synced 2025-02-08 00:39:16 +00:00
138 lines
4.4 KiB
TypeScript
138 lines
4.4 KiB
TypeScript
"use client";
|
||
import AnimatedGradientText from "@/components/ui/animated-gradient-text";
|
||
import { Button } from "@/components/ui/button";
|
||
import { CardFooter } from "@/components/ui/card";
|
||
import {
|
||
Dialog,
|
||
DialogContent,
|
||
DialogDescription,
|
||
DialogHeader,
|
||
DialogTitle,
|
||
DialogTrigger,
|
||
} from "@/components/ui/dialog";
|
||
import Particles from "@/components/ui/particles";
|
||
import { Separator } from "@/components/ui/separator";
|
||
import { basePath } from "@/config/siteConfig";
|
||
import { cn } from "@/lib/utils";
|
||
import { ArrowRightIcon, ExternalLink } from "lucide-react";
|
||
import { useTheme } from "next-themes";
|
||
import Link from "next/link";
|
||
import { useEffect, useState } from "react";
|
||
import { FaGithub } from "react-icons/fa";
|
||
|
||
function CustomArrowRightIcon() {
|
||
return <ArrowRightIcon className="h-4 w-4" width={1} />;
|
||
}
|
||
|
||
export default function Page() {
|
||
const { theme } = useTheme();
|
||
|
||
const [color, setColor] = useState("#000000");
|
||
|
||
useEffect(() => {
|
||
setColor(theme === "dark" ? "#ffffff" : "#000000");
|
||
}, [theme]);
|
||
|
||
return (
|
||
<div className="w-full mt-16">
|
||
<Particles
|
||
className="absolute inset-0 -z-40"
|
||
quantity={100}
|
||
ease={80}
|
||
color={color}
|
||
refresh
|
||
/>
|
||
<div className="container mx-auto">
|
||
<div className="flex h-[80vh] flex-col items-center justify-center gap-4 py-20 lg:py-40">
|
||
<Dialog>
|
||
<DialogTrigger>
|
||
<div>
|
||
<AnimatedGradientText>
|
||
<div
|
||
className={cn(
|
||
`absolute inset-0 block size-full animate-gradient bg-gradient-to-r from-[#ffaa40]/50 via-[#9c40ff]/50 to-[#ffaa40]/50 bg-[length:var(--bg-size)_100%] [border-radius:inherit] [mask:linear-gradient(#fff_0_0)_content-box,linear-gradient(#fff_0_0)]`,
|
||
`p-px ![mask-composite:subtract]`,
|
||
)}
|
||
/>
|
||
❤️ <Separator className="mx-2 h-4" orientation="vertical" />
|
||
<span
|
||
className={cn(
|
||
`animate-gradient bg-gradient-to-r from-[#ffaa40] via-[#9c40ff] to-[#ffaa40] bg-[length:var(--bg-size)_100%] bg-clip-text text-transparent`,
|
||
`inline`,
|
||
)}
|
||
>
|
||
Scripts by tteck
|
||
</span>
|
||
</AnimatedGradientText>
|
||
</div>
|
||
</DialogTrigger>
|
||
<DialogContent>
|
||
<DialogHeader>
|
||
<DialogTitle>Thank You!</DialogTitle>
|
||
<DialogDescription>
|
||
A big thank you to tteck and the many contributors who have
|
||
made this project possible. Your hard work is truly
|
||
appreciated by the entire Proxmox community!
|
||
</DialogDescription>
|
||
</DialogHeader>
|
||
<CardFooter className="flex flex-col gap-2">
|
||
<Button className="w-full" variant="outline" asChild>
|
||
<a
|
||
href="https://github.com/tteck"
|
||
target="_blank"
|
||
rel="noopener noreferrer"
|
||
className="flex items-center justify-center"
|
||
>
|
||
<FaGithub className="mr-2 h-4 w-4" /> Tteck's GitHub
|
||
</a>
|
||
</Button>
|
||
<Button className="w-full" asChild>
|
||
<a
|
||
href={`https://github.com/community-scripts/${basePath}`}
|
||
target="_blank"
|
||
rel="noopener noreferrer"
|
||
className="flex items-center justify-center"
|
||
>
|
||
<ExternalLink className="mr-2 h-4 w-4" /> Proxmox Helper
|
||
Scripts
|
||
</a>
|
||
</Button>
|
||
</CardFooter>
|
||
</DialogContent>
|
||
</Dialog>
|
||
|
||
<div className="flex flex-col gap-4">
|
||
<h1 className="max-w-2xl text-center text-3xl font-semibold tracking-tighter md:text-7xl">
|
||
Make managing your Homelab a breeze
|
||
</h1>
|
||
<div className="max-w-2xl gap-2 flex flex-col text-center sm:text-lg text-sm leading-relaxed tracking-tight text-muted-foreground md:text-xl">
|
||
<p>
|
||
We are a community-driven initiative that simplifies the setup
|
||
of Proxmox Virtual Environment (VE).
|
||
</p>
|
||
<p>
|
||
With 200+ scripts to help you manage your{" "}
|
||
<b>Proxmox VE environment</b>. Whether you're a seasoned
|
||
user or a newcomer, we've got you covered.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div className="flex flex-row gap-3">
|
||
<Link href="/scripts">
|
||
<Button
|
||
size="lg"
|
||
variant="expandIcon"
|
||
Icon={CustomArrowRightIcon}
|
||
iconPlacement="right"
|
||
className="hover:"
|
||
>
|
||
View Scripts
|
||
</Button>
|
||
</Link>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
);
|
||
}
|