@ewanc26/ui 0.1.6 → 0.1.8
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/dist/helper/metaTags.d.ts +12 -0
- package/dist/helper/metaTags.d.ts.map +1 -0
- package/dist/helper/metaTags.js +43 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/package.json +2 -2
- package/src/lib/helper/metaTags.ts +55 -0
- package/src/lib/index.ts +1 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SiteMetadata } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generates an array of meta tag objects for use in a Svelte <svelte:head>.
|
|
4
|
+
* Falls back to site defaults if a property is missing from `meta`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateMetaTags(meta: SiteMetadata, defaults: SiteMetadata): Array<Record<string, string>>;
|
|
7
|
+
/**
|
|
8
|
+
* Merges a defaults SiteMetadata object with optional overrides.
|
|
9
|
+
* Use this to build per-page metadata from site-wide defaults.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createSiteMeta(defaults: SiteMetadata, overrides?: Partial<SiteMetadata>): SiteMetadata;
|
|
12
|
+
//# sourceMappingURL=metaTags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metaTags.d.ts","sourceRoot":"","sources":["../../src/lib/helper/metaTags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,YAAY,GACpB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkC/B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,YAAY,EACtB,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GACnC,YAAY,CAEd"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates an array of meta tag objects for use in a Svelte <svelte:head>.
|
|
3
|
+
* Falls back to site defaults if a property is missing from `meta`.
|
|
4
|
+
*/
|
|
5
|
+
export function generateMetaTags(meta, defaults) {
|
|
6
|
+
const finalMeta = {
|
|
7
|
+
title: meta.title || defaults.title,
|
|
8
|
+
description: meta.description || defaults.description,
|
|
9
|
+
keywords: meta.keywords || defaults.keywords,
|
|
10
|
+
url: meta.url || defaults.url,
|
|
11
|
+
image: meta.image || defaults.image,
|
|
12
|
+
imageWidth: meta.imageWidth || defaults.imageWidth,
|
|
13
|
+
imageHeight: meta.imageHeight || defaults.imageHeight
|
|
14
|
+
};
|
|
15
|
+
return [
|
|
16
|
+
{ name: 'description', content: finalMeta.description },
|
|
17
|
+
{ name: 'keywords', content: finalMeta.keywords },
|
|
18
|
+
{ property: 'og:type', content: 'website' },
|
|
19
|
+
{ property: 'og:url', content: finalMeta.url },
|
|
20
|
+
{ property: 'og:title', content: finalMeta.title },
|
|
21
|
+
{ property: 'og:description', content: finalMeta.description },
|
|
22
|
+
{ property: 'og:site_name', content: defaults.title },
|
|
23
|
+
{ property: 'og:image', content: finalMeta.image },
|
|
24
|
+
...(finalMeta.imageWidth
|
|
25
|
+
? [{ property: 'og:image:width', content: finalMeta.imageWidth.toString() }]
|
|
26
|
+
: []),
|
|
27
|
+
...(finalMeta.imageHeight
|
|
28
|
+
? [{ property: 'og:image:height', content: finalMeta.imageHeight.toString() }]
|
|
29
|
+
: []),
|
|
30
|
+
{ name: 'twitter:card', content: 'summary_large_image' },
|
|
31
|
+
{ name: 'twitter:url', content: finalMeta.url },
|
|
32
|
+
{ name: 'twitter:title', content: finalMeta.title },
|
|
33
|
+
{ name: 'twitter:description', content: finalMeta.description },
|
|
34
|
+
{ name: 'twitter:image', content: finalMeta.image }
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Merges a defaults SiteMetadata object with optional overrides.
|
|
39
|
+
* Use this to build per-page metadata from site-wide defaults.
|
|
40
|
+
*/
|
|
41
|
+
export function createSiteMeta(defaults, overrides = {}) {
|
|
42
|
+
return { ...defaults, ...overrides };
|
|
43
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export { filterPosts, groupPostsByDate, getSortedMonths, getSortedYears, getAllT
|
|
|
7
7
|
export type { MonthData, GroupedPosts } from './helper/posts.js';
|
|
8
8
|
export { getPostBadges, getBadgeClasses } from './helper/badges.js';
|
|
9
9
|
export type { PostBadge } from './helper/badges.js';
|
|
10
|
+
export { generateMetaTags, createSiteMeta } from './helper/metaTags.js';
|
|
10
11
|
export { default as ThemeToggle } from './components/layout/ThemeToggle.svelte';
|
|
11
12
|
export { default as WolfToggle } from './components/layout/WolfToggle.svelte';
|
|
12
13
|
export { DynamicLinks, ScrollToTop, TangledRepos } from './components/layout/main/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChG,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAClH,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAGjE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG9D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/G,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAChG,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAClH,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAGjE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG9D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/G,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACpE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGxE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAG9E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAG5F,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAG7J,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGrD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ export { THEMES, DEFAULT_THEME, CATEGORY_LABELS, getThemesByCategory, getTheme }
|
|
|
5
5
|
// ─── Helper ───────────────────────────────────────────────────────────────────
|
|
6
6
|
export { filterPosts, groupPostsByDate, getSortedMonths, getSortedYears, getAllTags } from './helper/posts.js';
|
|
7
7
|
export { getPostBadges, getBadgeClasses } from './helper/badges.js';
|
|
8
|
+
export { generateMetaTags, createSiteMeta } from './helper/metaTags.js';
|
|
8
9
|
// ─── Layout toggles ───────────────────────────────────────────────────────────
|
|
9
10
|
export { default as ThemeToggle } from './components/layout/ThemeToggle.svelte';
|
|
10
11
|
export { default as WolfToggle } from './components/layout/WolfToggle.svelte';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ewanc26/ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Svelte UI component library extracted from ewancroft.uk — pluggable layout, UI primitives, stores, and SEO components.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"check": "svelte-check --tsconfig ./tsconfig.json"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"@sveltejs/kit": ">=2.
|
|
33
|
+
"@sveltejs/kit": ">=2.8.3",
|
|
34
34
|
"svelte": ">=5.0.0",
|
|
35
35
|
"tailwindcss": ">=4.0.0"
|
|
36
36
|
},
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { SiteMetadata } from '../types/index.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Generates an array of meta tag objects for use in a Svelte <svelte:head>.
|
|
5
|
+
* Falls back to site defaults if a property is missing from `meta`.
|
|
6
|
+
*/
|
|
7
|
+
export function generateMetaTags(
|
|
8
|
+
meta: SiteMetadata,
|
|
9
|
+
defaults: SiteMetadata
|
|
10
|
+
): Array<Record<string, string>> {
|
|
11
|
+
const finalMeta: SiteMetadata = {
|
|
12
|
+
title: meta.title || defaults.title,
|
|
13
|
+
description: meta.description || defaults.description,
|
|
14
|
+
keywords: meta.keywords || defaults.keywords,
|
|
15
|
+
url: meta.url || defaults.url,
|
|
16
|
+
image: meta.image || defaults.image,
|
|
17
|
+
imageWidth: meta.imageWidth || defaults.imageWidth,
|
|
18
|
+
imageHeight: meta.imageHeight || defaults.imageHeight
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
return [
|
|
22
|
+
{ name: 'description', content: finalMeta.description },
|
|
23
|
+
{ name: 'keywords', content: finalMeta.keywords },
|
|
24
|
+
|
|
25
|
+
{ property: 'og:type', content: 'website' },
|
|
26
|
+
{ property: 'og:url', content: finalMeta.url },
|
|
27
|
+
{ property: 'og:title', content: finalMeta.title },
|
|
28
|
+
{ property: 'og:description', content: finalMeta.description },
|
|
29
|
+
{ property: 'og:site_name', content: defaults.title },
|
|
30
|
+
{ property: 'og:image', content: finalMeta.image },
|
|
31
|
+
...(finalMeta.imageWidth
|
|
32
|
+
? [{ property: 'og:image:width', content: finalMeta.imageWidth.toString() }]
|
|
33
|
+
: []),
|
|
34
|
+
...(finalMeta.imageHeight
|
|
35
|
+
? [{ property: 'og:image:height', content: finalMeta.imageHeight.toString() }]
|
|
36
|
+
: []),
|
|
37
|
+
|
|
38
|
+
{ name: 'twitter:card', content: 'summary_large_image' },
|
|
39
|
+
{ name: 'twitter:url', content: finalMeta.url },
|
|
40
|
+
{ name: 'twitter:title', content: finalMeta.title },
|
|
41
|
+
{ name: 'twitter:description', content: finalMeta.description },
|
|
42
|
+
{ name: 'twitter:image', content: finalMeta.image }
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Merges a defaults SiteMetadata object with optional overrides.
|
|
48
|
+
* Use this to build per-page metadata from site-wide defaults.
|
|
49
|
+
*/
|
|
50
|
+
export function createSiteMeta(
|
|
51
|
+
defaults: SiteMetadata,
|
|
52
|
+
overrides: Partial<SiteMetadata> = {}
|
|
53
|
+
): SiteMetadata {
|
|
54
|
+
return { ...defaults, ...overrides };
|
|
55
|
+
}
|
package/src/lib/index.ts
CHANGED
|
@@ -14,6 +14,7 @@ export { filterPosts, groupPostsByDate, getSortedMonths, getSortedYears, getAllT
|
|
|
14
14
|
export type { MonthData, GroupedPosts } from './helper/posts.js';
|
|
15
15
|
export { getPostBadges, getBadgeClasses } from './helper/badges.js';
|
|
16
16
|
export type { PostBadge } from './helper/badges.js';
|
|
17
|
+
export { generateMetaTags, createSiteMeta } from './helper/metaTags.js';
|
|
17
18
|
|
|
18
19
|
// ─── Layout toggles ───────────────────────────────────────────────────────────
|
|
19
20
|
export { default as ThemeToggle } from './components/layout/ThemeToggle.svelte';
|