From d82473b35c82be9f569ef2a25f8166f38507cb6c Mon Sep 17 00:00:00 2001 From: Emil Gulamov <125820963+mearashadowfax@users.noreply.github.com> Date: Fri, 29 Mar 2024 00:46:57 +0400 Subject: [PATCH] Add pricing.json and integrate into PricingSection component The pricing details, previously hardcoded in the PricingSection component, have been extracted to a separate JSON file in both English and French. They are now dynamically loaded into the PricingSection, enhancing maintainability and content management capabilities. --- .../sections/pricing/PricingSection.astro | 93 ++++++++----------- src/data_files/fr/pricing.json | 38 ++++++++ src/data_files/pricing.json | 38 ++++++++ src/pages/fr/index.astro | 3 +- src/pages/index.astro | 3 +- 5 files changed, 117 insertions(+), 58 deletions(-) create mode 100644 src/data_files/fr/pricing.json create mode 100644 src/data_files/pricing.json diff --git a/src/components/sections/pricing/PricingSection.astro b/src/components/sections/pricing/PricingSection.astro index 8e66c78..2d882f1 100644 --- a/src/components/sections/pricing/PricingSection.astro +++ b/src/components/sections/pricing/PricingSection.astro @@ -3,10 +3,8 @@ import SecondaryCTA from "../../ui/buttons/SecondaryCTA.astro"; import Icon from "../../ui/icons/Icon.astro"; -// Set heading and sub-heading for the pricing section -const title: string = "Simple, Transparent Pricing"; -const subTitle: string = - "Boost efficiency with ScrewFast's clear, value-driven plans."; +// Define props from Astro +const { pricing } = Astro.props; // Define TypeScript type for products. type Product = { @@ -19,37 +17,20 @@ type Product = { purchaseBtnTitle: string; purchaseLink: string; }; -// Define two products for display - Starter Kit and Professional Toolbox. -const starterKit: Product = { - name: "Starter Kit", - description: "Best option for DIY projects", - price: "$49", - cents: ".00", - billingFrequency: "USD / monthly", - features: [ - "Key hardware tools", - "Access to guides & tutorials", - "Standard support", - ], - purchaseBtnTitle: "Get the Starter Kit", - purchaseLink: "#", -}; -const professionalToolbox: Product = { - name: "Professional Toolbox", - description: "Best for large scale uses", - price: "$89", - cents: ".00", - billingFrequency: "USD / monthly", - features: [ - "Premium tool selection", - "Priority support", - "Exclusive content & deals", - "Bulk order discounts", - ], - purchaseBtnTitle: "Get the Professional Toolbox", - purchaseLink: "#", -}; +interface PricingSectionProps { + title: string; + subTitle: string; + badge: string; + thirdOption: string; + btnText: string; + pricing: { + title: string; + subTitle: string; + starterKit: Product; + professionalToolbox: Product; + }; +} ---
- {title} + {pricing.title}

- {subTitle} + {pricing.subTitle}

