@xenterprises/nuxt-x-marketing 1.4.0 → 1.4.2
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 +18 -7
- package/app/components/X/Footer/XLegal/index.vue +2 -2
- package/app/components/X/Header/App.vue +2 -0
- package/app/components/X/Header/Nav/index.vue +9 -7
- package/app/components/X/Mark/Hero/index.vue +1 -0
- package/app/components/X/Schema/index.vue +53 -0
- package/app/components/X/X/Header/Nav/index.vue +9 -7
- package/app/components/X/X/Header/index.vue +2 -0
- package/app/components/X/X/Legal/index.vue +2 -2
- package/package.json +1 -1
- package/playwright-report-smoke/index.html +0 -90
package/CHANGELOG.md
CHANGED
|
@@ -5,14 +5,9 @@ All notable changes to `@xenterprises/nuxt-x-marketing` are documented in this f
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
###
|
|
11
|
-
|
|
12
|
-
> **Released as a minor despite removing public components.** Semver would call
|
|
13
|
-
> this a major. Sites on `^1.3.0` will therefore pick this up automatically —
|
|
14
|
-
> if you import any `XMarkAffiliate*` component, pin to `1.3.0` or migrate to
|
|
15
|
-
> the `XAF*` equivalents below before upgrading.
|
|
10
|
+
### BREAKING
|
|
16
11
|
|
|
17
12
|
- **Removed the `XMarkAffiliate*` component family** — `XMarkAffiliateDisclosure`,
|
|
18
13
|
`XMarkAffiliateProductCard`, `XMarkAffiliateProductGrid`, `XMarkAffiliateProductDetail`,
|
|
@@ -35,6 +30,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
35
30
|
section and its sample product data were dropped with them. Every other section of the
|
|
36
31
|
demo page is unchanged.
|
|
37
32
|
|
|
33
|
+
## [1.4.2] - 2026-08-23
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- `XFooter/XLegal` drops the nested `main` (same as `XXLegal`).
|
|
38
|
+
|
|
39
|
+
## [1.4.1] - 2026-08-23
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
|
|
43
|
+
- `UHeader` never SSRs Nuxt UI (empty `title` plus empty `#title` on `XXHeader`, `XHeaderApp`, and Nav variants).
|
|
44
|
+
- `XSchema` ships a real JSON-LD template (`schema` prop or `xMarketing` name/url; does not invent a business).
|
|
45
|
+
- `XXHeaderNav` and `XHeaderNav` drop `UColorModeImage` (plain light/dark `img`).
|
|
46
|
+
- `XXLegal` drops the nested `main` inside the footer.
|
|
47
|
+
- Hero background `img` has `fetchpriority="high"`.
|
|
48
|
+
|
|
38
49
|
## [1.3.0] - 2026-07-24
|
|
39
50
|
|
|
40
51
|
### BREAKING
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
class="h-6 w-6 mx-auto -mt-4 relative z-10"
|
|
10
10
|
/>
|
|
11
11
|
</a>
|
|
12
|
-
<
|
|
12
|
+
<div
|
|
13
13
|
class="flex flex-col md:flex-row justify-between items-center px-6 pt-3 pb-5 max-w-screen-2xl mx-auto gap-4"
|
|
14
14
|
>
|
|
15
15
|
<div class="text-center md:text-left">
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
{{ link.label }}
|
|
28
28
|
</a>
|
|
29
29
|
</nav>
|
|
30
|
-
</
|
|
30
|
+
</div>
|
|
31
31
|
</footer>
|
|
32
32
|
</template>
|
|
33
33
|
|
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
<UHeader>
|
|
3
3
|
<template #title>
|
|
4
4
|
<nuxt-link to="/" v-if="header?.logo?.src">
|
|
5
|
-
<
|
|
6
|
-
:
|
|
7
|
-
:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
<img
|
|
6
|
+
:src="header?.logo?.src"
|
|
7
|
+
:alt="header?.logo?.alt || ''"
|
|
8
|
+
class="h-8 dark:hidden"
|
|
9
|
+
/>
|
|
10
|
+
<img
|
|
11
|
+
:src="header?.logo?.srcDark || header?.logo?.src"
|
|
12
|
+
:alt="header?.logo?.alt || ''"
|
|
13
|
+
class="h-8 hidden dark:block"
|
|
12
14
|
/>
|
|
13
15
|
</nuxt-link>
|
|
14
16
|
<span v-else>{{ header?.logo?.alt }}</span>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<component
|
|
3
|
+
:is="'script'"
|
|
4
|
+
type="application/ld+json"
|
|
5
|
+
v-text="jsonLd"
|
|
6
|
+
/>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script setup>
|
|
10
|
+
/**
|
|
11
|
+
* XSchema — JSON-LD from a schema prop or from xMarketing name/url.
|
|
12
|
+
* Does not invent a business. Emits only fields that are actually set.
|
|
13
|
+
*/
|
|
14
|
+
const props = defineProps({
|
|
15
|
+
/** Full schema.org object. When set, this is the payload. */
|
|
16
|
+
schema: {
|
|
17
|
+
type: Object,
|
|
18
|
+
default: null,
|
|
19
|
+
},
|
|
20
|
+
/** Schema.org @type when building from name/url. */
|
|
21
|
+
type: {
|
|
22
|
+
type: String,
|
|
23
|
+
default: "WebSite",
|
|
24
|
+
},
|
|
25
|
+
name: {
|
|
26
|
+
type: String,
|
|
27
|
+
default: "",
|
|
28
|
+
},
|
|
29
|
+
url: {
|
|
30
|
+
type: String,
|
|
31
|
+
default: "",
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
const appConfig = useAppConfig();
|
|
36
|
+
|
|
37
|
+
const jsonLd = computed(() => {
|
|
38
|
+
if (props.schema && typeof props.schema === "object") {
|
|
39
|
+
const payload = { "@context": "https://schema.org", ...props.schema };
|
|
40
|
+
return JSON.stringify(payload);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const name = props.name || appConfig?.xMarketing?.name;
|
|
44
|
+
const url = props.url || appConfig?.xMarketing?.url;
|
|
45
|
+
const data = {
|
|
46
|
+
"@context": "https://schema.org",
|
|
47
|
+
"@type": props.type || "WebSite",
|
|
48
|
+
};
|
|
49
|
+
if (name) data.name = name;
|
|
50
|
+
if (url) data.url = url;
|
|
51
|
+
return JSON.stringify(data);
|
|
52
|
+
});
|
|
53
|
+
</script>
|
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
<UHeader>
|
|
3
3
|
<template #title>
|
|
4
4
|
<NuxtLink v-if="header?.logo?.src" to="/">
|
|
5
|
-
<
|
|
6
|
-
:
|
|
7
|
-
:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
<img
|
|
6
|
+
:src="header?.logo?.src"
|
|
7
|
+
:alt="header?.logo?.alt || ''"
|
|
8
|
+
class="h-8 dark:hidden"
|
|
9
|
+
/>
|
|
10
|
+
<img
|
|
11
|
+
:src="header?.logo?.srcDark || header?.logo?.src"
|
|
12
|
+
:alt="header?.logo?.alt || ''"
|
|
13
|
+
class="h-8 hidden dark:block"
|
|
12
14
|
/>
|
|
13
15
|
</NuxtLink>
|
|
14
16
|
<span v-else>{{ header?.logo?.alt }}</span>
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
class="h-6 w-6 mx-auto -mt-4 relative z-10"
|
|
10
10
|
/>
|
|
11
11
|
</a>
|
|
12
|
-
<
|
|
12
|
+
<div
|
|
13
13
|
class="flex flex-col md:flex-row justify-between items-center px-6 pt-3 pb-5 max-w-screen-2xl mx-auto gap-4"
|
|
14
14
|
>
|
|
15
15
|
<div class="text-center md:text-left">
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
{{ link.label }}
|
|
31
31
|
</a>
|
|
32
32
|
</nav>
|
|
33
|
-
</
|
|
33
|
+
</div>
|
|
34
34
|
</footer>
|
|
35
35
|
</template>
|
|
36
36
|
|