- {(title || description) && (
-
- )}
+ const getAnimationClass = () => {
+ switch (faqsAnimation) {
+ case "fade-in":
+ return "animate-fade-in";
+ case "bounce":
+ return "animate-bounce";
+ case "slide-up":
+ default:
+ return "animate-slide-up";
+ }
+ };
-
- {faqs.map((faq, index) => (
-
-
- {!showCard && index < faqs.length - 1 && (
-
- )}
-
- ))}
-
+ const getTextboxLayoutClass = () => {
+ switch (textboxLayout) {
+ case "compact":
+ return "max-w-2xl";
+ case "wide":
+ return "max-w-6xl";
+ case "default":
+ default:
+ return "max-w-4xl";
+ }
+ };
+
+ const bgClass = useInvertedBackground
+ ? "bg-gray-900 text-white"
+ : "bg-white text-gray-900";
+
+ return (
+
+
+
+
+ {/* Header Section */}
+
+ {tag && (
+
+
+ {tag}
+
-
- );
-};
+ )}
+
{title}
+
+ {description}
+
+
-FaqBase.displayName = "FaqBase";
+ {/* FAQ Items */}
+
+ {faqs.map((faq, index) => (
+
+
-export default FaqBase;
+ {expandedId === faq.id && (
+
+ )}
+
+ ))}
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/sections/feature/featureBorderGlow/FeatureBorderGlow.tsx b/src/components/sections/feature/featureBorderGlow/FeatureBorderGlow.tsx
index 881a2e5..ceb162d 100644
--- a/src/components/sections/feature/featureBorderGlow/FeatureBorderGlow.tsx
+++ b/src/components/sections/feature/featureBorderGlow/FeatureBorderGlow.tsx
@@ -1,155 +1,145 @@
-"use client";
+'use client';
-import CardStack from "@/components/cardStack/CardStack";
-import FeatureBorderGlowItem from "./FeatureBorderGlowItem";
-import { shouldUseInvertedText } from "@/lib/utils";
-import { useTheme } from "@/providers/themeProvider/ThemeProvider";
-import type { LucideIcon } from "lucide-react";
-import type {
- ButtonConfig,
- CardAnimationType,
- TitleSegment,
- ButtonAnimationType,
-} from "@/components/cardStack/types";
-import type {
- TextboxLayout,
- InvertedBackground,
-} from "@/providers/themeProvider/config/constants";
+import React from 'react';
+import { LucideIcon } from 'lucide-react';
-interface FeatureCard {
+interface Feature {
icon: LucideIcon;
title: string;
description: string;
}
interface FeatureBorderGlowProps {
- features: FeatureCard[];
- carouselMode?: "auto" | "buttons";
- uniformGridCustomHeightClasses?: string;
- animationType: CardAnimationType;
title: string;
- titleSegments?: TitleSegment[];
description: string;
- tag?: string;
- tagIcon?: LucideIcon;
- tagAnimation?: ButtonAnimationType;
- buttons?: ButtonConfig[];
- buttonAnimation?: ButtonAnimationType;
- textboxLayout: TextboxLayout;
- useInvertedBackground: InvertedBackground;
- ariaLabel?: string;
- className?: string;
- containerClassName?: string;
- cardClassName?: string;
- iconContainerClassName?: string;
- iconClassName?: string;
- textBoxTitleClassName?: string;
- textBoxTitleImageWrapperClassName?: string;
- textBoxTitleImageClassName?: string;
- textBoxDescriptionClassName?: string;
- cardTitleClassName?: string;
- cardDescriptionClassName?: string;
- gridClassName?: string;
- carouselClassName?: string;
- controlsClassName?: string;
- textBoxClassName?: string;
- textBoxTagClassName?: string;
- textBoxButtonContainerClassName?: string;
- textBoxButtonClassName?: string;
- textBoxButtonTextClassName?: string;
+ tag: string;
+ features: Feature[];
+ textboxLayout?: string;
}
-const FeatureBorderGlow = ({
- features,
- carouselMode = "buttons",
- uniformGridCustomHeightClasses = "min-h-75 2xl:min-h-85",
- animationType,
+export default function FeatureBorderGlow({
title,
- titleSegments,
description,
tag,
- tagIcon,
- tagAnimation,
- buttons,
- buttonAnimation,
- textboxLayout,
- useInvertedBackground,
- ariaLabel = "Feature section",
- className = "",
- containerClassName = "",
- cardClassName = "",
- iconContainerClassName = "",
- iconClassName = "",
- textBoxTitleClassName = "",
- textBoxTitleImageWrapperClassName = "",
- textBoxTitleImageClassName = "",
- textBoxDescriptionClassName = "",
- cardTitleClassName = "",
- cardDescriptionClassName = "",
- gridClassName = "",
- carouselClassName = "",
- controlsClassName = "",
- textBoxClassName = "",
- textBoxTagClassName = "",
- textBoxButtonContainerClassName = "",
- textBoxButtonClassName = "",
- textBoxButtonTextClassName = "",
-}: FeatureBorderGlowProps) => {
- const theme = useTheme();
- const shouldUseLightText = shouldUseInvertedText(
- useInvertedBackground,
- theme.cardStyle
- );
-
+ features,
+ textboxLayout = 'default',
+}: FeatureBorderGlowProps) {
return (
-
- {features.map((feature, index) => (
-
- ))}
-
+
+
+ {/* Header Section */}
+
+
+
+ {tag}
+
+
+
+ {title}
+
+
+ {description}
+
+
+
+ {/* Features Grid */}
+
+ {features.map((feature, index) => {
+ const Icon = feature.icon;
+ return (
+
+ {/* Border Glow Effect */}
+
+
+ {/* Front Content */}
+
+
+
+
+
+ {feature.title}
+
+
+ {feature.description}
+
+
+
+ {/* Back Content (Hover) */}
+
+
+ );
+ })}
+
+
+
);
-};
-
-FeatureBorderGlow.displayName = "FeatureBorderGlow";
-
-export default FeatureBorderGlow;
+}
\ No newline at end of file
diff --git a/src/components/sections/footer/FooterLogoEmphasis.tsx b/src/components/sections/footer/FooterLogoEmphasis.tsx
index c675fcc..b8afb84 100644
--- a/src/components/sections/footer/FooterLogoEmphasis.tsx
+++ b/src/components/sections/footer/FooterLogoEmphasis.tsx
@@ -1,120 +1,76 @@
"use client";
-import ButtonTextUnderline from "@/components/button/ButtonTextUnderline";
-import FillWidthText from "@/components/shared/FillWidthText/FillWidthText";
-import { ChevronRight } from "lucide-react";
-import { cls } from "@/lib/utils";
+import Link from "next/link";
+
+interface FooterItem {
+ label: string;
+ href: string;
+}
interface FooterColumn {
- items: Array<{
- label: string;
- href?: string;
- onClick?: () => void;
- }>;
+ items: FooterItem[];
}
interface FooterLogoEmphasisProps {
- // logoSrc?: string;
- // logoAlt?: string;
- columns: FooterColumn[];
logoText: string;
- ariaLabel?: string;
- className?: string;
- containerClassName?: string;
- logoClassName?: string;
- columnsClassName?: string;
- columnClassName?: string;
- itemClassName?: string;
- iconClassName?: string;
- buttonClassName?: string;
+ columns: FooterColumn[];
}
-const FooterLogoEmphasis = ({
- // logoSrc,
- // logoAlt = "Logo",
- columns,
+export default function FooterLogoEmphasis({
logoText,
- ariaLabel = "Site footer",
- className = "",
- containerClassName = "",
- logoClassName = "",
- columnsClassName = "",
- columnClassName = "",
- itemClassName = "",
- iconClassName = "",
- buttonClassName = "",
-}: FooterLogoEmphasisProps) => {
- const columnCount = columns.length;
- const useFlex = columnCount <= 3;
- const gridColsClass = columnCount === 4
- ? "grid-cols-2 md:grid-cols-4"
- : "grid-cols-2 md:grid-cols-5";
+ columns,
+}: FooterLogoEmphasisProps) {
+ return (
+