@@ -74,26 +55,26 @@ const professionalToolbox: Product = { >

- {starterKit.name} + {pricing.starterKit.name}

-

{starterKit.description}

+

{pricing.starterKit.description}

{starterKit.price}{pricing.starterKit.price} {starterKit.cents}{pricing.starterKit.cents} {starterKit.billingFrequency}{pricing.starterKit.billingFrequency}
{starterKit.purchaseBtnTitle}{pricing.starterKit.purchaseBtnTitle} @@ -118,32 +99,32 @@ const professionalToolbox: Product = { >

- {professionalToolbox.name} + {pricing.professionalToolbox.name}

-

{professionalToolbox.description}

+

{pricing.professionalToolbox.description}

Best value{pricing.badge}
{professionalToolbox.price}{pricing.professionalToolbox.price} {professionalToolbox.cents}{pricing.professionalToolbox.cents} {professionalToolbox.billingFrequency}{pricing.professionalToolbox.billingFrequency}
{professionalToolbox.purchaseBtnTitle}{pricing.professionalToolbox.purchaseBtnTitle}

- Enterprise Solutions? + {pricing.thirdOption}

- +
diff --git a/src/data_files/fr/pricing.json b/src/data_files/fr/pricing.json new file mode 100644 index 0000000..17a1a13 --- /dev/null +++ b/src/data_files/fr/pricing.json @@ -0,0 +1,38 @@ +{ + "title": "Tarification Simple et Transparente", + "subTitle": "Augmentez l'efficacité avec les plans clairs et axés sur la valeur de ScrewFast.", + "badge": "Meilleure valeur", + "thirdOption": "Solutions Entreprise?", + "btnText": "Obtenez un Devis Personnalisé", + + "starterKit": { + "name": "Kit de Démarrage", + "description": "Meilleure option pour les projets de bricolage", + "price": "$49", + "cents": ".00", + "billingFrequency": "USD / mensuel", + "features": [ + "Outils matériels essentiels", + "Accès aux guides et tutoriels", + "Support standard" + ], + "purchaseBtnTitle": "Obtenez le Kit de Démarrage", + "purchaseLink": "#" + }, + + "professionalToolbox": { + "name": "Boîte à Outils Professionnelle", + "description": "Idéale pour les utilisations à grande échelle", + "price": "$89", + "cents": ".00", + "billingFrequency": "USD / mensuel", + "features": [ + "Sélection d'outils premium", + "Support prioritaire", + "Contenu et offres exclusifs", + "Remises sur les commandes en gros" + ], + "purchaseBtnTitle": "Obtenez la Boîte à Outils Professionnelle", + "purchaseLink": "#" + } +} diff --git a/src/data_files/pricing.json b/src/data_files/pricing.json new file mode 100644 index 0000000..12ddcd7 --- /dev/null +++ b/src/data_files/pricing.json @@ -0,0 +1,38 @@ +{ + "title": "Simple, Transparent Pricing", + "subTitle": "Boost efficiency with ScrewFast's clear, value-driven plans.", + "badge": "Best value", + "thirdOption": "Enterprise Solutions?", + "btnText": "Get a Custom Quote", + + "starterKit": { + "name": "Starter Kit", + "description": "Best option for DIY projects", + "price": "$49", + "cents": ".00", + "billingFrequency": "USD / monthly", + "features": [ + "Key hardware tools", + "Access to guides & tutorials", + "Standard support" + ], + "purchaseBtnTitle": "Get the Starter Kit", + "purchaseLink": "#" + }, + + "professionalToolbox": { + "name": "Professional Toolbox", + "description": "Best for large scale uses", + "price": "$89", + "cents": ".00", + "billingFrequency": "USD / monthly", + "features": [ + "Premium tool selection", + "Priority support", + "Exclusive content & deals", + "Bulk order discounts" + ], + "purchaseBtnTitle": "Get the Professional Toolbox", + "purchaseLink": "#" + } +} diff --git a/src/pages/fr/index.astro b/src/pages/fr/index.astro index 0fc1554..9f9710d 100644 --- a/src/pages/fr/index.astro +++ b/src/pages/fr/index.astro @@ -13,6 +13,7 @@ import AnnouncementBanner from "@/components/ui/banners/AnnouncementBanner.astro import heroImage from "@/images/hero-image.avif"; import faqs from "@/data_files/fr/faqs.json"; import features from "@/data_files/fr/features.json"; +import pricing from "@/data_files/fr/pricing.json"; import featureImage from "@/images/features-image.avif"; import construction from "@/images/construction-image.avif"; import tools from "@/images/automated-tools.avif"; @@ -132,7 +133,7 @@ const avatarSrcs: Array = [ ]} /> - + diff --git a/src/pages/index.astro b/src/pages/index.astro index 327ef1b..c6df70d 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -13,6 +13,7 @@ import AnnouncementBanner from "@/components/ui/banners/AnnouncementBanner.astro import heroImage from "@/images/hero-image.avif"; import faqs from "@/data_files/faqs.json"; import features from "@/data_files/features.json"; +import pricing from "@/data_files/pricing.json"; import featureImage from "@/images/features-image.avif"; import construction from "@/images/construction-image.avif"; import tools from "@/images/automated-tools.avif"; @@ -132,7 +133,7 @@ const avatarSrcs: Array = [ ]} /> - +