From 1ecdebd74cde155e785a2d8b154f52b078e524ba Mon Sep 17 00:00:00 2001 From: Benjamin Young Date: Tue, 3 Feb 2026 15:19:40 -0500 Subject: [PATCH 1/3] Allow `queries.json` to be optional. --- src/_data/examples.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/_data/examples.js b/src/_data/examples.js index c55b758..b1d7bad 100644 --- a/src/_data/examples.js +++ b/src/_data/examples.js @@ -24,7 +24,8 @@ for(const dir of directories) { const readmePath = path.join(dir, 'README.md'); // TODO: gather images also const credential = JSON.parse(fs.readFileSync(credentialPath, 'utf8')); - const queries = JSON.parse(fs.readFileSync(queriesPath, 'utf8')); + const queries = fs.existsSync(queriesPath) ? + JSON.parse(fs.readFileSync(queriesPath, 'utf8')) : {}; const readme = fs.existsSync(readmePath) ? fs.readFileSync(readmePath, 'utf8') : ''; const dirname = path.basename(dir); From 29cb517d767319896cde652738f789dd9ff75022 Mon Sep 17 00:00:00 2001 From: Benjamin Young Date: Thu, 5 Feb 2026 13:03:37 -0500 Subject: [PATCH 2/3] Add HTML Render Method example credential. --- credentials/html-render-method/README.md | 12 ++++++ .../html-render-method/credential.json | 37 ++++++++++++++++++ credentials/html-render-method/image.png | Bin 0 -> 6523 bytes credentials/html-render-method/queries.json | 26 ++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 credentials/html-render-method/README.md create mode 100644 credentials/html-render-method/credential.json create mode 100644 credentials/html-render-method/image.png create mode 100644 credentials/html-render-method/queries.json diff --git a/credentials/html-render-method/README.md b/credentials/html-render-method/README.md new file mode 100644 index 0000000..48e1351 --- /dev/null +++ b/credentials/html-render-method/README.md @@ -0,0 +1,12 @@ +# HTML Render Method Example VC + +This example contains an HTML-based template following the forthcoming +[HTML Render Method](https://github.com/w3c/vc-render-method/pull/42) +change to the +[Verifiable Credential Render Methods v1.0](https://w3c.github.io/vc-render-method/) +specification. + +## `image.png` Attribution + +The HTML file icon used in the `image.png` file was +[created by Smashicons and found via Flaticon.com](https://www.flaticon.com/free-icons/html-file). diff --git a/credentials/html-render-method/credential.json b/credentials/html-render-method/credential.json new file mode 100644 index 0000000..b8b45e9 --- /dev/null +++ b/credentials/html-render-method/credential.json @@ -0,0 +1,37 @@ +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://www.w3.org/ns/credentials/examples/v2" + ], + "type": [ + "VerifiableCredential", + "NameCredential" + ], + "issuer": { + "id": "did:example:1234", + "name": "The Issuer" + }, + "credentialSubject": { + "name": "Example Name", + "notRendered": "should not appear" + }, + "renderMethod": { + "type": "TemplateRenderMethod", + "renderSuite": "html", + "renderProperty": [ + "/issuer/name", + "/credentialSubject/name" + ], + "template": "
\n \n \n\n

\n

Issued by:

\n
", + "outputPreference": { + "mode": [ + "visual" + ], + "mediaType": "application/html", + "style": { + "width": "800px", + "height": "800px" + } + } + } +} diff --git a/credentials/html-render-method/image.png b/credentials/html-render-method/image.png new file mode 100644 index 0000000000000000000000000000000000000000..9809048719707c4c461a05a83414ed30195f6bf5 GIT binary patch literal 6523 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 Date: Wed, 11 Feb 2026 11:34:13 -0500 Subject: [PATCH 3/3] Use a data: URL for template. --- credentials/html-render-method/credential.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/credentials/html-render-method/credential.json b/credentials/html-render-method/credential.json index b8b45e9..60aea34 100644 --- a/credentials/html-render-method/credential.json +++ b/credentials/html-render-method/credential.json @@ -22,7 +22,7 @@ "/issuer/name", "/credentialSubject/name" ], - "template": "
\n \n \n\n

\n

Issued by:

\n
", + "template": "data:text/html,
\n \n \n\n

\n

Issued by:

\n
", "outputPreference": { "mode": [ "visual"