@kanonak-protocol/sdk 3.27.0 → 3.27.2
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/chunk-LNAF54OC.js +180 -0
- package/dist/index.js +1 -1
- package/dist/look/LookRenderer.d.ts +18 -0
- package/dist/transformations/index.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-7C5JUPYB.js +0 -165
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import{a as P}from"./chunk-NIGFQYVA.js";import{a as j}from"./chunk-R2V7IXWN.js";import{c as S,d as l,g as m,j as d,k as y,l as k}from"./chunk-W6T7MOKY.js";var L={publisher:"kanonak.org",package_:"derivation",name:"look"},U={publisher:"kanonak.org",package_:"derivation",name:"tokens"},R={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},C={publisher:"kanonak.org",package_:"core-rdf",name:"label"},N={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},z={publisher:"kanonak.org",package_:"look",name:"Hero"},A={publisher:"kanonak.org",package_:"look",name:"PropertyList"},q={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},W={publisher:"kanonak.org",package_:"look",name:"ChipRow"},G={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},O={publisher:"kanonak.org",package_:"look",name:"bands"},Y={publisher:"kanonak.org",package_:"look",name:"title"},J={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Q={publisher:"kanonak.org",package_:"look",name:"subtitle"},T={publisher:"kanonak.org",package_:"look",name:"badges"},K={publisher:"kanonak.org",package_:"look",name:"source"},X={publisher:"kanonak.org",package_:"look",name:"chips"},B={publisher:"kanonak.org",package_:"look",name:"entries"},Z={publisher:"kanonak.org",package_:"look",name:"urlForm"},F=class{constructor(e){this.catalog=e}catalog;findCascadedLook(e){let n=new Set,t=I(e);for(;t.length>0;){let a=t.shift(),r=_(a.subject);if(n.has(r))continue;n.add(r);let o=b(this.catalog,a.subject);if(!o)continue;let i=V(o);if(i)return{declaration:i,sourceClass:{publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name}};for(let c of E(o))t.push(c)}if(!n.has(_(R))){let a=b(this.catalog,R);if(a){let r=V(a);if(r)return{declaration:r,sourceClass:{...R}}}}}findCascadedTokens(e){let n=new Map;for(let[r,o]of $(e))n.has(r)||n.set(r,o);let t=new Set,a=I(e);for(;a.length>0;){let r=a.shift(),o=_(r.subject);if(t.has(o))continue;t.add(o);let i=b(this.catalog,r.subject);if(i){for(let[c,f]of $(i))n.has(c)||n.set(c,f);for(let c of E(i))a.push(c)}}if(!t.has(_(R))){let r=b(this.catalog,R);if(r)for(let[o,i]of $(r))n.has(o)||n.set(o,i)}return n}renderStylesheet(e){let n=this.findCascadedTokens(e),t=[];for(let[r,o]of n)t.push(` --kan-${r}: ${o};`);return`${t.length>0?`:root {
|
|
2
|
+
${t.join(`
|
|
3
|
+
`)}
|
|
4
|
+
}`:":root { /* no tokens resolved */ }"}
|
|
5
|
+
${ae}`}renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let t=ee(n.declaration);if(t.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let a=te(e),r=[];for(let o of t)r.push(this.renderBand(o,e,a));return r.join(`
|
|
6
|
+
`)}renderDocument(e){let n=this.renderHtml(e),t=this.readPropertyValueText(e,C)??e.name,a=`${e.name}.css`,r=this.hasSvgDerivation(e)?`<figure class="kan-figure"><img src="${u(e.name)}.svg" alt=""></figure>
|
|
7
|
+
`:"";return`<!doctype html>
|
|
8
|
+
<html lang="en">
|
|
9
|
+
<head>
|
|
10
|
+
<meta charset="utf-8">
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
12
|
+
<title>${u(t)}</title>
|
|
13
|
+
<link rel="stylesheet" href="${u(a)}">
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
<main class="kan-main">
|
|
17
|
+
${r}${n}
|
|
18
|
+
</main>
|
|
19
|
+
</body>
|
|
20
|
+
</html>
|
|
21
|
+
`}hasSvgDerivation(e){let n=new Set,t=I(e);for(;t.length>0;){let a=t.shift(),r=_(a.subject);if(n.has(r))continue;n.add(r);let o=b(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 j)for(let f of c.statement){if(!(f instanceof d)||!g(f,"kanonak.org","derivation","format")||!(f.object instanceof l))continue;let p=f.object.subject;if(p.publisher==="kanonak.org"&&p.package_==="formats"&&p.name==="svg")return!0}}for(let i of E(o))t.push(i)}}return!1}renderBand(e,n,t){let a=ne(e);return a?v(a,z)?this.renderHero(e,n,t):v(a,A)?this.renderPropertyList(e,n,t):v(a,q)?this.renderBadgeRow(e,n,t):v(a,W)?this.renderChipRow(e,n,t):v(a,G)?this.renderReferenceList(e,n,t):`<!-- LookRenderer: unsupported band ${a.publisher}/${a.package_}/${a.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}renderHero(e,n,t){let a=['<header class="kan-hero">'],r=h(e,J);if(r){let p=this.readPropertyValueText(n,r);p&&a.push(`<span class="kan-hero-eyebrow">${u(p)}</span>`)}let o=h(e,Y),i="";o&&(i=this.readPropertyValueText(n,o)??""),i||(i=n.name),a.push(`<h1 class="kan-hero-title">${u(i)}</h1>`);let c=h(e,Q);if(c){let p=this.readPropertyValueText(n,c);p&&a.push(`<p class="kan-hero-subtitle">${u(p)}</p>`)}let f=h(e,T);if(f){let p=this.readPropertyValueReferences(n,f);if(p.length>0){let D=p.map(M=>this.renderBadge(M,T,t)).join("");a.push(`<div class="kan-hero-badges">${D}</div>`)}}return a.push("</header>"),a.join(`
|
|
22
|
+
`)}renderPropertyList(e,n,t){let a=h(e,K);if(!a)return"<!-- LookRenderer: PropertyList missing look.source -->";let r=this.readLabelForUri(a)??a.name,o=x(n,a),i=this.gatherValueItems(o),c=i.length>0?i.map(f=>`<li>${this.renderInlineValue(f,K,t)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${u(r)}</h3>`,`<ul class="kan-property-list-items">${c}</ul>`,"</section>"].join(`
|
|
23
|
+
`)}renderBadgeRow(e,n,t){let a=h(e,K);if(!a)return"<!-- LookRenderer: BadgeRow missing look.source -->";let r=this.readPropertyValueReferences(n,a);return r.length===0?"":`<div class="kan-badge-row">${r.map(i=>this.renderBadge(i,K,t)).join("")}</div>`}renderChipRow(e,n,t){let a=H(e,X);if(a.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let r=[];for(let o of a){let i=x(n,o);if(!i)continue;let c=this.readLabelForUri(o)??o.name,f=this.renderStatementInlineValue(i,o,t);f&&r.push(`<span class="kan-chip"><span class="kan-chip-key">${u(c)}</span> <span class="kan-chip-val">${f}</span></span>`)}return r.length===0?"":`<div class="kan-chip-row">${r.join("")}</div>`}renderReferenceList(e,n,t){let a=H(e,B);if(a.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let r=[];for(let o of a){let i=this.readPropertyValueReferences(n,o);if(i.length===0)continue;let c=this.readLabelForUri(o)??o.name,f=i.map(p=>this.renderReferenceLink(p,B,t)).join(", ");r.push(`<dt>${u(c)}</dt><dd>${f}</dd>`)}return r.length===0?"":`<dl class="kan-reference-list">${r.join("")}</dl>`}readPropertyValueText(e,n){let t=x(e,n);if(t){if(t instanceof m)return t.object;if(t instanceof d){let a=t.object;return this.readLabelForUri({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name})??a.subject.name}if(t instanceof k)return(t.object??[]).map(r=>r instanceof l?this.readLabelForUri({publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name})??r.subject.name:r instanceof j?r.name??"":String(r)).filter(r=>r).join(", ")}}readPropertyValueReferences(e,n){let t=x(e,n);if(!t)return[];if(t instanceof d)return[t.object];if(t instanceof k){let a=[];for(let r of t.object??[])r instanceof l&&a.push(r);return a}return[]}gatherValueItems(e){return e?e instanceof k?e.object??[]:e instanceof d?[e.object]:e instanceof y?[e.object]:e instanceof m?[e.object]:[]:[]}renderInlineValue(e,n,t){return e instanceof l?this.renderReferenceLink(e,n,t):e instanceof j?u(e.name??"(embedded)"):typeof e=="string"?u(e):typeof e=="number"||typeof e=="boolean"?u(String(e)):""}renderStatementInlineValue(e,n,t){return e instanceof m?u(e.object):e instanceof d?this.renderReferenceLink(e.object,n,t):e instanceof k?(e.object??[]).map(r=>this.renderInlineValue(r,n,t)).filter(r=>r).join(", "):""}renderReferenceLink(e,n,t){let a=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,r=this.urlForReference(e,n,t);return`<a class="kan-link" href="${u(r)}">${u(a)}</a>`}renderBadge(e,n,t){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,n,t),i=r?` title="${u(r)}"`:"";return`<a class="kan-badge" href="${u(o)}"${i}>${u(a)}</a>`}urlForReference(e,n,t){let a=n?this.getUrlFormForProperty(n):"=";return P.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},a,{contextPublisher:t})}getUrlFormForProperty(e){let n=b(this.catalog,e);if(!n)return"=";let t=w(n,Z);return t==="*"||t==="^"||t==="~"||t==="="?t:"="}readLabelForUri(e){let n=b(this.catalog,e);if(n)return w(n,C)}readCommentForUri(e){let n=b(this.catalog,e);if(n)return w(n,N)}};function $(s){let e=new Map;for(let n of s.statement){if(!(n instanceof y)||!g(n,U.publisher,U.package_,U.name))continue;let t=n.object;for(let a of t.statement){if(!(a instanceof m))continue;let r=a.predicate?.subject?.name;if(!r)continue;let o=a.object;e.set(r,o)}return e}return e}function V(s){for(let e of s.statement)if(e instanceof y&&g(e,L.publisher,L.package_,L.name))return e.object}function ee(s){for(let e of s.statement){if(!(e instanceof k)||!g(e,O.publisher,O.package_,O.name))continue;let n=[];for(let t of e.object??[])t instanceof j&&n.push(t);return n}return[]}function ne(s){for(let e of s.statement)if(e instanceof d&&e.predicate?.subject?.name==="type"&&e.object instanceof l){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function h(s,e){for(let n of s.statement)if(n instanceof d&&g(n,e.publisher,e.package_,e.name)&&n.object instanceof l){let t=n.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function H(s,e){for(let n of s.statement){if(!(n instanceof k)||!g(n,e.publisher,e.package_,e.name))continue;let t=[];for(let a of n.object??[])a instanceof l&&t.push({publisher:a.subject.publisher,package_:a.subject.package_,name:a.subject.name});return t}return[]}function x(s,e){for(let n of s.statement)if(g(n,e.publisher,e.package_,e.name))return n}function w(s,e){for(let n of s.statement)if(n instanceof m&&g(n,e.publisher,e.package_,e.name))return n.object}function I(s){let e=[];for(let n of s.statement)if(n instanceof d){if(n.predicate?.subject?.name!=="type")continue;n.object instanceof l&&e.push(n.object)}else if(n instanceof k){if(n.predicate?.subject?.name!=="type")continue;for(let t of n.object??[])t instanceof l&&e.push(t)}return e}function E(s){let e=[];for(let n of s.statement)if(n instanceof d){if(n.predicate?.subject?.name!=="subClassOf")continue;n.object instanceof l&&e.push(n.object)}else if(n instanceof k){if(n.predicate?.subject?.name!=="subClassOf")continue;for(let t of n.object??[])t instanceof l&&e.push(t)}return e}function b(s,e){let n="version"in e?e.version:void 0;if(n){let t=`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`;for(let a of s)if(a instanceof S&&a.name===e.name&&a.namespace===t)return a}for(let t of s){if(!(t instanceof S)||t.name!==e.name)continue;if((t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return t}}function g(s,e,n,t){let a=s.predicate?.subject;return a?a.publisher===e&&a.package_===n&&a.name===t:!1}function v(s,e){return s.publisher===e.publisher&&s.package_===e.package_&&s.name===e.name}function _(s){return`${s.publisher}/${s.package_}/${s.name}`}function te(s){let e=s.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function u(s){return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}var ae=`
|
|
24
|
+
* { box-sizing: border-box; }
|
|
25
|
+
body {
|
|
26
|
+
background: var(--kan-bg);
|
|
27
|
+
color: var(--kan-text);
|
|
28
|
+
font-family: var(--kan-font-body);
|
|
29
|
+
line-height: var(--kan-line-height-body);
|
|
30
|
+
margin: 0;
|
|
31
|
+
}
|
|
32
|
+
a { color: var(--kan-accent); text-decoration: none; }
|
|
33
|
+
a:hover { color: var(--kan-accent-hover); text-decoration: underline; }
|
|
34
|
+
|
|
35
|
+
/* Hero band */
|
|
36
|
+
.kan-hero {
|
|
37
|
+
padding: 32px 0 24px;
|
|
38
|
+
border-bottom: 1px solid var(--kan-border);
|
|
39
|
+
margin-bottom: 32px;
|
|
40
|
+
}
|
|
41
|
+
.kan-hero-eyebrow {
|
|
42
|
+
font-family: var(--kan-font-mono);
|
|
43
|
+
font-size: 11px;
|
|
44
|
+
color: var(--kan-accent);
|
|
45
|
+
letter-spacing: 0.18em;
|
|
46
|
+
text-transform: uppercase;
|
|
47
|
+
margin-bottom: 12px;
|
|
48
|
+
display: block;
|
|
49
|
+
}
|
|
50
|
+
.kan-hero-title {
|
|
51
|
+
font-family: var(--kan-font-display);
|
|
52
|
+
font-size: 32px;
|
|
53
|
+
font-weight: 600;
|
|
54
|
+
letter-spacing: -0.015em;
|
|
55
|
+
margin: 0 0 12px;
|
|
56
|
+
line-height: var(--kan-line-height-heading);
|
|
57
|
+
color: var(--kan-text);
|
|
58
|
+
}
|
|
59
|
+
.kan-hero-subtitle {
|
|
60
|
+
font-size: 17px;
|
|
61
|
+
color: var(--kan-text-dim);
|
|
62
|
+
font-weight: 300;
|
|
63
|
+
line-height: 1.55;
|
|
64
|
+
margin: 0 0 16px;
|
|
65
|
+
}
|
|
66
|
+
.kan-hero-badges {
|
|
67
|
+
display: flex;
|
|
68
|
+
flex-wrap: wrap;
|
|
69
|
+
gap: 6px;
|
|
70
|
+
margin-top: 12px;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* PropertyList band */
|
|
74
|
+
.kan-property-list {
|
|
75
|
+
margin: 24px 0;
|
|
76
|
+
}
|
|
77
|
+
.kan-property-list-title {
|
|
78
|
+
font-family: var(--kan-font-mono);
|
|
79
|
+
font-size: 11px;
|
|
80
|
+
letter-spacing: 0.18em;
|
|
81
|
+
text-transform: uppercase;
|
|
82
|
+
color: var(--kan-text-dim);
|
|
83
|
+
margin: 0 0 12px;
|
|
84
|
+
font-weight: 600;
|
|
85
|
+
}
|
|
86
|
+
.kan-property-list-items {
|
|
87
|
+
list-style: none;
|
|
88
|
+
padding: 0;
|
|
89
|
+
margin: 0;
|
|
90
|
+
display: flex;
|
|
91
|
+
flex-direction: column;
|
|
92
|
+
gap: 6px;
|
|
93
|
+
}
|
|
94
|
+
.kan-property-list-items > li {
|
|
95
|
+
color: var(--kan-text);
|
|
96
|
+
}
|
|
97
|
+
.kan-property-list-items > li.kan-empty {
|
|
98
|
+
color: var(--kan-text-faint);
|
|
99
|
+
font-style: italic;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/* BadgeRow band */
|
|
103
|
+
.kan-badge-row {
|
|
104
|
+
display: flex;
|
|
105
|
+
flex-wrap: wrap;
|
|
106
|
+
gap: 6px;
|
|
107
|
+
margin: 16px 0;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* Badge (used by Hero badges + BadgeRow) */
|
|
111
|
+
.kan-badge {
|
|
112
|
+
display: inline-block;
|
|
113
|
+
padding: 2px 8px;
|
|
114
|
+
background: var(--kan-badge-bg);
|
|
115
|
+
color: var(--kan-badge-fg);
|
|
116
|
+
border-radius: var(--kan-radius-sm);
|
|
117
|
+
font-size: 11px;
|
|
118
|
+
font-weight: 500;
|
|
119
|
+
text-decoration: none;
|
|
120
|
+
letter-spacing: 0.02em;
|
|
121
|
+
}
|
|
122
|
+
.kan-badge:hover {
|
|
123
|
+
filter: brightness(1.1);
|
|
124
|
+
text-decoration: none;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/* ChipRow band */
|
|
128
|
+
.kan-chip-row {
|
|
129
|
+
display: flex;
|
|
130
|
+
flex-wrap: wrap;
|
|
131
|
+
gap: 8px;
|
|
132
|
+
margin: 16px 0;
|
|
133
|
+
}
|
|
134
|
+
.kan-chip {
|
|
135
|
+
display: inline-flex;
|
|
136
|
+
align-items: center;
|
|
137
|
+
gap: 6px;
|
|
138
|
+
padding: 5px 10px;
|
|
139
|
+
background: var(--kan-bg-card);
|
|
140
|
+
border: 1px solid var(--kan-border);
|
|
141
|
+
border-radius: var(--kan-radius-sm);
|
|
142
|
+
font-family: var(--kan-font-mono);
|
|
143
|
+
font-size: 11px;
|
|
144
|
+
text-transform: uppercase;
|
|
145
|
+
letter-spacing: 0.04em;
|
|
146
|
+
}
|
|
147
|
+
.kan-chip-key { color: var(--kan-text-faint); }
|
|
148
|
+
.kan-chip-val { color: var(--kan-text); font-weight: 500; }
|
|
149
|
+
|
|
150
|
+
/* ReferenceList band */
|
|
151
|
+
dl.kan-reference-list {
|
|
152
|
+
display: grid;
|
|
153
|
+
grid-template-columns: max-content 1fr;
|
|
154
|
+
gap: 8px 16px;
|
|
155
|
+
margin: 16px 0;
|
|
156
|
+
padding: 16px 18px;
|
|
157
|
+
background: var(--kan-bg-card);
|
|
158
|
+
border: 1px solid var(--kan-border);
|
|
159
|
+
border-radius: var(--kan-radius);
|
|
160
|
+
}
|
|
161
|
+
dl.kan-reference-list dt {
|
|
162
|
+
font-family: var(--kan-font-mono);
|
|
163
|
+
font-size: 11px;
|
|
164
|
+
text-transform: uppercase;
|
|
165
|
+
letter-spacing: 0.1em;
|
|
166
|
+
color: var(--kan-text-faint);
|
|
167
|
+
align-self: center;
|
|
168
|
+
}
|
|
169
|
+
dl.kan-reference-list dd { margin: 0; align-self: center; }
|
|
170
|
+
|
|
171
|
+
/* Link (used by reference values across bands) */
|
|
172
|
+
.kan-link {
|
|
173
|
+
color: var(--kan-accent);
|
|
174
|
+
text-decoration: none;
|
|
175
|
+
}
|
|
176
|
+
.kan-link:hover {
|
|
177
|
+
color: var(--kan-accent-hover);
|
|
178
|
+
text-decoration: underline;
|
|
179
|
+
}
|
|
180
|
+
`.trim();export{F as a};
|
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-NYXIGTTH.js";import{a as Yt}from"./chunk-
|
|
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-NYXIGTTH.js";import{a as Yt}from"./chunk-LNAF54OC.js";import{a as qe,b as Ye,c as Xe,d as b,e as S,f as i}from"./chunk-VLBP5CHO.js";import{a as qt}from"./chunk-ROCCA4BY.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-63NJ25ZX.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-PB2RWBJN.js";import"./chunk-FJ35VIV6.js";import{a as F,b as D,c as Me,e as We}from"./chunk-R2V7IXWN.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-IXE5THUW.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)}
|
|
@@ -75,6 +75,24 @@ export declare class LookRenderer {
|
|
|
75
75
|
* Render the instance as body-only HTML using its cascaded look.
|
|
76
76
|
*/
|
|
77
77
|
renderHtml(instance: SubjectKanonak): string;
|
|
78
|
+
/**
|
|
79
|
+
* Render the instance as a standalone HTML document — `<!doctype html>`
|
|
80
|
+
* with `<head>` (title, viewport, stylesheet link) wrapping the body
|
|
81
|
+
* bands from `renderHtml`. The stylesheet href points at
|
|
82
|
+
* `${instance.name}.css` (paired output of `renderStylesheet`).
|
|
83
|
+
*
|
|
84
|
+
* If the instance's class chain declares a `derivation.derivations`
|
|
85
|
+
* binding for `formats.svg`, an `<img src="${instance.name}.svg">`
|
|
86
|
+
* figure is inserted at the top of the body so per-resource visuals
|
|
87
|
+
* appear without authors needing a custom look.Figure band.
|
|
88
|
+
*/
|
|
89
|
+
renderDocument(instance: SubjectKanonak): string;
|
|
90
|
+
/**
|
|
91
|
+
* True if the instance's class chain declares a `derivation.derivations`
|
|
92
|
+
* binding whose `derivation.format` is `kanonak.org/formats/svg`. Used by
|
|
93
|
+
* `renderDocument` to decide whether to emit an `<img>` figure.
|
|
94
|
+
*/
|
|
95
|
+
private hasSvgDerivation;
|
|
78
96
|
private renderBand;
|
|
79
97
|
private renderHero;
|
|
80
98
|
private renderPropertyList;
|
|
@@ -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 ke}from"../chunk-
|
|
1
|
+
import{b as E,c as F,d as f,f as M}from"../chunk-2JQMUZWN.js";import{a as ke}from"../chunk-LNAF54OC.js";import{a as _e}from"../chunk-ROCCA4BY.js";import"../chunk-63NJ25ZX.js";import"../chunk-NIGFQYVA.js";import{a as Ne}from"../chunk-FJ35VIV6.js";import{a as C,c as Ue,e as Oe}from"../chunk-R2V7IXWN.js";import{b as K,c as w,d as b,g as B,h as U,i as O,j as V,k as T,l as S}from"../chunk-W6T7MOKY.js";import{a as Ce}from"../chunk-MYITGTGJ.js";import"../chunk-IXE5THUW.js";import"../chunk-FUUTGGJS.js";var wt="kanonak.org",St="document-ast",p=t=>({publisher:wt,package_:St,name:t}),h={Document:p("Document"),Block:p("Block"),Inline:p("Inline"),StructuredValue:p("StructuredValue"),Heading:p("Heading"),Paragraph:p("Paragraph"),RawBlock:p("RawBlock"),Text:p("Text"),StructuredMap:p("StructuredMap"),StructuredEntry:p("StructuredEntry"),StructuredList:p("StructuredList"),StringScalar:p("StringScalar"),IntegerScalar:p("IntegerScalar"),EscapeHint:p("EscapeHint"),MediaType:p("MediaType"),metadata:p("metadata"),children:p("children"),level:p("level"),inlines:p("inlines"),text:p("text"),entries:p("entries"),key:p("key"),value:p("value"),escapeHint:p("escapeHint"),items:p("items"),stringValue:p("stringValue"),integerValue:p("integerValue"),rawContent:p("rawContent"),mediaType:p("mediaType"),mimeType:p("mimeType"),ESC_RAW:p("esc-raw"),ESC_YAML_SAFE:p("esc-yaml-safe"),ESC_TOML_STRING:p("esc-toml-string"),ESC_TOML_MULTILINE:p("esc-toml-multiline"),ESC_JSON:p("esc-json"),ESC_DYNAMODB_BOOL:p("esc-dynamodb-bool"),ESC_DYNAMODB_NUMBER:p("esc-dynamodb-number"),ESC_DYNAMODB_NULL:p("esc-dynamodb-null"),TEXT_PLAIN:p("text-plain"),TEXT_MARKDOWN:p("text-markdown"),TEXT_HTML:p("text-html"),TEXT_CSS:p("text-css"),APPLICATION_JSON:p("application-json"),TEXT_YAML:p("text-yaml"),IMAGE_SVG_XML:p("image-svg-xml"),ResourceLink:p("ResourceLink"),target:p("target"),linkLabel:p("linkLabel"),PropertyList:p("PropertyList"),propertyEntries:p("propertyEntries"),PropertyEntry:p("PropertyEntry"),propertyKey:p("propertyKey"),propertyValue:p("propertyValue"),Table:p("Table"),tableColumnLabels:p("tableColumnLabels"),tableRows:p("tableRows"),TableRow:p("TableRow"),tableCells:p("tableCells")};function Me(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=Et(e.metadata,n),a=jt(e.children),u=["---",...r,"---","",a].join(`
|
|
2
2
|
`);return n?.trailingNewline&&(u.endsWith(`
|
|
3
3
|
`)||(u+=`
|
|
4
4
|
`)),u}};function Et(t,e){if(!t)return[];let n=new Map;for(let c of t.entries)n.set(ce(c.key),c);let r=new Map;if(e?.metadataRenames)for(let[c,l]of e.metadataRenames)r.set(ce(c),l);let i=(e?.metadataKeys??t.entries.map(c=>c.key)).map(ce),u=[];for(let c of i){let l=n.get(c);if(!l)continue;let m=r.get(c),g=ce(m??c),k=Ie(l.value,l.escapeHint);k!==void 0&&u.push(`${g}: ${k}`)}return u}function ce(t){let e=t.lastIndexOf(".");return e===-1?t:t.substring(e+1)||t}function Ie(t,e){switch(t.kind){case"StringScalar":return $t(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 $t(t,e){return!e||Me(e,h.ESC_RAW)?t:Me(e,h.ESC_YAML_SAFE)?vt(t):t}function vt(t){return t.includes(`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kanonak-protocol/sdk",
|
|
3
|
-
"version": "3.27.
|
|
3
|
+
"version": "3.27.2",
|
|
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.27.
|
|
116
|
+
"@kanonak-protocol/types": "^3.27.2",
|
|
117
117
|
"ignore": "^7.0.5",
|
|
118
118
|
"js-yaml": "^4.1.0",
|
|
119
119
|
"yaml": "^2.7.0"
|
package/dist/chunk-7C5JUPYB.js
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import{a as $}from"./chunk-NIGFQYVA.js";import{a as _}from"./chunk-R2V7IXWN.js";import{c as S,d as p,g as m,j as d,k as v,l as k}from"./chunk-W6T7MOKY.js";var L={publisher:"kanonak.org",package_:"derivation",name:"look"},U={publisher:"kanonak.org",package_:"derivation",name:"tokens"},j={publisher:"kanonak.org",package_:"core-rdf",name:"Resource"},M={publisher:"kanonak.org",package_:"core-rdf",name:"label"},N={publisher:"kanonak.org",package_:"core-rdf",name:"comment"},z={publisher:"kanonak.org",package_:"look",name:"Hero"},A={publisher:"kanonak.org",package_:"look",name:"PropertyList"},W={publisher:"kanonak.org",package_:"look",name:"BadgeRow"},q={publisher:"kanonak.org",package_:"look",name:"ChipRow"},G={publisher:"kanonak.org",package_:"look",name:"ReferenceList"},O={publisher:"kanonak.org",package_:"look",name:"bands"},Y={publisher:"kanonak.org",package_:"look",name:"title"},J={publisher:"kanonak.org",package_:"look",name:"eyebrow"},Q={publisher:"kanonak.org",package_:"look",name:"subtitle"},F={publisher:"kanonak.org",package_:"look",name:"badges"},y={publisher:"kanonak.org",package_:"look",name:"source"},X={publisher:"kanonak.org",package_:"look",name:"chips"},P={publisher:"kanonak.org",package_:"look",name:"entries"},Z={publisher:"kanonak.org",package_:"look",name:"urlForm"},w=class{constructor(e){this.catalog=e}catalog;findCascadedLook(e){let n=new Set,t=B(e);for(;t.length>0;){let r=t.shift(),a=x(r.subject);if(n.has(a))continue;n.add(a);let s=g(this.catalog,r.subject);if(!s)continue;let i=C(s);if(i)return{declaration:i,sourceClass:{publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name}};for(let c of V(s))t.push(c)}if(!n.has(x(j))){let r=g(this.catalog,j);if(r){let a=C(r);if(a)return{declaration:a,sourceClass:{...j}}}}}findCascadedTokens(e){let n=new Map;for(let[a,s]of I(e))n.has(a)||n.set(a,s);let t=new Set,r=B(e);for(;r.length>0;){let a=r.shift(),s=x(a.subject);if(t.has(s))continue;t.add(s);let i=g(this.catalog,a.subject);if(i){for(let[c,f]of I(i))n.has(c)||n.set(c,f);for(let c of V(i))r.push(c)}}if(!t.has(x(j))){let a=g(this.catalog,j);if(a)for(let[s,i]of I(a))n.has(s)||n.set(s,i)}return n}renderStylesheet(e){let n=this.findCascadedTokens(e),t=[];for(let[a,s]of n)t.push(` --kan-${a}: ${s};`);return`${t.length>0?`:root {
|
|
2
|
-
${t.join(`
|
|
3
|
-
`)}
|
|
4
|
-
}`:":root { /* no tokens resolved */ }"}
|
|
5
|
-
${re}`}renderHtml(e){let n=this.findCascadedLook(e);if(!n)return`<!-- LookRenderer: no derivation.look found for ${e.namespace}/${e.name} -->`;let t=ee(n.declaration);if(t.length===0)return"<!-- LookRenderer: look declaration has no bands -->";let r=te(e),a=[];for(let s of t)a.push(this.renderBand(s,e,r));return a.join(`
|
|
6
|
-
`)}renderBand(e,n,t){let r=ne(e);return r?R(r,z)?this.renderHero(e,n,t):R(r,A)?this.renderPropertyList(e,n,t):R(r,W)?this.renderBadgeRow(e,n,t):R(r,q)?this.renderChipRow(e,n,t):R(r,G)?this.renderReferenceList(e,n,t):`<!-- LookRenderer: unsupported band ${r.publisher}/${r.package_}/${r.name} -->`:"<!-- LookRenderer: band has no rdf:type -->"}renderHero(e,n,t){let r=['<header class="kan-hero">'],a=h(e,J);if(a){let l=this.readPropertyValueText(n,a);l&&r.push(`<span class="kan-hero-eyebrow">${u(l)}</span>`)}let s=h(e,Y),i="";s&&(i=this.readPropertyValueText(n,s)??""),i||(i=n.name),r.push(`<h1 class="kan-hero-title">${u(i)}</h1>`);let c=h(e,Q);if(c){let l=this.readPropertyValueText(n,c);l&&r.push(`<p class="kan-hero-subtitle">${u(l)}</p>`)}let f=h(e,F);if(f){let l=this.readPropertyValueReferences(n,f);if(l.length>0){let H=l.map(D=>this.renderBadge(D,F,t)).join("");r.push(`<div class="kan-hero-badges">${H}</div>`)}}return r.push("</header>"),r.join(`
|
|
7
|
-
`)}renderPropertyList(e,n,t){let r=h(e,y);if(!r)return"<!-- LookRenderer: PropertyList missing look.source -->";let a=this.readLabelForUri(r)??r.name,s=K(n,r),i=this.gatherValueItems(s),c=i.length>0?i.map(f=>`<li>${this.renderInlineValue(f,y,t)}</li>`).join(""):'<li class="kan-empty">(no values)</li>';return['<section class="kan-property-list">',`<h3 class="kan-property-list-title">${u(a)}</h3>`,`<ul class="kan-property-list-items">${c}</ul>`,"</section>"].join(`
|
|
8
|
-
`)}renderBadgeRow(e,n,t){let r=h(e,y);if(!r)return"<!-- LookRenderer: BadgeRow missing look.source -->";let a=this.readPropertyValueReferences(n,r);return a.length===0?"":`<div class="kan-badge-row">${a.map(i=>this.renderBadge(i,y,t)).join("")}</div>`}renderChipRow(e,n,t){let r=T(e,X);if(r.length===0)return"<!-- LookRenderer: ChipRow has no look.chips -->";let a=[];for(let s of r){let i=K(n,s);if(!i)continue;let c=this.readLabelForUri(s)??s.name,f=this.renderStatementInlineValue(i,s,t);f&&a.push(`<span class="kan-chip"><span class="kan-chip-key">${u(c)}</span> <span class="kan-chip-val">${f}</span></span>`)}return a.length===0?"":`<div class="kan-chip-row">${a.join("")}</div>`}renderReferenceList(e,n,t){let r=T(e,P);if(r.length===0)return"<!-- LookRenderer: ReferenceList has no look.entries -->";let a=[];for(let s of r){let i=this.readPropertyValueReferences(n,s);if(i.length===0)continue;let c=this.readLabelForUri(s)??s.name,f=i.map(l=>this.renderReferenceLink(l,P,t)).join(", ");a.push(`<dt>${u(c)}</dt><dd>${f}</dd>`)}return a.length===0?"":`<dl class="kan-reference-list">${a.join("")}</dl>`}readPropertyValueText(e,n){let t=K(e,n);if(t){if(t instanceof m)return t.object;if(t instanceof d){let r=t.object;return this.readLabelForUri({publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name})??r.subject.name}if(t instanceof k)return(t.object??[]).map(a=>a instanceof p?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,n){let t=K(e,n);if(!t)return[];if(t instanceof d)return[t.object];if(t instanceof k){let r=[];for(let a of t.object??[])a instanceof p&&r.push(a);return r}return[]}gatherValueItems(e){return e?e instanceof k?e.object??[]:e instanceof d?[e.object]:e instanceof v?[e.object]:e instanceof m?[e.object]:[]:[]}renderInlineValue(e,n,t){return e instanceof p?this.renderReferenceLink(e,n,t):e instanceof _?u(e.name??"(embedded)"):typeof e=="string"?u(e):typeof e=="number"||typeof e=="boolean"?u(String(e)):""}renderStatementInlineValue(e,n,t){return e instanceof m?u(e.object):e instanceof d?this.renderReferenceLink(e.object,n,t):e instanceof k?(e.object??[]).map(a=>this.renderInlineValue(a,n,t)).filter(a=>a).join(", "):""}renderReferenceLink(e,n,t){let r=this.readLabelForUri({publisher:e.subject.publisher,package_:e.subject.package_,name:e.subject.name})??e.subject.name,a=this.urlForReference(e,n,t);return`<a class="kan-link" href="${u(a)}">${u(r)}</a>`}renderBadge(e,n,t){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}),s=this.urlForReference(e,n,t),i=a?` title="${u(a)}"`:"";return`<a class="kan-badge" href="${u(s)}"${i}>${u(r)}</a>`}urlForReference(e,n,t){let r=n?this.getUrlFormForProperty(n):"=";return $.formatResourceUrl({publisher:e.subject.publisher,package_:e.subject.package_,...e.subject.version?{version:e.subject.version}:{},name:e.subject.name},r,{contextPublisher:t})}getUrlFormForProperty(e){let n=g(this.catalog,e);if(!n)return"=";let t=E(n,Z);return t==="*"||t==="^"||t==="~"||t==="="?t:"="}readLabelForUri(e){let n=g(this.catalog,e);if(n)return E(n,M)}readCommentForUri(e){let n=g(this.catalog,e);if(n)return E(n,N)}};function I(o){let e=new Map;for(let n of o.statement){if(!(n instanceof v)||!b(n,U.publisher,U.package_,U.name))continue;let t=n.object;for(let r of t.statement){if(!(r instanceof m))continue;let a=r.predicate?.subject?.name;if(!a)continue;let s=r.object;e.set(a,s)}return e}return e}function C(o){for(let e of o.statement)if(e instanceof v&&b(e,L.publisher,L.package_,L.name))return e.object}function ee(o){for(let e of o.statement){if(!(e instanceof k)||!b(e,O.publisher,O.package_,O.name))continue;let n=[];for(let t of e.object??[])t instanceof _&&n.push(t);return n}return[]}function ne(o){for(let e of o.statement)if(e instanceof d&&e.predicate?.subject?.name==="type"&&e.object instanceof p){let n=e.object.subject;return{publisher:n.publisher,package_:n.package_,name:n.name}}}function h(o,e){for(let n of o.statement)if(n instanceof d&&b(n,e.publisher,e.package_,e.name)&&n.object instanceof p){let t=n.object.subject;return{publisher:t.publisher,package_:t.package_,name:t.name}}}function T(o,e){for(let n of o.statement){if(!(n instanceof k)||!b(n,e.publisher,e.package_,e.name))continue;let t=[];for(let r of n.object??[])r instanceof p&&t.push({publisher:r.subject.publisher,package_:r.subject.package_,name:r.subject.name});return t}return[]}function K(o,e){for(let n of o.statement)if(b(n,e.publisher,e.package_,e.name))return n}function E(o,e){for(let n of o.statement)if(n instanceof m&&b(n,e.publisher,e.package_,e.name))return n.object}function B(o){let e=[];for(let n of o.statement)if(n instanceof d){if(n.predicate?.subject?.name!=="type")continue;n.object instanceof p&&e.push(n.object)}else if(n instanceof k){if(n.predicate?.subject?.name!=="type")continue;for(let t of n.object??[])t instanceof p&&e.push(t)}return e}function V(o){let e=[];for(let n of o.statement)if(n instanceof d){if(n.predicate?.subject?.name!=="subClassOf")continue;n.object instanceof p&&e.push(n.object)}else if(n instanceof k){if(n.predicate?.subject?.name!=="subClassOf")continue;for(let t of n.object??[])t instanceof p&&e.push(t)}return e}function g(o,e){let n="version"in e?e.version:void 0;if(n){let t=`${e.publisher}/${e.package_}@${n.major}.${n.minor}.${n.patch}`;for(let r of o)if(r instanceof S&&r.name===e.name&&r.namespace===t)return r}for(let t of o){if(!(t instanceof S)||t.name!==e.name)continue;if((t.namespace||"").startsWith(`${e.publisher}/${e.package_}@`))return t}}function b(o,e,n,t){let r=o.predicate?.subject;return r?r.publisher===e&&r.package_===n&&r.name===t:!1}function R(o,e){return o.publisher===e.publisher&&o.package_===e.package_&&o.name===e.name}function x(o){return`${o.publisher}/${o.package_}/${o.name}`}function te(o){let e=o.namespace||"",n=e.indexOf("/");return n>=0?e.substring(0,n):e}function u(o){return o.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}var re=`
|
|
9
|
-
* { box-sizing: border-box; }
|
|
10
|
-
body {
|
|
11
|
-
background: var(--kan-bg);
|
|
12
|
-
color: var(--kan-text);
|
|
13
|
-
font-family: var(--kan-font-body);
|
|
14
|
-
line-height: var(--kan-line-height-body);
|
|
15
|
-
margin: 0;
|
|
16
|
-
}
|
|
17
|
-
a { color: var(--kan-accent); text-decoration: none; }
|
|
18
|
-
a:hover { color: var(--kan-accent-hover); text-decoration: underline; }
|
|
19
|
-
|
|
20
|
-
/* Hero band */
|
|
21
|
-
.kan-hero {
|
|
22
|
-
padding: 32px 0 24px;
|
|
23
|
-
border-bottom: 1px solid var(--kan-border);
|
|
24
|
-
margin-bottom: 32px;
|
|
25
|
-
}
|
|
26
|
-
.kan-hero-eyebrow {
|
|
27
|
-
font-family: var(--kan-font-mono);
|
|
28
|
-
font-size: 11px;
|
|
29
|
-
color: var(--kan-accent);
|
|
30
|
-
letter-spacing: 0.18em;
|
|
31
|
-
text-transform: uppercase;
|
|
32
|
-
margin-bottom: 12px;
|
|
33
|
-
display: block;
|
|
34
|
-
}
|
|
35
|
-
.kan-hero-title {
|
|
36
|
-
font-family: var(--kan-font-display);
|
|
37
|
-
font-size: 32px;
|
|
38
|
-
font-weight: 600;
|
|
39
|
-
letter-spacing: -0.015em;
|
|
40
|
-
margin: 0 0 12px;
|
|
41
|
-
line-height: var(--kan-line-height-heading);
|
|
42
|
-
color: var(--kan-text);
|
|
43
|
-
}
|
|
44
|
-
.kan-hero-subtitle {
|
|
45
|
-
font-size: 17px;
|
|
46
|
-
color: var(--kan-text-dim);
|
|
47
|
-
font-weight: 300;
|
|
48
|
-
line-height: 1.55;
|
|
49
|
-
margin: 0 0 16px;
|
|
50
|
-
}
|
|
51
|
-
.kan-hero-badges {
|
|
52
|
-
display: flex;
|
|
53
|
-
flex-wrap: wrap;
|
|
54
|
-
gap: 6px;
|
|
55
|
-
margin-top: 12px;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/* PropertyList band */
|
|
59
|
-
.kan-property-list {
|
|
60
|
-
margin: 24px 0;
|
|
61
|
-
}
|
|
62
|
-
.kan-property-list-title {
|
|
63
|
-
font-family: var(--kan-font-mono);
|
|
64
|
-
font-size: 11px;
|
|
65
|
-
letter-spacing: 0.18em;
|
|
66
|
-
text-transform: uppercase;
|
|
67
|
-
color: var(--kan-text-dim);
|
|
68
|
-
margin: 0 0 12px;
|
|
69
|
-
font-weight: 600;
|
|
70
|
-
}
|
|
71
|
-
.kan-property-list-items {
|
|
72
|
-
list-style: none;
|
|
73
|
-
padding: 0;
|
|
74
|
-
margin: 0;
|
|
75
|
-
display: flex;
|
|
76
|
-
flex-direction: column;
|
|
77
|
-
gap: 6px;
|
|
78
|
-
}
|
|
79
|
-
.kan-property-list-items > li {
|
|
80
|
-
color: var(--kan-text);
|
|
81
|
-
}
|
|
82
|
-
.kan-property-list-items > li.kan-empty {
|
|
83
|
-
color: var(--kan-text-faint);
|
|
84
|
-
font-style: italic;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/* BadgeRow band */
|
|
88
|
-
.kan-badge-row {
|
|
89
|
-
display: flex;
|
|
90
|
-
flex-wrap: wrap;
|
|
91
|
-
gap: 6px;
|
|
92
|
-
margin: 16px 0;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/* Badge (used by Hero badges + BadgeRow) */
|
|
96
|
-
.kan-badge {
|
|
97
|
-
display: inline-block;
|
|
98
|
-
padding: 2px 8px;
|
|
99
|
-
background: var(--kan-badge-bg);
|
|
100
|
-
color: var(--kan-badge-fg);
|
|
101
|
-
border-radius: var(--kan-radius-sm);
|
|
102
|
-
font-size: 11px;
|
|
103
|
-
font-weight: 500;
|
|
104
|
-
text-decoration: none;
|
|
105
|
-
letter-spacing: 0.02em;
|
|
106
|
-
}
|
|
107
|
-
.kan-badge:hover {
|
|
108
|
-
filter: brightness(1.1);
|
|
109
|
-
text-decoration: none;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/* ChipRow band */
|
|
113
|
-
.kan-chip-row {
|
|
114
|
-
display: flex;
|
|
115
|
-
flex-wrap: wrap;
|
|
116
|
-
gap: 8px;
|
|
117
|
-
margin: 16px 0;
|
|
118
|
-
}
|
|
119
|
-
.kan-chip {
|
|
120
|
-
display: inline-flex;
|
|
121
|
-
align-items: center;
|
|
122
|
-
gap: 6px;
|
|
123
|
-
padding: 5px 10px;
|
|
124
|
-
background: var(--kan-bg-card);
|
|
125
|
-
border: 1px solid var(--kan-border);
|
|
126
|
-
border-radius: var(--kan-radius-sm);
|
|
127
|
-
font-family: var(--kan-font-mono);
|
|
128
|
-
font-size: 11px;
|
|
129
|
-
text-transform: uppercase;
|
|
130
|
-
letter-spacing: 0.04em;
|
|
131
|
-
}
|
|
132
|
-
.kan-chip-key { color: var(--kan-text-faint); }
|
|
133
|
-
.kan-chip-val { color: var(--kan-text); font-weight: 500; }
|
|
134
|
-
|
|
135
|
-
/* ReferenceList band */
|
|
136
|
-
dl.kan-reference-list {
|
|
137
|
-
display: grid;
|
|
138
|
-
grid-template-columns: max-content 1fr;
|
|
139
|
-
gap: 8px 16px;
|
|
140
|
-
margin: 16px 0;
|
|
141
|
-
padding: 16px 18px;
|
|
142
|
-
background: var(--kan-bg-card);
|
|
143
|
-
border: 1px solid var(--kan-border);
|
|
144
|
-
border-radius: var(--kan-radius);
|
|
145
|
-
}
|
|
146
|
-
dl.kan-reference-list dt {
|
|
147
|
-
font-family: var(--kan-font-mono);
|
|
148
|
-
font-size: 11px;
|
|
149
|
-
text-transform: uppercase;
|
|
150
|
-
letter-spacing: 0.1em;
|
|
151
|
-
color: var(--kan-text-faint);
|
|
152
|
-
align-self: center;
|
|
153
|
-
}
|
|
154
|
-
dl.kan-reference-list dd { margin: 0; align-self: center; }
|
|
155
|
-
|
|
156
|
-
/* Link (used by reference values across bands) */
|
|
157
|
-
.kan-link {
|
|
158
|
-
color: var(--kan-accent);
|
|
159
|
-
text-decoration: none;
|
|
160
|
-
}
|
|
161
|
-
.kan-link:hover {
|
|
162
|
-
color: var(--kan-accent-hover);
|
|
163
|
-
text-decoration: underline;
|
|
164
|
-
}
|
|
165
|
-
`.trim();export{w as a};
|