@xenterprises/nuxt-x-marketing 1.4.8 → 1.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
30
30
|
section and its sample product data were dropped with them. Every other section of the
|
|
31
31
|
demo page is unchanged.
|
|
32
32
|
|
|
33
|
+
## [1.4.9] - 2026-09-06
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- `XMarkPricingPlans` spells billing periods as **per month** / **per year** by default (not `/month` `/year`), and normalizes common slash forms when mapping plans.
|
|
38
|
+
|
|
33
39
|
## [1.4.8] - 2026-09-06
|
|
34
40
|
|
|
35
41
|
### Fixed
|
|
@@ -82,7 +82,7 @@ const props = defineProps({
|
|
|
82
82
|
{
|
|
83
83
|
name: "Starter",
|
|
84
84
|
price: "$9",
|
|
85
|
-
period: "
|
|
85
|
+
period: "per month",
|
|
86
86
|
description: "Perfect for individuals and small projects.",
|
|
87
87
|
features: ["5 projects", "10GB storage", "Email support"],
|
|
88
88
|
button: { label: "Get Started" },
|
|
@@ -90,7 +90,7 @@ const props = defineProps({
|
|
|
90
90
|
{
|
|
91
91
|
name: "Pro",
|
|
92
92
|
price: "$29",
|
|
93
|
-
period: "
|
|
93
|
+
period: "per month",
|
|
94
94
|
description: "For growing teams that need more power.",
|
|
95
95
|
features: [
|
|
96
96
|
"Unlimited projects",
|
|
@@ -104,7 +104,7 @@ const props = defineProps({
|
|
|
104
104
|
{
|
|
105
105
|
name: "Enterprise",
|
|
106
106
|
price: "$99",
|
|
107
|
-
period: "
|
|
107
|
+
period: "per month",
|
|
108
108
|
description: "For large organizations with custom needs.",
|
|
109
109
|
features: [
|
|
110
110
|
"Unlimited everything",
|
|
@@ -171,6 +171,14 @@ const emit = defineEmits(["select"]);
|
|
|
171
171
|
|
|
172
172
|
const billingPeriod = ref("monthly");
|
|
173
173
|
|
|
174
|
+
function normalizePeriod(period) {
|
|
175
|
+
if (!period) return period;
|
|
176
|
+
const trimmed = String(period).trim().toLowerCase();
|
|
177
|
+
if (["/month", "/mo", "mo", "month"].includes(trimmed)) return "per month";
|
|
178
|
+
if (["/year", "/yr", "yr", "year"].includes(trimmed)) return "per year";
|
|
179
|
+
return period;
|
|
180
|
+
}
|
|
181
|
+
|
|
174
182
|
// Map XMark plan format to Nuxt UI format
|
|
175
183
|
const mappedPlans = computed(() => {
|
|
176
184
|
return props.plans.map((plan) => {
|
|
@@ -183,9 +191,13 @@ const mappedPlans = computed(() => {
|
|
|
183
191
|
billingPeriod.value === "yearly"
|
|
184
192
|
? plan.price.yearly
|
|
185
193
|
: plan.price.monthly;
|
|
186
|
-
billingCycle =
|
|
194
|
+
billingCycle =
|
|
195
|
+
billingPeriod.value === "yearly" ? "per year" : "per month";
|
|
187
196
|
} else if (props.hasBillingToggle && !plan.period) {
|
|
188
|
-
billingCycle =
|
|
197
|
+
billingCycle =
|
|
198
|
+
billingPeriod.value === "yearly" ? "per year" : "per month";
|
|
199
|
+
} else {
|
|
200
|
+
billingCycle = normalizePeriod(billingCycle);
|
|
189
201
|
}
|
|
190
202
|
|
|
191
203
|
// Determine if this plan should be highlighted
|