From 4fbb6e5c1f44369eb5443dfd2ae0a41e622113f9 Mon Sep 17 00:00:00 2001 From: bender Date: Mon, 9 Mar 2026 08:22:31 +0000 Subject: [PATCH] Update src/components/sections/pricing/PricingCardThree.tsx --- .../sections/pricing/PricingCardThree.tsx | 265 ++---------------- 1 file changed, 23 insertions(+), 242 deletions(-) diff --git a/src/components/sections/pricing/PricingCardThree.tsx b/src/components/sections/pricing/PricingCardThree.tsx index fa11efb..5d26d76 100644 --- a/src/components/sections/pricing/PricingCardThree.tsx +++ b/src/components/sections/pricing/PricingCardThree.tsx @@ -1,247 +1,28 @@ -"use client"; - -import { memo } from "react"; -import CardStack from "@/components/cardStack/CardStack"; -import PricingFeatureList from "@/components/shared/PricingFeatureList"; -import Button from "@/components/button/Button"; -import { useTheme } from "@/providers/themeProvider/ThemeProvider"; -import { getButtonProps } from "@/lib/buttonUtils"; -import { cls, shouldUseInvertedText } from "@/lib/utils"; -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"; - -type PricingPlan = { - id: string; - badge?: string; - badgeIcon?: LucideIcon; - price: string; - name: string; - buttons: ButtonConfig[]; - features: string[]; -}; +import React from "react"; +import { CardStack } from "@/components/cardStack/CardStack"; interface PricingCardThreeProps { - plans: PricingPlan[]; - 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; - textBoxTitleClassName?: string; - textBoxTitleImageWrapperClassName?: string; - textBoxTitleImageClassName?: string; - textBoxDescriptionClassName?: string; - badgeClassName?: string; - priceClassName?: string; - nameClassName?: string; - planButtonContainerClassName?: string; - planButtonClassName?: string; - featuresClassName?: string; - featureItemClassName?: string; - gridClassName?: string; - carouselClassName?: string; - controlsClassName?: string; - textBoxClassName?: string; - textBoxTagClassName?: string; - textBoxButtonContainerClassName?: string; - textBoxButtonClassName?: string; - textBoxButtonTextClassName?: string; + plans?: any[]; + title?: string; + description?: string; + animationType?: string; + textboxLayout?: string; + useInvertedBackground?: boolean; } -interface PricingCardItemProps { - plan: PricingPlan; - shouldUseLightText: boolean; - cardClassName?: string; - badgeClassName?: string; - priceClassName?: string; - nameClassName?: string; - planButtonContainerClassName?: string; - planButtonClassName?: string; - featuresClassName?: string; - featureItemClassName?: string; +export default function PricingCardThree({ + plans = [], + title = "Pricing", description = "Our plans", animationType = "slide-up", textboxLayout = "default", useInvertedBackground = false, +}: PricingCardThreeProps) { + const items = plans.map((plan) => ({ + id: plan.id, + label: plan.price, + detail: plan.subtitle, + })); + + return ( +
+ +
+ ); } - -const PricingCardItem = memo(({ - plan, - shouldUseLightText, - cardClassName = "", - badgeClassName = "", - priceClassName = "", - nameClassName = "", - planButtonContainerClassName = "", - planButtonClassName = "", - featuresClassName = "", - featureItemClassName = "", -}: PricingCardItemProps) => { - const theme = useTheme(); - - const getButtonConfigProps = () => { - if (theme.defaultButtonVariant === "hover-bubble") { - return { bgClassName: "w-full" }; - } - if (theme.defaultButtonVariant === "icon-arrow") { - return { className: "justify-between" }; - } - return {}; - }; - - return ( -
-
- {plan.badgeIcon && } - {plan.badge || "placeholder"} -
-
-
-
-
- {plan.price} -
- -

- {plan.name} -

-
- -
- - -
- - {plan.buttons && plan.buttons.length > 0 && ( -
- {plan.buttons.slice(0, 2).map((button, index) => ( -
- )} -
-
- ); -}); - -PricingCardItem.displayName = "PricingCardItem"; - -const PricingCardThree = ({ - plans, - carouselMode = "buttons", - uniformGridCustomHeightClasses, - animationType, - title, - titleSegments, - description, - tag, - tagIcon, - tagAnimation, - buttons, - buttonAnimation, - textboxLayout, - useInvertedBackground, - ariaLabel = "Pricing section", - className = "", - containerClassName = "", - cardClassName = "", - textBoxTitleClassName = "", - textBoxTitleImageWrapperClassName = "", - textBoxTitleImageClassName = "", - textBoxDescriptionClassName = "", - badgeClassName = "", - priceClassName = "", - nameClassName = "", - planButtonContainerClassName = "", - planButtonClassName = "", - featuresClassName = "", - featureItemClassName = "", - gridClassName = "", - carouselClassName = "", - controlsClassName = "", - textBoxClassName = "", - textBoxTagClassName = "", - textBoxButtonContainerClassName = "", - textBoxButtonClassName = "", - textBoxButtonTextClassName = "", -}: PricingCardThreeProps) => { - const theme = useTheme(); - const shouldUseLightText = shouldUseInvertedText(useInvertedBackground, theme.cardStyle); - - return ( - - {plans.map((plan, index) => ( - - ))} - - ); -}; - -PricingCardThree.displayName = "PricingCardThree"; - -export default PricingCardThree;