@refrakt-md/html 0.14.4 → 0.16.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/dist/page-shell.d.ts +5 -0
- package/dist/page-shell.d.ts.map +1 -1
- package/dist/page-shell.js +14 -2
- package/dist/page-shell.js.map +1 -1
- package/package.json +5 -4
package/dist/page-shell.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { RenderPageInput } from './render.js';
|
|
2
|
+
import { type ResolvedTintCascade } from '@refrakt-md/content';
|
|
2
3
|
interface OgMeta {
|
|
3
4
|
title?: string;
|
|
4
5
|
description?: string;
|
|
@@ -31,6 +32,10 @@ export interface PageShellOptions {
|
|
|
31
32
|
logo?: string;
|
|
32
33
|
/** SEO metadata extracted from the page */
|
|
33
34
|
seo?: PageSeo;
|
|
35
|
+
/** Per-page tint cascade (SPEC-073). Drives the no-flash `<html>` tint
|
|
36
|
+
* attributes + `color-scheme` meta. Absent → unlocked/auto default. The
|
|
37
|
+
* anti-FOIT pre-paint script is injected regardless. */
|
|
38
|
+
tintCascade?: ResolvedTintCascade;
|
|
34
39
|
}
|
|
35
40
|
/**
|
|
36
41
|
* Render a complete HTML document from page data.
|
package/dist/page-shell.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-shell.d.ts","sourceRoot":"","sources":["../src/page-shell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"page-shell.d.ts","sourceRoot":"","sources":["../src/page-shell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAIN,KAAK,mBAAmB,EACxB,MAAM,qBAAqB,CAAC;AAK7B,UAAU,MAAM;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,UAAU,OAAO;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,gBAAgB;IAChC,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;6DAEyD;IACzD,WAAW,CAAC,EAAE,mBAAmB,CAAC;CAClC;AAcD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CA2I7F"}
|
package/dist/page-shell.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { renderPage } from './render.js';
|
|
2
|
+
import { prePaintScript, htmlTintAttributes, colorSchemeMetaContent, } from '@refrakt-md/content';
|
|
3
|
+
const PRE_PAINT_SCRIPT = prePaintScript();
|
|
4
|
+
const DEFAULT_CASCADE = { tint: null, tintMode: 'auto', locked: false };
|
|
2
5
|
function escapeHtml(s) {
|
|
3
6
|
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
4
7
|
}
|
|
@@ -23,10 +26,15 @@ function renderOgTag(property, content) {
|
|
|
23
26
|
*/
|
|
24
27
|
export function renderFullPage(input, options = {}) {
|
|
25
28
|
const { page } = input;
|
|
26
|
-
const { lang = 'en', stylesheets = [], scripts = [], headExtra = '', bodyExtra = '', baseUrl, siteName, defaultImage, logo, seo, } = options;
|
|
29
|
+
const { lang = 'en', stylesheets = [], scripts = [], headExtra = '', bodyExtra = '', baseUrl, siteName, defaultImage, logo, seo, tintCascade = DEFAULT_CASCADE, } = options;
|
|
27
30
|
const headParts = [];
|
|
28
31
|
headParts.push('<meta charset="utf-8">');
|
|
29
32
|
headParts.push('<meta name="viewport" content="width=device-width, initial-scale=1">');
|
|
33
|
+
// No-flash theme chrome (SPEC-073): the color-scheme meta + anti-FOIT
|
|
34
|
+
// pre-paint script go early, before any stylesheet, so the saved theme is
|
|
35
|
+
// applied before first paint. Tint attrs go on <html> below.
|
|
36
|
+
headParts.push(`<meta name="color-scheme" content="${escapeHtml(colorSchemeMetaContent(tintCascade))}">`);
|
|
37
|
+
headParts.push(`<script>${PRE_PAINT_SCRIPT}</script>`);
|
|
30
38
|
// Title
|
|
31
39
|
const title = seo?.og?.title ?? page.title;
|
|
32
40
|
if (title) {
|
|
@@ -108,8 +116,12 @@ export function renderFullPage(input, options = {}) {
|
|
|
108
116
|
const bodyContent = renderPage(input);
|
|
109
117
|
// Scripts
|
|
110
118
|
const scriptTags = scripts.map(src => `<script src="${escapeHtml(src)}"></script>`).join('\n');
|
|
119
|
+
// Tint attrs (data-theme / data-tint / data-tint-lock) on <html>, matching
|
|
120
|
+
// the SvelteKit adapter's SSR output.
|
|
121
|
+
const htmlAttrs = htmlTintAttributes(tintCascade);
|
|
122
|
+
const htmlTag = htmlAttrs ? `<html lang="${escapeHtml(lang)}" ${htmlAttrs}>` : `<html lang="${escapeHtml(lang)}">`;
|
|
111
123
|
return `<!DOCTYPE html>
|
|
112
|
-
|
|
124
|
+
${htmlTag}
|
|
113
125
|
<head>
|
|
114
126
|
${headParts.join('\n')}
|
|
115
127
|
</head>
|
package/dist/page-shell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-shell.js","sourceRoot":"","sources":["../src/page-shell.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"page-shell.js","sourceRoot":"","sources":["../src/page-shell.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@refrakt-md/html",
|
|
3
3
|
"description": "Pure HTML renderer for refrakt.md content — no framework required",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.16.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -31,8 +31,9 @@
|
|
|
31
31
|
"build": "tsc"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@refrakt-md/behaviors": "0.
|
|
35
|
-
"@refrakt-md/
|
|
36
|
-
"@refrakt-md/
|
|
34
|
+
"@refrakt-md/behaviors": "0.16.0",
|
|
35
|
+
"@refrakt-md/content": "0.16.0",
|
|
36
|
+
"@refrakt-md/transform": "0.16.0",
|
|
37
|
+
"@refrakt-md/types": "0.16.0"
|
|
37
38
|
}
|
|
38
39
|
}
|