refactor: delete unused sections

This commit is contained in:
Mauricio Siu 2024-11-01 23:23:33 -06:00
parent f4f524a16e
commit d5b9f89125
11 changed files with 113 additions and 409 deletions

View File

@ -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>

View File

@ -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

View File

@ -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 = [
{ {

View File

@ -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 = [

View File

@ -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",

View File

@ -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>
); );
} }

View File

@ -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"

View File

@ -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 ">

View File

@ -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";

View File

@ -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