@refrakt-md/svelte 0.1.0 → 0.3.0
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/package.json +2 -2
- package/src/Renderer.svelte +2 -2
- package/src/ThemeShell.svelte +44 -2
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@refrakt-md/svelte",
|
|
3
3
|
"description": "Svelte renderer for refrakt.md content",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@markdoc/markdoc": "0.4.0",
|
|
30
|
-
"@refrakt-md/types": "0.
|
|
30
|
+
"@refrakt-md/types": "0.3.0"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"svelte": "^5.0.0"
|
package/src/Renderer.svelte
CHANGED
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
const globalOverrides = getElementOverrides();
|
|
28
|
-
const merged = overrides
|
|
28
|
+
const merged = $derived(overrides
|
|
29
29
|
? { ...globalOverrides, ...overrides }
|
|
30
|
-
: globalOverrides;
|
|
30
|
+
: globalOverrides);
|
|
31
31
|
</script>
|
|
32
32
|
|
|
33
33
|
{#if Array.isArray(node)}
|
package/src/ThemeShell.svelte
CHANGED
|
@@ -4,6 +4,19 @@
|
|
|
4
4
|
import { setContext } from 'svelte';
|
|
5
5
|
import { matchRouteRule } from './route-rules.js';
|
|
6
6
|
|
|
7
|
+
interface OgMeta {
|
|
8
|
+
title?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
image?: string;
|
|
11
|
+
type?: string;
|
|
12
|
+
url?: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface PageSeo {
|
|
16
|
+
jsonLd: object[];
|
|
17
|
+
og: OgMeta;
|
|
18
|
+
}
|
|
19
|
+
|
|
7
20
|
interface PageData {
|
|
8
21
|
title: string;
|
|
9
22
|
description: string;
|
|
@@ -11,13 +24,17 @@
|
|
|
11
24
|
renderable: any;
|
|
12
25
|
pages: Array<{ url: string; title: string; draft: boolean }>;
|
|
13
26
|
url: string;
|
|
27
|
+
seo?: PageSeo;
|
|
14
28
|
}
|
|
15
29
|
|
|
16
30
|
let { theme, page }: { theme: SvelteTheme; page: PageData } = $props();
|
|
17
31
|
|
|
18
32
|
// Wire theme into Svelte context
|
|
33
|
+
// svelte-ignore state_referenced_locally
|
|
19
34
|
setRegistry(theme.components);
|
|
35
|
+
// svelte-ignore state_referenced_locally
|
|
20
36
|
if (theme.elements) setElementOverrides(theme.elements);
|
|
37
|
+
// svelte-ignore state_referenced_locally
|
|
21
38
|
setContext('pages', page.pages);
|
|
22
39
|
|
|
23
40
|
// Pick layout via route rules (reactive so layout updates on client-side navigation)
|
|
@@ -26,8 +43,33 @@
|
|
|
26
43
|
</script>
|
|
27
44
|
|
|
28
45
|
<svelte:head>
|
|
29
|
-
{#if page.
|
|
30
|
-
|
|
46
|
+
{#if page.seo?.og.title}
|
|
47
|
+
<title>{page.seo.og.title}</title>
|
|
48
|
+
<meta property="og:title" content={page.seo.og.title} />
|
|
49
|
+
{:else if page.title}
|
|
50
|
+
<title>{page.title}</title>
|
|
51
|
+
{/if}
|
|
52
|
+
{#if page.seo?.og.description}
|
|
53
|
+
<meta name="description" content={page.seo.og.description} />
|
|
54
|
+
<meta property="og:description" content={page.seo.og.description} />
|
|
55
|
+
{:else if page.description}
|
|
56
|
+
<meta name="description" content={page.description} />
|
|
57
|
+
{/if}
|
|
58
|
+
{#if page.seo?.og.image}
|
|
59
|
+
<meta property="og:image" content={page.seo.og.image} />
|
|
60
|
+
<meta name="twitter:card" content="summary_large_image" />
|
|
61
|
+
{/if}
|
|
62
|
+
{#if page.seo?.og.url}
|
|
63
|
+
<meta property="og:url" content={page.seo.og.url} />
|
|
64
|
+
{/if}
|
|
65
|
+
{#if page.seo?.og.type}
|
|
66
|
+
<meta property="og:type" content={page.seo.og.type} />
|
|
67
|
+
{/if}
|
|
68
|
+
{#if page.seo}
|
|
69
|
+
{#each page.seo.jsonLd as schema}
|
|
70
|
+
{@html `<script type="application/ld+json">${JSON.stringify(schema)}</script>`}
|
|
71
|
+
{/each}
|
|
72
|
+
{/if}
|
|
31
73
|
</svelte:head>
|
|
32
74
|
|
|
33
75
|
{#if Layout}
|