@kanonak-protocol/sdk 3.28.2 → 3.28.3

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.
@@ -0,0 +1,286 @@
1
+ import{a as F}from"./chunk-NIGFQYVA.js";import{a as K}from"./chunk-QIIQ4G2Q.js";import{c as y,d as f,g as j,j as d,k as O,l as k}from"./chunk-W6T7MOKY.js";function D(s){let e=s.replace(/\r\n/g,`
2
+ `).split(`
3
+ `),t=[],n=0;for(;n<e.length;){let a=e[n];if(a.trim()===""){n++;continue}let r=/^(\s*)```(\S*)\s*$/.exec(a);if(r){let c=r[2],u=[];for(n++;n<e.length&&!/^(\s*)```\s*$/.test(e[n]);)u.push(e[n]),n++;n++;let l=z(u.join(`
4
+ `)),b=c?` class="language-${W(c)}"`:"";t.push(`<pre><code${b}>${l}</code></pre>`);continue}let o=/^(#{1,6})\s+(.*)$/.exec(a);if(o){let c=o[1].length,u=_(o[2].trim());t.push(`<h${c}>${u}</h${c}>`),n++;continue}if(a.includes("|")&&n+1<e.length&&G(e[n+1])){let c=T(a),u=ae(e[n+1]);n+=2;let l=[];for(;n<e.length&&e[n].trim()!==""&&e[n].includes("|");)l.push(T(e[n])),n++;t.push(re(c,u,l));continue}if(/^\s*[-*]\s+/.test(a)){let c=[];for(;n<e.length&&/^\s*[-*]\s+/.test(e[n]);){let u=[e[n].replace(/^\s*[-*]\s+/,"")];for(n++;n<e.length&&e[n].trim()!==""&&!/^\s*[-*]\s+/.test(e[n])&&!/^\s*\d+\.\s+/.test(e[n]);)u.push(e[n]),n++;n<e.length&&e[n].trim()===""&&n++,c.push(`<li>${_(u.join(" ").trim())}</li>`)}t.push(`<ul>
5
+ ${c.join(`
6
+ `)}
7
+ </ul>`);continue}if(/^\s*\d+\.\s+/.test(a)){let c=[];for(;n<e.length&&/^\s*\d+\.\s+/.test(e[n]);){let u=[e[n].replace(/^\s*\d+\.\s+/,"")];for(n++;n<e.length&&e[n].trim()!==""&&!/^\s*\d+\.\s+/.test(e[n])&&!/^\s*[-*]\s+/.test(e[n]);)u.push(e[n]),n++;n<e.length&&e[n].trim()===""&&n++,c.push(`<li>${_(u.join(" ").trim())}</li>`)}t.push(`<ol>
8
+ ${c.join(`
9
+ `)}
10
+ </ol>`);continue}let i=[a];for(n++;n<e.length&&e[n].trim()!==""&&!/^(#{1,6})\s+/.test(e[n])&&!/^(\s*)```/.test(e[n])&&!/^\s*[-*]\s+/.test(e[n])&&!/^\s*\d+\.\s+/.test(e[n])&&!(e[n].includes("|")&&n+1<e.length&&G(e[n+1]));)i.push(e[n]),n++;t.push(`<p>${_(i.join(" "))}</p>`)}return t.join(`
11
+ `)}function G(s){return s.includes("-")?/^[\s|:-]+$/.test(s):!1}function T(s){let e=s.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(t=>t.trim())}function ae(s){return T(s).map(e=>{let t=e.startsWith(":"),n=e.endsWith(":");return t&&n?"center":n?"right":t?"left":null})}function re(s,e,t){let n=o=>{let i=e[o];return i?` style="text-align:${i}"`:""},a=s.map((o,i)=>`<th${n(i)}>${_(o)}</th>`).join(""),r=t.map(o=>`<tr>${o.map((c,u)=>`<td${n(u)}>${_(c)}</td>`).join("")}</tr>`).join(`
12
+ `);return`<table>
13
+ <thead><tr>${a}</tr></thead>
14
+ <tbody>
15
+ ${r}
16
+ </tbody>
17
+ </table>`}function _(s){let e=z(s);return e=e.replace(/`([^`\n]+)`/g,(t,n)=>`<code>${n}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(t,n,a)=>`<a href="${W(a)}">${n}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(t,n)=>`<strong>${n}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(t,n,a)=>`${n}<em>${a}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(t,n,a)=>`${n}<em>${a}</em>`),e}function z(s){return s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function W(s){return s.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var P={publisher:"kanonak.org",package_:"derivation",name:"look"},C={publisher:"kanonak.org",package_:"derivation",name:"tokens"},$={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},I={publisher:"kanonak.org",package_:"core-rdf",name:"label"},oe={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},se={publisher:"kanonak.org",package_:"look",name:"Hero"},ie={publisher:"kanonak.org",package_:"look",name:"PropertyList"},ce={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},ue={publisher:"kanonak.org",package_:"look",name:"ChipRow"},le={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},q={publisher:"kanonak.org",package_:"look",name:"Markdown"},E={publisher:"kanonak.org",package_:"look",name:"NavGroup"},N={publisher:"kanonak.org",package_:"look",name:"NavLink"},Y={publisher:"kanonak.org",package_:"look",name:"target"},V={publisher:"kanonak.org",package_:"look",name:"bands"},pe={publisher:"kanonak.org",package_:"look",name:"title"},fe={publisher:"kanonak.org",package_:"look",name:"eyebrow"},de={publisher:"kanonak.org",package_:"look",name:"subtitle"},J={publisher:"kanonak.org",package_:"look",name:"badges"},x={publisher:"kanonak.org",package_:"look",name:"source"},ke={publisher:"kanonak.org",package_:"look",name:"chips"},B={publisher:"kanonak.org",package_:"look",name:"entries"},ge={publisher:"kanonak.org",package_:"look",name:"urlForm"},M=class{constructor(e){this.catalog=e}catalog;findCascadedLook(e){let t=new Set,n=L(e);for(;n.length>0;){let a=n.shift(),r=S(a.subject);if(t.has(r))continue;t.add(r);let o=v(this.catalog,a.subject);if(!o)continue;let i=Q(o);if(i)return{declaration:i,sourceClass:{publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name}};for(let c of A(o))n.push(c)}if(!t.has(S($))){let a=v(this.catalog,$);if(a){let r=Q(a);if(r)return{declaration:r,sourceClass:{...$}}}}}findCascadedTokens(e){let t=new Map;for(let[r,o]of H(e))t.has(r)||t.set(r,o);let n=new Set,a=L(e);for(;a.length>0;){let r=a.shift(),o=S(r.subject);if(n.has(o))continue;n.add(o);let i=ne(this.catalog,r.subject);if(i.length!==0)for(let c of i){for(let[u,l]of H(c))t.has(u)||t.set(u,l);for(let u of A(c))a.push(u)}}if(!n.has(S($))){let r=ne(this.catalog,$);for(let o of r)for(let[i,c]of H(o))t.has(i)||t.set(i,c)}return t}renderStylesheet(e){let t=this.findCascadedTokens(e),n=[];for(let[r,o]of t)n.push(` --kan-${r}: ${o};`);return`${n.length>0?`:root {
18
+ ${n.join(`
19
+ `)}
20
+ }`:":root { /* no tokens resolved */ }"}
21
+ ${me}`}renderHtml(e){let t=this.findCascadedLook(e);if(!t)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let n=X(t.declaration);if(n.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let a=te(e),r=[];for(let o of n)r.push(this.renderBand(o,e,a));return r.join(`
22
+ `)}renderDocument(e){let t=this.renderHtml(e),n=this.readPropertyValueText(e,I)??e.name,a=`${e.name}.css`,r=this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${p(e.name)}.svg" alt=""></figure>
23
+ `:"",o=te(e),i=this.renderNavGroup(e,o);return`<!doctype html>
24
+ <html lang="en">
25
+ <head>
26
+ <meta charset="utf-8">
27
+ <meta name="viewport" content="width=device-width, initial-scale=1">
28
+ <title>${p(n)}</title>
29
+ <link rel="stylesheet" href="${p(a)}">
30
+ </head>
31
+ <body>
32
+ ${i}
33
+ <main class="kan-main">
34
+ ${r}${t}
35
+ </main>
36
+ </body>
37
+ </html>
38
+ `}hasSvgDerivation(e){let t=new Set,n=L(e);for(;n.length>0;){let a=n.shift(),r=S(a.subject);if(t.has(r))continue;t.add(r);let o=v(this.catalog,a.subject);if(o){for(let i of o.statement)if(i instanceof k&&g(i,"kanonak.org","derivation","derivations")){for(let c of i.object??[])if(c instanceof K)for(let u of c.statement){if(!(u instanceof d)||!g(u,"kanonak.org","derivation","format")||!(u.object instanceof f))continue;let l=u.object.subject;if(l.publisher==="kanonak.org"&&l.package_==="formats"&&l.name==="svg")return!0}}for(let i of A(o))n.push(i)}}return!1}renderBand(e,t,n){let a=Z(e);return a?h(a,se)?this.renderHero(e,t,n):h(a,ie)?this.renderPropertyList(e,t,n):h(a,ce)?this.renderBadgeRow(e,t,n):h(a,ue)?this.renderChipRow(e,t,n):h(a,le)?this.renderReferenceList(e,t,n):h(a,q)?this.renderMarkdown(e,t):h(a,E)?this.renderNavGroup(t,n):`<!-- LookRenderer: unsupported band ${a.publisher}/${a.package_}/${a.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}renderNavGroup(e,t){let n=this.findNavGroupForPublisher(t);if(!n)return"";let a=R(n,B);if(!(a instanceof k))return"";let r=a.object??[];if(r.length===0)return"";let o=[];for(let i of r){if(!(i instanceof f))continue;let c=v(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name}),{href:u,label:l}=this.resolveNavEntry(i,c,t),b=`/${e.namespace?.split("/")[1]?.split("@")[0]}/${(e.namespace||"").split("@")[1]}/${e.name}`,U=u===b?' aria-current="page"':"";o.push(`<li><a class="kan-nav-link" href="${p(u)}"${U}>${p(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
39
+ ${o.join(`
40
+ `)}
41
+ </ul></nav>`}resolveNavEntry(e,t,n){if(t&&L(t).map(c=>c.subject).some(c=>c.publisher===N.publisher&&c.package_===N.package_&&c.name===N.name)){let c=w(t,I),u=R(t,Y);if(u instanceof d&&u.object instanceof f){let l=u.object,b=this.readLabelForUri({publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name});return{href:this.urlForReference(l,Y,n),label:c??b??l.subject.name}}}let a=F.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},"*",{contextPublisher:n}),r=t?w(t,I)??e.subject.name:e.subject.name;return{href:a,label:r}}findNavGroupForPublisher(e){for(let t of this.catalog){if(!(t instanceof y)||!(t.namespace||"").startsWith(`${e}/`))continue;if(L(t).map(o=>o.subject).some(o=>o.publisher===E.publisher&&o.package_===E.package_&&o.name===E.name))return t}}renderMarkdown(e,t){let n=m(e,x);if(!n)return"<!-- LookRenderer.Markdown: no look.source -->";let a=this.readPropertyValueText(t,n);return a?`<section class="kan-markdown">
42
+ ${D(a)}
43
+ </section>`:""}renderRawMarkdown(e){let t=this.findCascadedLook(e);if(!t)return;let n=X(t.declaration),a=[];for(let r of n){let o=Z(r);if(!o||!h(o,q))continue;let i=m(r,x);if(!i)continue;let c=this.readPropertyValueText(e,i);c&&a.push(c)}return a.length>0?a.join(`
44
+
45
+ `):void 0}renderHero(e,t,n){let a=['<header class="kan-hero">'],r=m(e,fe);if(r){let l=this.readPropertyValueText(t,r);l&&a.push(`<span class="kan-hero-eyebrow">${p(l)}</span>`)}let o=m(e,pe),i="";o&&(i=this.readPropertyValueText(t,o)??""),i||(i=t.name),a.push(`<h1 class="kan-hero-title">${p(i)}</h1>`);let c=m(e,de);if(c){let l=this.readPropertyValueText(t,c);l&&a.push(`<p class="kan-hero-subtitle">${p(l)}</p>`)}let u=m(e,J);if(u){let l=this.readPropertyValueReferences(t,u);if(l.length>0){let b=l.map(U=>this.renderBadge(U,J,n)).join("");a.push(`<div class="kan-hero-badges">${b}</div>`)}}return a.push("</header>"),a.join(`
46
+ `)}renderPropertyList(e,t,n){let a=m(e,x);if(!a)return"<!-- LookRenderer: PropertyList missing look.source -->";let r=this.readLabelForUri(a)??a.name,o=R(t,a),i=this.gatherValueItems(o),c=i.length>0?i.map(u=>`<li>${this.renderInlineValue(u,x,n)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${p(r)}</h3>`,`<ul class="kan-property-list-items">${c}</ul>`,"</section>"].join(`
47
+ `)}renderBadgeRow(e,t,n){let a=m(e,x);if(!a)return"<!-- LookRenderer: BadgeRow missing look.source -->";let r=this.readPropertyValueReferences(t,a);return r.length===0?"":`<div class="kan-badge-row">${r.map(i=>this.renderBadge(i,x,n)).join("")}</div>`}renderChipRow(e,t,n){let a=ee(e,ke);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let r=[];for(let o of a){let i=R(t,o);if(!i)continue;let c=this.readLabelForUri(o)??o.name,u=this.renderStatementInlineValue(i,o,n);u&&r.push(`<span class="kan-chip"><span class="kan-chip-key">${p(c)}</span> <span class="kan-chip-val">${u}</span></span>`)}return r.length===0?"":`<div class="kan-chip-row">${r.join("")}</div>`}renderReferenceList(e,t,n){let a=ee(e,B);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let r=[];for(let o of a){let i=this.readPropertyValueReferences(t,o);if(i.length===0)continue;let c=this.readLabelForUri(o)??o.name,u=i.map(l=>this.renderReferenceLink(l,B,n)).join(", ");r.push(`<dt>${p(c)}</dt><dd>${u}</dd>`)}return r.length===0?"":`<dl class="kan-reference-list">${r.join("")}</dl>`}readPropertyValueText(e,t){let n=R(e,t);if(n){if(n instanceof j)return n.object;if(n instanceof d){let a=n.object;return this.readLabelForUri({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name})??a.subject.name}if(n instanceof k)return(n.object??[]).map(r=>r instanceof f?this.readLabelForUri({publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name})??r.subject.name:r instanceof K?r.name??"":String(r)).filter(r=>r).join(", ")}}readPropertyValueReferences(e,t){let n=R(e,t);if(!n)return[];if(n instanceof d)return[n.object];if(n instanceof k){let a=[];for(let r of n.object??[])r instanceof f&&a.push(r);return a}return[]}gatherValueItems(e){return e?e instanceof k?e.object??[]:e instanceof d?[e.object]:e instanceof O?[e.object]:e instanceof j?[e.object]:[]:[]}renderInlineValue(e,t,n){return e instanceof f?this.renderReferenceLink(e,t,n):e instanceof K?p(e.name??"(embedded)"):typeof e=="string"?p(e):typeof e=="number"||typeof e=="boolean"?p(String(e)):""}renderStatementInlineValue(e,t,n){return e instanceof j?p(e.object):e instanceof d?this.renderReferenceLink(e.object,t,n):e instanceof k?(e.object??[]).map(r=>this.renderInlineValue(r,t,n)).filter(r=>r).join(", "):""}renderReferenceLink(e,t,n){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,r=this.urlForReference(e,t,n);return`<a class="kan-link" href="${p(r)}">${p(a)}</a>`}renderBadge(e,t,n){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,r=this.readCommentForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name}),o=this.urlForReference(e,t,n),i=r?` title="${p(r)}"`:"";return`<a class="kan-badge" href="${p(o)}"${i}>${p(a)}</a>`}urlForReference(e,t,n){let a=t?this.getUrlFormForProperty(t):"=";return F.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},a,{contextPublisher:n})}getUrlFormForProperty(e){let t=v(this.catalog,e);if(!t)return"=";let n=w(t,ge);return n==="*"||n==="^"||n==="~"||n==="="?n:"="}readLabelForUri(e){let t=v(this.catalog,e);if(t)return w(t,I)}readCommentForUri(e){let t=v(this.catalog,e);if(t)return w(t,oe)}};function H(s){let e=new Map;for(let t of s.statement){if(!(t instanceof O)||!g(t,C.publisher,C.package_,C.name))continue;let n=t.object;for(let a of n.statement){if(!(a instanceof j))continue;let r=a.predicate?.subject?.name;if(!r)continue;let o=a.object;e.has(r)||e.set(r,o)}}return e}function Q(s){for(let e of s.statement)if(e instanceof O&&g(e,P.publisher,P.package_,P.name))return e.object}function X(s){for(let e of s.statement){if(!(e instanceof k)||!g(e,V.publisher,V.package_,V.name))continue;let t=[];for(let n of e.object??[])n instanceof K&&t.push(n);return t}return[]}function Z(s){for(let e of s.statement)if(e instanceof d&&e.predicate?.subject?.name==="type"&&e.object instanceof f){let t=e.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function m(s,e){for(let t of s.statement)if(t instanceof d&&g(t,e.publisher,e.package_,e.name)&&t.object instanceof f){let n=t.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function ee(s,e){for(let t of s.statement){if(!(t instanceof k)||!g(t,e.publisher,e.package_,e.name))continue;let n=[];for(let a of t.object??[])a instanceof f&&n.push({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name});return n}return[]}function R(s,e){for(let t of s.statement)if(g(t,e.publisher,e.package_,e.name))return t}function w(s,e){for(let t of s.statement)if(t instanceof j&&g(t,e.publisher,e.package_,e.name))return t.object}function L(s){let e=[];for(let t of s.statement)if(t instanceof d){if(t.predicate?.subject?.name!=="type")continue;t.object instanceof f&&e.push(t.object)}else if(t instanceof k){if(t.predicate?.subject?.name!=="type")continue;for(let n of t.object??[])n instanceof f&&e.push(n)}return e}function A(s){let e=[];for(let t of s.statement)if(t instanceof d){if(t.predicate?.subject?.name!=="subClassOf")continue;t.object instanceof f&&e.push(t.object)}else if(t instanceof k){if(t.predicate?.subject?.name!=="subClassOf")continue;for(let n of t.object??[])n instanceof f&&e.push(n)}return e}function ne(s,e){let t=[];for(let n of s){if(!(n instanceof y)||n.name!==e.name)continue;(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&t.push(n)}return t}function v(s,e){let t="version"in e?e.version:void 0;if(t){let n=`${e.publisher}/${e.package_}@${t.major}.${t.minor}.${t.patch}`;for(let a of s)if(a instanceof y&&a.name===e.name&&a.namespace===n)return a}for(let n of s){if(!(n instanceof y)||n.name!==e.name)continue;if((n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return n}}function g(s,e,t,n){let a=s.predicate?.subject;return a?a.publisher===e&&a.package_===t&&a.name===n:!1}function h(s,e){return s.publisher===e.publisher&&s.package_===e.package_&&s.name===e.name}function S(s){return`${s.publisher}/${s.package_}/${s.name}`}function te(s){let e=s.namespace||"",t=e.indexOf("/");return t>=0?e.substring(0,t):e}function p(s){return s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}var me=`
48
+ * { box-sizing: border-box; }
49
+ body {
50
+ background: var(--kan-bg);
51
+ color: var(--kan-text);
52
+ font-family: var(--kan-font-body);
53
+ line-height: var(--kan-line-height-body);
54
+ margin: 0;
55
+ }
56
+ a { color: var(--kan-accent); text-decoration: none; }
57
+ a:hover { color: var(--kan-accent-hover); text-decoration: underline; }
58
+
59
+ /* Page layout */
60
+ .kan-main {
61
+ max-width: 860px;
62
+ margin: 0 auto;
63
+ padding: 0 24px 64px;
64
+ }
65
+
66
+ /* Site navigation chrome */
67
+ .kan-site-nav {
68
+ border-bottom: 1px solid var(--kan-border);
69
+ background: var(--kan-bg-card);
70
+ padding: 12px 24px;
71
+ margin-bottom: 24px;
72
+ }
73
+ .kan-site-nav ul {
74
+ list-style: none;
75
+ padding: 0;
76
+ margin: 0;
77
+ display: flex;
78
+ flex-wrap: wrap;
79
+ gap: 4px 24px;
80
+ max-width: 860px;
81
+ margin: 0 auto;
82
+ }
83
+ .kan-site-nav .kan-nav-link {
84
+ font-family: var(--kan-font-mono);
85
+ font-size: 13px;
86
+ color: var(--kan-text-dim);
87
+ letter-spacing: 0.04em;
88
+ padding: 4px 0;
89
+ text-decoration: none;
90
+ }
91
+ .kan-site-nav .kan-nav-link:hover {
92
+ color: var(--kan-accent);
93
+ }
94
+ .kan-site-nav .kan-nav-link[aria-current="page"] {
95
+ color: var(--kan-text);
96
+ border-bottom: 1px solid var(--kan-accent);
97
+ }
98
+
99
+ /* Figure (per-resource SVG) */
100
+ .kan-figure {
101
+ margin: 24px 0;
102
+ text-align: center;
103
+ }
104
+ .kan-figure img {
105
+ max-width: 100%;
106
+ height: auto;
107
+ }
108
+
109
+ /* Markdown band */
110
+ .kan-markdown { margin: 16px 0 32px; }
111
+ .kan-markdown h2 {
112
+ font-family: var(--kan-font-display);
113
+ font-size: 22px;
114
+ color: var(--kan-text);
115
+ margin: 32px 0 12px;
116
+ }
117
+ .kan-markdown h3 {
118
+ font-family: var(--kan-font-display);
119
+ font-size: 18px;
120
+ color: var(--kan-text);
121
+ margin: 24px 0 10px;
122
+ }
123
+ .kan-markdown p { margin: 12px 0; color: var(--kan-text-dim); }
124
+ .kan-markdown ul, .kan-markdown ol {
125
+ color: var(--kan-text-dim);
126
+ padding-left: 24px;
127
+ }
128
+ .kan-markdown li { margin: 6px 0; }
129
+ .kan-markdown strong { color: var(--kan-text); font-weight: 600; }
130
+ .kan-markdown code {
131
+ font-family: var(--kan-font-mono);
132
+ font-size: 0.9em;
133
+ background: var(--kan-bg-card);
134
+ padding: 1px 6px;
135
+ border-radius: var(--kan-radius-sm);
136
+ color: var(--kan-text);
137
+ }
138
+ .kan-markdown a { color: var(--kan-accent); }
139
+ .kan-markdown a:hover { color: var(--kan-accent-hover); text-decoration: underline; }
140
+
141
+ /* Hero band */
142
+ .kan-hero {
143
+ padding: 32px 0 24px;
144
+ border-bottom: 1px solid var(--kan-border);
145
+ margin-bottom: 32px;
146
+ }
147
+ .kan-hero-eyebrow {
148
+ font-family: var(--kan-font-mono);
149
+ font-size: 11px;
150
+ color: var(--kan-accent);
151
+ letter-spacing: 0.18em;
152
+ text-transform: uppercase;
153
+ margin-bottom: 12px;
154
+ display: block;
155
+ }
156
+ .kan-hero-title {
157
+ font-family: var(--kan-font-display);
158
+ font-size: 32px;
159
+ font-weight: 600;
160
+ letter-spacing: -0.015em;
161
+ margin: 0 0 12px;
162
+ line-height: var(--kan-line-height-heading);
163
+ color: var(--kan-text);
164
+ }
165
+ .kan-hero-subtitle {
166
+ font-size: 17px;
167
+ color: var(--kan-text-dim);
168
+ font-weight: 300;
169
+ line-height: 1.55;
170
+ margin: 0 0 16px;
171
+ }
172
+ .kan-hero-badges {
173
+ display: flex;
174
+ flex-wrap: wrap;
175
+ gap: 6px;
176
+ margin-top: 12px;
177
+ }
178
+
179
+ /* PropertyList band */
180
+ .kan-property-list {
181
+ margin: 24px 0;
182
+ }
183
+ .kan-property-list-title {
184
+ font-family: var(--kan-font-mono);
185
+ font-size: 11px;
186
+ letter-spacing: 0.18em;
187
+ text-transform: uppercase;
188
+ color: var(--kan-text-dim);
189
+ margin: 0 0 12px;
190
+ font-weight: 600;
191
+ }
192
+ .kan-property-list-items {
193
+ list-style: none;
194
+ padding: 0;
195
+ margin: 0;
196
+ display: flex;
197
+ flex-direction: column;
198
+ gap: 6px;
199
+ }
200
+ .kan-property-list-items > li {
201
+ color: var(--kan-text);
202
+ }
203
+ .kan-property-list-items > li.kan-empty {
204
+ color: var(--kan-text-faint);
205
+ font-style: italic;
206
+ }
207
+
208
+ /* BadgeRow band */
209
+ .kan-badge-row {
210
+ display: flex;
211
+ flex-wrap: wrap;
212
+ gap: 6px;
213
+ margin: 16px 0;
214
+ }
215
+
216
+ /* Badge (used by Hero badges + BadgeRow) */
217
+ .kan-badge {
218
+ display: inline-block;
219
+ padding: 2px 8px;
220
+ background: var(--kan-badge-bg);
221
+ color: var(--kan-badge-fg);
222
+ border-radius: var(--kan-radius-sm);
223
+ font-size: 11px;
224
+ font-weight: 500;
225
+ text-decoration: none;
226
+ letter-spacing: 0.02em;
227
+ }
228
+ .kan-badge:hover {
229
+ filter: brightness(1.1);
230
+ text-decoration: none;
231
+ }
232
+
233
+ /* ChipRow band */
234
+ .kan-chip-row {
235
+ display: flex;
236
+ flex-wrap: wrap;
237
+ gap: 8px;
238
+ margin: 16px 0;
239
+ }
240
+ .kan-chip {
241
+ display: inline-flex;
242
+ align-items: center;
243
+ gap: 6px;
244
+ padding: 5px 10px;
245
+ background: var(--kan-bg-card);
246
+ border: 1px solid var(--kan-border);
247
+ border-radius: var(--kan-radius-sm);
248
+ font-family: var(--kan-font-mono);
249
+ font-size: 11px;
250
+ text-transform: uppercase;
251
+ letter-spacing: 0.04em;
252
+ }
253
+ .kan-chip-key { color: var(--kan-text-faint); }
254
+ .kan-chip-val { color: var(--kan-text); font-weight: 500; }
255
+
256
+ /* ReferenceList band */
257
+ dl.kan-reference-list {
258
+ display: grid;
259
+ grid-template-columns: max-content 1fr;
260
+ gap: 8px 16px;
261
+ margin: 16px 0;
262
+ padding: 16px 18px;
263
+ background: var(--kan-bg-card);
264
+ border: 1px solid var(--kan-border);
265
+ border-radius: var(--kan-radius);
266
+ }
267
+ dl.kan-reference-list dt {
268
+ font-family: var(--kan-font-mono);
269
+ font-size: 11px;
270
+ text-transform: uppercase;
271
+ letter-spacing: 0.1em;
272
+ color: var(--kan-text-faint);
273
+ align-self: center;
274
+ }
275
+ dl.kan-reference-list dd { margin: 0; align-self: center; }
276
+
277
+ /* Link (used by reference values across bands) */
278
+ .kan-link {
279
+ color: var(--kan-accent);
280
+ text-decoration: none;
281
+ }
282
+ .kan-link:hover {
283
+ color: var(--kan-accent-hover);
284
+ text-decoration: underline;
285
+ }
286
+ `.trim();export{D as a,M as b};
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as Ze,b as Qe,c as et,d as tt,e as rt,f as nt,g as ot,h as at,i as it,j as st}from"./chunk-JLFC6WKB.js";import{b as Yt}from"./chunk-LBNJCQ7K.js";import{a as qe,b as Ye,c as Xe,d as b,e as S,f as i}from"./chunk-POFL6NMI.js";import{a as qt}from"./chunk-BQOD26BC.js";import{a as Te,b as je,c as Le,d as Fe,e as Ne}from"./chunk-AZSZXLEH.js";import{a as Be,b as De,c as Oe,d as Ae}from"./chunk-AV4AVTI6.js";import{a as lt,b as dt,c as ut,d as pt}from"./chunk-TWIWVG7W.js";import{a as Je,b as mt,c as ft,d as yt,e as ht}from"./chunk-4TJZIM7A.js";import{a as gt}from"./chunk-NIGFQYVA.js";import{A as Mt,B as zt,C as Gt,D as Wt,E as Jt,a as kt,b as bt,c as St,d as Ct,e as Pt,f as Rt,g as wt,h as xt,i as $t,j as vt,k as Et,l as Kt,m as Bt,n as It,o as Tt,p as jt,q as Lt,r as Ft,s as Nt,t as Dt,u as Ot,v as At,w as Ut,x as Vt,y as Ht,z as _t}from"./chunk-MV2LZFUK.js";import"./chunk-FJ35VIV6.js";import{a as F,b as D,c as Me,e as We}from"./chunk-QIIQ4G2Q.js";import{a as Ue,b as j,c as L,d as N,e as He,f as _e,g as O,h as A,i as U,j as V,k as H,l as _}from"./chunk-W6T7MOKY.js";import{a as Ie}from"./chunk-MYITGTGJ.js";import{a as Pe,b as Re,c as we,d as xe,e as $e,f as ve,g as Ee,h as Ke}from"./chunk-FQHALFRR.js";import{b as ze,c as Ge}from"./chunk-5ILSX24H.js";import{a as Ve}from"./chunk-FUUTGGJS.js";import{a as ct}from"./chunk-ODIECDN7.js";import{VersionOperator as oo}from"@kanonak-protocol/types/document/models/enums";import{existsSync as fr,readFileSync as yr}from"fs";import{homedir as gr}from"os";import{join as hr}from"path";import{execFile as Xt}from"child_process";import{promisify as Zt}from"util";var C=Zt(Xt),P="kanonak",R="/usr/bin/security",p=class{async get(e){let r=i(e);try{let{stdout:n}=await C(R,["find-generic-password","-s",P,"-a",r,"-w"],{timeout:1e4});try{return JSON.parse(n.trim())}catch{throw new Error(`Stored credential for '${r}' is corrupted (not valid JSON).
1
+ import{a as Ze,b as Qe,c as et,d as tt,e as rt,f as nt,g as ot,h as at,i as it,j as st}from"./chunk-JLFC6WKB.js";import{b as Yt}from"./chunk-TRD63EIT.js";import{a as qe,b as Ye,c as Xe,d as b,e as S,f as i}from"./chunk-POFL6NMI.js";import{a as qt}from"./chunk-BQOD26BC.js";import{a as Te,b as je,c as Le,d as Fe,e as Ne}from"./chunk-AZSZXLEH.js";import{a as Be,b as De,c as Oe,d as Ae}from"./chunk-AV4AVTI6.js";import{a as lt,b as dt,c as ut,d as pt}from"./chunk-TWIWVG7W.js";import{a as Je,b as mt,c as ft,d as yt,e as ht}from"./chunk-4TJZIM7A.js";import{a as gt}from"./chunk-NIGFQYVA.js";import{A as Mt,B as zt,C as Gt,D as Wt,E as Jt,a as kt,b as bt,c as St,d as Ct,e as Pt,f as Rt,g as wt,h as xt,i as $t,j as vt,k as Et,l as Kt,m as Bt,n as It,o as Tt,p as jt,q as Lt,r as Ft,s as Nt,t as Dt,u as Ot,v as At,w as Ut,x as Vt,y as Ht,z as _t}from"./chunk-MV2LZFUK.js";import"./chunk-FJ35VIV6.js";import{a as F,b as D,c as Me,e as We}from"./chunk-QIIQ4G2Q.js";import{a as Ue,b as j,c as L,d as N,e as He,f as _e,g as O,h as A,i as U,j as V,k as H,l as _}from"./chunk-W6T7MOKY.js";import{a as Ie}from"./chunk-MYITGTGJ.js";import{a as Pe,b as Re,c as we,d as xe,e as $e,f as ve,g as Ee,h as Ke}from"./chunk-FQHALFRR.js";import{b as ze,c as Ge}from"./chunk-5ILSX24H.js";import{a as Ve}from"./chunk-FUUTGGJS.js";import{a as ct}from"./chunk-ODIECDN7.js";import{VersionOperator as oo}from"@kanonak-protocol/types/document/models/enums";import{existsSync as fr,readFileSync as yr}from"fs";import{homedir as gr}from"os";import{join as hr}from"path";import{execFile as Xt}from"child_process";import{promisify as Zt}from"util";var C=Zt(Xt),P="kanonak",R="/usr/bin/security",p=class{async get(e){let r=i(e);try{let{stdout:n}=await C(R,["find-generic-password","-s",P,"-a",r,"-w"],{timeout:1e4});try{return JSON.parse(n.trim())}catch{throw new Error(`Stored credential for '${r}' is corrupted (not valid JSON).
2
2
  Run 'kanonak logout ${r}' then 'kanonak login ${r}' to fix.`)}}catch(n){if(X(n,44))return null;throw new Error(`macOS Keychain read failed for '${r}': ${w(n)}
3
3
  The Keychain may be locked or inaccessible.
4
4
  Try unlocking it via Keychain Access.app or running 'security unlock-keychain'.`)}}async store(e,r){let n=i(e),o=JSON.stringify(r);try{await C(R,["add-generic-password","-s",P,"-a",n,"-U","-w",o],{timeout:1e4})}catch(a){throw new Error(`macOS Keychain write failed for '${n}': ${w(a)}
@@ -1,4 +1,4 @@
1
- import{b as E,c as F,d as f,f as M}from"../chunk-2JQMUZWN.js";import{a as X,b as ye}from"../chunk-LBNJCQ7K.js";import{a as Oe}from"../chunk-BQOD26BC.js";import"../chunk-TWIWVG7W.js";import"../chunk-NIGFQYVA.js";import{a as Ue}from"../chunk-FJ35VIV6.js";import{a as C,c as Re,e as Ce}from"../chunk-QIIQ4G2Q.js";import{b as K,c as w,d as b,g as L,h as U,i as O,j,k as T,l as S}from"../chunk-W6T7MOKY.js";import{a as Le}from"../chunk-MYITGTGJ.js";import"../chunk-5ILSX24H.js";import"../chunk-FUUTGGJS.js";var gt="kanonak.org",yt="document-ast",m=t=>({publisher:gt,package_:yt,name:t}),k={Document:m("Document"),Block:m("Block"),Inline:m("Inline"),StructuredValue:m("StructuredValue"),Heading:m("Heading"),Paragraph:m("Paragraph"),RawBlock:m("RawBlock"),Text:m("Text"),StructuredMap:m("StructuredMap"),StructuredEntry:m("StructuredEntry"),StructuredList:m("StructuredList"),StringScalar:m("StringScalar"),IntegerScalar:m("IntegerScalar"),EscapeHint:m("EscapeHint"),MediaType:m("MediaType"),metadata:m("metadata"),children:m("children"),level:m("level"),inlines:m("inlines"),text:m("text"),entries:m("entries"),key:m("key"),value:m("value"),escapeHint:m("escapeHint"),items:m("items"),stringValue:m("stringValue"),integerValue:m("integerValue"),rawContent:m("rawContent"),mediaType:m("mediaType"),mimeType:m("mimeType"),ESC_RAW:m("esc-raw"),ESC_YAML_SAFE:m("esc-yaml-safe"),ESC_TOML_STRING:m("esc-toml-string"),ESC_TOML_MULTILINE:m("esc-toml-multiline"),ESC_JSON:m("esc-json"),ESC_DYNAMODB_BOOL:m("esc-dynamodb-bool"),ESC_DYNAMODB_NUMBER:m("esc-dynamodb-number"),ESC_DYNAMODB_NULL:m("esc-dynamodb-null"),TEXT_PLAIN:m("text-plain"),TEXT_MARKDOWN:m("text-markdown"),TEXT_HTML:m("text-html"),TEXT_CSS:m("text-css"),APPLICATION_JSON:m("application-json"),TEXT_YAML:m("text-yaml"),IMAGE_SVG_XML:m("image-svg-xml"),ResourceLink:m("ResourceLink"),target:m("target"),linkLabel:m("linkLabel"),PropertyList:m("PropertyList"),propertyEntries:m("propertyEntries"),PropertyEntry:m("PropertyEntry"),propertyKey:m("propertyKey"),propertyValue:m("propertyValue"),Table:m("Table"),tableColumnLabels:m("tableColumnLabels"),tableRows:m("tableRows"),TableRow:m("TableRow"),tableCells:m("tableCells")};function Ne(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var Y=class{backendUri="kanonak.org/transformations/markdown-with-frontmatter";render(e,n){let r=kt(e.metadata,n),a=wt(e.children),u=["---",...r,"---","",a].join(`
1
+ import{b as E,c as F,d as f,f as M}from"../chunk-2JQMUZWN.js";import{a as X,b as ye}from"../chunk-TRD63EIT.js";import{a as Oe}from"../chunk-BQOD26BC.js";import"../chunk-TWIWVG7W.js";import"../chunk-NIGFQYVA.js";import{a as Ue}from"../chunk-FJ35VIV6.js";import{a as C,c as Re,e as Ce}from"../chunk-QIIQ4G2Q.js";import{b as K,c as w,d as b,g as L,h as U,i as O,j,k as T,l as S}from"../chunk-W6T7MOKY.js";import{a as Le}from"../chunk-MYITGTGJ.js";import"../chunk-5ILSX24H.js";import"../chunk-FUUTGGJS.js";var gt="kanonak.org",yt="document-ast",m=t=>({publisher:gt,package_:yt,name:t}),k={Document:m("Document"),Block:m("Block"),Inline:m("Inline"),StructuredValue:m("StructuredValue"),Heading:m("Heading"),Paragraph:m("Paragraph"),RawBlock:m("RawBlock"),Text:m("Text"),StructuredMap:m("StructuredMap"),StructuredEntry:m("StructuredEntry"),StructuredList:m("StructuredList"),StringScalar:m("StringScalar"),IntegerScalar:m("IntegerScalar"),EscapeHint:m("EscapeHint"),MediaType:m("MediaType"),metadata:m("metadata"),children:m("children"),level:m("level"),inlines:m("inlines"),text:m("text"),entries:m("entries"),key:m("key"),value:m("value"),escapeHint:m("escapeHint"),items:m("items"),stringValue:m("stringValue"),integerValue:m("integerValue"),rawContent:m("rawContent"),mediaType:m("mediaType"),mimeType:m("mimeType"),ESC_RAW:m("esc-raw"),ESC_YAML_SAFE:m("esc-yaml-safe"),ESC_TOML_STRING:m("esc-toml-string"),ESC_TOML_MULTILINE:m("esc-toml-multiline"),ESC_JSON:m("esc-json"),ESC_DYNAMODB_BOOL:m("esc-dynamodb-bool"),ESC_DYNAMODB_NUMBER:m("esc-dynamodb-number"),ESC_DYNAMODB_NULL:m("esc-dynamodb-null"),TEXT_PLAIN:m("text-plain"),TEXT_MARKDOWN:m("text-markdown"),TEXT_HTML:m("text-html"),TEXT_CSS:m("text-css"),APPLICATION_JSON:m("application-json"),TEXT_YAML:m("text-yaml"),IMAGE_SVG_XML:m("image-svg-xml"),ResourceLink:m("ResourceLink"),target:m("target"),linkLabel:m("linkLabel"),PropertyList:m("PropertyList"),propertyEntries:m("propertyEntries"),PropertyEntry:m("PropertyEntry"),propertyKey:m("propertyKey"),propertyValue:m("propertyValue"),Table:m("Table"),tableColumnLabels:m("tableColumnLabels"),tableRows:m("tableRows"),TableRow:m("TableRow"),tableCells:m("tableCells")};function Ne(t,e){return t.publisher===e.publisher&&t.package_===e.package_&&t.name===e.name}var Y=class{backendUri="kanonak.org/transformations/markdown-with-frontmatter";render(e,n){let r=kt(e.metadata,n),a=wt(e.children),u=["---",...r,"---","",a].join(`
2
2
  `);return n?.trailingNewline&&(u.endsWith(`
3
3
  `)||(u+=`
4
4
  `)),u}};function kt(t,e){if(!t)return[];let n=new Map;for(let c of t.entries)n.set(ue(c.key),c);let r=new Map;if(e?.metadataRenames)for(let[c,l]of e.metadataRenames)r.set(ue(c),l);let i=(e?.metadataKeys??t.entries.map(c=>c.key)).map(ue),u=[];for(let c of i){let l=n.get(c);if(!l)continue;let p=r.get(c),y=ue(p??c),h=Ie(l.value,l.escapeHint);h!==void 0&&u.push(`${y}: ${h}`)}return u}function ue(t){let e=t.lastIndexOf(".");return e===-1?t:t.substring(e+1)||t}function Ie(t,e){switch(t.kind){case"StringScalar":return ht(t.stringValue,e);case"IntegerScalar":return String(t.integerValue);case"StructuredList":{let n=[];for(let r of t.items){let a=Ie(r,e);a!==void 0&&n.push(a)}return n.join(", ")}case"StructuredMap":return;default:return}}function ht(t,e){return!e||Ne(e,k.ESC_RAW)?t:Ne(e,k.ESC_YAML_SAFE)?bt(t):t}function bt(t){return t.includes(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kanonak-protocol/sdk",
3
- "version": "3.28.2",
3
+ "version": "3.28.3",
4
4
  "description": "Kanonak Protocol SDK - Document repository and parsing implementations for TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -113,7 +113,7 @@
113
113
  "yaml-parser"
114
114
  ],
115
115
  "dependencies": {
116
- "@kanonak-protocol/types": "^3.28.2",
116
+ "@kanonak-protocol/types": "^3.28.3",
117
117
  "ignore": "^7.0.5",
118
118
  "js-yaml": "^4.1.0",
119
119
  "yaml": "^2.7.0"
@@ -1,204 +0,0 @@
1
- import{a as T}from"./chunk-NIGFQYVA.js";import{a as $}from"./chunk-QIIQ4G2Q.js";import{c as y,d as f,g as v,j as d,k as O,l as g}from"./chunk-W6T7MOKY.js";function G(s){let e=s.replace(/\r\n/g,`
2
- `).split(`
3
- `),t=[],n=0;for(;n<e.length;){let r=e[n];if(r.trim()===""){n++;continue}let a=/^(\s*)```(\S*)\s*$/.exec(r);if(a){let c=a[2],u=[];for(n++;n<e.length&&!/^(\s*)```\s*$/.test(e[n]);)u.push(e[n]),n++;n++;let l=W(u.join(`
4
- `)),b=c?` class="language-${z(c)}"`:"";t.push(`<pre><code${b}>${l}</code></pre>`);continue}let o=/^(#{1,6})\s+(.*)$/.exec(r);if(o){let c=o[1].length,u=_(o[2].trim());t.push(`<h${c}>${u}</h${c}>`),n++;continue}if(r.includes("|")&&n+1<e.length&&D(e[n+1])){let c=F(r),u=re(e[n+1]);n+=2;let l=[];for(;n<e.length&&e[n].trim()!==""&&e[n].includes("|");)l.push(F(e[n])),n++;t.push(ae(c,u,l));continue}if(/^\s*[-*]\s+/.test(r)){let c=[];for(;n<e.length&&/^\s*[-*]\s+/.test(e[n]);){let u=[e[n].replace(/^\s*[-*]\s+/,"")];for(n++;n<e.length&&e[n].trim()!==""&&!/^\s*[-*]\s+/.test(e[n])&&!/^\s*\d+\.\s+/.test(e[n]);)u.push(e[n]),n++;n<e.length&&e[n].trim()===""&&n++,c.push(`<li>${_(u.join(" ").trim())}</li>`)}t.push(`<ul>
5
- ${c.join(`
6
- `)}
7
- </ul>`);continue}if(/^\s*\d+\.\s+/.test(r)){let c=[];for(;n<e.length&&/^\s*\d+\.\s+/.test(e[n]);){let u=[e[n].replace(/^\s*\d+\.\s+/,"")];for(n++;n<e.length&&e[n].trim()!==""&&!/^\s*\d+\.\s+/.test(e[n])&&!/^\s*[-*]\s+/.test(e[n]);)u.push(e[n]),n++;n<e.length&&e[n].trim()===""&&n++,c.push(`<li>${_(u.join(" ").trim())}</li>`)}t.push(`<ol>
8
- ${c.join(`
9
- `)}
10
- </ol>`);continue}let i=[r];for(n++;n<e.length&&e[n].trim()!==""&&!/^(#{1,6})\s+/.test(e[n])&&!/^(\s*)```/.test(e[n])&&!/^\s*[-*]\s+/.test(e[n])&&!/^\s*\d+\.\s+/.test(e[n])&&!(e[n].includes("|")&&n+1<e.length&&D(e[n+1]));)i.push(e[n]),n++;t.push(`<p>${_(i.join(" "))}</p>`)}return t.join(`
11
- `)}function D(s){return s.includes("-")?/^[\s|:-]+$/.test(s):!1}function F(s){let e=s.trim();return e.startsWith("|")&&(e=e.slice(1)),e.endsWith("|")&&(e=e.slice(0,-1)),e.split("|").map(t=>t.trim())}function re(s){return F(s).map(e=>{let t=e.startsWith(":"),n=e.endsWith(":");return t&&n?"center":n?"right":t?"left":null})}function ae(s,e,t){let n=o=>{let i=e[o];return i?` style="text-align:${i}"`:""},r=s.map((o,i)=>`<th${n(i)}>${_(o)}</th>`).join(""),a=t.map(o=>`<tr>${o.map((c,u)=>`<td${n(u)}>${_(c)}</td>`).join("")}</tr>`).join(`
12
- `);return`<table>
13
- <thead><tr>${r}</tr></thead>
14
- <tbody>
15
- ${a}
16
- </tbody>
17
- </table>`}function _(s){let e=W(s);return e=e.replace(/`([^`\n]+)`/g,(t,n)=>`<code>${n}</code>`),e=e.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(t,n,r)=>`<a href="${z(r)}">${n}</a>`),e=e.replace(/\*\*([^*\n]+)\*\*/g,(t,n)=>`<strong>${n}</strong>`),e=e.replace(/(^|[^*])\*([^*\n]+)\*(?!\*)/g,(t,n,r)=>`${n}<em>${r}</em>`),e=e.replace(/(^|[\s(])_([^_\n]+)_(?=[\s).,;:!?]|$)/g,(t,n,r)=>`${n}<em>${r}</em>`),e}function W(s){return s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function z(s){return s.replace(/"/g,"&quot;").replace(/&/g,"&amp;")}var P={publisher:"kanonak.org",package_:"derivation",name:"look"},C={publisher:"kanonak.org",package_:"derivation",name:"tokens"},x={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},I={publisher:"kanonak.org",package_:"core-rdf",name:"label"},oe={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},se={publisher:"kanonak.org",package_:"look",name:"Hero"},ie={publisher:"kanonak.org",package_:"look",name:"PropertyList"},ce={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},ue={publisher:"kanonak.org",package_:"look",name:"ChipRow"},le={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},q={publisher:"kanonak.org",package_:"look",name:"Markdown"},E={publisher:"kanonak.org",package_:"look",name:"NavGroup"},N={publisher:"kanonak.org",package_:"look",name:"NavLink"},Y={publisher:"kanonak.org",package_:"look",name:"target"},V={publisher:"kanonak.org",package_:"look",name:"bands"},pe={publisher:"kanonak.org",package_:"look",name:"title"},fe={publisher:"kanonak.org",package_:"look",name:"eyebrow"},de={publisher:"kanonak.org",package_:"look",name:"subtitle"},J={publisher:"kanonak.org",package_:"look",name:"badges"},R={publisher:"kanonak.org",package_:"look",name:"source"},ge={publisher:"kanonak.org",package_:"look",name:"chips"},B={publisher:"kanonak.org",package_:"look",name:"entries"},ke={publisher:"kanonak.org",package_:"look",name:"urlForm"},M=class{constructor(e){this.catalog=e}catalog;findCascadedLook(e){let t=new Set,n=S(e);for(;n.length>0;){let r=n.shift(),a=w(r.subject);if(t.has(a))continue;t.add(a);let o=j(this.catalog,r.subject);if(!o)continue;let i=Q(o);if(i)return{declaration:i,sourceClass:{publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name}};for(let c of A(o))n.push(c)}if(!t.has(w(x))){let r=j(this.catalog,x);if(r){let a=Q(r);if(a)return{declaration:a,sourceClass:{...x}}}}}findCascadedTokens(e){let t=new Map;for(let[a,o]of H(e))t.has(a)||t.set(a,o);let n=new Set,r=S(e);for(;r.length>0;){let a=r.shift(),o=w(a.subject);if(n.has(o))continue;n.add(o);let i=ne(this.catalog,a.subject);if(i.length!==0)for(let c of i){for(let[u,l]of H(c))t.has(u)||t.set(u,l);for(let u of A(c))r.push(u)}}if(!n.has(w(x))){let a=ne(this.catalog,x);for(let o of a)for(let[i,c]of H(o))t.has(i)||t.set(i,c)}return t}renderStylesheet(e){let t=this.findCascadedTokens(e),n=[];for(let[a,o]of t)n.push(` --kan-${a}: ${o};`);return`${n.length>0?`:root {
18
- ${n.join(`
19
- `)}
20
- }`:":root { /* no tokens resolved */ }"}
21
- ${me}`}renderHtml(e){let t=this.findCascadedLook(e);if(!t)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let n=X(t.declaration);if(n.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let r=te(e),a=[];for(let o of n)a.push(this.renderBand(o,e,r));return a.join(`
22
- `)}renderDocument(e){let t=this.renderHtml(e),n=this.readPropertyValueText(e,I)??e.name,r=`${e.name}.css`,a=this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${p(e.name)}.svg" alt=""></figure>
23
- `:"",o=te(e),i=this.renderNavGroup(e,o);return`<!doctype html>
24
- <html lang="en">
25
- <head>
26
- <meta charset="utf-8">
27
- <meta name="viewport" content="width=device-width, initial-scale=1">
28
- <title>${p(n)}</title>
29
- <link rel="stylesheet" href="${p(r)}">
30
- </head>
31
- <body>
32
- ${i}
33
- <main class="kan-main">
34
- ${a}${t}
35
- </main>
36
- </body>
37
- </html>
38
- `}hasSvgDerivation(e){let t=new Set,n=S(e);for(;n.length>0;){let r=n.shift(),a=w(r.subject);if(t.has(a))continue;t.add(a);let o=j(this.catalog,r.subject);if(o){for(let i of o.statement)if(i instanceof g&&k(i,"kanonak.org","derivation","derivations")){for(let c of i.object??[])if(c instanceof $)for(let u of c.statement){if(!(u instanceof d)||!k(u,"kanonak.org","derivation","format")||!(u.object instanceof f))continue;let l=u.object.subject;if(l.publisher==="kanonak.org"&&l.package_==="formats"&&l.name==="svg")return!0}}for(let i of A(o))n.push(i)}}return!1}renderBand(e,t,n){let r=Z(e);return r?h(r,se)?this.renderHero(e,t,n):h(r,ie)?this.renderPropertyList(e,t,n):h(r,ce)?this.renderBadgeRow(e,t,n):h(r,ue)?this.renderChipRow(e,t,n):h(r,le)?this.renderReferenceList(e,t,n):h(r,q)?this.renderMarkdown(e,t):h(r,E)?this.renderNavGroup(t,n):`<!-- LookRenderer: unsupported band ${r.publisher}/${r.package_}/${r.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}renderNavGroup(e,t){let n=this.findNavGroupForPublisher(t);if(!n)return"";let r=K(n,B);if(!(r instanceof g))return"";let a=r.object??[];if(a.length===0)return"";let o=[];for(let i of a){if(!(i instanceof f))continue;let c=j(this.catalog,{publisher:i.subject.publisher,package_:i.subject.package_,name:i.subject.name}),{href:u,label:l}=this.resolveNavEntry(i,c,t),b=`/${e.namespace?.split("/")[1]?.split("@")[0]}/${(e.namespace||"").split("@")[1]}/${e.name}`,U=u===b?' aria-current="page"':"";o.push(`<li><a class="kan-nav-link" href="${p(u)}"${U}>${p(l)}</a></li>`)}return`<nav class="kan-site-nav"><ul>
39
- ${o.join(`
40
- `)}
41
- </ul></nav>`}resolveNavEntry(e,t,n){if(t&&S(t).map(c=>c.subject).some(c=>c.publisher===N.publisher&&c.package_===N.package_&&c.name===N.name)){let c=L(t,I),u=K(t,Y);if(u instanceof d&&u.object instanceof f){let l=u.object,b=this.readLabelForUri({publisher:l.subject.publisher,package_:l.subject.package_,name:l.subject.name});return{href:this.urlForReference(l,Y,n),label:c??b??l.subject.name}}}let r=T.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},"*",{contextPublisher:n}),a=t?L(t,I)??e.subject.name:e.subject.name;return{href:r,label:a}}findNavGroupForPublisher(e){for(let t of this.catalog){if(!(t instanceof y)||!(t.namespace||"").startsWith(`${e}/`))continue;if(S(t).map(o=>o.subject).some(o=>o.publisher===E.publisher&&o.package_===E.package_&&o.name===E.name))return t}}renderMarkdown(e,t){let n=m(e,R);if(!n)return"<!-- LookRenderer.Markdown: no look.source -->";let r=this.readPropertyValueText(t,n);return r?`<section class="kan-markdown">
42
- ${G(r)}
43
- </section>`:""}renderRawMarkdown(e){let t=this.findCascadedLook(e);if(!t)return;let n=X(t.declaration),r=[];for(let a of n){let o=Z(a);if(!o||!h(o,q))continue;let i=m(a,R);if(!i)continue;let c=this.readPropertyValueText(e,i);c&&r.push(c)}return r.length>0?r.join(`
44
-
45
- `):void 0}renderHero(e,t,n){let r=['<header class="kan-hero">'],a=m(e,fe);if(a){let l=this.readPropertyValueText(t,a);l&&r.push(`<span class="kan-hero-eyebrow">${p(l)}</span>`)}let o=m(e,pe),i="";o&&(i=this.readPropertyValueText(t,o)??""),i||(i=t.name),r.push(`<h1 class="kan-hero-title">${p(i)}</h1>`);let c=m(e,de);if(c){let l=this.readPropertyValueText(t,c);l&&r.push(`<p class="kan-hero-subtitle">${p(l)}</p>`)}let u=m(e,J);if(u){let l=this.readPropertyValueReferences(t,u);if(l.length>0){let b=l.map(U=>this.renderBadge(U,J,n)).join("");r.push(`<div class="kan-hero-badges">${b}</div>`)}}return r.push("</header>"),r.join(`
46
- `)}renderPropertyList(e,t,n){let r=m(e,R);if(!r)return"<!-- LookRenderer: PropertyList missing look.source -->";let a=this.readLabelForUri(r)??r.name,o=K(t,r),i=this.gatherValueItems(o),c=i.length>0?i.map(u=>`<li>${this.renderInlineValue(u,R,n)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${p(a)}</h3>`,`<ul class="kan-property-list-items">${c}</ul>`,"</section>"].join(`
47
- `)}renderBadgeRow(e,t,n){let r=m(e,R);if(!r)return"<!-- LookRenderer: BadgeRow missing look.source -->";let a=this.readPropertyValueReferences(t,r);return a.length===0?"":`<div class="kan-badge-row">${a.map(i=>this.renderBadge(i,R,n)).join("")}</div>`}renderChipRow(e,t,n){let r=ee(e,ge);if(r.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let a=[];for(let o of r){let i=K(t,o);if(!i)continue;let c=this.readLabelForUri(o)??o.name,u=this.renderStatementInlineValue(i,o,n);u&&a.push(`<span class="kan-chip"><span class="kan-chip-key">${p(c)}</span> <span class="kan-chip-val">${u}</span></span>`)}return a.length===0?"":`<div class="kan-chip-row">${a.join("")}</div>`}renderReferenceList(e,t,n){let r=ee(e,B);if(r.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let a=[];for(let o of r){let i=this.readPropertyValueReferences(t,o);if(i.length===0)continue;let c=this.readLabelForUri(o)??o.name,u=i.map(l=>this.renderReferenceLink(l,B,n)).join(", ");a.push(`<dt>${p(c)}</dt><dd>${u}</dd>`)}return a.length===0?"":`<dl class="kan-reference-list">${a.join("")}</dl>`}readPropertyValueText(e,t){let n=K(e,t);if(n){if(n instanceof v)return n.object;if(n instanceof d){let r=n.object;return this.readLabelForUri({publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name})??r.subject.name}if(n instanceof g)return(n.object??[]).map(a=>a instanceof f?this.readLabelForUri({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name})??a.subject.name:a instanceof $?a.name??"":String(a)).filter(a=>a).join(", ")}}readPropertyValueReferences(e,t){let n=K(e,t);if(!n)return[];if(n instanceof d)return[n.object];if(n instanceof g){let r=[];for(let a of n.object??[])a instanceof f&&r.push(a);return r}return[]}gatherValueItems(e){return e?e instanceof g?e.object??[]:e instanceof d?[e.object]:e instanceof O?[e.object]:e instanceof v?[e.object]:[]:[]}renderInlineValue(e,t,n){return e instanceof f?this.renderReferenceLink(e,t,n):e instanceof $?p(e.name??"(embedded)"):typeof e=="string"?p(e):typeof e=="number"||typeof e=="boolean"?p(String(e)):""}renderStatementInlineValue(e,t,n){return e instanceof v?p(e.object):e instanceof d?this.renderReferenceLink(e.object,t,n):e instanceof g?(e.object??[]).map(a=>this.renderInlineValue(a,t,n)).filter(a=>a).join(", "):""}renderReferenceLink(e,t,n){let r=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,a=this.urlForReference(e,t,n);return`<a class="kan-link" href="${p(a)}">${p(r)}</a>`}renderBadge(e,t,n){let r=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,a=this.readCommentForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name}),o=this.urlForReference(e,t,n),i=a?` title="${p(a)}"`:"";return`<a class="kan-badge" href="${p(o)}"${i}>${p(r)}</a>`}urlForReference(e,t,n){let r=t?this.getUrlFormForProperty(t):"=";return T.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},r,{contextPublisher:n})}getUrlFormForProperty(e){let t=j(this.catalog,e);if(!t)return"=";let n=L(t,ke);return n==="*"||n==="^"||n==="~"||n==="="?n:"="}readLabelForUri(e){let t=j(this.catalog,e);if(t)return L(t,I)}readCommentForUri(e){let t=j(this.catalog,e);if(t)return L(t,oe)}};function H(s){let e=new Map;for(let t of s.statement){if(!(t instanceof O)||!k(t,C.publisher,C.package_,C.name))continue;let n=t.object;for(let r of n.statement){if(!(r instanceof v))continue;let a=r.predicate?.subject?.name;if(!a)continue;let o=r.object;e.has(a)||e.set(a,o)}}return e}function Q(s){for(let e of s.statement)if(e instanceof O&&k(e,P.publisher,P.package_,P.name))return e.object}function X(s){for(let e of s.statement){if(!(e instanceof g)||!k(e,V.publisher,V.package_,V.name))continue;let t=[];for(let n of e.object??[])n instanceof $&&t.push(n);return t}return[]}function Z(s){for(let e of s.statement)if(e instanceof d&&e.predicate?.subject?.name==="type"&&e.object instanceof f){let t=e.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function m(s,e){for(let t of s.statement)if(t instanceof d&&k(t,e.publisher,e.package_,e.name)&&t.object instanceof f){let n=t.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function ee(s,e){for(let t of s.statement){if(!(t instanceof g)||!k(t,e.publisher,e.package_,e.name))continue;let n=[];for(let r of t.object??[])r instanceof f&&n.push({publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name});return n}return[]}function K(s,e){for(let t of s.statement)if(k(t,e.publisher,e.package_,e.name))return t}function L(s,e){for(let t of s.statement)if(t instanceof v&&k(t,e.publisher,e.package_,e.name))return t.object}function S(s){let e=[];for(let t of s.statement)if(t instanceof d){if(t.predicate?.subject?.name!=="type")continue;t.object instanceof f&&e.push(t.object)}else if(t instanceof g){if(t.predicate?.subject?.name!=="type")continue;for(let n of t.object??[])n instanceof f&&e.push(n)}return e}function A(s){let e=[];for(let t of s.statement)if(t instanceof d){if(t.predicate?.subject?.name!=="subClassOf")continue;t.object instanceof f&&e.push(t.object)}else if(t instanceof g){if(t.predicate?.subject?.name!=="subClassOf")continue;for(let n of t.object??[])n instanceof f&&e.push(n)}return e}function ne(s,e){let t=[];for(let n of s){if(!(n instanceof y)||n.name!==e.name)continue;(n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`)&&t.push(n)}return t}function j(s,e){let t="version"in e?e.version:void 0;if(t){let n=`${e.publisher}/${e.package_}@${t.major}.${t.minor}.${t.patch}`;for(let r of s)if(r instanceof y&&r.name===e.name&&r.namespace===n)return r}for(let n of s){if(!(n instanceof y)||n.name!==e.name)continue;if((n.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return n}}function k(s,e,t,n){let r=s.predicate?.subject;return r?r.publisher===e&&r.package_===t&&r.name===n:!1}function h(s,e){return s.publisher===e.publisher&&s.package_===e.package_&&s.name===e.name}function w(s){return`${s.publisher}/${s.package_}/${s.name}`}function te(s){let e=s.namespace||"",t=e.indexOf("/");return t>=0?e.substring(0,t):e}function p(s){return s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}var me=`
48
- * { box-sizing: border-box; }
49
- body {
50
- background: var(--kan-bg);
51
- color: var(--kan-text);
52
- font-family: var(--kan-font-body);
53
- line-height: var(--kan-line-height-body);
54
- margin: 0;
55
- }
56
- a { color: var(--kan-accent); text-decoration: none; }
57
- a:hover { color: var(--kan-accent-hover); text-decoration: underline; }
58
-
59
- /* Hero band */
60
- .kan-hero {
61
- padding: 32px 0 24px;
62
- border-bottom: 1px solid var(--kan-border);
63
- margin-bottom: 32px;
64
- }
65
- .kan-hero-eyebrow {
66
- font-family: var(--kan-font-mono);
67
- font-size: 11px;
68
- color: var(--kan-accent);
69
- letter-spacing: 0.18em;
70
- text-transform: uppercase;
71
- margin-bottom: 12px;
72
- display: block;
73
- }
74
- .kan-hero-title {
75
- font-family: var(--kan-font-display);
76
- font-size: 32px;
77
- font-weight: 600;
78
- letter-spacing: -0.015em;
79
- margin: 0 0 12px;
80
- line-height: var(--kan-line-height-heading);
81
- color: var(--kan-text);
82
- }
83
- .kan-hero-subtitle {
84
- font-size: 17px;
85
- color: var(--kan-text-dim);
86
- font-weight: 300;
87
- line-height: 1.55;
88
- margin: 0 0 16px;
89
- }
90
- .kan-hero-badges {
91
- display: flex;
92
- flex-wrap: wrap;
93
- gap: 6px;
94
- margin-top: 12px;
95
- }
96
-
97
- /* PropertyList band */
98
- .kan-property-list {
99
- margin: 24px 0;
100
- }
101
- .kan-property-list-title {
102
- font-family: var(--kan-font-mono);
103
- font-size: 11px;
104
- letter-spacing: 0.18em;
105
- text-transform: uppercase;
106
- color: var(--kan-text-dim);
107
- margin: 0 0 12px;
108
- font-weight: 600;
109
- }
110
- .kan-property-list-items {
111
- list-style: none;
112
- padding: 0;
113
- margin: 0;
114
- display: flex;
115
- flex-direction: column;
116
- gap: 6px;
117
- }
118
- .kan-property-list-items > li {
119
- color: var(--kan-text);
120
- }
121
- .kan-property-list-items > li.kan-empty {
122
- color: var(--kan-text-faint);
123
- font-style: italic;
124
- }
125
-
126
- /* BadgeRow band */
127
- .kan-badge-row {
128
- display: flex;
129
- flex-wrap: wrap;
130
- gap: 6px;
131
- margin: 16px 0;
132
- }
133
-
134
- /* Badge (used by Hero badges + BadgeRow) */
135
- .kan-badge {
136
- display: inline-block;
137
- padding: 2px 8px;
138
- background: var(--kan-badge-bg);
139
- color: var(--kan-badge-fg);
140
- border-radius: var(--kan-radius-sm);
141
- font-size: 11px;
142
- font-weight: 500;
143
- text-decoration: none;
144
- letter-spacing: 0.02em;
145
- }
146
- .kan-badge:hover {
147
- filter: brightness(1.1);
148
- text-decoration: none;
149
- }
150
-
151
- /* ChipRow band */
152
- .kan-chip-row {
153
- display: flex;
154
- flex-wrap: wrap;
155
- gap: 8px;
156
- margin: 16px 0;
157
- }
158
- .kan-chip {
159
- display: inline-flex;
160
- align-items: center;
161
- gap: 6px;
162
- padding: 5px 10px;
163
- background: var(--kan-bg-card);
164
- border: 1px solid var(--kan-border);
165
- border-radius: var(--kan-radius-sm);
166
- font-family: var(--kan-font-mono);
167
- font-size: 11px;
168
- text-transform: uppercase;
169
- letter-spacing: 0.04em;
170
- }
171
- .kan-chip-key { color: var(--kan-text-faint); }
172
- .kan-chip-val { color: var(--kan-text); font-weight: 500; }
173
-
174
- /* ReferenceList band */
175
- dl.kan-reference-list {
176
- display: grid;
177
- grid-template-columns: max-content 1fr;
178
- gap: 8px 16px;
179
- margin: 16px 0;
180
- padding: 16px 18px;
181
- background: var(--kan-bg-card);
182
- border: 1px solid var(--kan-border);
183
- border-radius: var(--kan-radius);
184
- }
185
- dl.kan-reference-list dt {
186
- font-family: var(--kan-font-mono);
187
- font-size: 11px;
188
- text-transform: uppercase;
189
- letter-spacing: 0.1em;
190
- color: var(--kan-text-faint);
191
- align-self: center;
192
- }
193
- dl.kan-reference-list dd { margin: 0; align-self: center; }
194
-
195
- /* Link (used by reference values across bands) */
196
- .kan-link {
197
- color: var(--kan-accent);
198
- text-decoration: none;
199
- }
200
- .kan-link:hover {
201
- color: var(--kan-accent-hover);
202
- text-decoration: underline;
203
- }
204
- `.trim();export{G as a,M as b};