@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 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
- ## [1.4.0] - 2026-08-02
8
+ ## [Unreleased]
9
9
 
10
- ### Removed
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
- <main
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
- </main>
30
+ </div>
31
31
  </footer>
32
32
  </template>
33
33
 
@@ -1,9 +1,11 @@
1
1
  <template>
2
2
  <UHeader
3
+ title=""
3
4
  :ui="{
4
5
  root: headerClasses,
5
6
  }"
6
7
  >
8
+ <template #title />
7
9
  <template #left>
8
10
  <UNavigationMenu :items="navLinks" />
9
11
  </template>
@@ -2,13 +2,15 @@
2
2
  <UHeader>
3
3
  <template #title>
4
4
  <nuxt-link to="/" v-if="header?.logo?.src">
5
- <UColorModeImage
6
- :light="header?.logo?.src"
7
- :dark="
8
- header?.logo?.srcDark ? header?.logo?.srcDark : header?.logo?.src
9
- "
10
- :alt="header?.logo?.alt"
11
- class="h-8"
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>
@@ -29,6 +29,7 @@
29
29
  v-else-if="img?.src"
30
30
  :src="img.src"
31
31
  :alt="img.alt || ''"
32
+ fetchpriority="high"
32
33
  class="absolute inset-0 w-full h-full object-cover xParallax"
33
34
  data-parallax-speed="0.3"
34
35
  />
@@ -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
- <UColorModeImage
6
- :light="header?.logo?.src"
7
- :dark="
8
- header?.logo?.srcDark ? header?.logo?.srcDark : header?.logo?.src
9
- "
10
- :alt="header?.logo?.alt"
11
- class="h-8"
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>
@@ -1,9 +1,11 @@
1
1
  <template>
2
2
  <UHeader
3
+ title=""
3
4
  :ui="{
4
5
  root: headerClasses,
5
6
  }"
6
7
  >
8
+ <template #title />
7
9
  <template #left>
8
10
  <UNavigationMenu :items="navLinks" />
9
11
  </template>
@@ -9,7 +9,7 @@
9
9
  class="h-6 w-6 mx-auto -mt-4 relative z-10"
10
10
  />
11
11
  </a>
12
- <main
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
- </main>
33
+ </div>
34
34
  </footer>
35
35
  </template>
36
36
 
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@xenterprises/nuxt-x-marketing",
3
3
  "license": "SEE LICENSE IN LICENSE",
4
4
  "type": "module",
5
- "version": "1.4.0",
5
+ "version": "1.4.2",
6
6
  "main": "./nuxt.config.ts",
7
7
  "scripts": {
8
8
  "dev": "nuxi dev .playground",