mirror of
https://github.com/Dokploy/website
synced 2025-06-26 18:16:01 +00:00
refactor: delete unused sections
This commit is contained in:
parent
f4f524a16e
commit
d5b9f89125
@ -1,11 +1,11 @@
|
||||
import { CallToAction } from "@/components/CallToAction";
|
||||
import { Faqs } from "@/components/Faqs";
|
||||
import { Hero } from "@/components/Hero";
|
||||
import { PrimaryFeatures } from "@/components/PrimaryFeatures";
|
||||
import { Testimonials } from "@/components/Testimonials";
|
||||
import { FeaturesSectionDemo } from "@/components/features";
|
||||
import { FirstFeaturesSection } from "@/components/first-features";
|
||||
import { Pricing } from "@/components/pricing";
|
||||
import { RippleDemo } from "@/components/sponsors";
|
||||
import { SecondaryFeaturesSections } from "@/components/secondary-features";
|
||||
import { Sponsors } from "@/components/sponsors";
|
||||
import { StatsSection } from "@/components/stats";
|
||||
|
||||
export default function Home() {
|
||||
@ -13,15 +13,15 @@ export default function Home() {
|
||||
<div>
|
||||
<main>
|
||||
<Hero />
|
||||
<FeaturesSectionDemo />
|
||||
<PrimaryFeatures />
|
||||
<FirstFeaturesSection />
|
||||
<SecondaryFeaturesSections />
|
||||
<StatsSection />
|
||||
<Testimonials />
|
||||
<div className="w-full relative">
|
||||
<Pricing />
|
||||
</div>
|
||||
<Faqs />
|
||||
<RippleDemo />
|
||||
<Sponsors />
|
||||
<CallToAction />
|
||||
</main>
|
||||
</div>
|
||||
|
@ -5,7 +5,6 @@ import { Button } from "./ui/button";
|
||||
|
||||
export function CallToAction() {
|
||||
const t = useTranslations("HomePage");
|
||||
const linkT = useTranslations("Link");
|
||||
return (
|
||||
<section
|
||||
id="get-started-today"
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,78 +1,77 @@
|
||||
"use client";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { Container } from "./Container";
|
||||
import { Marquee } from "./ui/marquee";
|
||||
|
||||
const testimonials = [
|
||||
[
|
||||
{
|
||||
content:
|
||||
"This application has revolutionized the way we handle deployments. The integration of Docker and Traefik through such a user-friendly interface has saved us countless hours.",
|
||||
author: {
|
||||
name: "Emily R.",
|
||||
role: "Full Stack Developer",
|
||||
image: "/avatars/avatar-1.png",
|
||||
},
|
||||
},
|
||||
{
|
||||
content:
|
||||
"As a fast-paced startup, efficiency and reliability are paramount. This software delivered on both, allowing us to focus more on development and less on operations.",
|
||||
author: {
|
||||
name: "Mark T.",
|
||||
role: "CTO, Tech Innovations Inc.",
|
||||
image: "/avatars/avatar-2.png",
|
||||
},
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
content:
|
||||
"The comprehensive monitoring and robust backup solutions have given us the peace of mind we need to operate at our best 24/7. Highly recommended!",
|
||||
author: {
|
||||
name: "Sarah L.",
|
||||
role: "IT Director, Creative Solutions Agency",
|
||||
image: "/avatars/avatar-3.png",
|
||||
},
|
||||
},
|
||||
{
|
||||
content:
|
||||
"Upgrading to this platform was a game-changer for our agency. The user permission controls and real-time updates have greatly enhanced our team's efficiency.",
|
||||
author: {
|
||||
name: "James P.",
|
||||
role: "Lead Developer, Dynamic Web Solutions",
|
||||
image: "/avatars/avatar-4.png",
|
||||
},
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
content:
|
||||
"Fantastic tool! The direct container access and dynamic Traefik configuration features have made it so easy to manage our services. It's like having a DevOps team in a box!",
|
||||
author: {
|
||||
name: "Ana D.",
|
||||
role: "Full Stack Developer, Independent Contractor",
|
||||
image: "/avatars/avatar-7.png",
|
||||
},
|
||||
},
|
||||
{
|
||||
content:
|
||||
"his tool has been indispensable for managing my client projects. It has streamlined my workflow and dramatically increased my productivity, allowing me to take on more clients without sacrificing quality.",
|
||||
author: {
|
||||
name: "Carlos M.",
|
||||
role: "Freelance Full Stack Developer",
|
||||
image: "/avatars/avatar-6.png",
|
||||
},
|
||||
},
|
||||
],
|
||||
];
|
||||
// const testimonials = [
|
||||
// [
|
||||
// {
|
||||
// content:
|
||||
// "This application has revolutionized the way we handle deployments. The integration of Docker and Traefik through such a user-friendly interface has saved us countless hours.",
|
||||
// author: {
|
||||
// name: "Emily R.",
|
||||
// role: "Full Stack Developer",
|
||||
// image: "/avatars/avatar-1.png",
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
// content:
|
||||
// "As a fast-paced startup, efficiency and reliability are paramount. This software delivered on both, allowing us to focus more on development and less on operations.",
|
||||
// author: {
|
||||
// name: "Mark T.",
|
||||
// role: "CTO, Tech Innovations Inc.",
|
||||
// image: "/avatars/avatar-2.png",
|
||||
// },
|
||||
// },
|
||||
// ],
|
||||
// [
|
||||
// {
|
||||
// content:
|
||||
// "The comprehensive monitoring and robust backup solutions have given us the peace of mind we need to operate at our best 24/7. Highly recommended!",
|
||||
// author: {
|
||||
// name: "Sarah L.",
|
||||
// role: "IT Director, Creative Solutions Agency",
|
||||
// image: "/avatars/avatar-3.png",
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
// content:
|
||||
// "Upgrading to this platform was a game-changer for our agency. The user permission controls and real-time updates have greatly enhanced our team's efficiency.",
|
||||
// author: {
|
||||
// name: "James P.",
|
||||
// role: "Lead Developer, Dynamic Web Solutions",
|
||||
// image: "/avatars/avatar-4.png",
|
||||
// },
|
||||
// },
|
||||
// ],
|
||||
// [
|
||||
// {
|
||||
// content:
|
||||
// "Fantastic tool! The direct container access and dynamic Traefik configuration features have made it so easy to manage our services. It's like having a DevOps team in a box!",
|
||||
// author: {
|
||||
// name: "Ana D.",
|
||||
// role: "Full Stack Developer, Independent Contractor",
|
||||
// image: "/avatars/avatar-7.png",
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
// content:
|
||||
// "his tool has been indispensable for managing my client projects. It has streamlined my workflow and dramatically increased my productivity, allowing me to take on more clients without sacrificing quality.",
|
||||
// author: {
|
||||
// name: "Carlos M.",
|
||||
// role: "Freelance Full Stack Developer",
|
||||
// image: "/avatars/avatar-6.png",
|
||||
// },
|
||||
// },
|
||||
// ],
|
||||
// ];
|
||||
|
||||
function QuoteIcon(props: React.ComponentPropsWithoutRef<"svg">) {
|
||||
return (
|
||||
<svg aria-hidden="true" width={105} height={78} {...props}>
|
||||
<path d="M25.086 77.292c-4.821 0-9.115-1.205-12.882-3.616-3.767-2.561-6.78-6.102-9.04-10.622C1.054 58.534 0 53.411 0 47.686c0-5.273.904-10.396 2.712-15.368 1.959-4.972 4.746-9.567 8.362-13.786a59.042 59.042 0 0 1 12.43-11.3C28.325 3.917 33.599 1.507 39.324 0l11.074 13.786c-6.479 2.561-11.677 5.951-15.594 10.17-3.767 4.219-5.65 7.835-5.65 10.848 0 1.356.377 2.863 1.13 4.52.904 1.507 2.637 3.089 5.198 4.746 3.767 2.41 6.328 4.972 7.684 7.684 1.507 2.561 2.26 5.5 2.26 8.814 0 5.123-1.959 9.19-5.876 12.204-3.767 3.013-8.588 4.52-14.464 4.52Zm54.24 0c-4.821 0-9.115-1.205-12.882-3.616-3.767-2.561-6.78-6.102-9.04-10.622-2.11-4.52-3.164-9.643-3.164-15.368 0-5.273.904-10.396 2.712-15.368 1.959-4.972 4.746-9.567 8.362-13.786a59.042 59.042 0 0 1 12.43-11.3C82.565 3.917 87.839 1.507 93.564 0l11.074 13.786c-6.479 2.561-11.677 5.951-15.594 10.17-3.767 4.219-5.65 7.835-5.65 10.848 0 1.356.377 2.863 1.13 4.52.904 1.507 2.637 3.089 5.198 4.746 3.767 2.41 6.328 4.972 7.684 7.684 1.507 2.561 2.26 5.5 2.26 8.814 0 5.123-1.959 9.19-5.876 12.204-3.767 3.013-8.588 4.52-14.464 4.52Z" />
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
// function QuoteIcon(props: React.ComponentPropsWithoutRef<"svg">) {
|
||||
// return (
|
||||
// <svg aria-hidden="true" width={105} height={78} {...props}>
|
||||
// <path d="M25.086 77.292c-4.821 0-9.115-1.205-12.882-3.616-3.767-2.561-6.78-6.102-9.04-10.622C1.054 58.534 0 53.411 0 47.686c0-5.273.904-10.396 2.712-15.368 1.959-4.972 4.746-9.567 8.362-13.786a59.042 59.042 0 0 1 12.43-11.3C28.325 3.917 33.599 1.507 39.324 0l11.074 13.786c-6.479 2.561-11.677 5.951-15.594 10.17-3.767 4.219-5.65 7.835-5.65 10.848 0 1.356.377 2.863 1.13 4.52.904 1.507 2.637 3.089 5.198 4.746 3.767 2.41 6.328 4.972 7.684 7.684 1.507 2.561 2.26 5.5 2.26 8.814 0 5.123-1.959 9.19-5.876 12.204-3.767 3.013-8.588 4.52-14.464 4.52Zm54.24 0c-4.821 0-9.115-1.205-12.882-3.616-3.767-2.561-6.78-6.102-9.04-10.622-2.11-4.52-3.164-9.643-3.164-15.368 0-5.273.904-10.396 2.712-15.368 1.959-4.972 4.746-9.567 8.362-13.786a59.042 59.042 0 0 1 12.43-11.3C82.565 3.917 87.839 1.507 93.564 0l11.074 13.786c-6.479 2.561-11.677 5.951-15.594 10.17-3.767 4.219-5.65 7.835-5.65 10.848 0 1.356.377 2.863 1.13 4.52.904 1.507 2.637 3.089 5.198 4.746 3.767 2.41 6.328 4.972 7.684 7.684 1.507 2.561 2.26 5.5 2.26 8.814 0 5.123-1.959 9.19-5.876 12.204-3.767 3.013-8.588 4.52-14.464 4.52Z" />
|
||||
// </svg>
|
||||
// );
|
||||
// }
|
||||
|
||||
const reviews = [
|
||||
{
|
||||
|
@ -4,7 +4,6 @@ import { motion } from "framer-motion";
|
||||
import Image from "next/image";
|
||||
import Link from "next/link";
|
||||
import type React from "react";
|
||||
import { useEffect, useRef } from "react";
|
||||
|
||||
export function FeaturesSectionDemo() {
|
||||
const features = [
|
||||
|
@ -13,7 +13,7 @@ import {
|
||||
} from "@tabler/icons-react";
|
||||
import { Layers, Lock, UnlockIcon } from "lucide-react";
|
||||
|
||||
export function FeaturesSectionDemo() {
|
||||
export function FirstFeaturesSection() {
|
||||
const features = [
|
||||
{
|
||||
title: "Flexible Application Deployment",
|
@ -327,95 +327,6 @@ export function Pricing() {
|
||||
</div>
|
||||
</div>
|
||||
</Container>
|
||||
|
||||
{/* <Faqs /> */}
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
const faqs = [
|
||||
[
|
||||
{
|
||||
question: "faq.q1",
|
||||
answer: "faq.a1",
|
||||
},
|
||||
{
|
||||
question: "faq.q2",
|
||||
answer: "faq.a2",
|
||||
},
|
||||
{
|
||||
question: "faq.q3",
|
||||
answer: "faq.a3",
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
question: "faq.q4",
|
||||
answer: "faq.a4",
|
||||
},
|
||||
{
|
||||
question: "faq.q5",
|
||||
answer: "faq.a5",
|
||||
},
|
||||
{
|
||||
question: "faq.q6",
|
||||
answer: "faq.a6",
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
question: "faq.q7",
|
||||
answer: "faq.a7",
|
||||
},
|
||||
{
|
||||
question: "faq.q8",
|
||||
answer: "faq.a8",
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
export function Faqs() {
|
||||
const t = useTranslations("Pricing");
|
||||
return (
|
||||
<section
|
||||
id="faqs"
|
||||
aria-labelledby="faq-title"
|
||||
className="relative overflow-hidden bg-black py-20 sm:py-32"
|
||||
>
|
||||
<Container className="relative">
|
||||
<div className="mx-auto max-w-2xl lg:mx-0">
|
||||
<h2
|
||||
id="faq-title"
|
||||
className="font-display text-3xl tracking-tight text-primary sm:text-4xl"
|
||||
>
|
||||
{t("faq.title")}
|
||||
</h2>
|
||||
<p className="mt-4 text-lg tracking-tight text-muted-foreground">
|
||||
{t("faq.description")}:{" "}
|
||||
<Link href={"mailto:support@dokploy.com"} className="text-primary">
|
||||
support@dokploy.com
|
||||
</Link>
|
||||
</p>
|
||||
</div>
|
||||
<ul className="mx-auto mt-16 grid max-w-2xl grid-cols-1 gap-8 lg:max-w-none lg:grid-cols-3">
|
||||
{faqs.map((column, columnIndex) => (
|
||||
<li key={columnIndex}>
|
||||
<ul className="flex flex-col gap-y-8">
|
||||
{column.map((faq, faqIndex) => (
|
||||
<li key={faqIndex}>
|
||||
<h3 className="font-display text-lg leading-7 text-primary">
|
||||
{t(faq.question)}
|
||||
</h3>
|
||||
<p className="mt-4 text-sm text-muted-foreground">
|
||||
{t(faq.answer)}
|
||||
</p>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</Container>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ const features = [
|
||||
},
|
||||
];
|
||||
|
||||
export function PrimaryFeatures() {
|
||||
export function SecondaryFeaturesSections() {
|
||||
const t = useTranslations("HomePage");
|
||||
const [tabOrientation, setTabOrientation] = useState<
|
||||
"horizontal" | "vertical"
|
@ -11,7 +11,7 @@ import {
|
||||
TooltipTrigger,
|
||||
} from "./ui/tooltip";
|
||||
|
||||
export const RippleDemo = () => {
|
||||
export const Sponsors = () => {
|
||||
const t = useTranslations("HomePage");
|
||||
return (
|
||||
<div className="mt-20 flex flex-col justify-center gap-y-10 w-full ">
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { GithubIcon, HandCoins, Users } from "lucide-react";
|
||||
import { HandCoins, Users } from "lucide-react";
|
||||
import React from "react";
|
||||
import { useId } from "react";
|
||||
import NumberTicker from "./ui/number-ticker";
|
||||
|
@ -199,7 +199,7 @@ const Ripple = React.memo(function Ripple({
|
||||
<div className="relative w-full h-full flex justify-center items-center">
|
||||
{premiumSponsors.map((item, index) => {
|
||||
const angle = (360 / premiumSponsors.length) * index;
|
||||
const radius = mainCircleSize / 2 + 70; // Radio mayor para el segundo aro
|
||||
const radius = mainCircleSize / 2 + 70;
|
||||
const x = radius * Math.cos((angle * Math.PI) / 180);
|
||||
const y = radius * Math.sin((angle * Math.PI) / 180);
|
||||
const initials = item.name
|
||||
|
Loading…
Reference in New Issue
Block a user