Merge version_1 into main #2
@@ -59,10 +59,10 @@ export default function LandingPage() {
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-sleek-professional-discord-bot-dashboa-1773256989843-6c0154b1.png", imageAlt: "Kavach Bot Dashboard"
|
||||
},
|
||||
{
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-premium-shield-icon-symbolizing-securi-1773256987658-3dbffe55.png?_wi=1", imageAlt: "Security Shield"
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-premium-shield-icon-symbolizing-securi-1773256987658-3dbffe55.png", imageAlt: "Security Shield"
|
||||
},
|
||||
{
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-visual-representation-of-antinuke-prot-1773256988833-844a9c0f.png?_wi=1", imageAlt: "AntiNuke Protection"
|
||||
imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-visual-representation-of-antinuke-prot-1773256988833-844a9c0f.png", imageAlt: "AntiNuke Protection"
|
||||
}
|
||||
]}
|
||||
autoplayDelay={5000}
|
||||
@@ -102,7 +102,7 @@ export default function LandingPage() {
|
||||
tag="Protection"
|
||||
features={[
|
||||
{
|
||||
title: "AntiNuke Protection", description: "Prevent server nuking with real-time detection of mass bans, channel deletions, role removals, and unauthorized permission changes. Instantly reverts destructive actions and strips attacker permissions.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-visual-representation-of-antinuke-prot-1773256988833-844a9c0f.png?_wi=2", imageAlt: "AntiNuke Protection"
|
||||
title: "AntiNuke Protection", description: "Prevent server nuking with real-time detection of mass bans, channel deletions, role removals, and unauthorized permission changes. Instantly reverts destructive actions and strips attacker permissions.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-visual-representation-of-antinuke-prot-1773256988833-844a9c0f.png", imageAlt: "AntiNuke Protection"
|
||||
},
|
||||
{
|
||||
title: "AI Automod", description: "Advanced AI-powered spam filtering, phishing detection, and malicious content blocking. Automatically moderate your server with intelligent threat detection.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-visual-showing-ai-powered-automated-mo-1773256988978-b13056c4.png", imageAlt: "AI Automod Spam Filtering"
|
||||
@@ -117,10 +117,9 @@ export default function LandingPage() {
|
||||
title: "Captcha Verification", description: "Advanced member verification system with CAPTCHA challenges. Screen new members to prevent raid attacks and malicious bots.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-captcha-verification-and-member-verifi-1773256989614-ed5dc2a6.png", imageAlt: "Captcha Verification"
|
||||
},
|
||||
{
|
||||
title: "JoinGate Raid Protection", description: "Real-time raid detection and automatic blocking. Protect your server from coordinated attacks and mass join raids.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-visualization-of-joingate-raid-protect-1773256989279-2c602c38.png?_wi=1", imageAlt: "JoinGate Raid Protection"
|
||||
title: "JoinGate Raid Protection", description: "Real-time raid detection and automatic blocking. Protect your server from coordinated attacks and mass join raids.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-visualization-of-joingate-raid-protect-1773256989279-2c602c38.png", imageAlt: "JoinGate Raid Protection"
|
||||
}
|
||||
]}
|
||||
gridVariant="three-columns-all-equal-width"
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
@@ -134,10 +133,10 @@ export default function LandingPage() {
|
||||
tag="Official"
|
||||
products={[
|
||||
{
|
||||
id: "kavach-standard", name: "Kavach", price: "Free", variant: "Standard Security Suite", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-premium-shield-icon-symbolizing-securi-1773256987658-3dbffe55.png?_wi=2", imageAlt: "Kavach Bot"
|
||||
id: "kavach-standard", name: "Kavach", price: "Free", variant: "Standard Security Suite", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-premium-shield-icon-symbolizing-securi-1773256987658-3dbffe55.png", imageAlt: "Kavach Bot"
|
||||
},
|
||||
{
|
||||
id: "kavach-premium", name: "Kavach Premium", price: "Premium Tier", variant: "Enhanced Protection", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-visualization-of-joingate-raid-protect-1773256989279-2c602c38.png?_wi=2", imageAlt: "Kavach Premium Bot"
|
||||
id: "kavach-premium", name: "Kavach Premium", price: "Premium Tier", variant: "Enhanced Protection", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-visualization-of-joingate-raid-protect-1773256989279-2c602c38.png", imageAlt: "Kavach Premium Bot"
|
||||
},
|
||||
{
|
||||
id: "suno-music", name: "Suno Music Bot", price: "Free", variant: "Music & Entertainment", imageSrc: "http://img.b2bpic.net/free-vector/gradient-pack-twitch-panels_23-2149207785.jpg", imageAlt: "Suno Music Bot"
|
||||
@@ -166,7 +165,6 @@ export default function LandingPage() {
|
||||
id: "uptime", value: "99.9%", title: "Guaranteed Uptime", items: ["Reliable infrastructure", "Redundant systems", "Priority support"]
|
||||
}
|
||||
]}
|
||||
gridVariant="three-columns-all-equal-width"
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
@@ -189,7 +187,6 @@ export default function LandingPage() {
|
||||
title: "Multi-Server Dashboard", description: "Manage AntiNuke, Automod, and moderation settings across all your Discord servers from a single centralized dashboard.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/a-multi-server-management-dashboard-show-1773256988775-c96d210c.png", imageAlt: "Multi-Server Dashboard"
|
||||
}
|
||||
]}
|
||||
gridVariant="three-columns-all-equal-width"
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
@@ -215,7 +212,6 @@ export default function LandingPage() {
|
||||
id: "4", name: "Casey Williams", role: "Security Officer", testimonial: "Professional-grade security at no cost. Kavach Bot provides enterprise-level protection that rivals paid alternatives. This is a game-changer.", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AoNZKUMOk13TA4FpAcwluoe7g9/professional-headshot-of-a-discord-secur-1773256989083-ee3ec59f.png", imageAlt: "Casey Williams"
|
||||
}
|
||||
]}
|
||||
gridVariant="four-items-2x2-equal-grid"
|
||||
animationType="slide-up"
|
||||
textboxLayout="default"
|
||||
useInvertedBackground={false}
|
||||
@@ -227,6 +223,7 @@ export default function LandingPage() {
|
||||
title="Trusted by Leading Platforms"
|
||||
description="Kavach Bot is recognized and supported by the Discord community ecosystem"
|
||||
tag="Partners"
|
||||
names={["Discord", "GitHub", "Twitter", "Reddit", "YouTube", "Twitch", "Stripe", "Vercel"]}
|
||||
logos={[
|
||||
"http://img.b2bpic.net/free-vector/gradient-social-media-logo-collection_23-2148311384.jpg", "http://img.b2bpic.net/free-vector/creative-code-logo-set_23-2148814922.jpg", "http://img.b2bpic.net/free-vector/hand-drawn-flat-social-media-logo-set_23-2150787558.jpg", "http://img.b2bpic.net/free-photo/medium-shot-friends-celebrating-gender-reveal_23-2150154728.jpg", "http://img.b2bpic.net/free-vector/subscribers-label-set_23-2151000411.jpg", "http://img.b2bpic.net/free-vector/gradient-pack-twitch-panels_23-2149207785.jpg", "http://img.b2bpic.net/free-vector/web-template-business-with-smartphone_23-2148335282.jpg", "http://img.b2bpic.net/free-vector/cloud-computing-concept_24908-55292.jpg"
|
||||
]}
|
||||
|
||||
@@ -1,51 +1,37 @@
|
||||
"use client";
|
||||
|
||||
import { memo } from "react";
|
||||
import useSvgTextLogo from "./useSvgTextLogo";
|
||||
import { cls } from "@/lib/utils";
|
||||
import React from 'react';
|
||||
|
||||
interface SvgTextLogoProps {
|
||||
logoText: string;
|
||||
adjustHeightFactor?: number;
|
||||
verticalAlign?: "top" | "center";
|
||||
text: string;
|
||||
className?: string;
|
||||
textClassName?: string;
|
||||
dominantBaseline?: 'auto' | 'middle' | 'hanging' | 'mathematical';
|
||||
}
|
||||
|
||||
const SvgTextLogo = memo<SvgTextLogoProps>(function SvgTextLogo({
|
||||
logoText,
|
||||
adjustHeightFactor,
|
||||
verticalAlign = "top",
|
||||
className = "",
|
||||
}) {
|
||||
const { svgRef, textRef, viewBox, aspectRatio } = useSvgTextLogo(logoText, false, adjustHeightFactor);
|
||||
|
||||
const SvgTextLogo: React.FC<SvgTextLogoProps> = ({
|
||||
text,
|
||||
className = '',
|
||||
textClassName = '',
|
||||
dominantBaseline = 'middle',
|
||||
}) => {
|
||||
return (
|
||||
<svg
|
||||
ref={svgRef}
|
||||
viewBox={viewBox}
|
||||
className={cls("w-full", className)}
|
||||
style={{ aspectRatio: aspectRatio }}
|
||||
preserveAspectRatio="none"
|
||||
viewBox="0 0 300 100"
|
||||
className={`w-full h-auto ${className}`}
|
||||
role="img"
|
||||
aria-label={`${logoText} logo`}
|
||||
aria-label={text}
|
||||
>
|
||||
<text
|
||||
ref={textRef}
|
||||
x="0"
|
||||
y={verticalAlign === "center" ? "50%" : "0"}
|
||||
className="font-bold fill-current"
|
||||
style={{
|
||||
fontSize: "20px",
|
||||
letterSpacing: "-0.02em",
|
||||
dominantBaseline: verticalAlign === "center" ? "middle" : "text-before-edge"
|
||||
}}
|
||||
x="50%"
|
||||
y="50%"
|
||||
dominantBaseline={dominantBaseline}
|
||||
textAnchor="middle"
|
||||
className={`text-4xl font-bold ${textClassName}`}
|
||||
fill="currentColor"
|
||||
>
|
||||
{logoText}
|
||||
{text}
|
||||
</text>
|
||||
</svg>
|
||||
);
|
||||
});
|
||||
|
||||
SvgTextLogo.displayName = "SvgTextLogo";
|
||||
};
|
||||
|
||||
export default SvgTextLogo;
|
||||
|
||||
Reference in New Issue
Block a user