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 { CallToAction } from "@/components/CallToAction";
|
||||||
import { Faqs } from "@/components/Faqs";
|
import { Faqs } from "@/components/Faqs";
|
||||||
import { Hero } from "@/components/Hero";
|
import { Hero } from "@/components/Hero";
|
||||||
import { PrimaryFeatures } from "@/components/PrimaryFeatures";
|
|
||||||
import { Testimonials } from "@/components/Testimonials";
|
import { Testimonials } from "@/components/Testimonials";
|
||||||
import { FeaturesSectionDemo } from "@/components/features";
|
import { FirstFeaturesSection } from "@/components/first-features";
|
||||||
import { Pricing } from "@/components/pricing";
|
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";
|
import { StatsSection } from "@/components/stats";
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home() {
|
||||||
@ -13,15 +13,15 @@ export default function Home() {
|
|||||||
<div>
|
<div>
|
||||||
<main>
|
<main>
|
||||||
<Hero />
|
<Hero />
|
||||||
<FeaturesSectionDemo />
|
<FirstFeaturesSection />
|
||||||
<PrimaryFeatures />
|
<SecondaryFeaturesSections />
|
||||||
<StatsSection />
|
<StatsSection />
|
||||||
<Testimonials />
|
<Testimonials />
|
||||||
<div className="w-full relative">
|
<div className="w-full relative">
|
||||||
<Pricing />
|
<Pricing />
|
||||||
</div>
|
</div>
|
||||||
<Faqs />
|
<Faqs />
|
||||||
<RippleDemo />
|
<Sponsors />
|
||||||
<CallToAction />
|
<CallToAction />
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
|
@ -5,7 +5,6 @@ import { Button } from "./ui/button";
|
|||||||
|
|
||||||
export function CallToAction() {
|
export function CallToAction() {
|
||||||
const t = useTranslations("HomePage");
|
const t = useTranslations("HomePage");
|
||||||
const linkT = useTranslations("Link");
|
|
||||||
return (
|
return (
|
||||||
<section
|
<section
|
||||||
id="get-started-today"
|
id="get-started-today"
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1,78 +1,77 @@
|
|||||||
"use client";
|
"use client";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { Container } from "./Container";
|
|
||||||
import { Marquee } from "./ui/marquee";
|
import { Marquee } from "./ui/marquee";
|
||||||
|
|
||||||
const testimonials = [
|
// const testimonials = [
|
||||||
[
|
// [
|
||||||
{
|
// {
|
||||||
content:
|
// 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.",
|
// "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: {
|
// author: {
|
||||||
name: "Emily R.",
|
// name: "Emily R.",
|
||||||
role: "Full Stack Developer",
|
// role: "Full Stack Developer",
|
||||||
image: "/avatars/avatar-1.png",
|
// image: "/avatars/avatar-1.png",
|
||||||
},
|
// },
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
content:
|
// 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.",
|
// "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: {
|
// author: {
|
||||||
name: "Mark T.",
|
// name: "Mark T.",
|
||||||
role: "CTO, Tech Innovations Inc.",
|
// role: "CTO, Tech Innovations Inc.",
|
||||||
image: "/avatars/avatar-2.png",
|
// image: "/avatars/avatar-2.png",
|
||||||
},
|
// },
|
||||||
},
|
// },
|
||||||
],
|
// ],
|
||||||
[
|
// [
|
||||||
{
|
// {
|
||||||
content:
|
// 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!",
|
// "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: {
|
// author: {
|
||||||
name: "Sarah L.",
|
// name: "Sarah L.",
|
||||||
role: "IT Director, Creative Solutions Agency",
|
// role: "IT Director, Creative Solutions Agency",
|
||||||
image: "/avatars/avatar-3.png",
|
// image: "/avatars/avatar-3.png",
|
||||||
},
|
// },
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
content:
|
// 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.",
|
// "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: {
|
// author: {
|
||||||
name: "James P.",
|
// name: "James P.",
|
||||||
role: "Lead Developer, Dynamic Web Solutions",
|
// role: "Lead Developer, Dynamic Web Solutions",
|
||||||
image: "/avatars/avatar-4.png",
|
// image: "/avatars/avatar-4.png",
|
||||||
},
|
// },
|
||||||
},
|
// },
|
||||||
],
|
// ],
|
||||||
[
|
// [
|
||||||
{
|
// {
|
||||||
content:
|
// 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!",
|
// "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: {
|
// author: {
|
||||||
name: "Ana D.",
|
// name: "Ana D.",
|
||||||
role: "Full Stack Developer, Independent Contractor",
|
// role: "Full Stack Developer, Independent Contractor",
|
||||||
image: "/avatars/avatar-7.png",
|
// image: "/avatars/avatar-7.png",
|
||||||
},
|
// },
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
content:
|
// 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.",
|
// "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: {
|
// author: {
|
||||||
name: "Carlos M.",
|
// name: "Carlos M.",
|
||||||
role: "Freelance Full Stack Developer",
|
// role: "Freelance Full Stack Developer",
|
||||||
image: "/avatars/avatar-6.png",
|
// image: "/avatars/avatar-6.png",
|
||||||
},
|
// },
|
||||||
},
|
// },
|
||||||
],
|
// ],
|
||||||
];
|
// ];
|
||||||
|
|
||||||
function QuoteIcon(props: React.ComponentPropsWithoutRef<"svg">) {
|
// function QuoteIcon(props: React.ComponentPropsWithoutRef<"svg">) {
|
||||||
return (
|
// return (
|
||||||
<svg aria-hidden="true" width={105} height={78} {...props}>
|
// <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" />
|
// <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>
|
// </svg>
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
const reviews = [
|
const reviews = [
|
||||||
{
|
{
|
||||||
|
@ -4,7 +4,6 @@ import { motion } from "framer-motion";
|
|||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import type React from "react";
|
import type React from "react";
|
||||||
import { useEffect, useRef } from "react";
|
|
||||||
|
|
||||||
export function FeaturesSectionDemo() {
|
export function FeaturesSectionDemo() {
|
||||||
const features = [
|
const features = [
|
||||||
|
@ -13,7 +13,7 @@ import {
|
|||||||
} from "@tabler/icons-react";
|
} from "@tabler/icons-react";
|
||||||
import { Layers, Lock, UnlockIcon } from "lucide-react";
|
import { Layers, Lock, UnlockIcon } from "lucide-react";
|
||||||
|
|
||||||
export function FeaturesSectionDemo() {
|
export function FirstFeaturesSection() {
|
||||||
const features = [
|
const features = [
|
||||||
{
|
{
|
||||||
title: "Flexible Application Deployment",
|
title: "Flexible Application Deployment",
|
@ -327,95 +327,6 @@ export function Pricing() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Container>
|
</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>
|
</section>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ const features = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
export function PrimaryFeatures() {
|
export function SecondaryFeaturesSections() {
|
||||||
const t = useTranslations("HomePage");
|
const t = useTranslations("HomePage");
|
||||||
const [tabOrientation, setTabOrientation] = useState<
|
const [tabOrientation, setTabOrientation] = useState<
|
||||||
"horizontal" | "vertical"
|
"horizontal" | "vertical"
|
@ -11,7 +11,7 @@ import {
|
|||||||
TooltipTrigger,
|
TooltipTrigger,
|
||||||
} from "./ui/tooltip";
|
} from "./ui/tooltip";
|
||||||
|
|
||||||
export const RippleDemo = () => {
|
export const Sponsors = () => {
|
||||||
const t = useTranslations("HomePage");
|
const t = useTranslations("HomePage");
|
||||||
return (
|
return (
|
||||||
<div className="mt-20 flex flex-col justify-center gap-y-10 w-full ">
|
<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 React from "react";
|
||||||
import { useId } from "react";
|
import { useId } from "react";
|
||||||
import NumberTicker from "./ui/number-ticker";
|
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">
|
<div className="relative w-full h-full flex justify-center items-center">
|
||||||
{premiumSponsors.map((item, index) => {
|
{premiumSponsors.map((item, index) => {
|
||||||
const angle = (360 / premiumSponsors.length) * 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 x = radius * Math.cos((angle * Math.PI) / 180);
|
||||||
const y = radius * Math.sin((angle * Math.PI) / 180);
|
const y = radius * Math.sin((angle * Math.PI) / 180);
|
||||||
const initials = item.name
|
const initials = item.name
|
||||||
|
Loading…
Reference in New Issue
Block a user