@vpxa/aikit 0.1.351 → 0.1.353
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/blocks-core/dist/index.mjs +949 -118
- package/packages/core/dist/index.d.ts +3 -0
- package/packages/core/dist/index.js +1 -1
- package/packages/present/dist/annotation-layer.js +48 -74
- package/packages/present/dist/index.html +977 -153
- package/packages/server/dist/bin.js +1 -1
- package/packages/server/dist/index.js +288 -109
- package/packages/server/dist/prelude-DetbWo8R.js +1 -0
- package/packages/server/dist/prelude-hfAEi93R.js +2 -0
- package/packages/server/dist/sampling-CWjnUevo.js +2 -0
- package/packages/server/dist/sampling-CnE3owSt.js +1 -0
- package/packages/server/dist/{server-Dc2XtS92.js → server-D5eu57oU.js} +150 -148
- package/packages/server/dist/{server-Ct4BK2hi.js → server-D7gZ4K_H.js} +150 -148
- package/packages/server/dist/{server-http-DBmzukZH.js → server-http-AarbD3gm.js} +1 -1
- package/packages/server/dist/{server-http-BNC9qZBj.js → server-http-wnYmWFkC.js} +1 -1
- package/packages/server/dist/{server-stdio-JHWimdo9.js → server-stdio-BWoMqXU8.js} +1 -1
- package/packages/server/dist/{server-stdio-DkDdZI98.js → server-stdio-CBGO6XiO.js} +1 -1
- package/packages/server/viewers/canvas.html +944 -127
- package/packages/server/viewers/code-review-viewer.html +352 -0
- package/packages/server/viewers/report-template.html +918 -101
- package/packages/server/viewers/task-plan-static.html +1 -1
- package/packages/server/viewers/tour-viewer.html +919 -102
- package/packages/tools/dist/index.js +82 -82
- package/scaffold/dist/definitions/skills/c4-architecture.mjs +1 -1
- package/scaffold/dist/definitions/skills/docs.mjs +19 -3
- package/scaffold/dist/definitions/skills/present.mjs +317 -13
- package/scaffold/dist/generated/block-docs.mjs +18 -64
- package/packages/server/dist/prelude-Clxlztkk.js +0 -1
- package/packages/server/dist/prelude-Dn7jTsqe.js +0 -2
- package/packages/server/dist/sampling-giGWyrcO.js +0 -1
- package/packages/server/dist/sampling-nivAea83.js +0 -2
|
@@ -1,22 +1,135 @@
|
|
|
1
|
-
function e(e){return e.kind===`result`}function t(e){return e.kind===`error`}function n(e){return String(e??``).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function r(e){let t=String(e??``).trim();return/^(https?:|mailto:|#)/i.test(t)?t:`#`}function i(e){return String(e??``).replace(/[^a-zA-Z0-9_-]/g,`_`)}function a(e){if(e==null)return``;if(Array.isArray(e))return e.map(a).join(`, `);if(typeof e==`object`)try{return JSON.stringify(e)}catch{return String(e)}return String(e)}function o(e){if(typeof e!=`string`)return e;let t=e.trim();if(t.startsWith(`[`)&&t.endsWith(`]`)||t.startsWith(`{`)&&t.endsWith(`}`))try{return JSON.parse(t)}catch{return e}return e}function s(e){return n(String(e??``)).replace(/\*\*(.+?)\*\*/g,`<strong>$1</strong>`).replace(/`(.+?)`/g,`<code>$1</code>`).replace(/\[([^\]]+)\]\(([^)]+)\)/g,(e,t,n)=>`<a href="${r(n)}">${t}</a>`)}const c={ok:`success`,pass:`success`,passed:`success`,good:`success`,error:`danger`,fail:`danger`,failed:`danger`,critical:`danger`,high:`danger`,warn:`warning`,caution:`warning`,medium:`warning`,info:`accent`,low:`accent`,note:`accent`},l=new Set([`success`,`danger`,`warning`,`accent`]);function u(e){if(!e)return`accent`;let t=String(e).toLowerCase(),n=c[t]??t;return l.has(n)?n:`accent`}function d(e,t=`fg`){return`var(--dt-${u(e)}-${t})`}function f(e){let t=e.value;return Array.isArray(t)?t:t&&typeof t==`object`&&`items`in t&&Array.isArray(t.items)?t.items:[]}function p(e){let t=o(e);return Array.isArray(t)?t:[]}function m(e,t){return`<div class="bk-actions">${p(e.value).map(e=>{let t=i(e.id);if(e.type===`select`){let r=(e.options??[]).map(e=>{let t=typeof e==`string`?e:e.value,r=typeof e==`string`?e:e.label;return`<option value="${n(t)}">${n(r)}</option>`}).join(``);return`<label class="bk-select-wrap"><span class="bk-visually-hidden">${n(e.label)}</span><select class="bk-select" data-action-id="${t}"><option value="" selected disabled>${n(e.label)}</option>${r}</select></label>`}if(e.type===`text-submit`)return`<div class="bk-text-submit" data-action-id="${t}"><input type="text" class="bk-input" placeholder="${n(e.label)}" data-action-id="${t}" /><button type="button" class="bk-action bk-action--primary" data-action-id="${t}">Send</button></div>`;if(e.type===`form-submit`&&e.schema){let r=e.schema;return`<form class="bk-form" data-action-id="${t}"><fieldset>${Object.entries(r).map(([e,t])=>{let r=t.description??e,i=t.type===`number`?`number`:`text`;return`<label class="bk-form-field"><span class="bk-form-label">${n(r)}</span><input type="${i}" class="bk-input" name="${n(e)}" placeholder="${n(r)}" /></label>`}).join(``)}<button type="submit" class="bk-action bk-action--primary">${n(e.label)}</button></fieldset></form>`}return`<button type="button" class="bk-action bk-action--${n(e.variant??`default`)}" data-action-id="${t}">${n(e.label)}</button>`}).join(``)}<div class="bk-action-feedback" style="display:none;font-size:0.875rem;color:var(--dt-text-secondary);padding:var(--dt-space-2) 0;" data-feedback-state="pending">💬 Feedback sent</div></div>`}function ee(e,t){return`<div class="bk-cards">${f(e).map(e=>{let t=e.badge?`<span class="bk-card-badge">${n(e.badge)}</span>`:``,r=e.body?`<div class="bk-card-body">${n(e.body)}</div>`:``,i=e.description?`<div class="bk-card-description">${n(e.description)}</div>`:``;return`<article class="bk-card" data-tone="${u(e.status)}"><div class="bk-card-header"><div class="bk-card-title">${n(e.title)}</div>${t}</div>${r}${i}</article>`}).join(``)}</div>`}const h=[`#3b82f6`,`#10b981`,`#f59e0b`,`#ef4444`,`#8b5cf6`,`#ec4899`,`#06b6d4`,`#84cc16`],g=new Set([`line`,`area`,`bar`,`horizontal-bar`,`pie`,`donut`,`sparkline`,`heatmap`]);function te(e,t){let n=ne(e),r=ue(n.headers,n.data);if(n.data.length===0||!g.has(n.chartType))return de(n.note,r);let i=re(n);if(!i)return de(n.note,r);let a=n.chartType===`pie`||n.chartType===`donut`?[]:n.yKeys;return`<div class="bk-chart"><div class="bk-chart-surface">${i}</div>${a.length>1?pe(a):``}${fe(r)}</div>`}function ne(e){let t=o(e.value),r=Array.isArray(t?.data)?t.data:[],i=String(t?.chartType??e.chartType??`bar`),a=g.has(i)?i:`bar`,s=n(i),c=me(r,String(t?.xKey??`label`)),l=Array.isArray(t?.yKeys)?t.yKeys.filter(e=>typeof e==`string`):[],u=l.length>0?l:[`value`];if(l.length===0&&r.length>0&&r[0]!=null){let e=r[0];if(!(`value`in e&&typeof e.value==`number`)){let t=Object.keys(e).filter(t=>t!==c&&typeof e[t]==`number`);t.length>0&&(u=t)}}let d=[c,...u.filter((e,t)=>e!==c&&u.indexOf(e)===t)];return{chartType:a,data:r,xKey:c,yKeys:u,headers:d,note:s}}function re(e){switch(e.chartType){case`line`:case`area`:return ie(e,e.chartType===`area`);case`bar`:return ae(e);case`horizontal-bar`:return oe(e);case`pie`:return se(e,!1);case`donut`:return se(e,!0);case`sparkline`:return ce(e);case`heatmap`:return le(e);default:return``}}function ie(e,t){let r=_(e.data,e.xKey,e.yKeys),i=r.flatMap(e=>e.values).filter(Number.isFinite);if(i.length===0)return``;let a=y(i),o=v(500,300,{left:60,right:20,top:20,bottom:40}),s=r.map((e,t)=>be(t,r.length,o.left,o.right)),c=e.yKeys.map((e,n)=>{let i=h[n%h.length],c=r.map((e,t)=>{let r=s[t],i=b(e.values[n],a,o.bottom,o.top);return`${T(r)},${T(i)}`}),l=r.map((e,t)=>{let r=s[t],c=b(e.values[n],a,o.bottom,o.top);return`<circle cx="${T(r)}" cy="${T(c)}" r="3" fill="${i}" />`}).join(``),u=`<polyline fill="none" stroke="${i}" stroke-width="2.5" stroke-linejoin="round" stroke-linecap="round" points="${c.join(` `)}" />`;return t?`<polygon fill="${i}" fill-opacity="0.16" points="${[`${T(s[0])},${T(o.bottom)}`,...c,`${T(s[s.length-1])},${T(o.bottom)}`].join(` `)}" />${u}${l}`:`${u}${l}`}).join(``);return`<svg class="bk-chart-svg" viewBox="0 0 500 300" width="100%" preserveAspectRatio="xMidYMid meet" role="img" aria-label="${n(`${e.chartType} chart`)}">${ge(o,a)}${ve(o)}${ye(r,s,o.bottom+18)}${c}</svg>`}function ae(e){let t=_(e.data,e.xKey,e.yKeys),n=t.flatMap(e=>e.values).filter(Number.isFinite);if(n.length===0)return``;let r=y(n,{includeZero:!0}),i=v(500,300,{left:60,right:20,top:20,bottom:40}),a=i.width/t.length,o=Math.max(4,Math.min(28,(a-12-4*(e.yKeys.length-1))/e.yKeys.length)),s=e.yKeys.length*o+(e.yKeys.length-1)*4,c=b(0,r,i.bottom,i.top),l=t.map((e,t)=>{let n=i.left+t*a+(a-s)/2;return e.values.map((e,t)=>{let a=h[t%h.length],s=n+t*(o+4),l=b(e,r,i.bottom,i.top),u=Math.min(l,c),d=Math.max(1,Math.abs(c-l));return`<rect x="${T(s)}" y="${T(u)}" width="${T(o)}" height="${T(d)}" rx="3" fill="${a}" />`}).join(``)}).join(``),u=t.map((e,t)=>i.left+t*a+a/2);return`<svg class="bk-chart-svg" viewBox="0 0 500 300" width="100%" preserveAspectRatio="xMidYMid meet" role="img" aria-label="bar chart">${ge(i,r)}${ve(i)}${ye(t,u,i.bottom+18)}${l}</svg>`}function oe(e){let t=_(e.data,e.xKey,e.yKeys),r=t.flatMap(e=>e.values).filter(Number.isFinite);if(r.length===0)return``;let i=y(r,{includeZero:!0}),a=v(500,300,{left:110,right:20,top:20,bottom:36}),o=a.height/t.length,s=Math.max(4,Math.min(18,(o-8-4*(e.yKeys.length-1))/e.yKeys.length)),c=e.yKeys.length*s+(e.yKeys.length-1)*4,l=b(0,i,a.left,a.right),u=t.map((e,t)=>{let r=a.top+t*o+(o-c)/2,u=a.top+t*o+o/2+4;return`${`<text class="bk-chart-label" x="${T(a.left-8)}" y="${T(u)}" text-anchor="end">${n(e.label)}</text>`}${e.values.map((e,t)=>{let n=h[t%h.length],o=r+t*(s+4),c=b(e,i,a.left,a.right),u=Math.min(l,c),d=Math.max(1,Math.abs(c-l));return`<rect x="${T(u)}" y="${T(o)}" width="${T(d)}" height="${T(s)}" rx="3" fill="${n}" />`}).join(``)}`}).join(``);return`<svg class="bk-chart-svg" viewBox="0 0 500 300" width="100%" preserveAspectRatio="xMidYMid meet" role="img" aria-label="horizontal bar chart">${_e(a,i)}<line class="bk-chart-axis" x1="${T(l)}" y1="${T(a.top)}" x2="${T(l)}" y2="${T(a.bottom)}" />${u}</svg>`}function se(e,t){let r=he(e.data,e.xKey,e.yKeys),i=e.data.map(t=>({label:S(t[e.xKey]),value:C(t[r])})).filter(e=>e.value>0);if(i.length===0)return``;let a=i.reduce((e,t)=>e+t.value,0);if(a<=0)return``;let o=t?88*.6:0,s=-90,c=[],l=[];i.forEach((e,r)=>{let i=h[r%h.length],u=e.value/a*360,d=s+u,f=e.value/a*100,p=t?Se(150,140,88,o,s,d):xe(150,140,88,s,d);c.push(`${p?`<path d="${p}" fill="${i}" stroke="var(--dt-bg-secondary)" stroke-width="2" />`:`<circle cx="150" cy="140" r="88" fill="${i}" />`}`);let m=x(150,140,108,s+u/2);l.push(`<text class="bk-chart-slice-label" x="${T(m.x)}" y="${T(m.y)}" text-anchor="${m.x>=150?`start`:`end`}">${n(e.label)} ${n(w(f))}%</text>`),s=d});let u=t?`<circle cx="150" cy="140" r="${T(o-1)}" fill="var(--dt-bg-secondary)" />`:``;return`<svg class="bk-chart-svg" viewBox="0 0 300 300" width="100%" preserveAspectRatio="xMidYMid meet" role="img" aria-label="${t?`donut chart`:`pie chart`}">${c.join(``)}${u}${l.join(``)}</svg>`}function ce(e){let t=he(e.data,e.xKey,e.yKeys),n=e.data.map(e=>C(e[t]));if(n.every(e=>e===0))return``;let r=y(n),i=n.map((e,t)=>{let i=be(t,n.length,0,100),a=b(e,r,28,2);return`${T(i)},${T(a)}`});return`<svg class="bk-chart-svg" viewBox="0 0 100 30" width="100%" height="30" preserveAspectRatio="none" role="img" aria-label="sparkline"><polyline fill="none" stroke="${h[0]}" stroke-width="2.25" stroke-linejoin="round" stroke-linecap="round" points="${i.join(` `)}" /></svg>`}function le(e){let t=e.data.map(t=>({label:S(t[e.xKey]),values:e.yKeys.map(e=>C(t[e]))})),r=t.flatMap(e=>e.values).filter(Number.isFinite);if(r.length===0)return``;let i=y(r),a=v(500,300,{left:80,right:20,top:42,bottom:20}),o=a.width/e.yKeys.length,s=a.height/t.length;return`<svg class="bk-chart-svg" viewBox="0 0 500 300" width="100%" preserveAspectRatio="xMidYMid meet" role="img" aria-label="heatmap chart">${e.yKeys.map((e,t)=>`<text class="bk-chart-label" x="${T(a.left+t*o+o/2)}" y="28" text-anchor="middle">${n(e)}</text>`).join(``)}${t.map((e,t)=>{let r=a.top+t*s+s/2+4;return`<text class="bk-chart-label" x="${T(a.left-8)}" y="${T(r)}" text-anchor="end">${n(e.label)}</text>`}).join(``)}${t.map((e,t)=>e.values.map((e,n)=>{let r=a.left+n*o,c=a.top+t*s;return`<rect x="${T(r)}" y="${T(c)}" width="${T(o-4)}" height="${T(s-4)}" rx="4" stroke="var(--dt-border-muted)" style="fill: ${Ce(e,i)}" />`}).join(``)).join(``)}</svg>`}function ue(e,t){return`<div class="bk-chart-table-wrap"><table class="bk-chart-table"><thead><tr>${e.map(e=>`<th>${n(e)}</th>`).join(``)}</tr></thead><tbody>${t.map(t=>`<tr>${e.map(e=>`<td>${n(a(t[e]))}</td>`).join(``)}</tr>`).join(``)}</tbody></table></div>`}function de(e,t){return`<div class="bk-chart"><div class="bk-chart-note">Chart fallback (${e}) rendered as a data table.</div>${t}</div>`}function fe(e){return`<details class="bk-chart-details"><summary>Show data</summary>${e}</details>`}function pe(e){return`<div class="bk-chart-legend">${e.map((e,t)=>`<span class="bk-chart-legend-item"><span class="bk-chart-legend-swatch" style="background:${h[t%h.length]}"></span>${n(e)}</span>`).join(``)}</div>`}function me(e,t){if(e.length===0||t in e[0])return t;for(let t of e){let e=Object.keys(t).find(e=>typeof t[e]==`string`);if(e)return e}return t}function he(e,t,n){let r=n.find(n=>n!==t&&e.some(e=>we(e[n])));if(r)return r;for(let n of e){let e=Object.keys(n).find(e=>e!==t&&we(n[e]));if(e)return e}return n[0]??`value`}function _(e,t,n){return e.map(e=>({label:S(e[t]),values:n.map(t=>C(e[t]))}))}function ge(e,t){return Array.from({length:5},(r,i)=>{let a=i/4,o=t.max-a*(t.max-t.min),s=e.top+a*e.height;return`<line class="bk-chart-grid" x1="${T(e.left)}" y1="${T(s)}" x2="${T(e.right)}" y2="${T(s)}" /><text class="bk-chart-label" x="${T(e.left-8)}" y="${T(s+4)}" text-anchor="end">${n(w(o))}</text>`}).join(``)}function _e(e,t){return Array.from({length:5},(r,i)=>{let a=i/4,o=t.min+a*(t.max-t.min),s=e.left+a*e.width;return`<line class="bk-chart-grid" x1="${T(s)}" y1="${T(e.top)}" x2="${T(s)}" y2="${T(e.bottom)}" /><text class="bk-chart-label" x="${T(s)}" y="${T(e.bottom+18)}" text-anchor="middle">${n(w(o))}</text>`}).join(``)}function ve(e){return`<line class="bk-chart-axis" x1="${T(e.left)}" y1="${T(e.top)}" x2="${T(e.left)}" y2="${T(e.bottom)}" /><line class="bk-chart-axis" x1="${T(e.left)}" y1="${T(e.bottom)}" x2="${T(e.right)}" y2="${T(e.bottom)}" />`}function ye(e,t,r){return e.map((e,i)=>`<text class="bk-chart-label" x="${T(t[i])}" y="${T(r)}" text-anchor="middle">${n(e.label)}</text>`).join(``)}function v(e,t,n){return{left:n.left,top:n.top,right:e-n.right,bottom:t-n.bottom,width:e-n.left-n.right,height:t-n.top-n.bottom}}function y(e,t){let n=Math.min(...e),r=Math.max(...e);if(t?.includeZero&&(n=Math.min(n,0),r=Math.max(r,0)),n===r){let e=n===0?1:Math.abs(n)*.1||1;n-=e,r+=e}return{min:n,max:r}}function be(e,t,n,r){return t<=1?(n+r)/2:n+e/(t-1)*(r-n)}function b(e,t,n,r){return n+(e-t.min)/(t.max-t.min)*(r-n)}function xe(e,t,n,r,i){if(Math.abs(i-r)>=359.999)return``;let a=x(e,t,n,r),o=x(e,t,n,i),s=+(i-r>180);return`M ${T(e)} ${T(t)} L ${T(a.x)} ${T(a.y)} A ${T(n)} ${T(n)} 0 ${s} 1 ${T(o.x)} ${T(o.y)} Z`}function Se(e,t,n,r,i,a){if(Math.abs(a-i)>=359.999)return``;let o=x(e,t,n,i),s=x(e,t,n,a),c=x(e,t,r,a),l=x(e,t,r,i),u=+(a-i>180);return[`M ${T(o.x)} ${T(o.y)}`,`A ${T(n)} ${T(n)} 0 ${u} 1 ${T(s.x)} ${T(s.y)}`,`L ${T(c.x)} ${T(c.y)}`,`A ${T(r)} ${T(r)} 0 ${u} 0 ${T(l.x)} ${T(l.y)}`,`Z`].join(` `)}function x(e,t,n,r){let i=(r-90)*Math.PI/180;return{x:e+n*Math.cos(i),y:t+n*Math.sin(i)}}function Ce(e,t){let n=18+Math.max(0,Math.min(1,(e-t.min)/(t.max-t.min)))*64;return`color-mix(in srgb, var(--dt-bg-secondary) ${T(100-n)}%, var(--dt-accent-fg) ${T(n)}%)`}function S(e){return e==null?``:String(a(e))}function C(e){if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);if(Number.isFinite(t))return t}return 0}function we(e){return typeof e==`number`?Number.isFinite(e):typeof e==`string`&&e.trim()!==``&&Number.isFinite(Number(e))}function w(e){return String(a(Number(e.toFixed(2))))}function T(e){return Number(e.toFixed(2)).toString()}function Te(e,t){return`<ul class="bk-checklist">${f(e).map(e=>{let t=!!e.checked;return`<li class="bk-checklist-item" data-checked="${String(t)}"><span class="bk-checklist-icon">${t?`✓`:`×`}</span><span class="bk-checklist-label">${n(e.label)}</span></li>`}).join(``)}</ul>`}function Ee(e,t){let r=e.language?` language-${i(String(e.language))}`:``,a=e.value??``,o=typeof a==`object`&&a?JSON.stringify(a,null,2):String(a);return`<pre class="bk-code"><code class="${r.trim()}">${n(o)}</code></pre>`}function De(e){let t=o(e);return Array.isArray(t)?t:t&&typeof t==`object`&&Array.isArray(t.columns)?t.columns:[]}function Oe(e,t){return`<div class="bk-comparison">${De(e.value).map(e=>{let t=e.items.map(e=>`<li>${n(e)}</li>`).join(``);return`<section class="bk-comparison-column"><div class="bk-comparison-title">${n(e.title)}</div><ul class="bk-comparison-items">${t}</ul></section>`}).join(``)}</div>`}function ke(e){let t=o(e);if(t&&typeof t==`object`){let e=t;return{name:typeof e.name==`string`?e.name:`Untitled component`,description:typeof e.description==`string`?e.description:void 0,type:typeof e.type==`string`?e.type:void 0,technology:typeof e.technology==`string`?e.technology:void 0,responsibilities:Array.isArray(e.responsibilities)?e.responsibilities.map(String).filter(Boolean):[],interfaces:Array.isArray(e.interfaces)?e.interfaces:[],dependencies:Array.isArray(e.dependencies)?e.dependencies:[],metrics:e.metrics&&typeof e.metrics==`object`?e.metrics:void 0,codeLinks:Array.isArray(e.codeLinks)?e.codeLinks:[]}}return{name:`Untitled component`}}function Ae(e){return e.length===0?``:`<details class="bk-component-detail-section" open><summary class="bk-component-detail-summary">Responsibilities</summary><ul class="bk-component-detail-list">${e.map(e=>`<li>${n(e)}</li>`).join(``)}</ul></details>`}function je(e){return e.length===0?``:`<details class="bk-component-detail-section" open><summary class="bk-component-detail-summary">Interfaces</summary><div class="bk-component-detail-table-wrap"><table class="bk-component-detail-table"><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody>${e.map(e=>`<tr><td class="bk-component-detail-code">${n(e.name)}</td><td class="bk-component-detail-code">${n(e.type)}</td><td>${n(e.description??``)}</td></tr>`).join(``)}</tbody></table></div></details>`}function Me(e){return e.length===0?``:`<details class="bk-component-detail-section" open><summary class="bk-component-detail-summary">Dependencies</summary><ul class="bk-component-detail-dependencies">${e.map(e=>`<li class="bk-component-detail-dependency"><span class="bk-component-detail-dependency-name">${n(e.name)}</span>${e.relationship?`<span class="bk-component-detail-dependency-relationship">${n(e.relationship)}</span>`:``}</li>`).join(``)}</ul></details>`}function Ne(e){let t=Object.entries(e??{});return t.length===0?``:`<details class="bk-component-detail-section" open><summary class="bk-component-detail-summary">Metrics</summary><div class="bk-component-detail-metrics">${t.map(([e,t])=>`<div class="bk-component-detail-metric"><span class="bk-component-detail-metric-label">${n(e)}</span><strong class="bk-component-detail-metric-value">${n(String(t))}</strong></div>`).join(``)}</div></details>`}function Pe(e){let t=Array.isArray(e.codeLinks)?e.codeLinks:[];return t.length===0?``:`<details class="bk-component-detail-section" open><summary class="bk-component-detail-summary">Code Links</summary><div class="bk-component-detail-links">${t.map(e=>`<a class="bk-component-detail-link" href="${r(e.href)}">${n(e.label)}</a>`).join(``)}</div></details>`}function Fe(e,t){let r=ke(e.value),i=r.description?`<p class="bk-component-detail-description">${n(r.description)}</p>`:``,a=r.type?`<span class="bk-component-detail-badge">${n(r.type)}</span>`:``,o=r.technology?`<span class="bk-component-detail-tech">${n(r.technology)}</span>`:``,s=[Ae(r.responsibilities??[]),je(r.interfaces??[]),Me(r.dependencies??[]),Ne(r.metrics),Pe(r)].join(``);return`<article class="bk-component-detail"><header class="bk-component-detail-header"><div class="bk-component-detail-heading"><h4 class="bk-component-detail-name">${n(r.name)}</h4>${a}${o}</div>${i}</header><div class="bk-component-detail-body">${s}</div></article>`}function Ie(e){let t=o(e);if(t&&typeof t==`object`){let e=t;return{name:typeof e.name==`string`?e.name:`unnamed_schema`,description:typeof e.description==`string`?e.description:void 0,fields:Array.isArray(e.fields)?e.fields:[],indexes:Array.isArray(e.indexes)?e.indexes:[]}}return{name:`unnamed_schema`,fields:[]}}function Le(e){return Array.isArray(e.constraints)&&e.constraints.includes(`primary-key`)}function Re(e){return e.startsWith(`foreign-key:`)?`<a class="bk-data-table-schema-badge bk-data-table-schema-badge--link" href="${r(`#${i(e.slice(12).replace(/\./g,`_`))}`)}">${n(e)}</a>`:`<span class="bk-data-table-schema-badge${e===`primary-key`?` bk-data-table-schema-badge--primary`:``}">${n(e)}</span>`}function ze(e){return e.length===0?``:`<section class="bk-data-table-schema-indexes"><h5 class="bk-data-table-schema-subtitle">Indexes</h5><div class="bk-data-table-schema-index-grid">${e.map(e=>`<article class="bk-data-table-schema-index"><div class="bk-data-table-schema-index-name">${n(e.name)}</div><div class="bk-data-table-schema-index-columns">${n(e.columns.join(`, `))}</div><div class="bk-data-table-schema-index-meta">${e.unique?`Unique`:`Standard`}</div></article>`).join(``)}</div></section>`}function Be(e,t){let r=Ie(e.value),a=r.description?`<p class="bk-data-table-schema-description">${n(r.description)}</p>`:``;if(!Array.isArray(r.fields)||r.fields.length===0)return`<section class="bk-data-table-schema"><header class="bk-data-table-schema-header"><h4 class="bk-data-table-schema-title">${n(r.name)}</h4>${a}</header><p class="bk-data-table-schema-empty">No schema fields available.</p></section>`;let o=r.fields.map(e=>{let t=Array.isArray(e.constraints)?e.constraints:[],a=t.length>0?t.map(e=>Re(e)).join(``):`<span class="bk-data-table-schema-badge">none</span>`;return`<tr class="bk-data-table-schema-row${Le(e)?` bk-data-table-schema-row--primary`:``}" id="${i(`${r.name}_${e.name}`)}"><td class="bk-data-table-schema-code">${n(e.name)}</td><td class="bk-data-table-schema-code">${n(e.type)}</td><td class="bk-data-table-schema-required">${e.required?`✓`:`—`}</td><td><div class="bk-data-table-schema-constraints">${a}</div></td><td class="bk-data-table-schema-code">${n(e.default??`—`)}</td><td>${n(e.description??``)}</td></tr>`}).join(``);return`<section class="bk-data-table-schema"><header class="bk-data-table-schema-header"><h4 class="bk-data-table-schema-title">${n(r.name)}</h4>${a}</header><div class="bk-data-table-schema-wrap"><table class="bk-data-table-schema-table"><thead><tr><th>Field Name</th><th>Type</th><th>Required</th><th>Constraints</th><th>Default</th><th>Description</th></tr></thead><tbody>${o}</tbody></table></div>${ze(r.indexes??[])}</section>`}function Ve(e,t){let r=e.value;if(!r||typeof r!=`object`)return`<div class="bk-diagram"><p class="bk-diagram-empty">No diagram data</p></div>`;let i=String(r.diagram_type??`unknown`),a=r.meta,o=String(a?.title??`Diagram`),s=a?.subtitle?String(a.subtitle):void 0,c=E(r.components??r.nodes??r.participants??r.states??[]),l=E(r.connections??r.edges??r.messages??r.flows??r.transitions??[]),u=[`<dt>Type</dt><dd>${n(i)}</dd>`,`<dt>Components</dt><dd>${c.length}</dd>`,`<dt>Relationships</dt><dd>${l.length}</dd>`];r.schema_version!==void 0&&u.push(`<dt>Schema</dt><dd>v${String(r.schema_version)}</dd>`);let d=``;c.length>0&&(d=`<table><thead><tr><th>Component</th><th>Type</th></tr></thead><tbody>${c.slice(0,30).map(e=>{let t=String(e.label??e.name??`(unnamed)`),r=String(e.type??e.kind??`-`);return`<tr><td>${n(t)}</td><td>${n(r)}</td></tr>`}).join(``)}</tbody></table>${c.length>30?`<p class="bk-diagram-truncated">… and ${c.length-30} more</p>`:``}`);let f=``;l.length>0&&(f=`<h4>Relationships</h4><ul>${l.slice(0,20).map(e=>{let t=String(e.from??e.source??`-`),r=String(e.to??e.target??`-`),i=e.label?`: ${n(String(e.label))}`:``;return`<li><strong>${n(t)}</strong> → <strong>${n(r)}</strong>${i}</li>`}).join(``)}</ul>${l.length>20?`<p class="bk-diagram-truncated">… and ${l.length-20} more relationships</p>`:``}`);let p=s?`<p class="bk-diagram-subtitle">${n(s)}</p>`:``;return`<div class="bk-diagram">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
function e(e){return e.kind===`result`}function t(e){return e.kind===`error`}function n(e){return String(e??``).replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function r(e){let t=String(e??``).trim();return/^(https?:|mailto:|#)/i.test(t)?t:`#`}function i(e){return String(e??``).replace(/[^a-zA-Z0-9_-]/g,`_`)}function a(e){if(e==null)return``;if(Array.isArray(e))return e.map(a).join(`, `);if(typeof e==`object`)try{return JSON.stringify(e)}catch{return String(e)}return String(e)}function o(e){if(typeof e!=`string`)return e;let t=e.trim();if(t.startsWith(`[`)&&t.endsWith(`]`)||t.startsWith(`{`)&&t.endsWith(`}`))try{return JSON.parse(t)}catch{return e}return e}function s(e){return n(String(e??``)).replace(/\*\*(.+?)\*\*/g,`<strong>$1</strong>`).replace(/`(.+?)`/g,`<code>$1</code>`).replace(/\[([^\]]+)\]\(([^)]+)\)/g,(e,t,n)=>`<a href="${r(n)}">${t}</a>`)}const c={ok:`success`,pass:`success`,passed:`success`,good:`success`,error:`danger`,fail:`danger`,failed:`danger`,critical:`danger`,high:`danger`,warn:`warning`,caution:`warning`,medium:`warning`,info:`accent`,low:`accent`,note:`accent`},l=new Set([`success`,`danger`,`warning`,`accent`]);function u(e){if(!e)return`accent`;let t=String(e).toLowerCase(),n=c[t]??t;return l.has(n)?n:`accent`}function d(e,t=`fg`){return`var(--dt-${u(e)}-${t})`}function f(e){let t=e.value;return Array.isArray(t)?t:t&&typeof t==`object`&&`items`in t&&Array.isArray(t.items)?t.items:[]}function p(e){let t=o(e);return Array.isArray(t)?t:[]}function m(e,t){return`<div class="bk-actions">${p(e.value).map(e=>{let t=i(e.id);if(e.type===`select`){let r=(e.options??[]).map(e=>{let t=typeof e==`string`?e:e.value,r=typeof e==`string`?e:e.label;return`<option value="${n(t)}">${n(r)}</option>`}).join(``);return`<label class="bk-select-wrap"><span class="bk-visually-hidden">${n(e.label)}</span><select class="bk-select" data-action-id="${t}" data-action-row="single"><option value="" selected disabled>${n(e.label)}</option>${r}</select></label>`}if(e.type===`text-submit`)return`<div class="bk-text-submit" data-action-id="${t}" data-action-row="multi"><input type="text" class="bk-input" placeholder="${n(e.label)}" data-action-id="${t}" /><button type="button" class="bk-action bk-action--primary" data-action-id="${t}">Send</button></div>`;if(e.type===`multi-select`){let r=(e.options??[]).map(e=>{let t=typeof e==`string`?e:e.value,r=typeof e==`string`?e:e.label;return`<option value="${n(t)}">${n(r)}</option>`}).join(``);return`<label class="bk-select-wrap"><span class="bk-visually-hidden">${n(e.label)}</span><select class="bk-select bk-multi-select" data-action-id="${t}" data-action-row="single" multiple size="1">${r}</select></label>`}if(e.type===`form-submit`&&e.schema){let r=e.schema;return`<form class="bk-form" data-action-id="${t}" data-action-row="multi"><fieldset>${Object.entries(r).map(([e,t])=>{let r=t.description??e,i=t.type===`number`?`number`:`text`;return`<label class="bk-form-field"><span class="bk-form-label">${n(r)}</span><input type="${i}" class="bk-input" name="${n(e)}" placeholder="${n(r)}" /></label>`}).join(``)}<button type="submit" class="bk-action bk-action--primary">${n(e.label)}</button></fieldset></form>`}return`<button type="button" class="bk-action bk-action--${n(e.variant??`default`)}" data-action-id="${t}" data-action-row="single">${n(e.label)}</button>`}).join(``)}<div class="bk-action-feedback" style="display:none;font-size:0.875rem;color:var(--dt-text-secondary);padding:var(--dt-space-2) 0;" data-feedback-state="pending">💬 Feedback sent</div></div>`}function h(e,t){return`<div class="bk-cards">${f(e).map((e,t)=>{let r=e.badge?`<span class="bk-card-badge">${n(e.badge)}</span>`:``,i=e.body?`<div class="bk-card-body">${n(e.body)}</div>`:``,a=e.description?`<div class="bk-card-description">${n(e.description)}</div>`:``;return`<article class="bk-card" data-tone="${u(e.status)}" style="--i: ${t}" aria-label="${n(e.title)}">${r?`<div class="bk-card-header"><div class="bk-card-title">${n(e.title)}</div>${r}</div>`:`<div class="bk-card-header"><div class="bk-card-title">${n(e.title)}</div></div>`}${i}${a}</article>`}).join(``)}</div>`}const g=[`#45c8a8`,`#c89bff`,`#f5b342`,`#6baef8`,`#2bd47c`,`#f56a6a`,`#f472b6`,`#38bdf8`],_=new Set([`line`,`area`,`bar`,`horizontal-bar`,`pie`,`donut`,`sparkline`,`heatmap`]);function v(e,t){let n=ee(e),r=ce(n.headers,n.data);if(n.data.length===0||!_.has(n.chartType))return le(n.note,r);let i=te(n);if(!i)return le(n.note,r);let a=n.chartType===`pie`||n.chartType===`donut`?[]:n.yKeys;return`<div class="bk-chart"><div class="bk-chart-surface">${i}</div>${a.length>1?de(a):``}${ue(r)}</div>`}function ee(e){let t=o(e.value),r=Array.isArray(t?.data)?t.data:[],i=String(t?.chartType??e.chartType??`bar`),a=_.has(i)?i:`bar`,s=n(i),c=fe(r,String(t?.xKey??`label`)),l=Array.isArray(t?.yKeys)?t.yKeys.filter(e=>typeof e==`string`):[],u=l.length>0?l:[`value`];if(l.length===0&&r.length>0&&r[0]!=null){let e=r[0];if(!(`value`in e&&typeof e.value==`number`)){let t=Object.keys(e).filter(t=>t!==c&&typeof e[t]==`number`);t.length>0&&(u=t)}}let d=[c,...u.filter((e,t)=>e!==c&&u.indexOf(e)===t)];return{chartType:a,data:r,xKey:c,yKeys:u,headers:d,note:s}}function te(e){switch(e.chartType){case`line`:case`area`:return ne(e,e.chartType===`area`);case`bar`:return re(e);case`horizontal-bar`:return ie(e);case`pie`:return ae(e,!1);case`donut`:return ae(e,!0);case`sparkline`:return oe(e);case`heatmap`:return se(e);default:return``}}function ne(e,t){let r=me(e.data,e.xKey,e.yKeys),i=r.flatMap(e=>e.values).filter(Number.isFinite);if(i.length===0)return``;let a=b(i),o=y(500,300,{left:60,right:20,top:20,bottom:40}),s=r.map((e,t)=>ye(t,r.length,o.left,o.right)),c=e.yKeys.map((e,n)=>{let i=g[n%g.length],c=r.map((e,t)=>{let r=s[t],i=x(e.values[n],a,o.bottom,o.top);return`${E(r)},${E(i)}`}),l=r.map((e,t)=>{let r=s[t],c=x(e.values[n],a,o.bottom,o.top);return`<circle cx="${E(r)}" cy="${E(c)}" r="3" fill="${i}" />`}).join(``),u=`<polyline fill="none" stroke="${i}" stroke-width="2.5" stroke-linejoin="round" stroke-linecap="round" points="${c.join(` `)}" />`;return t?`<polygon fill="${i}" fill-opacity="0.16" points="${[`${E(s[0])},${E(o.bottom)}`,...c,`${E(s[s.length-1])},${E(o.bottom)}`].join(` `)}" />${u}${l}`:`${u}${l}`}).join(``);return`<svg class="bk-chart-svg" viewBox="0 0 500 300" width="100%" preserveAspectRatio="xMidYMid meet" role="img" aria-label="${n(`${e.chartType} chart`)}">${he(o,a)}${_e(o)}${ve(r,s,o.bottom+18)}${c}</svg>`}function re(e){let t=me(e.data,e.xKey,e.yKeys),n=t.flatMap(e=>e.values).filter(Number.isFinite);if(n.length===0)return``;let r=b(n,{includeZero:!0}),i=y(500,300,{left:60,right:20,top:20,bottom:40}),a=i.width/t.length,o=Math.max(4,Math.min(28,(a-12-4*(e.yKeys.length-1))/e.yKeys.length)),s=e.yKeys.length*o+(e.yKeys.length-1)*4,c=x(0,r,i.bottom,i.top),l=t.map((e,t)=>{let n=i.left+t*a+(a-s)/2;return e.values.map((e,t)=>{let a=g[t%g.length],s=n+t*(o+4),l=x(e,r,i.bottom,i.top),u=Math.min(l,c),d=Math.max(1,Math.abs(c-l));return`<rect x="${E(s)}" y="${E(u)}" width="${E(o)}" height="${E(d)}" rx="3" fill="${a}" />`}).join(``)}).join(``),u=t.map((e,t)=>i.left+t*a+a/2);return`<svg class="bk-chart-svg" viewBox="0 0 500 300" width="100%" preserveAspectRatio="xMidYMid meet" role="img" aria-label="bar chart">${he(i,r)}${_e(i)}${ve(t,u,i.bottom+18)}${l}</svg>`}function ie(e){let t=me(e.data,e.xKey,e.yKeys),r=t.flatMap(e=>e.values).filter(Number.isFinite);if(r.length===0)return``;let i=b(r,{includeZero:!0}),a=y(500,300,{left:110,right:20,top:20,bottom:36}),o=a.height/t.length,s=Math.max(4,Math.min(18,(o-8-4*(e.yKeys.length-1))/e.yKeys.length)),c=e.yKeys.length*s+(e.yKeys.length-1)*4,l=x(0,i,a.left,a.right),u=t.map((e,t)=>{let r=a.top+t*o+(o-c)/2,u=a.top+t*o+o/2+4;return`${`<text class="bk-chart-label" x="${E(a.left-8)}" y="${E(u)}" text-anchor="end">${n(e.label)}</text>`}${e.values.map((e,t)=>{let n=g[t%g.length],o=r+t*(s+4),c=x(e,i,a.left,a.right),u=Math.min(l,c),d=Math.max(1,Math.abs(c-l));return`<rect x="${E(u)}" y="${E(o)}" width="${E(d)}" height="${E(s)}" rx="3" fill="${n}" />`}).join(``)}`}).join(``);return`<svg class="bk-chart-svg" viewBox="0 0 500 300" width="100%" preserveAspectRatio="xMidYMid meet" role="img" aria-label="horizontal bar chart">${ge(a,i)}<line class="bk-chart-axis" x1="${E(l)}" y1="${E(a.top)}" x2="${E(l)}" y2="${E(a.bottom)}" />${u}</svg>`}function ae(e,t){let r=pe(e.data,e.xKey,e.yKeys),i=e.data.map(t=>({label:C(t[e.xKey]),value:w(t[r])})).filter(e=>e.value>0);if(i.length===0)return``;let a=i.reduce((e,t)=>e+t.value,0);if(a<=0)return``;let o=t?88*.6:0,s=-90,c=[],l=[];i.forEach((e,r)=>{let i=g[r%g.length],u=e.value/a*360,d=s+u,f=e.value/a*100,p=t?xe(150,140,88,o,s,d):be(150,140,88,s,d);c.push(`${p?`<path d="${p}" fill="${i}" stroke="var(--dt-bg-secondary)" stroke-width="2" />`:`<circle cx="150" cy="140" r="88" fill="${i}" />`}`);let m=S(150,140,108,s+u/2);l.push(`<text class="bk-chart-slice-label" x="${E(m.x)}" y="${E(m.y)}" text-anchor="${m.x>=150?`start`:`end`}">${n(e.label)} ${n(T(f))}%</text>`),s=d});let u=t?`<circle cx="150" cy="140" r="${E(o-1)}" fill="var(--dt-bg-secondary)" />`:``;return`<svg class="bk-chart-svg" viewBox="0 0 300 300" width="100%" preserveAspectRatio="xMidYMid meet" role="img" aria-label="${t?`donut chart`:`pie chart`}">${c.join(``)}${u}${l.join(``)}</svg>`}function oe(e){let t=pe(e.data,e.xKey,e.yKeys),n=e.data.map(e=>w(e[t]));if(n.every(e=>e===0))return``;let r=b(n),i=n.map((e,t)=>{let i=ye(t,n.length,0,100),a=x(e,r,28,2);return`${E(i)},${E(a)}`});return`<svg class="bk-chart-svg" viewBox="0 0 100 30" width="100%" height="30" preserveAspectRatio="none" role="img" aria-label="sparkline"><polyline fill="none" stroke="${g[0]}" stroke-width="2.25" stroke-linejoin="round" stroke-linecap="round" points="${i.join(` `)}" /></svg>`}function se(e){let t=e.data.map(t=>({label:C(t[e.xKey]),values:e.yKeys.map(e=>w(t[e]))})),r=t.flatMap(e=>e.values).filter(Number.isFinite);if(r.length===0)return``;let i=b(r),a=y(500,300,{left:80,right:20,top:42,bottom:20}),o=a.width/e.yKeys.length,s=a.height/t.length;return`<svg class="bk-chart-svg" viewBox="0 0 500 300" width="100%" preserveAspectRatio="xMidYMid meet" role="img" aria-label="heatmap chart">${e.yKeys.map((e,t)=>`<text class="bk-chart-label" x="${E(a.left+t*o+o/2)}" y="28" text-anchor="middle">${n(e)}</text>`).join(``)}${t.map((e,t)=>{let r=a.top+t*s+s/2+4;return`<text class="bk-chart-label" x="${E(a.left-8)}" y="${E(r)}" text-anchor="end">${n(e.label)}</text>`}).join(``)}${t.map((e,t)=>e.values.map((e,n)=>{let r=a.left+n*o,c=a.top+t*s;return`<rect x="${E(r)}" y="${E(c)}" width="${E(o-4)}" height="${E(s-4)}" rx="4" stroke="var(--dt-border-muted)" style="fill: ${Se(e,i)}" />`}).join(``)).join(``)}</svg>`}function ce(e,t){return`<div class="bk-chart-table-wrap"><table class="bk-chart-table"><thead><tr>${e.map(e=>`<th>${n(e)}</th>`).join(``)}</tr></thead><tbody>${t.map(t=>`<tr>${e.map(e=>`<td>${n(a(t[e]))}</td>`).join(``)}</tr>`).join(``)}</tbody></table></div>`}function le(e,t){return`<div class="bk-chart"><div class="bk-chart-note">Chart fallback (${e}) rendered as a data table.</div>${t}</div>`}function ue(e){return`<details class="bk-chart-details"><summary>Show data</summary>${e}</details>`}function de(e){return`<div class="bk-chart-legend">${e.map((e,t)=>`<span class="bk-chart-legend-item"><span class="bk-chart-legend-swatch" style="background:${g[t%g.length]}"></span>${n(e)}</span>`).join(``)}</div>`}function fe(e,t){if(e.length===0||t in e[0])return t;for(let t of e){let e=Object.keys(t).find(e=>typeof t[e]==`string`);if(e)return e}return t}function pe(e,t,n){let r=n.find(n=>n!==t&&e.some(e=>Ce(e[n])));if(r)return r;for(let n of e){let e=Object.keys(n).find(e=>e!==t&&Ce(n[e]));if(e)return e}return n[0]??`value`}function me(e,t,n){return e.map(e=>({label:C(e[t]),values:n.map(t=>w(e[t]))}))}function he(e,t){return Array.from({length:5},(r,i)=>{let a=i/4,o=t.max-a*(t.max-t.min),s=e.top+a*e.height;return`<line class="bk-chart-grid" x1="${E(e.left)}" y1="${E(s)}" x2="${E(e.right)}" y2="${E(s)}" /><text class="bk-chart-label" x="${E(e.left-8)}" y="${E(s+4)}" text-anchor="end">${n(T(o))}</text>`}).join(``)}function ge(e,t){return Array.from({length:5},(r,i)=>{let a=i/4,o=t.min+a*(t.max-t.min),s=e.left+a*e.width;return`<line class="bk-chart-grid" x1="${E(s)}" y1="${E(e.top)}" x2="${E(s)}" y2="${E(e.bottom)}" /><text class="bk-chart-label" x="${E(s)}" y="${E(e.bottom+18)}" text-anchor="middle">${n(T(o))}</text>`}).join(``)}function _e(e){return`<line class="bk-chart-axis" x1="${E(e.left)}" y1="${E(e.top)}" x2="${E(e.left)}" y2="${E(e.bottom)}" /><line class="bk-chart-axis" x1="${E(e.left)}" y1="${E(e.bottom)}" x2="${E(e.right)}" y2="${E(e.bottom)}" />`}function ve(e,t,r){return e.map((e,i)=>`<text class="bk-chart-label" x="${E(t[i])}" y="${E(r)}" text-anchor="middle">${n(e.label)}</text>`).join(``)}function y(e,t,n){return{left:n.left,top:n.top,right:e-n.right,bottom:t-n.bottom,width:e-n.left-n.right,height:t-n.top-n.bottom}}function b(e,t){let n=e.reduce((e,t)=>e<t?e:t,1/0),r=e.reduce((e,t)=>e>t?e:t,-1/0);if(t?.includeZero&&(n=Math.min(n,0),r=Math.max(r,0)),n===r){let e=n===0?1:Math.abs(n)*.1||1;n-=e,r+=e}return{min:n,max:r}}function ye(e,t,n,r){return t<=1?(n+r)/2:n+e/(t-1)*(r-n)}function x(e,t,n,r){return n+(e-t.min)/(t.max-t.min)*(r-n)}function be(e,t,n,r,i){if(Math.abs(i-r)>=359.999)return``;let a=S(e,t,n,r),o=S(e,t,n,i),s=+(i-r>180);return`M ${E(e)} ${E(t)} L ${E(a.x)} ${E(a.y)} A ${E(n)} ${E(n)} 0 ${s} 1 ${E(o.x)} ${E(o.y)} Z`}function xe(e,t,n,r,i,a){if(Math.abs(a-i)>=359.999)return``;let o=S(e,t,n,i),s=S(e,t,n,a),c=S(e,t,r,a),l=S(e,t,r,i),u=+(a-i>180);return[`M ${E(o.x)} ${E(o.y)}`,`A ${E(n)} ${E(n)} 0 ${u} 1 ${E(s.x)} ${E(s.y)}`,`L ${E(c.x)} ${E(c.y)}`,`A ${E(r)} ${E(r)} 0 ${u} 0 ${E(l.x)} ${E(l.y)}`,`Z`].join(` `)}function S(e,t,n,r){let i=(r-90)*Math.PI/180;return{x:e+n*Math.cos(i),y:t+n*Math.sin(i)}}function Se(e,t){let n=18+Math.max(0,Math.min(1,(e-t.min)/(t.max-t.min)))*64;return`color-mix(in srgb, var(--dt-bg-secondary) ${E(100-n)}%, var(--dt-accent-fg) ${E(n)}%)`}function C(e){return e==null?``:String(a(e))}function w(e){if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`&&e.trim()!==``){let t=Number(e);if(Number.isFinite(t))return t}return 0}function Ce(e){return typeof e==`number`?Number.isFinite(e):typeof e==`string`&&e.trim()!==``&&Number.isFinite(Number(e))}function T(e){return String(a(Number(e.toFixed(2))))}function E(e){return Number(e.toFixed(2)).toString()}function we(e,t){return`<ul class="bk-checklist">${f(e).map((e,t)=>{let r=!!e.checked;return`<li class="bk-checklist-item" data-checked="${String(r)}" role="checkbox" aria-checked="${String(r)}" tabindex="0" style="--i: ${t}"><span class="bk-checklist-icon" aria-hidden="true">${r?`✓`:`×`}</span><span class="bk-checklist-label">${n(e.label)}</span></li>`}).join(``)}</ul>`}const Te={javascript:{keywords:`async.await.break.case.catch.class.const.continue.debugger.default.delete.do.else.export.extends.false.finally.for.function.if.import.in.instanceof.let.new.null.of.return.static.super.switch.this.throw.true.try.typeof.undefined.var.void.while.with.yield`.split(`.`),builtins:[`console`,`Math`,`JSON`,`Promise`,`Array`,`Object`,`String`,`Number`,`Boolean`,`Map`,`Set`,`Symbol`,`RegExp`,`Date`,`Error`,`Proxy`,`Reflect`,`Buffer`,`setTimeout`,`setInterval`,`fetch`,`process`,`globalThis`,`Intl`,`BigInt`],types:[`string`,`number`,`boolean`,`symbol`,`bigint`,`undefined`,`null`,`any`,`void`,`never`,`unknown`],commentSingle:`//`,commentMultiOpen:`/*`,commentMultiClose:`*/`,stringDelims:[`"`,`'`,"`"],operators:`+\\-*/%=<>!&|^~?:`},typescript:{keywords:`async.await.break.case.catch.class.const.continue.debugger.default.delete.do.else.enum.export.extends.false.finally.for.function.if.import.in.implements.infer.instanceof.interface.is.keyof.let.new.null.of.readonly.return.static.super.switch.satisfies.this.throw.true.try.typeof.type.undefined.using.var.void.while.with.yield`.split(`.`),builtins:`console.Math.JSON.Promise.Array.Object.String.Number.Boolean.Map.Set.Symbol.RegExp.Date.Error.Proxy.Reflect.Buffer.setTimeout.setInterval.fetch.process.globalThis.Intl.BigInt.Partial.Required.Readonly.Pick.Omit.Record.Exclude.Extract.NonNullable.Parameters.ReturnType.InstanceType.Awaited`.split(`.`),types:[`string`,`number`,`boolean`,`symbol`,`bigint`,`undefined`,`null`,`any`,`void`,`never`,`unknown`,`object`],commentSingle:`//`,commentMultiOpen:`/*`,commentMultiClose:`*/`,stringDelims:[`"`,`'`,"`"],operators:`+\\-*/%=<>!&|^~?:`},python:{keywords:`False.None.True.and.as.assert.async.await.break.class.continue.def.del.elif.else.except.finally.for.from.global.if.import.in.is.lambda.nonlocal.not.or.pass.raise.return.try.while.with.yield`.split(`.`),builtins:`print.len.range.type.int.str.float.list.dict.set.tuple.bool.map.filter.zip.enumerate.reversed.sorted.open.input.isinstance.issubclass.hasattr.getattr.setattr.delattr.super.object.property.staticmethod.classmethod.self.cls.Exception.ValueError.TypeError.KeyError.IndexError.StopIteration`.split(`.`),types:[`int`,`float`,`str`,`bool`,`bytes`,`list`,`dict`,`set`,`tuple`,`None`,`Any`],commentSingle:`#`,stringDelims:[`"`,`'`],hashStrings:!0,operators:`+\\-*/%=<>!&|^~`},json:{keywords:[`true`,`false`,`null`],stringDelims:[`"`],operators:`:`,commentSingle:`//`,commentMultiOpen:`/*`,commentMultiClose:`*/`},yaml:{keywords:[`true`,`false`,`yes`,`no`,`on`,`off`,`null`,`~`],commentSingle:`#`,stringDelims:[`"`,`'`],operators:`:\\-`},html:{keywords:[`!DOCTYPE`],commentMultiOpen:`<!--`,commentMultiClose:`-->`,stringDelims:[`"`,`'`],operators:`=`},css:{keywords:[`import`,`media`,`keyframes`,`font-face`,`supports`,`charset`,`namespace`,`page`,`layer`,`container`],builtins:[`red`,`blue`,`green`,`white`,`black`,`transparent`,`currentcolor`,`inherit`,`initial`,`unset`,`revert`],commentMultiOpen:`/*`,commentMultiClose:`*/`,stringDelims:[`"`,`'`],operators:`:;`},shell:{keywords:[`if`,`then`,`else`,`elif`,`fi`,`for`,`while`,`do`,`done`,`case`,`esac`,`in`,`function`,`return`,`exit`,`break`,`continue`,`select`,`until`,`declare`,`local`,`export`,`readonly`,`unset`],builtins:`echo,printf,read,source,.,cd,pwd,ls,cat,grep,awk,sed,find,xargs,sort,uniq,wc,cut,tr,head,tail,tee,test,[,eval,exec,shift,type,command,let,mapfile,readarray,mkdir,rm,cp,mv,chmod,chown,docker,npm,node,git`.split(`,`),commentSingle:`#`,stringDelims:[`"`,`'`],operators:`=|<>`}},Ee={js:`javascript`,ts:`typescript`,py:`python`,sh:`shell`,bash:`shell`,zsh:`shell`,html:`html`,htm:`html`,css:`css`,json:`json`,yml:`yaml`};function De(e){return e?Te[Ee[e.toLowerCase()]??e.toLowerCase()]??null:null}function D(e,t){let n=[],r=0;for(;r<e.length;){let i=e[r];if(t.stringDelims.includes(i)&&i!=="`"){let a=i;if(t.hashStrings&&e.slice(r,r+3)===a+a+a){n.push({type:`string`,value:a+a+a}),r+=3;let t=e.indexOf(a+a+a,r);t===-1?(n.push({type:`string`,value:e.slice(r)}),r=e.length):(n.push({type:`string`,value:e.slice(r,t)}),n.push({type:`string`,value:a+a+a}),r=t+3);continue}let o=a;for(r++;r<e.length;){if(e[r]===`\\`&&r+1<e.length){o+=e[r]+e[r+1],r+=2;continue}if(e[r]===a){o+=a,r++;break}o+=e[r],r++}n.push({type:`string`,value:o});continue}if(t.stringDelims.includes("`")&&i==="`"){let t="`";for(r++;r<e.length;){if(e[r]===`\\`&&r+1<e.length){t+=e[r]+e[r+1],r+=2;continue}if(e[r]==="`"){t+="`",r++;break}t+=e[r],r++}n.push({type:`string`,value:t});continue}if(t.commentSingle&&e.startsWith(t.commentSingle,r)){n.push({type:`comment`,value:e.slice(r)}),r=e.length;continue}if(t.commentMultiOpen&&t.commentMultiClose&&e.startsWith(t.commentMultiOpen,r)){let i=t.commentMultiClose,a=e.indexOf(i,r+t.commentMultiOpen.length);a===-1?(n.push({type:`comment`,value:e.slice(r)}),r=e.length):(n.push({type:`comment`,value:e.slice(r,a+i.length)}),r=a+i.length);continue}if(i===`0`&&r+1<e.length&&/[xXbB]/.test(e[r+1])&&t.commentSingle!==`#`){let t=e.slice(r).match(/^0[xX][0-9a-fA-F]+/);if(t){n.push({type:`number`,value:t[0]}),r+=t[0].length;continue}}if(/[0-9]/.test(i)||i===`.`&&r+1<e.length&&/[0-9]/.test(e[r+1])){let t=e.slice(r).match(/^\d+(?:\.\d+)?(?:[eE][+-]?\d+)?/);if(t){n.push({type:`number`,value:t[0]}),r+=t[0].length;continue}}if(/[a-zA-Z_$]/.test(i)||i===`@`){let i=e.slice(r).match(/^[@]?[a-zA-Z_$][a-zA-Z0-9_$]*/);if(i){let a=i[0],o=e=>e?e.includes(a):!1;if(o(t.keywords))n.push({type:`keyword`,value:a});else if(o(t.types))n.push({type:`keyword`,value:a});else if(o(t.builtins))n.push({type:`builtin`,value:a});else{let t=r+a.length;t<e.length&&e[t]===`(`?n.push({type:`function`,value:a}):n.push({type:`variable`,value:a})}r+=a.length;continue}}if(i===`<`&&t===Te.html)if(r+1<e.length&&e[r+1]===`/`){let t=e.indexOf(`>`,r+2);if(t!==-1){n.push({type:`punctuation`,value:`</`}),n.push({type:`tag`,value:e.slice(r+2,t)}),n.push({type:`punctuation`,value:`>`}),r=t+1;continue}}else{let t=e.indexOf(`>`,r+1);if(t!==-1){n.push({type:`punctuation`,value:`<`});let i=e.slice(r+1,t),a=i.match(/^[a-zA-Z][a-zA-Z0-9_-]*/);if(a){n.push({type:`tag`,value:a[0]});let e=a[0].length;for(;e<i.length;){if(i[e]===` `||i[e]===` `){e++;continue}let t=i.slice(e).match(/^[a-zA-Z_-][a-zA-Z0-9_-]*(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+))?/);if(t){let r=t[0],i=r.indexOf(`=`);if(i!==-1){n.push({type:`variable`,value:r.slice(0,i).trim()}),n.push({type:`operator`,value:`=`});let e=r.slice(i+1).trim();e.startsWith(`"`)&&e.endsWith(`"`)||e.startsWith(`'`)&&e.endsWith(`'`)?n.push({type:`string`,value:e}):n.push({type:`attr-value`,value:e})}else n.push({type:`attr-name`,value:r});e+=t[0].length;continue}break}}else n.push({type:`variable`,value:i});n.push({type:`punctuation`,value:`>`}),r=t+1;continue}}if(t.operators&&!t._opRegex&&(t._opRegex=RegExp(`[${t.operators}]`)),t._opRegex?.test(i)){let t=i,a=i+(e[r+1]||``);[`=>`,`==`,`!=`,`<=`,`>=`,`&&`,`||`,`++`,`--`,`+=`,`-=`,`*=`,`/=`,`::`,`?.`,`??`,`?:`,`??=`].includes(a)?(t=a,r++):i+e.slice(r+1,r+3)===`...`&&(t=`...`,r+=2),n.push({type:`operator`,value:t}),r++;continue}if(/[{}()[\];,:.]/.test(i)){n.push({type:`punctuation`,value:i}),r++;continue}let a=e.slice(r).match(/^[^\s]+/);a?(n.push({type:`variable`,value:a[0]}),r+=a[0].length):(n.push({type:`variable`,value:i}),r++)}return n}const Oe={keyword:`bk-hljs-keyword`,string:`bk-hljs-string`,comment:`bk-hljs-comment`,number:`bk-hljs-number`,builtin:`bk-hljs-builtin`,operator:`bk-hljs-operator`,punctuation:`bk-hljs-punctuation`,tag:`bk-hljs-tag`,"attr-name":`bk-hljs-attr-name`,"attr-value":`bk-hljs-attr-value`,function:`bk-hljs-function`,variable:`bk-hljs-variable`};function O(e){if(!e.length)return``;let t=[],r=null,i=``,a=()=>{if(!i)return;let e=n(i);r&&!/^\s+$/.test(i)?t.push(`<span class="${r}">${e}</span>`):t.push(e),i=``,r=null};for(let o of e){let e=Oe[o.type];if(/^\s+$/.test(o.value)||!e){i&&a(),t.push(n(o.value));continue}r===e?i+=o.value:(a(),r=e,i=o.value)}return a(),t.join(``)}function k(e,t){let r=De(t);if(!r)return``;let i=e.split(`
|
|
2
|
+
`),a=[],o=!1;for(let e of i){if(o&&r.commentMultiClose){let t=r.commentMultiClose,i=e.indexOf(t);if(i!==-1){o=!1;let s=e.slice(0,i+t.length),c=e.slice(i+t.length),l=`<span class="bk-hljs-comment">${n(s)}</span>`;c.trim()&&(l+=O(D(c,r))),a.push(l);continue}a.push(`<span class="bk-hljs-comment">${n(e)}</span>`);continue}if(r.commentMultiOpen&&r.commentMultiClose){let t=e.indexOf(r.commentMultiOpen);if(t!==-1&&e.indexOf(r.commentMultiClose,t+r.commentMultiOpen.length)===-1){o=!0;let i=e.slice(0,t),s=``;i.trim()&&(s+=O(D(i,r))),s+=`<span class="bk-hljs-comment">${n(e.slice(t))}</span>`,a.push(s);continue}}a.push(O(D(e,r)))}return a.join(`
|
|
3
|
+
`)}function ke(e,t){let r=e.language?` language-${i(String(e.language))}`:``,a=e.value??``,o=typeof a==`object`&&a?JSON.stringify(a,null,2):String(a),s=(e.language?k(o,String(e.language)):``)||n(o);return`<pre class="bk-code"><code class="${r.trim()}">${s}</code></pre>`}function Ae(e){if(!e||typeof e!=`object`)return!1;let t=e,n=t.items;return typeof t.title==`string`&&Array.isArray(n)&&n.every(e=>typeof e==`string`)}function je(e){let t=o(e);return Array.isArray(t)?t.filter(Ae):t&&typeof t==`object`&&Array.isArray(t.columns)?t.columns.filter(Ae):[]}function Me(e){let t=new Set,n=[];for(let r of e)for(let e of r.items)t.has(e)||(t.add(e),n.push(e));return n}function Ne(e,t){if(e.length<2||t.length===0)return!1;let n=!1,r=!1;for(let i of t){let t=e.filter(e=>e.items.includes(i)).length;if(t>1&&(n=!0),t>0&&t<e.length&&(r=!0),n&&r)return!0}return!1}function Pe(e,t){let r=je(e.value),i=Me(r),a=Ne(r,i);return`<div class="bk-comparison">${r.map(e=>{let t=e.recommended===!0,r;if(a){let t=new Set(e.items);r=i.map(e=>`<li class="${t.has(e)?`bk-comparison-item-diff-present`:`bk-comparison-item-diff-absent`}">${n(e)}</li>`).join(``)}else r=e.items.map(e=>`<li>${n(e)}</li>`).join(``);return`<section class="bk-comparison-column"${t?` data-recommended="true"`:``}>${t?`<div class="bk-comparison-recommended-badge">Recommended</div>`:``}<div class="bk-comparison-title">${n(e.title)}</div><ul class="bk-comparison-items">${r}</ul></section>`}).join(``)}</div>`}function Fe(e){let t=o(e);if(t&&typeof t==`object`){let e=t;return{name:typeof e.name==`string`?e.name:`Untitled component`,description:typeof e.description==`string`?e.description:void 0,type:typeof e.type==`string`?e.type:void 0,technology:typeof e.technology==`string`?e.technology:void 0,responsibilities:Array.isArray(e.responsibilities)?e.responsibilities.map(String).filter(Boolean):[],interfaces:Array.isArray(e.interfaces)?e.interfaces:[],dependencies:Array.isArray(e.dependencies)?e.dependencies:[],metrics:e.metrics&&typeof e.metrics==`object`?e.metrics:void 0,codeLinks:Array.isArray(e.codeLinks)?e.codeLinks:[]}}return{name:`Untitled component`}}function Ie(e){return e.length===0?``:`<details class="bk-component-detail-section" open><summary class="bk-component-detail-summary">Responsibilities</summary><ul class="bk-component-detail-list">${e.map(e=>`<li>${n(e)}</li>`).join(``)}</ul></details>`}function Le(e){return e.length===0?``:`<details class="bk-component-detail-section" open><summary class="bk-component-detail-summary">Interfaces</summary><div class="bk-component-detail-table-wrap"><table class="bk-component-detail-table"><thead><tr><th>Name</th><th>Type</th><th>Description</th></tr></thead><tbody>${e.map(e=>`<tr><td class="bk-component-detail-code">${n(e.name)}</td><td class="bk-component-detail-code">${n(e.type)}</td><td>${n(e.description??``)}</td></tr>`).join(``)}</tbody></table></div></details>`}function Re(e){return e.length===0?``:`<details class="bk-component-detail-section" open><summary class="bk-component-detail-summary">Dependencies</summary><ul class="bk-component-detail-dependencies">${e.map(e=>`<li class="bk-component-detail-dependency"><span class="bk-component-detail-dependency-name">${n(e.name)}</span>${e.relationship?`<span class="bk-component-detail-dependency-relationship">${n(e.relationship)}</span>`:``}</li>`).join(``)}</ul></details>`}function ze(e){let t=Object.entries(e??{});return t.length===0?``:`<details class="bk-component-detail-section" open><summary class="bk-component-detail-summary">Metrics</summary><div class="bk-component-detail-metrics">${t.map(([e,t])=>`<div class="bk-component-detail-metric"><span class="bk-component-detail-metric-label">${n(e)}</span><strong class="bk-component-detail-metric-value">${n(String(t))}</strong></div>`).join(``)}</div></details>`}function Be(e){let t=Array.isArray(e.codeLinks)?e.codeLinks:[];return t.length===0?``:`<details class="bk-component-detail-section" open><summary class="bk-component-detail-summary">Code Links</summary><div class="bk-component-detail-links">${t.map(e=>`<a class="bk-component-detail-link" href="${r(e.href)}">${n(e.label)}</a>`).join(``)}</div></details>`}function Ve(e,t){let r=Fe(e.value),i=r.description?`<p class="bk-component-detail-description">${n(r.description)}</p>`:``,a=r.type?`<span class="bk-component-detail-badge">${n(r.type)}</span>`:``,o=r.technology?`<span class="bk-component-detail-tech">${n(r.technology)}</span>`:``,s=[Ie(r.responsibilities??[]),Le(r.interfaces??[]),Re(r.dependencies??[]),ze(r.metrics),Be(r)].join(``);return`<article class="bk-component-detail"><header class="bk-component-detail-header"><div class="bk-component-detail-heading"><h4 class="bk-component-detail-name">${n(r.name)}</h4>${a}${o}</div>${i}</header><div class="bk-component-detail-body">${s}</div></article>`}function He(e){let t=o(e);if(t&&typeof t==`object`){let e=t;return{name:typeof e.name==`string`?e.name:`unnamed_schema`,description:typeof e.description==`string`?e.description:void 0,fields:Array.isArray(e.fields)?e.fields:[],indexes:Array.isArray(e.indexes)?e.indexes:[]}}return{name:`unnamed_schema`,fields:[]}}function Ue(e){return Array.isArray(e.constraints)&&e.constraints.includes(`primary-key`)}function We(e){return e.startsWith(`foreign-key:`)?`<a class="bk-data-table-schema-badge bk-data-table-schema-badge--link" href="${r(`#${i(e.slice(12).replace(/\./g,`_`))}`)}">${n(e)}</a>`:`<span class="bk-data-table-schema-badge${e===`primary-key`?` bk-data-table-schema-badge--primary`:``}">${n(e)}</span>`}function Ge(e){return e.length===0?``:`<section class="bk-data-table-schema-indexes"><h5 class="bk-data-table-schema-subtitle">Indexes</h5><div class="bk-data-table-schema-index-grid">${e.map(e=>`<article class="bk-data-table-schema-index"><div class="bk-data-table-schema-index-name">${n(e.name)}</div><div class="bk-data-table-schema-index-columns">${n(e.columns.join(`, `))}</div><div class="bk-data-table-schema-index-meta">${e.unique?`Unique`:`Standard`}</div></article>`).join(``)}</div></section>`}function Ke(e,t){let r=He(e.value),a=r.description?`<p class="bk-data-table-schema-description">${n(r.description)}</p>`:``;if(!Array.isArray(r.fields)||r.fields.length===0)return`<section class="bk-data-table-schema"><header class="bk-data-table-schema-header"><h4 class="bk-data-table-schema-title">${n(r.name)}</h4>${a}</header><p class="bk-data-table-schema-empty">No schema fields available.</p></section>`;let o=r.fields.map(e=>{let t=Array.isArray(e.constraints)?e.constraints:[],a=t.length>0?t.map(e=>We(e)).join(``):`<span class="bk-data-table-schema-badge">none</span>`;return`<tr class="bk-data-table-schema-row${Ue(e)?` bk-data-table-schema-row--primary`:``}" id="${i(`${r.name}_${e.name}`)}"><td class="bk-data-table-schema-code">${n(e.name)}</td><td class="bk-data-table-schema-code">${n(e.type)}</td><td class="bk-data-table-schema-required">${e.required?`✓`:`—`}</td><td><div class="bk-data-table-schema-constraints">${a}</div></td><td class="bk-data-table-schema-code">${n(e.default??`—`)}</td><td>${n(e.description??``)}</td></tr>`}).join(``);return`<section class="bk-data-table-schema"><header class="bk-data-table-schema-header"><h4 class="bk-data-table-schema-title">${n(r.name)}</h4>${a}</header><div class="bk-data-table-schema-wrap"><table class="bk-data-table-schema-table"><thead><tr><th>Field Name</th><th>Type</th><th>Required</th><th>Constraints</th><th>Default</th><th>Description</th></tr></thead><tbody>${o}</tbody></table></div>${Ge(r.indexes??[])}</section>`}const A=`
|
|
4
|
+
.bk-diagram {
|
|
5
|
+
border: 1px solid var(--dt-border-default);
|
|
6
|
+
border-radius: var(--dt-radius-lg);
|
|
7
|
+
overflow: hidden;
|
|
8
|
+
box-shadow: var(--dt-shadow-sm);
|
|
9
|
+
transition: box-shadow var(--dt-transition-normal);
|
|
10
|
+
}
|
|
11
|
+
.bk-diagram:hover {
|
|
12
|
+
box-shadow: var(--dt-shadow-md);
|
|
13
|
+
}
|
|
14
|
+
.bk-diagram.bk-diagram-has-viz summary {
|
|
15
|
+
padding: var(--dt-space-2) var(--dt-space-3);
|
|
16
|
+
cursor: pointer;
|
|
17
|
+
font-weight: 600;
|
|
18
|
+
font-size: var(--dt-font-size-sm);
|
|
19
|
+
background: var(--dt-bg-secondary);
|
|
20
|
+
border-bottom: 1px solid var(--dt-border-default);
|
|
21
|
+
user-select: none;
|
|
22
|
+
color: var(--dt-text-secondary);
|
|
23
|
+
transition: background var(--dt-transition-fast);
|
|
24
|
+
}
|
|
25
|
+
.bk-diagram.bk-diagram-has-viz summary:hover {
|
|
26
|
+
background: var(--dt-bg-tertiary);
|
|
27
|
+
}
|
|
28
|
+
.bk-diagram.bk-diagram-has-viz[open] summary {
|
|
29
|
+
border-bottom: 1px solid var(--dt-border-default);
|
|
30
|
+
margin-bottom: 0;
|
|
31
|
+
}
|
|
32
|
+
.bk-diagram .bk-diagram-content {
|
|
33
|
+
padding: var(--dt-space-3);
|
|
34
|
+
}
|
|
35
|
+
.bk-diagram table {
|
|
36
|
+
width: 100%;
|
|
37
|
+
border-collapse: collapse;
|
|
38
|
+
font-size: var(--dt-font-size-sm);
|
|
39
|
+
}
|
|
40
|
+
.bk-diagram th, .bk-diagram td {
|
|
41
|
+
padding: var(--dt-space-1) var(--dt-space-2);
|
|
42
|
+
text-align: left;
|
|
43
|
+
border-bottom: 1px solid var(--dt-border-subtle);
|
|
44
|
+
}
|
|
45
|
+
.bk-diagram th {
|
|
46
|
+
font-weight: 600;
|
|
47
|
+
color: var(--dt-text-secondary);
|
|
48
|
+
font-size: var(--dt-font-size-xs);
|
|
49
|
+
text-transform: uppercase;
|
|
50
|
+
letter-spacing: 0.5px;
|
|
51
|
+
}
|
|
52
|
+
.bk-diagram .bk-diagram-meta {
|
|
53
|
+
display: grid;
|
|
54
|
+
grid-template-columns: auto 1fr;
|
|
55
|
+
gap: var(--dt-space-1) var(--dt-space-3);
|
|
56
|
+
font-size: var(--dt-font-size-sm);
|
|
57
|
+
margin-bottom: var(--dt-space-3);
|
|
58
|
+
}
|
|
59
|
+
.bk-diagram .bk-diagram-meta dt {
|
|
60
|
+
font-weight: 600;
|
|
61
|
+
color: var(--dt-text-secondary);
|
|
62
|
+
}
|
|
63
|
+
.bk-diagram .bk-diagram-meta dd {
|
|
64
|
+
margin: 0;
|
|
65
|
+
}
|
|
66
|
+
.bk-diagram ul {
|
|
67
|
+
margin: var(--dt-space-2) 0;
|
|
68
|
+
padding-left: var(--dt-space-4);
|
|
69
|
+
}
|
|
70
|
+
.bk-diagram li {
|
|
71
|
+
font-size: var(--dt-font-size-sm);
|
|
72
|
+
line-height: 1.6;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* After mini-mermaid renders — hide border, show clean SVG */
|
|
76
|
+
.bk-diagram[data-mini-mermaid-rendered] {
|
|
77
|
+
border: 1px solid var(--dt-border-default);
|
|
78
|
+
border-radius: var(--dt-radius-lg);
|
|
79
|
+
overflow: hidden;
|
|
80
|
+
box-shadow: var(--dt-shadow-sm);
|
|
81
|
+
background: var(--dt-bg-canvas);
|
|
82
|
+
}
|
|
83
|
+
.bk-diagram[data-mini-mermaid-rendered]:hover {
|
|
84
|
+
box-shadow: var(--dt-shadow-md);
|
|
85
|
+
}
|
|
86
|
+
.bk-diagram[data-mini-mermaid-rendered] .bk-diagram-viz {
|
|
87
|
+
display: block;
|
|
88
|
+
padding: var(--dt-space-4);
|
|
89
|
+
background: var(--dt-bg-canvas);
|
|
90
|
+
}
|
|
91
|
+
.bk-diagram[data-mini-mermaid-rendered] .bk-diagram-fallback {
|
|
92
|
+
display: none;
|
|
93
|
+
}
|
|
94
|
+
.bk-diagram-viz {
|
|
95
|
+
display: block;
|
|
96
|
+
overflow-x: auto;
|
|
97
|
+
}
|
|
98
|
+
.bk-diagram-viz svg {
|
|
99
|
+
display: block;
|
|
100
|
+
margin: 0 auto;
|
|
101
|
+
max-width: 100%;
|
|
102
|
+
height: auto;
|
|
103
|
+
}
|
|
104
|
+
`,qe={frontend:`🖥️`,backend:`⚙️`,database:`🗄️`,storage:`💾`,cloud:`☁️`,external:`🔗`,security:`🔒`,messagebus:`📨`,person:`👤`,actor:`👤`,system:`🏛️`,"start-end":`●`,automated:`🤖`,manual:`👆`,decision:`🔀`,branch:`🔀`,infrastructure:`📦`};function Je(e){return qe[e]??`📋`}const Ye={frontend:`fill:var(--dt-agent-frontend,#38bdf8)`,backend:`fill:var(--dt-accent-subtle,#14b8a6)`,database:`fill:var(--dt-purple-subtle,#c084fc)`,storage:`fill:var(--dt-purple-subtle,#c084fc)`,cloud:`fill:var(--dt-info-subtle,#bae6fd)`,external:`fill:var(--dt-bg-tertiary,#64748b)`,security:`fill:var(--dt-danger-subtle,#fecaca)`,messagebus:`fill:var(--dt-warning-subtle,#fde68a)`,decision:`fill:var(--dt-danger-subtle,#fecaca)`,automated:`fill:var(--dt-success-subtle,#bbf7d0)`,manual:`fill:var(--dt-warning-subtle,#fde68a)`,person:`fill:var(--dt-accent-subtle,#ccfbf1)`,actor:`fill:var(--dt-accent-subtle,#ccfbf1)`,system:`fill:var(--dt-info-subtle,#bae6fd)`,infrastructure:`fill:var(--dt-bg-tertiary,#e2e8f0)`},Xe={person:{open:`([`,close:`])`},actor:{open:`([`,close:`])`},database:{open:`[(`,close:`)]`},storage:{open:`[(`,close:`)]`},decision:{open:`{`,close:`}`},branch:{open:`{`,close:`}`},external:{open:`{{`,close:`}}`},system:{open:`{{`,close:`}}`},start:{open:`((`,close:`))`},end:{open:`((`,close:`))`}},Ze={open:`[`,close:`]`};function Qe(e){return Xe[e]??Ze}function j(e,t){return e.replace(/[^a-zA-Z0-9_]/g,`_`).replace(/^_+|_+$/g,``).replace(/_+/g,`_`)||(t===void 0?`node`:`node_${t}`)}function M(e){return e.replace(/"/g,`#quot;`).replace(/\[/g,`#91;`).replace(/\]/g,`#93;`).replace(/\(/g,`#40;`).replace(/\)/g,`#41;`).replace(/\{/g,`#123;`).replace(/\}/g,`#125;`).replace(/`/g,`#96;`).replace(/\n/g,` `).replace(/\r/g,``)}function N(e,t){let r=e.value;if(!r||typeof r!=`object`)return`<div class="bk-diagram"><p class="bk-diagram-empty">No diagram data</p></div>`;let i=e.type??`unknown`,a=i.startsWith(`architecture`)?`architecture`:i.startsWith(`workflow`)?`workflow`:i.startsWith(`sequence`)?`sequence`:i.startsWith(`dataflow`)?`dataflow`:i.startsWith(`lifecycle`)?`lifecycle`:String(r.diagram_type??`unknown`),o=r.meta,s=String(o?.title??`Diagram`),c=$e(r.components??r.nodes??r.participants??r.states??[]),l=$e(r.connections??r.edges??r.messages??r.flows??r.transitions??[]),u=[`graph TD`],d=new Set,f=new Map,p=0;for(let e of c){let t=j(String(e.id??e.label??e.name??`node`),p);if(p++,d.has(t))continue;d.add(t),f.set(t,e);let n=String(e.label??e.name??t),r=String(e.type??String(e.kind??``)),i=Je(r),a=e.technology?`<br><small>${M(String(e.technology))}</small>`:``,o=Ye[r]??`fill:var(--dt-bg-secondary,#1e293b)`,s=Qe(r),c=`${i} ${M(n)}`;u.push(` ${t}${s.open}"${c}${a}"${s.close}`),u.push(` style ${t} ${o}`)}for(let e of l){let t=String(e.from??e.source??``),n=String(e.to??e.target??``),r=j(t),i=j(n);if(!d.has(r)||!d.has(i))continue;let a=e.label?` -- "${M(String(e.label))}" --> `:` --> `;u.push(` ${r}${a}${i}`)}let m=d.size>0,h=u.join(`
|
|
105
|
+
`),g=[`<dt>Type</dt><dd>${n(a)}</dd>`,`<dt>Components</dt><dd>${c.length}</dd>`,`<dt>Relationships</dt><dd>${l.length}</dd>`];r.schema_version!==void 0&&g.push(`<dt>Schema</dt><dd>v${String(r.schema_version)}</dd>`);let _=``;c.length>0&&(_=`<table><thead><tr><th>Component</th><th>Type</th></tr></thead><tbody>${c.slice(0,30).map(e=>{let t=String(e.label??e.name??`(unnamed)`),r=String(e.type??String(e.kind??`-`));return`<tr><td>${n(t)}</td><td>${n(r)}</td></tr>`}).join(``)}</tbody></table>${c.length>30?`<p class="bk-diagram-truncated">… and ${c.length-30} more</p>`:``}`);let v=``;return l.length>0&&(v=`<h4>Relationships</h4><ul>${l.slice(0,20).map(e=>{let t=String(e.from??e.source??`-`),r=String(e.to??e.target??`-`),i=e.label?`: ${n(String(e.label))}`:``;return`<li><strong>${n(t)}</strong> → <strong>${n(r)}</strong>${i}</li>`}).join(``)}</ul>${l.length>20?`<p class="bk-diagram-truncated">… and ${l.length-20} more relationships</p>`:``}`),m?`<div class="${`bk-diagram${m?` bk-diagram-has-viz`:``}`}">
|
|
106
|
+
<pre class="bk-diagram-viz mermaid">${n(h)}</pre>
|
|
107
|
+
<details class="bk-diagram-fallback">
|
|
108
|
+
<summary>${n(s)} <small>(${a}, ${c.length} components)</small></summary>
|
|
109
|
+
<div class="bk-diagram-content">
|
|
110
|
+
<dl class="bk-diagram-meta">${g.join(``)}</dl>
|
|
111
|
+
${_}
|
|
112
|
+
${v}
|
|
113
|
+
</div>
|
|
114
|
+
</details>
|
|
115
|
+
</div>`:`<div class="bk-diagram">
|
|
116
|
+
<details open>
|
|
117
|
+
<summary>${n(s)} <small>(${n(a)}, ${c.length} components)</small></summary>
|
|
118
|
+
<div class="bk-diagram-content">
|
|
119
|
+
<dl class="bk-diagram-meta">${g.join(``)}</dl>
|
|
120
|
+
${_}
|
|
121
|
+
${v}
|
|
122
|
+
</div>
|
|
123
|
+
</details>
|
|
124
|
+
</div>`}function $e(e){return Array.isArray(e)?e:[]}function et(e){if(typeof e==`string`)return e;if(e&&typeof e==`object`){let t=e;if(typeof t.content==`string`)return t.content;if(typeof t.before==`string`&&typeof t.after==`string`)return tt(t.before,t.after)}return``}function tt(e,t){let n=e.split(`
|
|
12
125
|
`),r=t.split(`
|
|
13
|
-
`),i=[
|
|
14
|
-
`)}function
|
|
15
|
-
`),a=0,o=0,s=[];for(let e of i)if(e.startsWith(`@@`)){let t=e.match(/@@ -(\d+)/);if(t){a=parseInt(t[1],10)-1;let n=e.match(
|
|
126
|
+
`),i=[`--- a/previous`,`+++ a/current`];for(let e of n)i.push(`-${e}`);for(let e of r)i.push(`+${e}`);return i.join(`
|
|
127
|
+
`)}function nt(e,t){let r=e.slice(1),i=t.slice(1);if(r===i)return{oldHtml:n(e),newHtml:n(t)};let a=0;for(;a<r.length&&a<i.length&&r[a]===i[a];)a++;let o=0,s=r.length-a,c=i.length-a;for(;o<s&&o<c&&r[r.length-1-o]===i[i.length-1-o];)o++;let l=n(r.slice(0,a)),u=n(r.slice(a,r.length-o)),d=n(i.slice(a,i.length-o)),f=n(r.slice(r.length-o));return{oldHtml:u.length>0?`-${l}<span class="bk-diff-word-del">${u}</span>${f}`:`-${l}${f}`,newHtml:d.length>0?`+${l}<span class="bk-diff-word-add">${d}</span>${f}`:`+${l}${f}`}}function rt(e,t){let r=et(e.value);if(!r)return`<div class="bk-diff"></div>`;let i=r.split(`
|
|
128
|
+
`),a=0,o=0,s=[],c=[];function l(){for(let e of c)s.push(`<tr class="bk-diff-del"><td class="bk-diff-ln">${e.oldLnVal}</td><td class="bk-diff-ln"></td><td class="bk-diff-line">${n(e.line)}</td></tr>`);c.length=0}for(let e of i)if(e.startsWith(`@@`)){l();let t=e.match(/@@ -(\d+)/);if(t){a=parseInt(t[1],10)-1;let n=e.match(/\+\s*(\d+)/);o=n?parseInt(n[1],10)-1:0}s.push(`<tr class="bk-diff-hunk"><td colspan="3">${n(e)}</td></tr>`)}else if(e.startsWith(`---`)||e.startsWith(`+++`))l(),s.push(`<tr class="bk-diff-header"><td colspan="3">${n(e)}</td></tr>`);else if(e.startsWith(`+`))if(c.length>0){let t=c.shift();o++;let{oldHtml:n,newHtml:r}=nt(t.line,e);s.push(`<tr class="bk-diff-del"><td class="bk-diff-ln">${t.oldLnVal}</td><td class="bk-diff-ln"></td><td class="bk-diff-line">${n}</td></tr>`),s.push(`<tr class="bk-diff-add"><td class="bk-diff-ln"></td><td class="bk-diff-ln">${o}</td><td class="bk-diff-line">${r}</td></tr>`)}else o++,s.push(`<tr class="bk-diff-add"><td class="bk-diff-ln"></td><td class="bk-diff-ln">${o}</td><td class="bk-diff-line">${n(e)}</td></tr>`);else if(e.startsWith(`-`))a++,c.push({line:e,oldLnVal:a});else{l(),a++,o++;let t=e.startsWith(` `)?e:` ${e}`;s.push(`<tr class="bk-diff-context"><td class="bk-diff-ln">${a}</td><td class="bk-diff-ln">${o}</td><td class="bk-diff-line">${n(t)}</td></tr>`)}l();let u=i.length>25;return`<div class="bk-diff">${`<div class="bk-diff-toolbar">${u?`<button class="bk-diff-btn bk-diff-expand" data-expand-text="▼ Expand" data-collapse-text="▲ Collapse">▼ Expand</button>`:``}${`<button class="bk-diff-btn bk-diff-copy" data-diff="${encodeURIComponent(r)}">\uD83D\uDCCB Copy</button>`}</div>`}<script>(function(){var c=document.currentScript;if(!c)return;var d=c.parentElement;if(!d)return;var b=d.querySelector('.bk-diff-body');if(!b)return;var e=d.querySelector('.bk-diff-expand');if(e){e.addEventListener('click',function(){var l=b.dataset.collapsed==='true';b.dataset.collapsed=l?'false':'true';b.dataset.expanded=l?'true':'false';e.textContent=l?e.dataset.collapseText:e.dataset.expandText;})}var p=d.querySelector('.bk-diff-copy');if(p&&navigator.clipboard){p.addEventListener('click',function(){navigator.clipboard.writeText(decodeURIComponent(p.dataset.diff)).then(function(){p.dataset.copied='true';setTimeout(function(){delete p.dataset.copied},2000)})})}})();<\/script><div class="bk-diff-body"${u?` data-collapsed="true"`:``}><table class="bk-diff-table">${s.join(``)}</table></div></div>`}function it(e){let t=o(e);return Array.isArray(t)?t:t&&typeof t==`object`&&Array.isArray(t.files)?t.files:[]}function at(e,t){return`<div class="bk-docs-browser">${it(e.value).map(e=>{let t=u(e.status),r=e.title?`<div class="bk-doc-title">${n(e.title)}</div>`:``,i=e.content?`<pre class="bk-doc-content">${n(e.content)}</pre>`:``;return`<article class="bk-doc-entry"><div class="bk-doc-header"><div>${r}<div class="bk-doc-path">${n(e.path)}</div></div><span class="bk-doc-status" style="background:var(--dt-${t}-subtle);color:var(--dt-${t}-fg);">${n(e.status??`current`)}</span></div>${i}</article>`}).join(``)}</div>`}function ot(e){let t=o(e);if(t&&typeof t==`object`){let e=t;return{title:typeof e.title==`string`?e.title:void 0,description:typeof e.description==`string`?e.description:void 0,pages:Array.isArray(e.pages)?e.pages:[]}}return{pages:[]}}function st(e){switch(e){case`draft`:return`warning`;case`deprecated`:return`danger`;default:return`accent`}}function ct(e){let t=e.href?`a`:`article`,i=e.href?` href="${r(e.href)}"`:``,a=e.icon?`<span class="bk-docs-hub-card-icon" aria-hidden="true">${n(e.icon)}</span>`:``,o=e.description?`<p class="bk-docs-hub-card-description">${n(e.description)}</p>`:``,s=e.category?`<span class="bk-docs-hub-card-category">${n(e.category)}</span>`:``,c=e.status?`<span class="bk-docs-hub-card-status" data-tone="${st(e.status)}"><span class="bk-docs-hub-card-status-dot" aria-hidden="true"></span>${n(e.status)}</span>`:``;return`<${t} class="bk-docs-hub-card"${i}><div class="bk-docs-hub-card-head">${a}<div class="bk-docs-hub-card-copy"><div class="bk-docs-hub-card-title">${n(e.title)}</div>${o}</div></div><div class="bk-docs-hub-card-meta">${s}${c}</div></${t}>`}function lt(e,t){let r=ot(e.value),i=r.title?`<h4 class="bk-docs-hub-title">${n(r.title)}</h4>`:``,a=r.description?`<p class="bk-docs-hub-description">${n(r.description)}</p>`:``,o=Array.isArray(r.pages)?r.pages:[];return`<section class="bk-docs-hub"><div class="bk-docs-hub-header">${i}${a}</div>${o.length>0?`<div class="bk-docs-hub-grid">${o.map(e=>ct(e)).join(``)}</div>`:`<p class="bk-docs-hub-empty">No documentation pages available.</p>`}</section>`}function ut(e){let t=o(e.value);if(t&&typeof t==`object`){let n=t;return{title:String(n.title??e.title??``),severity:n.severity?String(n.severity):e.severity?String(e.severity):void 0,detail:n.detail??n.value}}return{title:String(e.title??`Finding`),severity:e.severity?String(e.severity):void 0,detail:t}}function dt(e,t){let r=ut(e),i=u(r.severity),a=r.detail===void 0?``:s(String(r.detail)).replace(/\n/g,`<br>`);return`<article class="bk-finding" data-tone="${i}"><div class="bk-finding-header"><div class="bk-finding-title">${n(r.title)}</div><span class="bk-finding-severity" style="background:var(--dt-${i}-subtle);color:var(--dt-${i}-fg);">${n(r.severity??`info`)}</span></div><div class="bk-finding-detail">${a}</div></article>`}function P(e){return typeof e==`object`&&!!e}function F(e){return P(e)?{name:typeof e.name==`string`?e.name:``,total:typeof e.total==`number`?e.total:0,self:typeof e.self==`number`?e.self:void 0,children:Array.isArray(e.children)?e.children.map(F).filter(e=>e!==null):[]}:null}function ft(e){let t=[],n=[{node:e,depth:0}];for(;n.length>0;){let e=n.shift();if(!e)continue;let{node:r,depth:i}=e;t[i]||(t[i]=[]),t[i].push(r);for(let e of r.children??[])n.push({node:e,depth:i+1})}return t}function pt(e){let t=[`#e24d28`,`#e8602a`,`#edad2a`,`#f5c842`,`#fce94f`,`#c4a000`,`#e07028`,`#d45500`];return t[e%t.length]}function mt(e,t){let r=o(e.value);if(!P(r))return`<div class="bk-flame"></div>`;let i=P(r.profile)?F(r.profile):F(r);if(!i)return`<div class="bk-flame"></div>`;let a=ft(i),s=Math.max(i.total,1);return`<div class="bk-flame">${a.map((e,t)=>`<div class="bk-flame-row">${e.map(e=>{let r=Math.max(.5,e.total/s*100),i=r<8?` bk-flame-bar-label--muted`:``,a=(e.children?.length??0)>0,o=e.self===void 0?`${n(e.name)}: ${e.total}`:`${n(e.name)}: ${e.total} (self: ${e.self})`;return`<div class="bk-flame-bar" style="width:${r}%;background:${pt(t)}" title="${o}" data-has-children="${a}">
|
|
16
129
|
<span class="bk-flame-bar-label${i}">${n(e.name)} (${e.total})</span>
|
|
17
130
|
</div>`}).join(``)}</div>`).join(`
|
|
18
|
-
`)}</div>`}function
|
|
19
|
-
`))}</pre>`}const
|
|
131
|
+
`)}</div>`}function ht(e){return String(e??``).replace(/"/g,`\\"`)}function gt(e,t){let r=o(e.value),a=[`graph ${[`TD`,`LR`,`RL`,`BT`].includes(String(e.direction??`TD`))?String(e.direction??`TD`):`TD`}`];for(let e of r?.nodes??[]){let t=i(String(e.id??e.name??`node`)),n=ht(e.label??e.name??t);a.push(` ${t}["${n}"]`)}for(let e of r?.edges??[]){let t=i(String(e.from??e.source??`from`)),n=i(String(e.to??e.target??`to`)),r=e.label?`|${ht(e.label)}|`:``;a.push(` ${t} -->${r} ${n}`)}return`<pre class="bk-graph mermaid">${n(a.join(`
|
|
132
|
+
`))}</pre>`}const _t=`
|
|
20
133
|
.bk-heading {
|
|
21
134
|
margin: 0;
|
|
22
135
|
color: var(--dt-text-primary);
|
|
@@ -31,16 +144,16 @@ function e(e){return e.kind===`result`}function t(e){return e.kind===`error`}fun
|
|
|
31
144
|
.bk-heading--4 { font-size: var(--dt-font-size-xl); }
|
|
32
145
|
.bk-heading--5,
|
|
33
146
|
.bk-heading--6 { font-size: var(--dt-font-size-base); letter-spacing: normal; }
|
|
34
|
-
`;function
|
|
35
|
-
${
|
|
147
|
+
`;function vt(e,t){let r=Number(e.level??2),i=Number.isFinite(r)?Math.max(1,Math.min(r,6)):2;return`<h${i} class="bk-heading bk-heading--${i}">${n(String(e.value??e.title??``))}</h${i}>`}function yt(e){return Array.isArray(e)?e.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return[{key:a(t.key),value:a(t.value)}]}):e&&typeof e==`object`?Object.entries(e).map(([e,t])=>({key:e,value:a(t)})):[]}function bt(e,t){return`<dl class="bk-kv">${yt(e.value).map(e=>`<div class="bk-kv-entry"><dt class="bk-kv-key">${s(e.key)}</dt><dd class="bk-kv-value">${s(e.value)}</dd></div>`).join(``)}</dl>`}function xt(e){let t=o(e);if(t&&typeof t==`object`){let e=t;return{title:typeof e.title==`string`?e.title:void 0,steps:Array.isArray(e.steps)?e.steps:[],edges:Array.isArray(e.edges)?e.edges:[]}}return{steps:[],edges:[]}}function St(e){switch(e){case`completed`:return`success`;case`error`:return`danger`;case`pending`:return`slate`;default:return`accent`}}function Ct(e,t){let n=e.trim().split(/\s+/).filter(Boolean);if(n.length===0)return[``];let r=[],i=``;for(let e of n){let n=i?`${i} ${e}`:e;if(n.length<=t||i.length===0){i=n;continue}if(r.push(i),i=e,r.length===1)break}return i&&r.push(i),r.length>2?r.slice(0,2):(r.length===2&&n.join(` `).length>r[0].length+r[1].length&&(r[1]=`${r[1].slice(0,Math.max(0,t-1))}…`),r)}function wt(e){return e.type===`decision`?{width:112,height:112}:{width:164,height:84}}function Tt(e){let t=32;return e.map(e=>{let{width:n,height:r}=wt(e),i={step:e,x:t,y:28,width:n,height:r,centerX:t+n/2,centerY:28+r/2};return t+=n+44,i})}function Et(e){let t=Ct(e.step.label,e.step.type===`decision`?12:16),r=e.step.description?Ct(e.step.description,e.step.type===`decision`?12:18).slice(0,1):[],a=e.centerY-(t.length+r.length-1)*18/2,o=[...t.map((t,r)=>`<text class="bk-lifecycle-flow-label" x="${e.centerX}" y="${a+r*18}">${n(t)}</text>`),...r.map((r,i)=>`<text class="bk-lifecycle-flow-description" x="${e.centerX}" y="${a+(t.length+i)*18}">${n(r)}</text>`)].join(``),s=`<rect class="bk-lifecycle-flow-shape" x="${e.x}" y="${e.y}" width="${e.width}" height="${e.height}" rx="18" ry="18" />`;e.step.type===`start`||e.step.type===`end`?s=`<rect class="bk-lifecycle-flow-shape" x="${e.x}" y="${e.y}" width="${e.width}" height="${e.height}" rx="40" ry="40" />`:e.step.type===`decision`&&(s=`<polygon class="bk-lifecycle-flow-shape" points="${`${e.centerX},${e.y}`} ${`${e.x+e.width},${e.centerY}`} ${`${e.centerX},${e.y+e.height}`} ${`${e.x},${e.centerY}`}" />`);let c=e.step.type===`parallel`?`<g class="bk-lifecycle-flow-parallel-mark"><line x1="${e.x+18}" y1="${e.y+18}" x2="${e.x+18}" y2="${e.y+e.height-18}" /><line x1="${e.x+e.width-18}" y1="${e.y+18}" x2="${e.x+e.width-18}" y2="${e.y+e.height-18}" /></g>`:``;return`<g class="bk-lifecycle-flow-node bk-lifecycle-flow-node--${e.step.type??`step`} bk-lifecycle-flow-node--${St(e.step.status)}" id="${i(e.step.id)}">${s}${c}${o}</g>`}function Dt(e,t){let r=t.get(e.from),i=t.get(e.to);if(!r||!i)return``;let a=r.x+r.width,o=r.centerY,s=i.x,c=i.centerY,l=Math.round((a+s)/2);return`${`<path class="bk-lifecycle-flow-edge" d="M ${a} ${o} C ${l} ${o} ${l} ${c} ${s} ${c}" marker-end="url(#bk-lifecycle-flow-arrow)" />`}${e.label?`<text class="bk-lifecycle-flow-edge-label" x="${l}" y="${Math.min(o,c)-12}">${n(e.label)}</text>`:``}`}function Ot(e,t){return Array.isArray(t)&&t.length>0?t:e.slice(1).map((t,n)=>({from:e[n].id,to:t.id}))}function kt(e,t){let r=xt(e.value),i=Array.isArray(r.steps)?r.steps.filter(e=>e?.id):[];if(i.length===0)return`<div class="bk-lifecycle-flow"><p class="bk-docs-hub-empty">No lifecycle steps available.</p></div>`;let a=Tt(i),o=new Map(a.map(e=>[e.step.id,e])),s=Ot(i,r.edges),c=Math.max(320,(a.at(-1)?.x??0)+(a.at(-1)?.width??0)+32);return`<figure class="bk-lifecycle-flow">${r.title?`<figcaption class="bk-lifecycle-flow-title">${n(r.title)}</figcaption>`:``}<div class="bk-lifecycle-flow-frame"><svg class="bk-lifecycle-flow-svg" viewBox="0 0 ${c} 172" role="img" aria-label="${n(r.title??`Lifecycle flow`)}"><defs><marker id="bk-lifecycle-flow-arrow" markerWidth="10" markerHeight="10" refX="9" refY="5" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" fill="var(--dt-border-default)" /></marker></defs><g class="bk-lifecycle-flow-edges">${s.map(e=>Dt(e,o)).join(``)}</g><g class="bk-lifecycle-flow-nodes">${a.map(e=>Et(e)).join(``)}</g></svg></div></figure>`}function At(e,t){return`<ul class="bk-list">${(Array.isArray(e.value)?e.value:[]).map(e=>`<li class="bk-list-item">${s(String(e??``))}</li>`).join(``)}</ul>`}const jt=`
|
|
148
|
+
${_t}
|
|
36
149
|
.bk-markdown {
|
|
37
150
|
color: var(--dt-text-primary);
|
|
38
151
|
font-size: var(--dt-font-size-base);
|
|
39
152
|
line-height: 1.7;
|
|
40
153
|
}
|
|
41
|
-
`,
|
|
42
|
-
`))}</code></pre>`),o=!1,s=[],c=``}continue}if(o){s.push(e);continue}if(!t){l();continue}let r=t.match(
|
|
43
|
-
`))}</code></pre>`)}return`<div class="bk-markdown">${i.join(``)}</div>`}function bt(e,t){return`<pre class="bk-mermaid mermaid">${n(String(e.value??``))}</pre>`}function xt(e){if(e==null||e===``)return``;let t=a(e),r=Number(String(e).replace(/[^0-9.-]/g,``));return`<span class="bk-metric-trend">${Number.isNaN(r)?``:r>0?`↑ `:r<0?`↓ `:`→ `}${n(t)}</span>`}function St(e,t){return`<div class="bk-metrics">${f(e).map(e=>`<article class="bk-metric" data-tone="${u(e.status)}"><div class="bk-metric-label">${n(e.label)}</div><div class="bk-metric-value">${n(a(e.value))}</div>${xt(e.trend)}</article>`).join(``)}</div>`}function Ct(e,t){return`<p class="bk-paragraph">${n(String(e.value??e.text??``))}</p>`}function wt(e){let t=o(e);if(Array.isArray(t))return t;if(t&&typeof t==`object`){if(Array.isArray(t.items))return t.items;if(`value`in t)return[t]}return[]}function Tt(e,t){return`<div class="bk-progress">${wt(e.value).map(e=>{let t=Math.max(1,Number(e.max)||100),r=Math.max(0,Number(e.value)||0),i=Math.round(Math.min(r/t*100,100)),a=u(e.color);return`<div class="bk-progress-item"><div class="bk-progress-meta"><span>${n(e.label)}</span><span>${i}%</span></div><div class="bk-progress-track"><span class="bk-progress-bar" style="width:${i}%;background:var(--dt-${a}-emphasis);box-shadow:0 0 16px var(--dt-glow-${a});"></span></div></div>`}).join(``)}</div>`}function Et(e){if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e??``)}}function Dt(e,t){return`<pre class="bk-prompt">${n(Et(e.value))}</pre>`}function Ot(e,t){return`<hr class="bk-separator">`}function kt(e){let t=o(e);return Array.isArray(t)?t:t&&typeof t==`object`&&Array.isArray(t.items)?t.items:[]}function At(e,t){return`<div class="bk-status-board">${kt(e.value).map(e=>{let t=e.items.map(e=>{let t=u(e.status),r=e.description?`<div class="bk-status-description">${n(e.description)}</div>`:``;return`<div class="bk-status-item"><span class="bk-status-pill" style="background:var(--dt-${t}-subtle);color:var(--dt-${t}-fg);">${n(e.status??`pending`)}</span><div class="bk-status-copy"><div class="bk-status-label">${n(e.label??e.name??``)}</div>${r}</div></div>`}).join(``);return`<section class="bk-status-category"><div class="bk-status-category-title">${n(e.category)}</div><div class="bk-status-items">${t}</div></section>`}).join(``)}</div>`}function jt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Mt(e){let t=(e??[]).map(e=>{if(jt(e)){let t=typeof e.key==`string`?e.key:String(e.label??``);return{key:t,label:typeof e.label==`string`?e.label:t}}let t=String(e);return{key:t,label:t}});return{headers:t.map(e=>e.label),keys:t.map(e=>e.key)}}function Nt(e){if(Array.isArray(e.columns)){let{headers:t,keys:n}=Mt(e.columns),r=Array.isArray(e.rows)?e.rows:[];return r.length>0&&Array.isArray(r[0])?{headers:t,keys:n,rows:r.map(e=>Object.fromEntries(n.map((t,n)=>[t,e[n]??``])))}:r.length>0&&typeof r[0]==`object`&&r[0]!==null?{headers:t,keys:n,rows:r}:{headers:t,keys:n,rows:[]}}let t=o(e.value);if(Array.isArray(t)){if(t.length>0&&typeof t[0]==`object`&&t[0]!==null&&!Array.isArray(t[0])){let n=t,r=Array.isArray(e.headers)?e.headers.map(String):Object.keys(n[0]??{});return{headers:r,keys:r,rows:n}}if(t.length>0&&Array.isArray(t[0])){let[n,...r]=t,i=Array.isArray(e.headers)?e.headers.map(String):n.map(String);return{headers:i,keys:i,rows:r.map(e=>Object.fromEntries(i.map((t,n)=>[t,e[n]])))}}}if(t&&typeof t==`object`){let n=Array.isArray(e.headers)?e.headers.map(String):Array.isArray(t.headers)?t.headers.map(String):[],r=Array.isArray(t.rows)?t.rows:[];if(r.length>0&&Array.isArray(r[0]))return{headers:n,keys:n,rows:r.map(e=>Object.fromEntries(n.map((t,n)=>[t,e[n]])))};if(r.length>0&&typeof r[0]==`object`&&r[0]!==null)return{headers:n,keys:n,rows:r}}if(Array.isArray(e.headers)){let t=e.headers.map(String);return{headers:t,keys:t,rows:[]}}if(Array.isArray(e.columns)){let{headers:t,keys:n}=Mt(e.columns);return{headers:t,keys:n,rows:[]}}return{headers:[],keys:[],rows:[]}}function Pt(e,t){let{headers:r,keys:i,rows:o}=Nt(e);return r.length===0?`<div class="bk-table-wrap"><table class="bk-table"><tbody></tbody></table></div>`:`<div class="bk-table-wrap"><table class="bk-table">${`<thead><tr>${r.map(e=>`<th>${n(e)}</th>`).join(``)}</tr></thead>`}<tbody>${o.map(e=>`<tr>${i.map(t=>`<td>${n(a(e[t]))}</td>`).join(``)}</tr>`).join(``)}</tbody></table></div>`}function Ft(e){let t=o(e);return Array.isArray(t)?t:t&&typeof t==`object`&&Array.isArray(t.items)?t.items:[]}function It(e,t){return`<div class="bk-tags">${Ft(e.value).map(e=>{let t=typeof e==`string`?e:String(e.text??e.label??``),r=u(typeof e==`string`?void 0:e.status??e.tone??e.color);return`<span class="bk-tag" style="background:var(--dt-${r}-subtle);color:var(--dt-${r}-fg);">${n(t)}</span>`}).join(``)}</div>`}function Lt(e,t){return`<div class="bk-text">${s(String(e.value??``)).replace(/\n/g,`<br>`)}</div>`}function Rt(e,t){return`<div class="bk-timeline">${f(e).map(e=>{let t=u(e.status),r=e.description?`<div class="bk-timeline-description">${n(e.description)}</div>`:``,i=e.timestamp?`<div class="bk-timeline-timestamp">${n(e.timestamp)}</div>`:``;return`<article class="bk-timeline-item" data-tone="${t}"><span class="bk-timeline-dot" style="background:${`var(--dt-${t}-emphasis)`};box-shadow:0 0 0 6px var(--dt-glow-${t});"></span><div class="bk-timeline-title">${n(e.title)}</div>${r}${i}</article>`}).join(``)}</div>`}function M(e,t){if(Array.isArray(e)){let r=e.map(e=>M(e)).join(``);return t?`<details class="bk-tree-node" open><summary>${n(t)}</summary><div class="bk-tree-children">${r}</div></details>`:`<div class="bk-tree-children">${r}</div>`}if(e&&typeof e==`object`){let r=e,i=typeof r.name==`string`?r.name:typeof r.label==`string`?r.label:typeof r.title==`string`?r.title:void 0;if(i!==void 0)return M(r.children??[],i);let a=Object.entries(r).map(([e,t])=>M(t,e)).join(``);return t?`<details class="bk-tree-node" open><summary>${n(t)}</summary><div class="bk-tree-children">${a}</div></details>`:`<div class="bk-tree-children">${a}</div>`}let r=n(a(e));return t?`<div class="bk-tree-leaf"><span class="bk-tree-key">${n(t)}</span><span class="bk-tree-value">${r}</span></div>`:`<div class="bk-tree-leaf">${r}</div>`}function zt(e,t){return`<div class="bk-tree">${M(o(e.value))}</div>`}const N={"--dt-bg-canvas":`#f5f4ee`,"--dt-bg-primary":`#faf9f4`,"--dt-bg-secondary":`#f0efe8`,"--dt-bg-tertiary":`#ffffff`,"--dt-text-primary":`#1a1a17`,"--dt-text-secondary":`#6b6a65`,"--dt-text-tertiary":`#a8a69e`,"--dt-border-default":`#e3e2da`,"--dt-border-muted":`#d6d5cd`,"--dt-border-subtle":`#eeede6`,"--dt-glass-bg":`rgba(250, 249, 244, 0.78)`,"--dt-glass-blur":`16px`,"--dt-glass-border":`rgba(0, 0, 0, 0.06)`,"--dt-glass-hover-border":`rgba(15, 143, 122, 0.08)`,"--dt-glass-shadow":`0 0 0 1px rgba(0, 0, 0, 0.02), 0 2px 8px rgba(0, 0, 0, 0.04), 0 8px 24px rgba(0, 0, 0, 0.03)`,"--dt-accent-fg":`#0f8f7a`,"--dt-accent-emphasis":`#0f766e`,"--dt-accent-foreground":`#ffffff`,"--dt-accent-muted":`rgba(15, 143, 122, 0.2)`,"--dt-accent-subtle":`rgba(15, 143, 122, 0.07)`,"--dt-success-fg":`#16a34a`,"--dt-success-emphasis":`#15803d`,"--dt-success-muted":`rgba(22, 163, 74, 0.2)`,"--dt-success-subtle":`rgba(22, 163, 74, 0.07)`,"--dt-danger-fg":`#dc2626`,"--dt-danger-emphasis":`#b91c1c`,"--dt-danger-muted":`rgba(220, 38, 38, 0.2)`,"--dt-danger-subtle":`rgba(220, 38, 38, 0.07)`,"--dt-warning-fg":`#d97706`,"--dt-warning-emphasis":`#b45309`,"--dt-warning-muted":`rgba(217, 119, 6, 0.2)`,"--dt-warning-subtle":`rgba(217, 119, 6, 0.07)`,"--dt-info-fg":`#2563eb`,"--dt-info-emphasis":`#1d4ed8`,"--dt-info-muted":`rgba(37, 99, 235, 0.2)`,"--dt-info-subtle":`rgba(37, 99, 235, 0.07)`,"--dt-purple-fg":`#7c3aed`,"--dt-purple-emphasis":`#6d28d9`,"--dt-purple-muted":`rgba(124, 58, 237, 0.2)`,"--dt-purple-subtle":`rgba(124, 58, 237, 0.07)`,"--dt-agent-researcher":`#818cf8`,"--dt-agent-implementer":`#34d399`,"--dt-agent-frontend":`#f472b6`,"--dt-agent-reviewer":`#fbbf24`,"--dt-agent-debugger":`#f87171`,"--dt-agent-security":`#fb923c`,"--dt-agent-explorer":`#38bdf8`,"--dt-agent-documenter":`#c084fc`,"--dt-agent-refactor":`#2dd4bf`,"--dt-agent-planner":`#a78bfa`,"--dt-agent-orchestrator":`#94a3b8`,"--dt-status-pending":`#94a3b8`,"--dt-status-in-progress":`#60a5fa`,"--dt-status-done":`#4ade80`,"--dt-status-blocked":`#f87171`,"--dt-font-sans":`Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif`,"--dt-font-mono":`'JetBrains Mono', 'Geist Mono', 'Fira Code', 'SF Mono', Consolas, monospace`,"--dt-font-size-xs":`0.75rem`,"--dt-font-size-sm":`0.8125rem`,"--dt-font-size-base":`0.875rem`,"--dt-font-size-lg":`1rem`,"--dt-font-size-xl":`1.25rem`,"--dt-font-size-2xl":`1.5rem`,"--dt-font-size-3xl":`2rem`,"--dt-font-size-4xl":`2.5rem`,"--dt-space-1":`0.25rem`,"--dt-space-2":`0.5rem`,"--dt-space-3":`0.75rem`,"--dt-space-4":`1rem`,"--dt-space-5":`1.25rem`,"--dt-space-6":`1.5rem`,"--dt-space-8":`2rem`,"--dt-space-10":`2.5rem`,"--dt-space-12":`3rem`,"--dt-radius-xs":`4px`,"--dt-radius-sm":`6px`,"--dt-radius-md":`8px`,"--dt-radius-lg":`12px`,"--dt-radius-xl":`16px`,"--dt-radius-pill":`999px`,"--dt-shadow-sm":`0 0 0 1px rgba(0, 0, 0, 0.02), 0 1px 3px rgba(0, 0, 0, 0.06)`,"--dt-shadow-md":`0 0 0 1px rgba(0, 0, 0, 0.03), 0 2px 6px rgba(0, 0, 0, 0.05), 0 4px 12px rgba(0, 0, 0, 0.03)`,"--dt-shadow-lg":`0 0 0 1px rgba(0, 0, 0, 0.03), 0 2px 8px rgba(0, 0, 0, 0.06), 0 8px 32px rgba(0, 0, 0, 0.04)`,"--dt-glow-primary":`radial-gradient(circle at 50% 50%, rgba(15, 143, 122, 0.07), rgba(200, 155, 255, 0.03) 50%, transparent 70%)`,"--dt-glow-secondary":`radial-gradient(circle at 50% 50%, rgba(245, 179, 66, 0.05), transparent 50%)`,"--dt-glow-accent":`rgba(15, 143, 122, 0.35)`,"--dt-glow-success":`rgba(22, 163, 74, 0.35)`,"--dt-glow-danger":`rgba(220, 38, 38, 0.35)`,"--dt-glow-warning":`rgba(217, 119, 6, 0.35)`,"--dt-glow-info":`rgba(37, 99, 235, 0.35)`,"--dt-glow-purple":`rgba(124, 58, 237, 0.35)`,"--dt-annotation-comment":`#0f8f7a`,"--dt-annotation-comment-bg":`rgba(15, 143, 122, 0.1)`,"--dt-annotation-deletion":`#dc2626`,"--dt-annotation-deletion-bg":`rgba(220, 38, 38, 0.1)`,"--dt-annotation-hover":`rgba(0, 0, 0, 0.04)`,"--dt-transition-fast":`120ms cubic-bezier(0.25, 0.46, 0.45, 0.94)`,"--dt-transition-normal":`200ms cubic-bezier(0.25, 0.46, 0.45, 0.94)`,"--dt-transition-slow":`300ms cubic-bezier(0.16, 1, 0.3, 1)`},P={"--dt-bg-canvas":`#0c0c0f`,"--dt-bg-primary":`#131316`,"--dt-bg-secondary":`#1c1c21`,"--dt-bg-tertiary":`#25252b`,"--dt-text-primary":`#f0efe7`,"--dt-text-secondary":`#a8a69e`,"--dt-text-tertiary":`#6b6a65`,"--dt-border-default":`#2a2a30`,"--dt-border-muted":`#35353c`,"--dt-border-subtle":`#1f1f24`,"--dt-glass-bg":`rgba(19, 19, 22, 0.72)`,"--dt-glass-border":`rgba(255, 255, 255, 0.06)`,"--dt-glass-hover-border":`rgba(69, 200, 168, 0.08)`,"--dt-glass-shadow":`0 0 0 1px rgba(255, 255, 255, 0.04), 0 2px 8px rgba(0, 0, 0, 0.25), 0 8px 32px rgba(0, 0, 0, 0.15)`,"--dt-accent-fg":`#45c8a8`,"--dt-accent-muted":`rgba(69, 200, 168, 0.3)`,"--dt-accent-subtle":`rgba(69, 200, 168, 0.1)`,"--dt-success-fg":`#2bd47c`,"--dt-success-emphasis":`#22b86b`,"--dt-success-muted":`rgba(43, 212, 124, 0.3)`,"--dt-success-subtle":`rgba(43, 212, 124, 0.1)`,"--dt-danger-fg":`#f56a6a`,"--dt-danger-emphasis":`#e54848`,"--dt-danger-muted":`rgba(245, 106, 106, 0.3)`,"--dt-danger-subtle":`rgba(245, 106, 106, 0.1)`,"--dt-warning-fg":`#f5b342`,"--dt-warning-emphasis":`#e89e2e`,"--dt-warning-muted":`rgba(245, 179, 66, 0.3)`,"--dt-warning-subtle":`rgba(245, 179, 66, 0.1)`,"--dt-info-fg":`#6baef8`,"--dt-info-emphasis":`#5090e8`,"--dt-info-muted":`rgba(107, 174, 248, 0.3)`,"--dt-info-subtle":`rgba(107, 174, 248, 0.1)`,"--dt-purple-fg":`#c89bff`,"--dt-purple-emphasis":`#b07ef0`,"--dt-purple-muted":`rgba(200, 155, 255, 0.3)`,"--dt-purple-subtle":`rgba(200, 155, 255, 0.1)`,"--dt-shadow-sm":`0 0 0 1px rgba(255, 255, 255, 0.02), 0 1px 3px rgba(0, 0, 0, 0.3)`,"--dt-shadow-md":`0 0 0 1px rgba(255, 255, 255, 0.03), 0 2px 6px rgba(0, 0, 0, 0.35), 0 4px 12px rgba(0, 0, 0, 0.2)`,"--dt-shadow-lg":`0 0 0 1px rgba(255, 255, 255, 0.04), 0 2px 8px rgba(0, 0, 0, 0.4), 0 8px 32px rgba(0, 0, 0, 0.25)`,"--dt-glow-primary":`radial-gradient(circle at 50% 50%, rgba(69, 200, 168, 0.12), rgba(107, 174, 248, 0.05) 45%, transparent 70%)`,"--dt-glow-secondary":`radial-gradient(circle at 50% 50%, rgba(200, 155, 255, 0.06), transparent 50%)`,"--dt-glow-accent":`rgba(69, 200, 168, 0.35)`,"--dt-glow-success":`rgba(43, 212, 124, 0.35)`,"--dt-glow-danger":`rgba(245, 106, 106, 0.35)`,"--dt-glow-warning":`rgba(245, 179, 66, 0.35)`,"--dt-glow-info":`rgba(107, 174, 248, 0.35)`,"--dt-glow-purple":`rgba(200, 155, 255, 0.35)`,"--dt-annotation-comment":`#45c8a8`,"--dt-annotation-comment-bg":`rgba(69, 200, 168, 0.15)`,"--dt-annotation-deletion":`#f56a6a`,"--dt-annotation-deletion-bg":`rgba(245, 106, 106, 0.15)`,"--dt-annotation-hover":`rgba(255, 255, 255, 0.04)`},Bt=`--dt-bg-canvas.--dt-bg-primary.--dt-bg-secondary.--dt-bg-tertiary.--dt-text-primary.--dt-text-secondary.--dt-text-tertiary.--dt-border-default.--dt-border-muted.--dt-border-subtle.--dt-glass-bg.--dt-glass-blur.--dt-glass-border.--dt-glass-hover-border.--dt-glass-shadow.--dt-accent-fg.--dt-accent-emphasis.--dt-accent-foreground.--dt-accent-muted.--dt-accent-subtle.--dt-success-fg.--dt-success-emphasis.--dt-success-muted.--dt-success-subtle.--dt-danger-fg.--dt-danger-emphasis.--dt-danger-muted.--dt-danger-subtle.--dt-warning-fg.--dt-warning-emphasis.--dt-warning-muted.--dt-warning-subtle.--dt-info-fg.--dt-info-emphasis.--dt-info-muted.--dt-info-subtle.--dt-purple-fg.--dt-purple-emphasis.--dt-purple-muted.--dt-purple-subtle.--dt-agent-researcher.--dt-agent-implementer.--dt-agent-frontend.--dt-agent-reviewer.--dt-agent-debugger.--dt-agent-security.--dt-agent-explorer.--dt-agent-documenter.--dt-agent-refactor.--dt-agent-planner.--dt-agent-orchestrator.--dt-status-pending.--dt-status-in-progress.--dt-status-done.--dt-status-blocked.--dt-font-sans.--dt-font-mono.--dt-font-size-xs.--dt-font-size-sm.--dt-font-size-base.--dt-font-size-lg.--dt-font-size-xl.--dt-font-size-2xl.--dt-font-size-3xl.--dt-font-size-4xl.--dt-space-1.--dt-space-2.--dt-space-3.--dt-space-4.--dt-space-5.--dt-space-6.--dt-space-8.--dt-space-10.--dt-space-12.--dt-radius-xs.--dt-radius-sm.--dt-radius-md.--dt-radius-lg.--dt-radius-xl.--dt-radius-pill.--dt-shadow-sm.--dt-shadow-md.--dt-shadow-lg.--dt-glow-primary.--dt-glow-secondary.--dt-glow-accent.--dt-glow-success.--dt-glow-danger.--dt-glow-warning.--dt-glow-info.--dt-glow-purple.--dt-annotation-comment.--dt-annotation-comment-bg.--dt-annotation-deletion.--dt-annotation-deletion-bg.--dt-annotation-hover.--dt-transition-fast.--dt-transition-normal.--dt-transition-slow`.split(`.`),Vt=`--dt-bg-canvas.--dt-bg-primary.--dt-bg-secondary.--dt-bg-tertiary.--dt-text-primary.--dt-text-secondary.--dt-text-tertiary.--dt-border-default.--dt-border-muted.--dt-border-subtle.--dt-glass-bg.--dt-glass-border.--dt-glass-hover-border.--dt-glass-shadow.--dt-accent-fg.--dt-accent-muted.--dt-accent-subtle.--dt-success-fg.--dt-success-emphasis.--dt-success-muted.--dt-success-subtle.--dt-danger-fg.--dt-danger-emphasis.--dt-danger-muted.--dt-danger-subtle.--dt-warning-fg.--dt-warning-emphasis.--dt-warning-muted.--dt-warning-subtle.--dt-info-fg.--dt-info-emphasis.--dt-info-muted.--dt-info-subtle.--dt-purple-fg.--dt-purple-emphasis.--dt-purple-muted.--dt-purple-subtle.--dt-shadow-sm.--dt-shadow-md.--dt-shadow-lg.--dt-glow-primary.--dt-glow-secondary.--dt-glow-accent.--dt-glow-success.--dt-glow-danger.--dt-glow-warning.--dt-glow-info.--dt-glow-purple.--dt-annotation-comment.--dt-annotation-comment-bg.--dt-annotation-deletion.--dt-annotation-deletion-bg.--dt-annotation-hover`.split(`.`),F={actions:`
|
|
154
|
+
`,Mt=/^(#{1,6})\s+(.+)$/,Nt=/^(?:(?:-\s*){3,}|(?:\*\s*){3,}|(?:_\s*){3,})$/;function Pt(e){return e.length?`<p>${e.map(e=>s(e)).join(`<br>`)}</p>`:``}function Ft(e,t){let r=String(e.value??``);if(r.trimStart().startsWith(`<`))return`<div class="bk-markdown">${r}</div>`;let i=[],a=[],o=!1,s=[],c=``,l=()=>{let e=Pt(a);e&&(i.push(e),a.length=0)};for(let e of r.split(/\r?\n/)){let t=e.trim();if(t.startsWith("```")){if(!o)l(),o=!0,c=t.slice(3).trim(),s=[];else{let e=c?` class="${n(c)}"`:``,t=s.join(`
|
|
155
|
+
`),r=(c?k(t,c):``)||n(t);i.push(`<pre class="bk-code"><code${e}>${r}</code></pre>`),o=!1,s=[],c=``}continue}if(o){s.push(e);continue}if(!t){l();continue}let r=t.match(Mt);if(r){l();let[,e,t]=r,a=e.length;i.push(`<h${a} class="bk-heading bk-heading--${a}">${n(t)}</h${a}>`);continue}if(Nt.test(t)){l(),i.push(`<hr>`);continue}a.push(e)}if(l(),o&&s.length>0){let e=c?` class="${n(c)}"`:``,t=s.join(`
|
|
156
|
+
`),r=(c?k(t,c):``)||n(t);i.push(`<pre class="bk-code"><code${e}>${r}</code></pre>`)}return`<div class="bk-markdown">${i.join(``)}</div>`}function It(e,t){return`<pre class="bk-mermaid mermaid">${n(String(e.value??``))}</pre>`}function Lt(e){if(e==null||e===``)return``;let t=a(e);if(/^[↑↓→]/.test(t))return`<span class="bk-metric-trend">${n(t)}</span>`;let r=Number(String(e).replace(/[^0-9.-]/g,``));return`<span class="bk-metric-trend">${Number.isNaN(r)?``:r>0?`↑ `:r<0?`↓ `:`→ `}${n(t)}</span>`}function Rt(e,t){return`<div class="bk-metrics">${f(e).map((e,t)=>`<article class="bk-metric" data-tone="${u(e.status)}" style="--i: ${t}"><div class="bk-metric-label">${n(e.label)}</div><div class="bk-metric-value">${n(a(e.value))}</div>${Lt(e.trend)}</article>`).join(``)}</div>`}function zt(e,t){return`<p class="bk-paragraph">${n(String(e.value??e.text??``))}</p>`}function Bt(e){let t=o(e);if(Array.isArray(t))return t;if(t&&typeof t==`object`){if(Array.isArray(t.items))return t.items;if(`value`in t)return[t]}return[]}function Vt(e,t){return`<div class="bk-progress">${Bt(e.value).map((e,t)=>{let r=Math.max(1,Number(e.max)||100),i=Math.max(0,Number(e.value)||0),a=Math.round(Math.min(i/r*100,100)),o=u(e.color);return`<div class="bk-progress-item" style="--i: ${t}"><div class="bk-progress-meta"><span>${n(e.label)}</span><span>${a}%</span></div><div class="bk-progress-track"><span class="bk-progress-bar" role="progressbar" aria-valuenow="${i}" aria-valuemin="0" aria-valuemax="${r}" aria-label="${n(e.label)}" style="width:${a}%;background:var(--dt-${o}-emphasis);--bar-glow:var(--dt-glow-${o});"></span></div></div>`}).join(``)}</div>`}function Ht(e){if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e??``)}}function Ut(e,t){return`<pre class="bk-prompt">${n(Ht(e.value))}</pre>`}function Wt(e,t){return`<hr class="bk-separator">`}function Gt(e){let t=o(e);return Array.isArray(t)?t:t&&typeof t==`object`&&Array.isArray(t.items)?t.items:[]}function Kt(e,t){return`<div class="bk-status-board">${Gt(e.value).map(e=>{let t=e.items.map(e=>{let t=u(e.status),r=e.description?`<div class="bk-status-description">${n(e.description)}</div>`:``;return`<div class="bk-status-item"><span class="bk-status-pill" style="background:var(--dt-${t}-subtle);color:var(--dt-${t}-fg);">${n(e.status??`pending`)}</span><div class="bk-status-copy"><div class="bk-status-label">${n(e.label??e.name??``)}</div>${r}</div></div>`}).join(``);return`<section class="bk-status-category"><div class="bk-status-category-title">${n(e.category)}</div><div class="bk-status-items">${t}</div></section>`}).join(``)}</div>`}function qt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Jt(e){let t=(e??[]).map(e=>{if(qt(e)){let t=typeof e.key==`string`?e.key:String(e.label??``);return{key:t,label:typeof e.label==`string`?e.label:t}}let t=String(e);return{key:t,label:t}});return{headers:t.map(e=>e.label),keys:t.map(e=>e.key)}}function Yt(e){if(Array.isArray(e.columns)){let{headers:t,keys:n}=Jt(e.columns),r=Array.isArray(e.rows)?e.rows:[];return r.length>0&&Array.isArray(r[0])?{headers:t,keys:n,rows:r.map(e=>Object.fromEntries(n.map((t,n)=>[t,e[n]??``])))}:r.length>0&&typeof r[0]==`object`&&r[0]!==null?{headers:t,keys:n,rows:r}:{headers:t,keys:n,rows:[]}}let t=o(e.value);if(Array.isArray(t)){if(t.length>0&&typeof t[0]==`object`&&t[0]!==null&&!Array.isArray(t[0])){let n=t,r=Array.isArray(e.headers)?e.headers.map(String):Object.keys(n[0]??{});return{headers:r,keys:r,rows:n}}if(t.length>0&&Array.isArray(t[0])){let[n,...r]=t,i=Array.isArray(e.headers)?e.headers.map(String):n.map(String);return{headers:i,keys:i,rows:r.map(e=>Object.fromEntries(i.map((t,n)=>[t,e[n]])))}}}if(t&&typeof t==`object`){let n=Array.isArray(e.headers)?e.headers.map(String):Array.isArray(t.headers)?t.headers.map(String):[],r=Array.isArray(t.rows)?t.rows:[];if(r.length>0&&Array.isArray(r[0]))return{headers:n,keys:n,rows:r.map(e=>Object.fromEntries(n.map((t,n)=>[t,e[n]])))};if(r.length>0&&typeof r[0]==`object`&&r[0]!==null)return{headers:n,keys:n,rows:r}}if(Array.isArray(e.headers)){let t=e.headers.map(String);return{headers:t,keys:t,rows:[]}}if(Array.isArray(e.columns)){let{headers:t,keys:n}=Jt(e.columns);return{headers:t,keys:n,rows:[]}}return{headers:[],keys:[],rows:[]}}function Xt(e,t){let{headers:r,keys:i,rows:o}=Yt(e);if(r.length===0)return`<div class="bk-table-wrap"><table class="bk-table"><tbody></tbody></table></div>`;let s=t=>{let r=e.sorted===t,i=r&&e.sortDir!==`desc`,a=i?`▲`:r?`▼`:`⇅`;return`<th${r?` aria-sort="${i?`ascending`:`descending`}"`:``}>${n(t)}<span class="bk-table-sort-icon">${a}</span></th>`},c=`<thead><tr>${r.map(e=>s(e)).join(``)}</tr></thead>`,l=o.length>0&&i.length>2?` data-scrollable="true"`:``,u;return u=o.length===0?`<tr><td colspan="${r.length}"><div class="bk-table-empty"><span class="bk-table-empty-icon" aria-hidden="true">📋</span>No data</div></td></tr>`:o.map(e=>`<tr>${i.map(t=>`<td>${n(a(e[t]))}</td>`).join(``)}</tr>`).join(``),`<div class="bk-table-wrap"${l}><table class="bk-table">${c}<tbody>${u}</tbody></table></div>`}function Zt(e){let t=o(e);return Array.isArray(t)?t:t&&typeof t==`object`&&Array.isArray(t.items)?t.items:[]}function Qt(e,t){return`<div class="bk-tags">${Zt(e.value).map(e=>{let t=typeof e==`string`?e:String(e.text??e.label??``),r=u(typeof e==`string`?void 0:e.status??e.tone??e.color);return`<span class="bk-tag" style="background:var(--dt-${r}-subtle);color:var(--dt-${r}-fg);">${n(t)}</span>`}).join(``)}</div>`}function $t(e,t){return`<div class="bk-text">${s(String(e.value??``)).replace(/\n/g,`<br>`)}</div>`}function en(e,t){return`<div class="bk-timeline">${f(e).map(e=>{let t=u(e.status),r=e.description?`<div class="bk-timeline-description">${n(e.description)}</div>`:``,i=e.timestamp?`<div class="bk-timeline-timestamp">${n(e.timestamp)}</div>`:``;return`<article class="bk-timeline-item" data-tone="${t}"><span class="bk-timeline-dot" style="background:${`var(--dt-${t}-emphasis)`};box-shadow:0 0 0 6px var(--dt-glow-${t});"></span><div class="bk-timeline-title">${n(e.title)}</div>${r}${i}</article>`}).join(``)}</div>`}function I(e,t){if(Array.isArray(e)){let r=e.map(e=>I(e)).join(``);return t?`<details class="bk-tree-node" open><summary>${n(t)}</summary><div class="bk-tree-children">${r}</div></details>`:`<div class="bk-tree-children">${r}</div>`}if(e&&typeof e==`object`){let r=e,i=typeof r.name==`string`?r.name:typeof r.label==`string`?r.label:typeof r.title==`string`?r.title:void 0;if(i!==void 0)return I(r.children??[],i);let a=Object.entries(r).map(([e,t])=>I(t,e)).join(``);return t?`<details class="bk-tree-node" open><summary>${n(t)}</summary><div class="bk-tree-children">${a}</div></details>`:`<div class="bk-tree-children">${a}</div>`}let r=n(a(e));return t?`<div class="bk-tree-leaf"><span class="bk-tree-key">${n(t)}</span><span class="bk-tree-value">${r}</span></div>`:`<div class="bk-tree-leaf">${r}</div>`}function tn(e,t){return`<div class="bk-tree">${I(o(e.value))}</div>`}const L={"--dt-bg-canvas":`#f5f4ee`,"--dt-bg-primary":`#faf9f4`,"--dt-bg-secondary":`#f0efe8`,"--dt-bg-tertiary":`#ffffff`,"--dt-text-primary":`#1a1a17`,"--dt-text-secondary":`#6b6a65`,"--dt-text-tertiary":`#a8a69e`,"--dt-border-default":`#e3e2da`,"--dt-border-muted":`#d6d5cd`,"--dt-border-subtle":`#eeede6`,"--dt-glass-bg":`rgba(250, 249, 244, 0.78)`,"--dt-glass-blur":`16px`,"--dt-glass-border":`rgba(0, 0, 0, 0.06)`,"--dt-glass-hover-border":`rgba(15, 143, 122, 0.08)`,"--dt-glass-shadow":`0 0 0 1px rgba(0, 0, 0, 0.02), 0 2px 8px rgba(0, 0, 0, 0.04), 0 8px 24px rgba(0, 0, 0, 0.03)`,"--dt-accent-fg":`#0f8f7a`,"--dt-accent-emphasis":`#0f766e`,"--dt-accent-foreground":`#ffffff`,"--dt-accent-muted":`rgba(15, 143, 122, 0.2)`,"--dt-accent-subtle":`rgba(15, 143, 122, 0.07)`,"--dt-success-fg":`#16a34a`,"--dt-success-emphasis":`#15803d`,"--dt-success-muted":`rgba(22, 163, 74, 0.2)`,"--dt-success-subtle":`rgba(22, 163, 74, 0.07)`,"--dt-danger-fg":`#dc2626`,"--dt-danger-emphasis":`#b91c1c`,"--dt-danger-muted":`rgba(220, 38, 38, 0.2)`,"--dt-danger-subtle":`rgba(220, 38, 38, 0.07)`,"--dt-warning-fg":`#d97706`,"--dt-warning-emphasis":`#b45309`,"--dt-warning-muted":`rgba(217, 119, 6, 0.2)`,"--dt-warning-subtle":`rgba(217, 119, 6, 0.07)`,"--dt-info-fg":`#2563eb`,"--dt-info-emphasis":`#1d4ed8`,"--dt-info-muted":`rgba(37, 99, 235, 0.2)`,"--dt-info-subtle":`rgba(37, 99, 235, 0.07)`,"--dt-purple-fg":`#7c3aed`,"--dt-purple-emphasis":`#6d28d9`,"--dt-purple-muted":`rgba(124, 58, 237, 0.2)`,"--dt-purple-subtle":`rgba(124, 58, 237, 0.07)`,"--dt-agent-researcher":`#818cf8`,"--dt-agent-implementer":`#34d399`,"--dt-agent-frontend":`#f472b6`,"--dt-agent-reviewer":`#fbbf24`,"--dt-agent-debugger":`#f87171`,"--dt-agent-security":`#fb923c`,"--dt-agent-explorer":`#38bdf8`,"--dt-agent-documenter":`#c084fc`,"--dt-agent-refactor":`#2dd4bf`,"--dt-agent-planner":`#a78bfa`,"--dt-agent-orchestrator":`#94a3b8`,"--dt-status-pending":`#94a3b8`,"--dt-status-in-progress":`#60a5fa`,"--dt-status-done":`#4ade80`,"--dt-status-blocked":`#f87171`,"--dt-font-sans":`Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif`,"--dt-font-mono":`'JetBrains Mono', 'Geist Mono', 'Fira Code', 'SF Mono', Consolas, monospace`,"--dt-font-size-xs":`0.75rem`,"--dt-font-size-sm":`0.8125rem`,"--dt-font-size-base":`0.875rem`,"--dt-font-size-lg":`1rem`,"--dt-font-size-xl":`1.25rem`,"--dt-font-size-2xl":`1.5rem`,"--dt-font-size-3xl":`2rem`,"--dt-font-size-4xl":`2.5rem`,"--dt-space-1":`0.25rem`,"--dt-space-2":`0.5rem`,"--dt-space-3":`0.75rem`,"--dt-space-4":`1rem`,"--dt-space-5":`1.25rem`,"--dt-space-6":`1.5rem`,"--dt-space-8":`2rem`,"--dt-space-10":`2.5rem`,"--dt-space-12":`3rem`,"--dt-radius-xs":`4px`,"--dt-radius-sm":`6px`,"--dt-radius-md":`8px`,"--dt-radius-lg":`12px`,"--dt-radius-xl":`16px`,"--dt-radius-pill":`999px`,"--dt-shadow-sm":`0 0 0 1px rgba(0, 0, 0, 0.02), 0 1px 3px rgba(0, 0, 0, 0.06)`,"--dt-shadow-md":`0 0 0 1px rgba(0, 0, 0, 0.03), 0 2px 6px rgba(0, 0, 0, 0.05), 0 4px 12px rgba(0, 0, 0, 0.03)`,"--dt-shadow-lg":`0 0 0 1px rgba(0, 0, 0, 0.03), 0 2px 8px rgba(0, 0, 0, 0.06), 0 8px 32px rgba(0, 0, 0, 0.04)`,"--dt-glow-primary":`radial-gradient(circle at 50% 50%, rgba(15, 143, 122, 0.07), rgba(200, 155, 255, 0.03) 50%, transparent 70%)`,"--dt-glow-secondary":`radial-gradient(circle at 50% 50%, rgba(245, 179, 66, 0.05), transparent 50%)`,"--dt-glow-accent":`rgba(15, 143, 122, 0.35)`,"--dt-glow-success":`rgba(22, 163, 74, 0.35)`,"--dt-glow-danger":`rgba(220, 38, 38, 0.35)`,"--dt-glow-warning":`rgba(217, 119, 6, 0.35)`,"--dt-glow-info":`rgba(37, 99, 235, 0.35)`,"--dt-glow-purple":`rgba(124, 58, 237, 0.35)`,"--dt-annotation-comment":`#0f8f7a`,"--dt-annotation-comment-bg":`rgba(15, 143, 122, 0.1)`,"--dt-annotation-deletion":`#dc2626`,"--dt-annotation-deletion-bg":`rgba(220, 38, 38, 0.1)`,"--dt-annotation-hover":`rgba(0, 0, 0, 0.04)`,"--dt-transition-fast":`120ms cubic-bezier(0.25, 0.46, 0.45, 0.94)`,"--dt-transition-normal":`200ms cubic-bezier(0.25, 0.46, 0.45, 0.94)`,"--dt-transition-slow":`300ms cubic-bezier(0.16, 1, 0.3, 1)`},R={"--dt-bg-canvas":`#0c0c0f`,"--dt-bg-primary":`#131316`,"--dt-bg-secondary":`#1c1c21`,"--dt-bg-tertiary":`#25252b`,"--dt-text-primary":`#f0efe7`,"--dt-text-secondary":`#a8a69e`,"--dt-text-tertiary":`#6b6a65`,"--dt-border-default":`#2a2a30`,"--dt-border-muted":`#35353c`,"--dt-border-subtle":`#1f1f24`,"--dt-glass-bg":`rgba(19, 19, 22, 0.72)`,"--dt-glass-border":`rgba(255, 255, 255, 0.06)`,"--dt-glass-hover-border":`rgba(69, 200, 168, 0.08)`,"--dt-glass-shadow":`0 0 0 1px rgba(255, 255, 255, 0.04), 0 2px 8px rgba(0, 0, 0, 0.25), 0 8px 32px rgba(0, 0, 0, 0.15)`,"--dt-accent-fg":`#45c8a8`,"--dt-accent-muted":`rgba(69, 200, 168, 0.3)`,"--dt-accent-subtle":`rgba(69, 200, 168, 0.1)`,"--dt-success-fg":`#2bd47c`,"--dt-success-emphasis":`#22b86b`,"--dt-success-muted":`rgba(43, 212, 124, 0.3)`,"--dt-success-subtle":`rgba(43, 212, 124, 0.1)`,"--dt-danger-fg":`#f56a6a`,"--dt-danger-emphasis":`#e54848`,"--dt-danger-muted":`rgba(245, 106, 106, 0.3)`,"--dt-danger-subtle":`rgba(245, 106, 106, 0.1)`,"--dt-warning-fg":`#f5b342`,"--dt-warning-emphasis":`#e89e2e`,"--dt-warning-muted":`rgba(245, 179, 66, 0.3)`,"--dt-warning-subtle":`rgba(245, 179, 66, 0.1)`,"--dt-info-fg":`#6baef8`,"--dt-info-emphasis":`#5090e8`,"--dt-info-muted":`rgba(107, 174, 248, 0.3)`,"--dt-info-subtle":`rgba(107, 174, 248, 0.1)`,"--dt-purple-fg":`#c89bff`,"--dt-purple-emphasis":`#b07ef0`,"--dt-purple-muted":`rgba(200, 155, 255, 0.3)`,"--dt-purple-subtle":`rgba(200, 155, 255, 0.1)`,"--dt-shadow-sm":`0 0 0 1px rgba(255, 255, 255, 0.02), 0 1px 3px rgba(0, 0, 0, 0.3)`,"--dt-shadow-md":`0 0 0 1px rgba(255, 255, 255, 0.03), 0 2px 6px rgba(0, 0, 0, 0.35), 0 4px 12px rgba(0, 0, 0, 0.2)`,"--dt-shadow-lg":`0 0 0 1px rgba(255, 255, 255, 0.04), 0 2px 8px rgba(0, 0, 0, 0.4), 0 8px 32px rgba(0, 0, 0, 0.25)`,"--dt-glow-primary":`radial-gradient(circle at 50% 50%, rgba(69, 200, 168, 0.12), rgba(107, 174, 248, 0.05) 45%, transparent 70%)`,"--dt-glow-secondary":`radial-gradient(circle at 50% 50%, rgba(200, 155, 255, 0.06), transparent 50%)`,"--dt-glow-accent":`rgba(69, 200, 168, 0.35)`,"--dt-glow-success":`rgba(43, 212, 124, 0.35)`,"--dt-glow-danger":`rgba(245, 106, 106, 0.35)`,"--dt-glow-warning":`rgba(245, 179, 66, 0.35)`,"--dt-glow-info":`rgba(107, 174, 248, 0.35)`,"--dt-glow-purple":`rgba(200, 155, 255, 0.35)`,"--dt-annotation-comment":`#45c8a8`,"--dt-annotation-comment-bg":`rgba(69, 200, 168, 0.15)`,"--dt-annotation-deletion":`#f56a6a`,"--dt-annotation-deletion-bg":`rgba(245, 106, 106, 0.15)`,"--dt-annotation-hover":`rgba(255, 255, 255, 0.04)`},nn=`--dt-bg-canvas.--dt-bg-primary.--dt-bg-secondary.--dt-bg-tertiary.--dt-text-primary.--dt-text-secondary.--dt-text-tertiary.--dt-border-default.--dt-border-muted.--dt-border-subtle.--dt-glass-bg.--dt-glass-blur.--dt-glass-border.--dt-glass-hover-border.--dt-glass-shadow.--dt-accent-fg.--dt-accent-emphasis.--dt-accent-foreground.--dt-accent-muted.--dt-accent-subtle.--dt-success-fg.--dt-success-emphasis.--dt-success-muted.--dt-success-subtle.--dt-danger-fg.--dt-danger-emphasis.--dt-danger-muted.--dt-danger-subtle.--dt-warning-fg.--dt-warning-emphasis.--dt-warning-muted.--dt-warning-subtle.--dt-info-fg.--dt-info-emphasis.--dt-info-muted.--dt-info-subtle.--dt-purple-fg.--dt-purple-emphasis.--dt-purple-muted.--dt-purple-subtle.--dt-agent-researcher.--dt-agent-implementer.--dt-agent-frontend.--dt-agent-reviewer.--dt-agent-debugger.--dt-agent-security.--dt-agent-explorer.--dt-agent-documenter.--dt-agent-refactor.--dt-agent-planner.--dt-agent-orchestrator.--dt-status-pending.--dt-status-in-progress.--dt-status-done.--dt-status-blocked.--dt-font-sans.--dt-font-mono.--dt-font-size-xs.--dt-font-size-sm.--dt-font-size-base.--dt-font-size-lg.--dt-font-size-xl.--dt-font-size-2xl.--dt-font-size-3xl.--dt-font-size-4xl.--dt-space-1.--dt-space-2.--dt-space-3.--dt-space-4.--dt-space-5.--dt-space-6.--dt-space-8.--dt-space-10.--dt-space-12.--dt-radius-xs.--dt-radius-sm.--dt-radius-md.--dt-radius-lg.--dt-radius-xl.--dt-radius-pill.--dt-shadow-sm.--dt-shadow-md.--dt-shadow-lg.--dt-glow-primary.--dt-glow-secondary.--dt-glow-accent.--dt-glow-success.--dt-glow-danger.--dt-glow-warning.--dt-glow-info.--dt-glow-purple.--dt-annotation-comment.--dt-annotation-comment-bg.--dt-annotation-deletion.--dt-annotation-deletion-bg.--dt-annotation-hover.--dt-transition-fast.--dt-transition-normal.--dt-transition-slow`.split(`.`),rn=`--dt-bg-canvas.--dt-bg-primary.--dt-bg-secondary.--dt-bg-tertiary.--dt-text-primary.--dt-text-secondary.--dt-text-tertiary.--dt-border-default.--dt-border-muted.--dt-border-subtle.--dt-glass-bg.--dt-glass-border.--dt-glass-hover-border.--dt-glass-shadow.--dt-accent-fg.--dt-accent-muted.--dt-accent-subtle.--dt-success-fg.--dt-success-emphasis.--dt-success-muted.--dt-success-subtle.--dt-danger-fg.--dt-danger-emphasis.--dt-danger-muted.--dt-danger-subtle.--dt-warning-fg.--dt-warning-emphasis.--dt-warning-muted.--dt-warning-subtle.--dt-info-fg.--dt-info-emphasis.--dt-info-muted.--dt-info-subtle.--dt-purple-fg.--dt-purple-emphasis.--dt-purple-muted.--dt-purple-subtle.--dt-shadow-sm.--dt-shadow-md.--dt-shadow-lg.--dt-glow-primary.--dt-glow-secondary.--dt-glow-accent.--dt-glow-success.--dt-glow-danger.--dt-glow-warning.--dt-glow-info.--dt-glow-purple.--dt-annotation-comment.--dt-annotation-comment-bg.--dt-annotation-deletion.--dt-annotation-deletion-bg.--dt-annotation-hover`.split(`.`),z={actions:`
|
|
44
157
|
.bk-actions {
|
|
45
158
|
display: flex;
|
|
46
159
|
flex-wrap: wrap;
|
|
@@ -97,6 +210,11 @@ ${A}
|
|
|
97
210
|
cursor: pointer;
|
|
98
211
|
}
|
|
99
212
|
|
|
213
|
+
.bk-multi-select {
|
|
214
|
+
max-height: 2.25rem;
|
|
215
|
+
min-width: 8rem;
|
|
216
|
+
}
|
|
217
|
+
|
|
100
218
|
.bk-text-submit { display: flex; gap: var(--dt-space-2); align-items: center; }
|
|
101
219
|
.bk-input { min-height: 2.25rem; padding: 0 var(--dt-space-3); border: 1px solid var(--dt-border-default); border-radius: var(--dt-radius-md); background: var(--dt-bg-primary); color: var(--dt-text-primary); font: inherit; font-size: var(--dt-font-size-sm); flex: 1; min-width: 200px; transition: border-color var(--dt-transition-fast); }
|
|
102
220
|
.bk-input:focus { outline: none; border-color: var(--dt-accent-emphasis); box-shadow: 0 0 0 2px var(--dt-accent-subtle); }
|
|
@@ -123,6 +241,8 @@ ${A}
|
|
|
123
241
|
background: var(--dt-bg-secondary);
|
|
124
242
|
box-shadow: var(--dt-shadow-sm);
|
|
125
243
|
transition: transform var(--dt-transition-normal), box-shadow var(--dt-transition-normal), border-color var(--dt-transition-normal);
|
|
244
|
+
animation: aikit-enter-fade 400ms cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
245
|
+
animation-delay: calc(var(--i, 0) * 60ms);
|
|
126
246
|
}
|
|
127
247
|
|
|
128
248
|
.bk-card:hover {
|
|
@@ -162,6 +282,25 @@ ${A}
|
|
|
162
282
|
letter-spacing: 0.02em;
|
|
163
283
|
white-space: nowrap;
|
|
164
284
|
}
|
|
285
|
+
|
|
286
|
+
/* ── Compact cards on mobile ── */
|
|
287
|
+
@media (max-width: 480px) {
|
|
288
|
+
.bk-cards {
|
|
289
|
+
gap: var(--dt-space-3);
|
|
290
|
+
}
|
|
291
|
+
.bk-card {
|
|
292
|
+
padding: var(--dt-space-4);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
@media (max-width: 320px) {
|
|
297
|
+
.bk-card {
|
|
298
|
+
padding: var(--dt-space-3);
|
|
299
|
+
}
|
|
300
|
+
.bk-card-title {
|
|
301
|
+
font-size: var(--dt-font-size-base);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
165
304
|
`,chart:`
|
|
166
305
|
.bk-chart {
|
|
167
306
|
display: grid;
|
|
@@ -185,6 +324,7 @@ ${A}
|
|
|
185
324
|
width: 100%;
|
|
186
325
|
height: auto;
|
|
187
326
|
overflow: visible;
|
|
327
|
+
animation: aikit-enter-fade 500ms ease-out both;
|
|
188
328
|
}
|
|
189
329
|
|
|
190
330
|
.bk-chart-svg .bk-chart-grid {
|
|
@@ -272,7 +412,64 @@ ${A}
|
|
|
272
412
|
border-bottom: 1px solid var(--dt-border-muted);
|
|
273
413
|
text-align: left;
|
|
274
414
|
}
|
|
415
|
+
|
|
416
|
+
/* ── Compact chart on mobile ── */
|
|
417
|
+
@media (max-width: 480px) {
|
|
418
|
+
.bk-chart-surface {
|
|
419
|
+
padding: var(--dt-space-2);
|
|
420
|
+
}
|
|
421
|
+
.bk-chart-legend {
|
|
422
|
+
gap: var(--dt-space-1) var(--dt-space-3);
|
|
423
|
+
}
|
|
424
|
+
.bk-chart-legend-item {
|
|
425
|
+
font-size: 0.75rem;
|
|
426
|
+
}
|
|
427
|
+
.bk-chart-legend-swatch {
|
|
428
|
+
width: 0.625rem;
|
|
429
|
+
height: 0.625rem;
|
|
430
|
+
}
|
|
431
|
+
.bk-chart-table th,
|
|
432
|
+
.bk-chart-table td {
|
|
433
|
+
padding: var(--dt-space-2) var(--dt-space-3);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
@media (max-width: 320px) {
|
|
438
|
+
.bk-chart {
|
|
439
|
+
gap: var(--dt-space-2);
|
|
440
|
+
}
|
|
441
|
+
.bk-chart-surface {
|
|
442
|
+
padding: var(--dt-space-1);
|
|
443
|
+
border-radius: var(--dt-radius-md);
|
|
444
|
+
}
|
|
445
|
+
.bk-chart-note {
|
|
446
|
+
font-size: 0.6875rem;
|
|
447
|
+
}
|
|
448
|
+
.bk-chart-table th,
|
|
449
|
+
.bk-chart-table td {
|
|
450
|
+
padding: var(--dt-space-1) var(--dt-space-2);
|
|
451
|
+
}
|
|
452
|
+
}
|
|
275
453
|
`,checklist:`
|
|
454
|
+
/* ===== Base Styles ===== */
|
|
455
|
+
@keyframes strike-through {
|
|
456
|
+
from { width: 0; }
|
|
457
|
+
to { width: 100%; }
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
@keyframes slide-in {
|
|
461
|
+
from { opacity: 0; transform: translateX(-20px); }
|
|
462
|
+
to { opacity: 1; transform: translateX(0); }
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
@keyframes hover-pulse {
|
|
466
|
+
0% { transform: scale(1); }
|
|
467
|
+
25% { transform: scale(1.03); }
|
|
468
|
+
50% { transform: scale(0.98); }
|
|
469
|
+
75% { transform: scale(1.02); }
|
|
470
|
+
100% { transform: scale(1); }
|
|
471
|
+
}
|
|
472
|
+
|
|
276
473
|
.bk-checklist {
|
|
277
474
|
display: grid;
|
|
278
475
|
gap: var(--dt-space-2);
|
|
@@ -290,6 +487,7 @@ ${A}
|
|
|
290
487
|
border-radius: var(--dt-radius-lg);
|
|
291
488
|
background: var(--dt-bg-secondary);
|
|
292
489
|
transition: border-color var(--dt-transition-fast), background var(--dt-transition-fast);
|
|
490
|
+
animation: slide-in 400ms ease-out both;
|
|
293
491
|
}
|
|
294
492
|
|
|
295
493
|
.bk-checklist-item:hover {
|
|
@@ -297,6 +495,7 @@ ${A}
|
|
|
297
495
|
background: var(--dt-bg-tertiary);
|
|
298
496
|
}
|
|
299
497
|
|
|
498
|
+
/* ===== Icon Styles ===== */
|
|
300
499
|
.bk-checklist-icon {
|
|
301
500
|
display: inline-flex;
|
|
302
501
|
align-items: center;
|
|
@@ -315,14 +514,67 @@ ${A}
|
|
|
315
514
|
.bk-checklist-item[data-checked='true'] .bk-checklist-icon {
|
|
316
515
|
background: var(--dt-success-subtle);
|
|
317
516
|
color: var(--dt-success-fg);
|
|
517
|
+
animation: aikit-check-bounce 400ms cubic-bezier(0.34,1.56,0.64,1) 500ms both;
|
|
318
518
|
}
|
|
319
519
|
|
|
520
|
+
/* ===== Label Styles ===== */
|
|
320
521
|
.bk-checklist-label {
|
|
321
522
|
color: var(--dt-text-primary);
|
|
322
523
|
font-size: var(--dt-font-size-sm);
|
|
323
524
|
line-height: 1.5;
|
|
324
525
|
padding-top: 1px;
|
|
325
526
|
}
|
|
527
|
+
|
|
528
|
+
.bk-checklist-item[data-checked='true'] .bk-checklist-label {
|
|
529
|
+
position: relative;
|
|
530
|
+
color: var(--dt-text-tertiary);
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
.bk-checklist-item[data-checked='true'] .bk-checklist-label::after {
|
|
534
|
+
content: '';
|
|
535
|
+
position: absolute;
|
|
536
|
+
left: 0;
|
|
537
|
+
top: 50%;
|
|
538
|
+
height: 1px;
|
|
539
|
+
background: currentColor;
|
|
540
|
+
animation: strike-through 300ms ease-out 700ms forwards;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
/* ===== Hover Pulse for Unchecked Items ===== */
|
|
544
|
+
.bk-checklist-item[data-checked='false'] {
|
|
545
|
+
cursor: pointer;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
.bk-checklist-item[data-checked='false']:hover {
|
|
549
|
+
animation: hover-pulse 600ms ease-in-out 0ms none;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
/* Stagger via inline --i (rendered from index) instead of nth-child */
|
|
553
|
+
.bk-checklist-item {
|
|
554
|
+
animation-delay: calc(var(--i, 0) * 50ms);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
/* ── Compact checklist on mobile ── */
|
|
558
|
+
@media (max-width: 480px) {
|
|
559
|
+
.bk-checklist-item {
|
|
560
|
+
padding: var(--dt-space-2) var(--dt-space-3);
|
|
561
|
+
gap: var(--dt-space-2);
|
|
562
|
+
}
|
|
563
|
+
.bk-checklist-icon {
|
|
564
|
+
width: 1.25rem;
|
|
565
|
+
height: 1.25rem;
|
|
566
|
+
font-size: 0.625rem;
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
@media (max-width: 320px) {
|
|
571
|
+
.bk-checklist-item {
|
|
572
|
+
padding: var(--dt-space-2);
|
|
573
|
+
}
|
|
574
|
+
.bk-checklist-label {
|
|
575
|
+
font-size: 0.75rem;
|
|
576
|
+
}
|
|
577
|
+
}
|
|
326
578
|
`,code:`
|
|
327
579
|
.bk-code {
|
|
328
580
|
margin: 0;
|
|
@@ -341,83 +593,284 @@ ${A}
|
|
|
341
593
|
font-size: var(--dt-font-size-sm);
|
|
342
594
|
line-height: 1.7;
|
|
343
595
|
}
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
596
|
+
|
|
597
|
+
/* Token spans inherit code font properties */
|
|
598
|
+
.bk-code code .bk-hljs-string,
|
|
599
|
+
.bk-code code .bk-hljs-comment,
|
|
600
|
+
.bk-code code .bk-hljs-keyword,
|
|
601
|
+
.bk-code code .bk-hljs-builtin,
|
|
602
|
+
.bk-code code .bk-hljs-number,
|
|
603
|
+
.bk-code code .bk-hljs-operator,
|
|
604
|
+
.bk-code code .bk-hljs-punctuation,
|
|
605
|
+
.bk-code code .bk-hljs-function,
|
|
606
|
+
.bk-code code .bk-hljs-class-name,
|
|
607
|
+
.bk-code code .bk-hljs-tag,
|
|
608
|
+
.bk-code code .bk-hljs-attr-name,
|
|
609
|
+
.bk-code code .bk-hljs-attr-value,
|
|
610
|
+
.bk-code code .bk-hljs-variable,
|
|
611
|
+
.bk-code code .bk-hljs-property {
|
|
612
|
+
font-family: inherit;
|
|
613
|
+
font-size: inherit;
|
|
614
|
+
line-height: inherit;
|
|
615
|
+
background: none;
|
|
616
|
+
text-shadow: none;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
/* ── Compact code on mobile ── */
|
|
620
|
+
@media (max-width: 480px) {
|
|
621
|
+
.bk-code {
|
|
622
|
+
padding: var(--dt-space-4);
|
|
623
|
+
}
|
|
624
|
+
.bk-code code {
|
|
625
|
+
font-size: 0.75rem;
|
|
626
|
+
line-height: 1.5;
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
/* ── Ultra-compact code on 320px ── */
|
|
631
|
+
@media (max-width: 320px) {
|
|
632
|
+
.bk-code {
|
|
633
|
+
padding: var(--dt-space-3);
|
|
634
|
+
tab-size: 1;
|
|
635
|
+
}
|
|
636
|
+
.bk-code code {
|
|
637
|
+
font-size: 0.6875rem;
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
.bk-code .bk-hljs-keyword {
|
|
643
|
+
color: var(--dt-purple-fg);
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
.bk-code .bk-hljs-string,
|
|
647
|
+
.bk-code .bk-hljs-attr-value {
|
|
648
|
+
color: var(--dt-success-fg);
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
.bk-code .bk-hljs-comment {
|
|
652
|
+
color: var(--dt-text-tertiary);
|
|
653
|
+
font-style: italic;
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
.bk-code .bk-hljs-number {
|
|
657
|
+
color: var(--dt-info-fg);
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
.bk-code .bk-hljs-builtin {
|
|
661
|
+
color: var(--dt-accent-fg);
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
.bk-code .bk-hljs-operator {
|
|
665
|
+
color: var(--dt-warning-fg);
|
|
349
666
|
}
|
|
350
|
-
|
|
351
|
-
|
|
667
|
+
|
|
668
|
+
.bk-code .bk-hljs-punctuation {
|
|
669
|
+
color: var(--dt-text-secondary);
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
.bk-code .bk-hljs-function {
|
|
673
|
+
color: var(--dt-accent-fg);
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
.bk-code .bk-hljs-class-name {
|
|
677
|
+
color: var(--dt-accent-fg);
|
|
678
|
+
font-weight: 500;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
.bk-code .bk-hljs-tag {
|
|
682
|
+
color: var(--dt-accent-fg);
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
.bk-code .bk-hljs-attr-name {
|
|
686
|
+
color: var(--dt-warning-fg);
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
.bk-code .bk-hljs-variable {
|
|
690
|
+
color: var(--dt-text-primary);
|
|
691
|
+
font-weight: 400;
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
.bk-code .bk-hljs-property {
|
|
695
|
+
color: var(--dt-text-primary);
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
`,"architecture-diagram":A,"workflow-diagram":A,"sequence-diagram":A,"dataflow-diagram":A,"lifecycle-diagram":A,diff:`
|
|
699
|
+
/* ── Diff Container ── */
|
|
700
|
+
.bk-diff {
|
|
701
|
+
overflow-x: auto;
|
|
702
|
+
font-family: var(--dt-font-mono);
|
|
703
|
+
font-size: var(--dt-font-size-sm);
|
|
704
|
+
border: 1px solid var(--dt-border-default);
|
|
705
|
+
border-radius: var(--dt-radius-lg);
|
|
706
|
+
position: relative;
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
/* ── Diff Toolbar (copy / expand) ── */
|
|
710
|
+
.bk-diff-toolbar {
|
|
711
|
+
display: flex;
|
|
712
|
+
justify-content: flex-end;
|
|
713
|
+
gap: var(--dt-space-1);
|
|
714
|
+
padding: var(--dt-space-1) var(--dt-space-2);
|
|
715
|
+
background: var(--dt-bg-secondary);
|
|
716
|
+
border-bottom: 1px solid var(--dt-border-default);
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
.bk-diff-btn {
|
|
720
|
+
display: inline-flex;
|
|
721
|
+
align-items: center;
|
|
722
|
+
gap: 4px;
|
|
723
|
+
padding: 2px 8px;
|
|
724
|
+
font-size: var(--dt-font-size-xs);
|
|
725
|
+
font-family: var(--dt-font-sans);
|
|
726
|
+
color: var(--dt-text-tertiary);
|
|
727
|
+
background: transparent;
|
|
728
|
+
border: 1px solid var(--dt-border-muted);
|
|
729
|
+
border-radius: var(--dt-radius-sm);
|
|
352
730
|
cursor: pointer;
|
|
353
|
-
|
|
354
|
-
font-size: var(--dt-font-size-sm, 13px);
|
|
355
|
-
background: var(--dt-bg-secondary, #f5f5f5);
|
|
356
|
-
border-bottom: 1px solid var(--dt-border-default, #e0e0e0);
|
|
357
|
-
user-select: none;
|
|
731
|
+
transition: color var(--dt-transition-fast), border-color var(--dt-transition-fast);
|
|
358
732
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
733
|
+
|
|
734
|
+
.bk-diff-btn:hover {
|
|
735
|
+
color: var(--dt-text-primary);
|
|
736
|
+
border-color: var(--dt-accent-muted);
|
|
362
737
|
}
|
|
363
|
-
|
|
364
|
-
|
|
738
|
+
|
|
739
|
+
.bk-diff-btn:active {
|
|
740
|
+
transform: scale(0.96);
|
|
365
741
|
}
|
|
366
|
-
|
|
742
|
+
|
|
743
|
+
/* ── 44px touch targets on mobile ── */
|
|
744
|
+
@media (max-width: 640px) {
|
|
745
|
+
.bk-diff-btn {
|
|
746
|
+
min-width: 2.75rem;
|
|
747
|
+
min-height: 2.75rem;
|
|
748
|
+
padding: var(--dt-space-1) var(--dt-space-3);
|
|
749
|
+
justify-content: center;
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
@media (max-width: 320px) {
|
|
754
|
+
.bk-diff {
|
|
755
|
+
font-size: 0.75rem;
|
|
756
|
+
}
|
|
757
|
+
.bk-diff-line {
|
|
758
|
+
padding: 0 8px;
|
|
759
|
+
}
|
|
760
|
+
.bk-diff-ln {
|
|
761
|
+
min-width: 3ch;
|
|
762
|
+
max-width: 3ch;
|
|
763
|
+
padding: 0 4px;
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
.bk-diff-btn[data-copied="true"] {
|
|
768
|
+
color: var(--dt-success-fg);
|
|
769
|
+
border-color: var(--dt-success-muted);
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
/* ── Diff Table ── */
|
|
773
|
+
.bk-diff-table {
|
|
367
774
|
width: 100%;
|
|
368
775
|
border-collapse: collapse;
|
|
369
|
-
font-size: var(--dt-font-size-sm, 13px);
|
|
370
776
|
}
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
777
|
+
|
|
778
|
+
/* ── Line Number Cells ── */
|
|
779
|
+
.bk-diff-ln {
|
|
780
|
+
color: var(--dt-text-tertiary);
|
|
781
|
+
padding: 0 8px;
|
|
782
|
+
text-align: right;
|
|
783
|
+
user-select: none;
|
|
784
|
+
width: 4ch;
|
|
785
|
+
min-width: 4ch;
|
|
786
|
+
max-width: 4ch;
|
|
787
|
+
white-space: nowrap;
|
|
788
|
+
border-right: 1px solid var(--dt-border-default);
|
|
789
|
+
font-variant-numeric: tabular-nums;
|
|
375
790
|
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
791
|
+
|
|
792
|
+
/* ── Content Cells ── */
|
|
793
|
+
.bk-diff-line {
|
|
794
|
+
padding: 0 12px;
|
|
795
|
+
white-space: pre-wrap;
|
|
796
|
+
word-break: break-all;
|
|
382
797
|
}
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
798
|
+
|
|
799
|
+
/* ── Hunk Headers (@@ … @@) ── */
|
|
800
|
+
.bk-diff-hunk td {
|
|
801
|
+
background: var(--dt-info-subtle);
|
|
802
|
+
color: var(--dt-info-fg);
|
|
803
|
+
padding: 4px 12px;
|
|
804
|
+
font-style: italic;
|
|
389
805
|
}
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
806
|
+
|
|
807
|
+
/* ── Added Lines (+) ── */
|
|
808
|
+
.bk-diff-add td {
|
|
809
|
+
background: var(--dt-success-subtle);
|
|
393
810
|
}
|
|
394
|
-
|
|
395
|
-
|
|
811
|
+
|
|
812
|
+
/* ── Removed Lines (-) ── */
|
|
813
|
+
.bk-diff-del td {
|
|
814
|
+
background: var(--dt-danger-subtle);
|
|
396
815
|
}
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
816
|
+
|
|
817
|
+
/* ── Header Lines (--- / +++) ── */
|
|
818
|
+
.bk-diff-header td {
|
|
819
|
+
font-family: var(--dt-font-mono);
|
|
820
|
+
color: var(--dt-accent-fg);
|
|
821
|
+
padding: 4px 12px;
|
|
822
|
+
background: var(--dt-bg-secondary);
|
|
400
823
|
}
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
824
|
+
|
|
825
|
+
/* ── Inline Word-Level Highlights ── */
|
|
826
|
+
.bk-diff-word-del {
|
|
827
|
+
background: var(--dt-danger-subtle);
|
|
828
|
+
text-decoration: line-through;
|
|
829
|
+
border-radius: 2px;
|
|
830
|
+
padding: 0 1px;
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
.bk-diff-word-add {
|
|
834
|
+
background: var(--dt-success-subtle);
|
|
835
|
+
border-radius: 2px;
|
|
836
|
+
padding: 0 1px;
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
/* ── Expand/Collapse ── */
|
|
840
|
+
.bk-diff-body {
|
|
841
|
+
transition: max-height 300ms ease;
|
|
842
|
+
overflow: hidden;
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
.bk-diff-body[data-collapsed="true"] {
|
|
846
|
+
max-height: 480px;
|
|
847
|
+
position: relative;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
.bk-diff-body[data-collapsed="true"]::after {
|
|
851
|
+
content: '';
|
|
852
|
+
position: absolute;
|
|
853
|
+
bottom: 0;
|
|
854
|
+
left: 0;
|
|
855
|
+
right: 0;
|
|
856
|
+
height: 48px;
|
|
857
|
+
background: linear-gradient(transparent, var(--dt-bg-canvas));
|
|
858
|
+
pointer-events: none;
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
.bk-diff-body[data-expanded="true"] {
|
|
862
|
+
max-height: none;
|
|
404
863
|
}
|
|
405
|
-
`,diff:`
|
|
406
|
-
.bk-diff { overflow-x: auto; font-family: var(--dt-font-mono); font-size: var(--dt-font-size-sm); border: 1px solid var(--dt-border-default); border-radius: var(--dt-radius-lg); }
|
|
407
|
-
.bk-diff-table { width: 100%; border-collapse: collapse; }
|
|
408
|
-
.bk-diff-ln { color: var(--dt-text-tertiary); padding: 0 8px; text-align: right; user-select: none; width: 1%; white-space: nowrap; border-right: 1px solid var(--dt-border-default); }
|
|
409
|
-
.bk-diff-line { padding: 0 12px; white-space: pre-wrap; word-break: break-all; }
|
|
410
|
-
.bk-diff-hunk td { background: var(--dt-blue-subtle); color: var(--dt-blue-fg); padding: 4px 12px; font-style: italic; }
|
|
411
|
-
.bk-diff-add td { background: var(--dt-green-subtle); }
|
|
412
|
-
.bk-diff-del td { background: var(--dt-red-subtle); }
|
|
413
|
-
.bk-diff-header td { font-weight: bold; padding: 4px 12px; background: var(--dt-bg-secondary); }
|
|
414
864
|
`,comparison:`
|
|
865
|
+
/* ── Comparison grid (CSS Grid for equal-height columns) ──────────────── */
|
|
415
866
|
.bk-comparison {
|
|
416
867
|
display: grid;
|
|
417
868
|
grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
|
|
418
869
|
gap: var(--dt-space-4);
|
|
870
|
+
align-items: stretch;
|
|
419
871
|
}
|
|
420
872
|
|
|
873
|
+
/* ── Column card ────────────────────────────────────────────────────────── */
|
|
421
874
|
.bk-comparison-column {
|
|
422
875
|
display: grid;
|
|
423
876
|
gap: var(--dt-space-3);
|
|
@@ -426,8 +879,36 @@ ${A}
|
|
|
426
879
|
border-radius: var(--dt-radius-lg);
|
|
427
880
|
background: var(--dt-bg-secondary);
|
|
428
881
|
box-shadow: var(--dt-shadow-sm);
|
|
882
|
+
position: relative;
|
|
883
|
+
min-width: 0;
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
/* Recommended column — accent border + glow */
|
|
887
|
+
.bk-comparison-column[data-recommended="true"] {
|
|
888
|
+
border-color: var(--dt-accent-fg);
|
|
889
|
+
box-shadow: var(--dt-shadow-md), 0 0 0 1px var(--dt-accent-fg);
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
/* ── "Recommended" badge / ribbon ──────────────────────────────────────── */
|
|
893
|
+
.bk-comparison-recommended-badge {
|
|
894
|
+
position: absolute;
|
|
895
|
+
top: 0;
|
|
896
|
+
left: 50%;
|
|
897
|
+
transform: translate(-50%, -50%);
|
|
898
|
+
background: var(--dt-accent-fg);
|
|
899
|
+
color: var(--dt-accent-foreground);
|
|
900
|
+
font-size: var(--dt-font-size-xs);
|
|
901
|
+
font-weight: 700;
|
|
902
|
+
text-transform: uppercase;
|
|
903
|
+
letter-spacing: 0.05em;
|
|
904
|
+
padding: var(--dt-space-1) var(--dt-space-3);
|
|
905
|
+
border-radius: var(--dt-radius-pill);
|
|
906
|
+
white-space: nowrap;
|
|
907
|
+
line-height: 1.4;
|
|
908
|
+
z-index: 1;
|
|
429
909
|
}
|
|
430
910
|
|
|
911
|
+
/* ── Column title ───────────────────────────────────────────────────────── */
|
|
431
912
|
.bk-comparison-title {
|
|
432
913
|
color: var(--dt-text-primary);
|
|
433
914
|
font-size: var(--dt-font-size-lg);
|
|
@@ -437,19 +918,81 @@ ${A}
|
|
|
437
918
|
border-bottom: 1px solid var(--dt-border-muted);
|
|
438
919
|
}
|
|
439
920
|
|
|
921
|
+
/* ── Item list ──────────────────────────────────────────────────────────── */
|
|
440
922
|
.bk-comparison-items {
|
|
441
923
|
display: grid;
|
|
442
924
|
gap: var(--dt-space-2);
|
|
443
925
|
margin: 0;
|
|
444
926
|
padding: 0;
|
|
445
|
-
|
|
927
|
+
list-style: none;
|
|
446
928
|
color: var(--dt-text-secondary);
|
|
447
929
|
font-size: var(--dt-font-size-sm);
|
|
448
930
|
line-height: 1.6;
|
|
449
931
|
}
|
|
450
932
|
|
|
451
933
|
.bk-comparison-items li {
|
|
452
|
-
padding
|
|
934
|
+
padding: var(--dt-space-1) var(--dt-space-2);
|
|
935
|
+
border-radius: var(--dt-radius-sm);
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
/* ── Diff indicators ────────────────────────────────────────────────────── */
|
|
939
|
+
/* Item present in this column but missing from at least one other */
|
|
940
|
+
.bk-comparison-item-diff-present {
|
|
941
|
+
background: var(--dt-success-subtle);
|
|
942
|
+
color: var(--dt-success-emphasis);
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
.bk-comparison-item-diff-present::before {
|
|
946
|
+
content: "\\2713\\00a0\\00a0";
|
|
947
|
+
font-weight: 700;
|
|
948
|
+
color: var(--dt-success-fg);
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
/* Item absent from this column but present in at least one other */
|
|
952
|
+
.bk-comparison-item-diff-absent {
|
|
953
|
+
background: var(--dt-danger-subtle);
|
|
954
|
+
color: var(--dt-text-tertiary);
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
.bk-comparison-item-diff-absent::before {
|
|
958
|
+
content: "\\2717\\00a0\\00a0";
|
|
959
|
+
font-weight: 700;
|
|
960
|
+
color: var(--dt-danger-fg);
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
/* ── Responsive: stack vertically on mobile ── */
|
|
964
|
+
@media (max-width: 640px) {
|
|
965
|
+
.bk-comparison {
|
|
966
|
+
grid-template-columns: 1fr;
|
|
967
|
+
}
|
|
968
|
+
.bk-comparison-column {
|
|
969
|
+
padding: var(--dt-space-4);
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
@media (max-width: 360px) {
|
|
974
|
+
.bk-comparison-column {
|
|
975
|
+
padding: var(--dt-space-3);
|
|
976
|
+
}
|
|
977
|
+
.bk-comparison-items {
|
|
978
|
+
font-size: 0.75rem;
|
|
979
|
+
}
|
|
980
|
+
.bk-comparison-title {
|
|
981
|
+
font-size: var(--dt-font-size-base);
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
@media (max-width: 320px) {
|
|
986
|
+
.bk-comparison {
|
|
987
|
+
gap: var(--dt-space-3);
|
|
988
|
+
}
|
|
989
|
+
.bk-comparison-column {
|
|
990
|
+
padding: var(--dt-space-3) var(--dt-space-2);
|
|
991
|
+
}
|
|
992
|
+
.bk-comparison-recommended-badge {
|
|
993
|
+
font-size: 0.625rem;
|
|
994
|
+
padding: 2px var(--dt-space-2);
|
|
995
|
+
}
|
|
453
996
|
}
|
|
454
997
|
`,"component-detail":`
|
|
455
998
|
.bk-component-detail {
|
|
@@ -1064,7 +1607,7 @@ ${A}
|
|
|
1064
1607
|
font-size: var(--dt-font-size-sm);
|
|
1065
1608
|
line-height: 1.6;
|
|
1066
1609
|
}
|
|
1067
|
-
`,heading:
|
|
1610
|
+
`,heading:_t,kv:`
|
|
1068
1611
|
.bk-kv {
|
|
1069
1612
|
display: grid;
|
|
1070
1613
|
grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
|
|
@@ -1219,7 +1762,7 @@ ${A}
|
|
|
1219
1762
|
box-shadow: 0 0 0 3px var(--dt-accent-subtle);
|
|
1220
1763
|
transform: translateY(-50%);
|
|
1221
1764
|
}
|
|
1222
|
-
`,markdown:
|
|
1765
|
+
`,markdown:jt,mermaid:`
|
|
1223
1766
|
.bk-mermaid {
|
|
1224
1767
|
margin: 0;
|
|
1225
1768
|
padding: var(--dt-space-4);
|
|
@@ -1248,6 +1791,19 @@ ${A}
|
|
|
1248
1791
|
max-width: 100%;
|
|
1249
1792
|
height: auto;
|
|
1250
1793
|
}
|
|
1794
|
+
|
|
1795
|
+
@media (max-width: 480px) {
|
|
1796
|
+
.bk-mermaid {
|
|
1797
|
+
padding: var(--dt-space-3);
|
|
1798
|
+
}
|
|
1799
|
+
}
|
|
1800
|
+
|
|
1801
|
+
@media (max-width: 320px) {
|
|
1802
|
+
.bk-mermaid {
|
|
1803
|
+
padding: var(--dt-space-2);
|
|
1804
|
+
font-size: 0.75rem;
|
|
1805
|
+
}
|
|
1806
|
+
}
|
|
1251
1807
|
`,metrics:`
|
|
1252
1808
|
.bk-metrics {
|
|
1253
1809
|
display: grid;
|
|
@@ -1264,6 +1820,8 @@ ${A}
|
|
|
1264
1820
|
background: var(--dt-bg-secondary);
|
|
1265
1821
|
box-shadow: var(--dt-shadow-sm);
|
|
1266
1822
|
transition: transform var(--dt-transition-normal), box-shadow var(--dt-transition-normal), border-color var(--dt-transition-normal);
|
|
1823
|
+
animation: aikit-enter-fade 400ms cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
1824
|
+
animation-delay: calc(var(--i, 0) * 80ms);
|
|
1267
1825
|
}
|
|
1268
1826
|
|
|
1269
1827
|
.bk-metric:hover {
|
|
@@ -1291,6 +1849,28 @@ ${A}
|
|
|
1291
1849
|
color: var(--dt-text-tertiary);
|
|
1292
1850
|
font-size: var(--dt-font-size-sm);
|
|
1293
1851
|
}
|
|
1852
|
+
|
|
1853
|
+
/* ── Compact metrics on mobile ── */
|
|
1854
|
+
@media (max-width: 480px) {
|
|
1855
|
+
.bk-metrics {
|
|
1856
|
+
gap: var(--dt-space-3);
|
|
1857
|
+
}
|
|
1858
|
+
.bk-metric {
|
|
1859
|
+
padding: var(--dt-space-4);
|
|
1860
|
+
}
|
|
1861
|
+
.bk-metric-value {
|
|
1862
|
+
font-size: var(--dt-font-size-2xl);
|
|
1863
|
+
}
|
|
1864
|
+
}
|
|
1865
|
+
|
|
1866
|
+
@media (max-width: 320px) {
|
|
1867
|
+
.bk-metric {
|
|
1868
|
+
padding: var(--dt-space-3);
|
|
1869
|
+
}
|
|
1870
|
+
.bk-metric-value {
|
|
1871
|
+
font-size: var(--dt-font-size-xl);
|
|
1872
|
+
}
|
|
1873
|
+
}
|
|
1294
1874
|
`,paragraph:`
|
|
1295
1875
|
.bk-paragraph {
|
|
1296
1876
|
margin: 0;
|
|
@@ -1299,6 +1879,15 @@ ${A}
|
|
|
1299
1879
|
line-height: 1.7;
|
|
1300
1880
|
}
|
|
1301
1881
|
`,progress:`
|
|
1882
|
+
@keyframes glow-pulse {
|
|
1883
|
+
0%, 100% {
|
|
1884
|
+
box-shadow: inset 0 1px 0 rgba(255,255,255,0.15), 0 0 12px var(--bar-glow);
|
|
1885
|
+
}
|
|
1886
|
+
50% {
|
|
1887
|
+
box-shadow: inset 0 1px 0 rgba(255,255,255,0.15), 0 0 22px var(--bar-glow);
|
|
1888
|
+
}
|
|
1889
|
+
}
|
|
1890
|
+
|
|
1302
1891
|
.bk-progress {
|
|
1303
1892
|
display: grid;
|
|
1304
1893
|
gap: var(--dt-space-4);
|
|
@@ -1332,8 +1921,16 @@ ${A}
|
|
|
1332
1921
|
min-width: 0;
|
|
1333
1922
|
border-radius: inherit;
|
|
1334
1923
|
background: var(--dt-accent-emphasis);
|
|
1335
|
-
box-shadow: inset 0 1px 0 rgba(255,
|
|
1336
|
-
|
|
1924
|
+
box-shadow: inset 0 1px 0 rgba(255,255,255,0.15), 0 0 12px var(--bar-glow, transparent);
|
|
1925
|
+
animation:
|
|
1926
|
+
aikit-progress-fill 800ms cubic-bezier(0.16,1,0.3,1) forwards,
|
|
1927
|
+
glow-pulse 2s ease-in-out infinite;
|
|
1928
|
+
animation-delay: calc(var(--i, 0) * 100ms), calc(var(--i, 0) * 100ms + 800ms);
|
|
1929
|
+
}
|
|
1930
|
+
|
|
1931
|
+
/* Cap at 10 items to avoid excessive delays */
|
|
1932
|
+
.bk-progress-item:nth-child(n+11) .bk-progress-bar {
|
|
1933
|
+
animation-delay: 0ms, 800ms;
|
|
1337
1934
|
}
|
|
1338
1935
|
`,prompt:`
|
|
1339
1936
|
.bk-prompt {
|
|
@@ -1414,12 +2011,22 @@ ${A}
|
|
|
1414
2011
|
color: var(--dt-text-secondary);
|
|
1415
2012
|
}
|
|
1416
2013
|
`,table:`
|
|
2014
|
+
/* ── Scroll fade mask (indicates overflow) ── */
|
|
1417
2015
|
.bk-table-wrap {
|
|
1418
2016
|
overflow-x: auto;
|
|
1419
2017
|
border: 1px solid var(--dt-border-default);
|
|
1420
2018
|
border-radius: var(--dt-radius-lg);
|
|
1421
2019
|
background: var(--dt-bg-secondary);
|
|
1422
2020
|
box-shadow: var(--dt-shadow-sm);
|
|
2021
|
+
/* Fade at right edge when content overflows */
|
|
2022
|
+
mask-image: linear-gradient(to right, black 85%, transparent 98%);
|
|
2023
|
+
-webkit-mask-image: linear-gradient(to right, black 85%, transparent 98%);
|
|
2024
|
+
mask-mode: alpha;
|
|
2025
|
+
}
|
|
2026
|
+
|
|
2027
|
+
.bk-table-wrap:not([data-scrollable]) {
|
|
2028
|
+
mask-image: none;
|
|
2029
|
+
-webkit-mask-image: none;
|
|
1423
2030
|
}
|
|
1424
2031
|
|
|
1425
2032
|
.bk-table {
|
|
@@ -1451,8 +2058,30 @@ ${A}
|
|
|
1451
2058
|
text-transform: uppercase;
|
|
1452
2059
|
font-size: var(--dt-font-size-xs);
|
|
1453
2060
|
color: var(--dt-text-secondary);
|
|
2061
|
+
user-select: none;
|
|
2062
|
+
}
|
|
2063
|
+
|
|
2064
|
+
/* ── Sort indicator span ── */
|
|
2065
|
+
.bk-table-sort-icon {
|
|
2066
|
+
display: inline-block;
|
|
2067
|
+
margin-left: var(--dt-space-1);
|
|
2068
|
+
font-size: 0.6rem;
|
|
2069
|
+
opacity: 0.3;
|
|
2070
|
+
vertical-align: middle;
|
|
2071
|
+
transition: opacity var(--dt-transition-fast);
|
|
2072
|
+
}
|
|
2073
|
+
|
|
2074
|
+
th:hover .bk-table-sort-icon {
|
|
2075
|
+
opacity: 0.8;
|
|
2076
|
+
}
|
|
2077
|
+
|
|
2078
|
+
th[aria-sort="ascending"] .bk-table-sort-icon,
|
|
2079
|
+
th[aria-sort="descending"] .bk-table-sort-icon {
|
|
2080
|
+
opacity: 1;
|
|
2081
|
+
color: var(--dt-accent-fg);
|
|
1454
2082
|
}
|
|
1455
2083
|
|
|
2084
|
+
/* ── Row hover + even-row styling ── */
|
|
1456
2085
|
.bk-table tbody tr {
|
|
1457
2086
|
transition: background var(--dt-transition-fast);
|
|
1458
2087
|
}
|
|
@@ -1472,6 +2101,71 @@ ${A}
|
|
|
1472
2101
|
.bk-table tbody tr:last-child td {
|
|
1473
2102
|
border-bottom: none;
|
|
1474
2103
|
}
|
|
2104
|
+
|
|
2105
|
+
/* ── Sticky first column (tablet) ── */
|
|
2106
|
+
@media (max-width: 768px) {
|
|
2107
|
+
.bk-table th:first-child,
|
|
2108
|
+
.bk-table td:first-child {
|
|
2109
|
+
position: sticky;
|
|
2110
|
+
left: 0;
|
|
2111
|
+
z-index: 2;
|
|
2112
|
+
background: inherit;
|
|
2113
|
+
}
|
|
2114
|
+
.bk-table thead th:first-child {
|
|
2115
|
+
z-index: 3;
|
|
2116
|
+
background: var(--dt-bg-tertiary);
|
|
2117
|
+
}
|
|
2118
|
+
.bk-table tbody tr td:first-child {
|
|
2119
|
+
box-shadow: inset -6px 0 6px -6px rgba(0,0,0,0.1);
|
|
2120
|
+
}
|
|
2121
|
+
.bk-table-wrap[data-scrolled-past-first] tbody tr td:first-child {
|
|
2122
|
+
box-shadow: inset -8px 0 8px -8px rgba(0,0,0,0.15);
|
|
2123
|
+
}
|
|
2124
|
+
}
|
|
2125
|
+
|
|
2126
|
+
/* ── Compact table on mobile ── */
|
|
2127
|
+
@media (max-width: 480px) {
|
|
2128
|
+
.bk-table {
|
|
2129
|
+
font-size: var(--dt-font-size-xs);
|
|
2130
|
+
}
|
|
2131
|
+
.bk-table th,
|
|
2132
|
+
.bk-table td {
|
|
2133
|
+
padding: var(--dt-space-2) var(--dt-space-3);
|
|
2134
|
+
}
|
|
2135
|
+
}
|
|
2136
|
+
|
|
2137
|
+
/* ── Ultra-compact table on 320px ── */
|
|
2138
|
+
@media (max-width: 320px) {
|
|
2139
|
+
.bk-table thead th {
|
|
2140
|
+
white-space: normal;
|
|
2141
|
+
word-break: break-word;
|
|
2142
|
+
}
|
|
2143
|
+
.bk-table th,
|
|
2144
|
+
.bk-table td {
|
|
2145
|
+
padding: var(--dt-space-1) var(--dt-space-2);
|
|
2146
|
+
}
|
|
2147
|
+
.bk-table th {
|
|
2148
|
+
font-size: 0.625rem;
|
|
2149
|
+
}
|
|
2150
|
+
}
|
|
2151
|
+
|
|
2152
|
+
/* ── Empty state ── */
|
|
2153
|
+
.bk-table-empty {
|
|
2154
|
+
display: flex;
|
|
2155
|
+
flex-direction: column;
|
|
2156
|
+
align-items: center;
|
|
2157
|
+
justify-content: center;
|
|
2158
|
+
padding: var(--dt-space-10) var(--dt-space-4);
|
|
2159
|
+
color: var(--dt-text-tertiary);
|
|
2160
|
+
font-size: var(--dt-font-size-sm);
|
|
2161
|
+
font-style: italic;
|
|
2162
|
+
gap: var(--dt-space-2);
|
|
2163
|
+
}
|
|
2164
|
+
|
|
2165
|
+
.bk-table-empty-icon {
|
|
2166
|
+
font-size: 1.5rem;
|
|
2167
|
+
opacity: 0.5;
|
|
2168
|
+
}
|
|
1475
2169
|
`,tags:`
|
|
1476
2170
|
.bk-tags {
|
|
1477
2171
|
display: flex;
|
|
@@ -1546,6 +2240,26 @@ ${A}
|
|
|
1546
2240
|
font-size: var(--dt-font-size-xs);
|
|
1547
2241
|
line-height: 1.5;
|
|
1548
2242
|
}
|
|
2243
|
+
|
|
2244
|
+
/* ── Compact timeline on mobile ── */
|
|
2245
|
+
@media (max-width: 480px) {
|
|
2246
|
+
.bk-timeline-item {
|
|
2247
|
+
padding-left: calc(var(--dt-space-5) + var(--dt-space-1));
|
|
2248
|
+
}
|
|
2249
|
+
}
|
|
2250
|
+
|
|
2251
|
+
@media (max-width: 320px) {
|
|
2252
|
+
.bk-timeline {
|
|
2253
|
+
gap: var(--dt-space-3);
|
|
2254
|
+
}
|
|
2255
|
+
.bk-timeline-item {
|
|
2256
|
+
padding-left: var(--dt-space-5);
|
|
2257
|
+
}
|
|
2258
|
+
.bk-timeline-dot {
|
|
2259
|
+
width: 0.5rem;
|
|
2260
|
+
height: 0.5rem;
|
|
2261
|
+
}
|
|
2262
|
+
}
|
|
1549
2263
|
`,tree:`
|
|
1550
2264
|
.bk-tree {
|
|
1551
2265
|
display: grid;
|
|
@@ -1578,7 +2292,55 @@ ${A}
|
|
|
1578
2292
|
.bk-tree-key {
|
|
1579
2293
|
color: var(--dt-text-primary);
|
|
1580
2294
|
}
|
|
1581
|
-
`},
|
|
2295
|
+
`},an=`
|
|
2296
|
+
|
|
2297
|
+
/* ── Entrance: fade-in + slide-up for cards, metrics, checklist, findings ── */
|
|
2298
|
+
@keyframes aikit-enter-fade {
|
|
2299
|
+
from { opacity: 0; transform: translateY(8px); }
|
|
2300
|
+
to { opacity: 1; transform: translateY(0); }
|
|
2301
|
+
}
|
|
2302
|
+
|
|
2303
|
+
/* ── Progress bar: 0% → target width fill ── */
|
|
2304
|
+
@keyframes aikit-progress-fill {
|
|
2305
|
+
from { width: 0%; }
|
|
2306
|
+
}
|
|
2307
|
+
|
|
2308
|
+
/* ── Checklist/completed state: scale bounce ── */
|
|
2309
|
+
@keyframes aikit-check-bounce {
|
|
2310
|
+
0% { transform: scale(0); }
|
|
2311
|
+
50% { transform: scale(1.2); }
|
|
2312
|
+
100% { transform: scale(1); }
|
|
2313
|
+
}
|
|
2314
|
+
|
|
2315
|
+
/* ── Chart: stroke draw for line/area/sparkline ── */
|
|
2316
|
+
@keyframes aikit-chart-draw {
|
|
2317
|
+
to { stroke-dashoffset: 0; }
|
|
2318
|
+
}
|
|
2319
|
+
|
|
2320
|
+
/* ── Chart: bar grow from baseline ── */
|
|
2321
|
+
@keyframes aikit-chart-grow {
|
|
2322
|
+
from { transform: scaleY(0); }
|
|
2323
|
+
to { transform: scaleY(1); }
|
|
2324
|
+
}
|
|
2325
|
+
|
|
2326
|
+
/* ── Chart: area reveal from bottom ── */
|
|
2327
|
+
@keyframes aikit-chart-reveal {
|
|
2328
|
+
from { clip-path: inset(100% 0 0 0); }
|
|
2329
|
+
to { clip-path: inset(0 0 0 0); }
|
|
2330
|
+
}
|
|
2331
|
+
|
|
2332
|
+
/* ── Chart: pie/donut fade-in + rotation ── */
|
|
2333
|
+
@keyframes aikit-pie-enter {
|
|
2334
|
+
from { opacity: 0; transform: rotate(-20deg); }
|
|
2335
|
+
to { opacity: 1; transform: rotate(0deg); }
|
|
2336
|
+
}
|
|
2337
|
+
|
|
2338
|
+
/* ── Loading shimmer for skeleton states ── */
|
|
2339
|
+
@keyframes aikit-shimmer {
|
|
2340
|
+
0% { background-position: -200px 0; }
|
|
2341
|
+
100% { background-position: calc(200px + 100%) 0; }
|
|
2342
|
+
}
|
|
2343
|
+
|
|
1582
2344
|
.bk-section {
|
|
1583
2345
|
display: grid;
|
|
1584
2346
|
gap: var(--dt-space-3);
|
|
@@ -1596,6 +2358,27 @@ ${A}
|
|
|
1596
2358
|
line-height: 1.3;
|
|
1597
2359
|
}
|
|
1598
2360
|
|
|
2361
|
+
/* ── Responsive section titles ── */
|
|
2362
|
+
@media (max-width: 480px) {
|
|
2363
|
+
.bk-section-title {
|
|
2364
|
+
font-size: var(--dt-font-size-lg);
|
|
2365
|
+
}
|
|
2366
|
+
.bk-section {
|
|
2367
|
+
gap: var(--dt-space-2);
|
|
2368
|
+
margin: 0 0 var(--dt-space-4);
|
|
2369
|
+
}
|
|
2370
|
+
}
|
|
2371
|
+
|
|
2372
|
+
@media (max-width: 320px) {
|
|
2373
|
+
.bk-section-title {
|
|
2374
|
+
font-size: var(--dt-font-size-base);
|
|
2375
|
+
}
|
|
2376
|
+
.bk-section {
|
|
2377
|
+
gap: var(--dt-space-1);
|
|
2378
|
+
margin: 0 0 var(--dt-space-3);
|
|
2379
|
+
}
|
|
2380
|
+
}
|
|
2381
|
+
|
|
1599
2382
|
.bk-text,
|
|
1600
2383
|
.bk-markdown,
|
|
1601
2384
|
.bk-paragraph,
|
|
@@ -1702,28 +2485,62 @@ blockquote {
|
|
|
1702
2485
|
border-radius: 0 var(--dt-radius-sm) var(--dt-radius-sm) 0;
|
|
1703
2486
|
color: var(--dt-text-secondary);
|
|
1704
2487
|
}
|
|
1705
|
-
`;function
|
|
1706
|
-
|
|
2488
|
+
`;function B(e){let t=[an,`
|
|
2489
|
+
@media print {
|
|
2490
|
+
.aikit-header,.aikit-footer,.aikit-toolbox,.aikit-toolbox-toggle,.aikit-toolbox-menu,
|
|
2491
|
+
.aikit-theme-toggle,.aikit-copy-status,.aikit-glow-primary,.aikit-glow-secondary {
|
|
2492
|
+
display: none !important;
|
|
2493
|
+
}
|
|
2494
|
+
html,body { background: #fff !important; color: #000 !important; }
|
|
2495
|
+
main,.bk-section,.bk-section-title,.bk-text,.bk-markdown,.bk-paragraph,.bk-fallback,
|
|
2496
|
+
.bk-prompt,.bk-heading,.bk-kv,.bk-list,.bk-table-wrap,.bk-table,.bk-data-table-schema,
|
|
2497
|
+
.bk-docs-browser,.bk-docs-hub,.bk-actions,.bk-comparison,.bk-component-detail,
|
|
2498
|
+
.bk-status-board,.bk-progress,.bk-lifecycle-flow,.bk-timeline,.bk-tree,.bk-flame,
|
|
2499
|
+
.bk-tags,.bk-cards,.bk-metrics,.bk-chart,.bk-code,.bk-mermaid,.bk-graph,.bk-checklist,
|
|
2500
|
+
.bk-finding,.aikit-glass,.aikit-glass-solid {
|
|
2501
|
+
background: #fff !important; color: #000 !important; border-color: #ccc !important;
|
|
2502
|
+
}
|
|
2503
|
+
.bk-table thead th { background: #f5f5f5 !important; color: #000 !important; border-bottom: 2px solid #ccc !important; }
|
|
2504
|
+
.bk-table td { border-bottom: 1px solid #ddd !important; }
|
|
2505
|
+
.bk-code { page-break-inside: avoid; break-inside: avoid; }
|
|
2506
|
+
.bk-code code { white-space: pre-wrap !important; word-break: break-all !important; }
|
|
2507
|
+
table { page-break-inside: auto; }
|
|
2508
|
+
thead { display: table-header-group; }
|
|
2509
|
+
tbody tr { page-break-inside: avoid; }
|
|
2510
|
+
.bk-mermaid { overflow: visible !important; page-break-inside: avoid; }
|
|
2511
|
+
.bk-mermaid svg { max-width: 100% !important; height: auto !important; overflow: visible !important; }
|
|
2512
|
+
*,*::before,*::after { box-shadow: none !important; text-shadow: none !important; animation: none !important; animation-duration: 0s !important; transition: none !important; }
|
|
2513
|
+
a { color: #000 !important; text-decoration: underline; }
|
|
2514
|
+
blockquote { border-left-color: #000 !important; background: #fafafa !important; }
|
|
2515
|
+
hr { border: none !important; border-top: 1px solid #ccc !important; background: none !important; }
|
|
2516
|
+
a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 0.8em; font-weight: normal; color: #555 !important; text-decoration: none; }
|
|
2517
|
+
a[href^="#"]::after, a[href^="javascript:"]::after { content: none !important; }
|
|
2518
|
+
html, body { page-break-before: auto; page-break-after: auto; }
|
|
2519
|
+
.bk-text,.bk-markdown,.bk-paragraph,.bk-finding { widows: 3; orphans: 3; }
|
|
2520
|
+
::selection { background: #ccc !important; color: #000 !important; }
|
|
2521
|
+
}
|
|
2522
|
+
`],n=new Set;for(let r of e)!n.has(r)&&z[r]&&(n.add(r),t.push(z[r]));return t.join(`
|
|
2523
|
+
`)}const on=`
|
|
1707
2524
|
.aikit-glass{border:1px solid var(--dt-glass-border);border-radius:var(--dt-radius-xl);background:var(--dt-glass-bg);backdrop-filter:blur(var(--dt-glass-blur,16px));-webkit-backdrop-filter:blur(var(--dt-glass-blur,16px));box-shadow:var(--dt-glass-shadow);transition:border-color var(--dt-transition-normal),box-shadow var(--dt-transition-normal)}.aikit-glass:hover{border-color:var(--dt-glass-hover-border);box-shadow:var(--dt-shadow-lg)}
|
|
1708
2525
|
.aikit-glass-solid{border:1px solid var(--dt-border-default);border-radius:var(--dt-radius-xl);background:var(--dt-bg-secondary)}
|
|
1709
2526
|
.aikit-glass-btn{display:inline-flex;align-items:center;min-height:2.25rem;padding:0 var(--dt-space-4);border:1px solid var(--dt-glass-border);border-radius:var(--dt-radius-md);background:var(--dt-glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--dt-text-primary);font:inherit;font-size:var(--dt-font-size-base);cursor:pointer;transition:background var(--dt-transition-fast),border-color var(--dt-transition-fast)}.aikit-glass-btn:hover{background:var(--dt-bg-secondary);border-color:var(--dt-accent-muted)}
|
|
1710
2527
|
.aikit-glass-primary{background:var(--dt-accent-emphasis);border-color:var(--dt-accent-emphasis);color:#fff}.aikit-glass-primary:hover{filter:brightness(1.1)}
|
|
1711
2528
|
.aikit-badge{display:inline-flex;align-items:center;padding:2px var(--dt-space-2);border-radius:var(--dt-radius-pill);font-family:var(--dt-font-mono);font-size:var(--dt-font-size-xs);letter-spacing:0.02em;text-transform:uppercase;font-weight:600;white-space:nowrap;border:1px solid}
|
|
1712
|
-
.aikit-chip{display:inline-flex;align-items:center;gap:0.25rem;padding:0.14rem 0.42rem;border-radius:var(--dt-radius-pill);border:1px solid var(--dt-glass-border);background:var(--dt-glass-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--dt-text-tertiary);font-family:var(--dt-font-mono);font-size:0.62rem;white-space:nowrap}`;function
|
|
1713
|
-
`)}function
|
|
2529
|
+
.aikit-chip{display:inline-flex;align-items:center;gap:0.25rem;padding:0.14rem 0.42rem;border-radius:var(--dt-radius-pill);border:1px solid var(--dt-glass-border);background:var(--dt-glass-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--dt-text-tertiary);font-family:var(--dt-font-mono);font-size:0.62rem;white-space:nowrap}`;function sn(){return B(Object.keys(z))}function cn(e){return Object.entries(e).map(([e,t])=>` ${e}: ${t};`).join(`
|
|
2530
|
+
`)}function ln(e,t){let n=` `.repeat(t);return e.split(`
|
|
1714
2531
|
`).map(e=>`${n}${e}`).join(`
|
|
1715
|
-
`)}function
|
|
2532
|
+
`)}function un(e){return e===`dark`?{...L,...R}:{...L}}function dn(){return cn(R)}function fn(e=`auto`){let t=`:root {\n${cn(un(e===`dark`?`dark`:`light`))}\n}`;return e===`light`?`${t}\n\nhtml {\n color-scheme: light;\n}`:e===`dark`?`${t}\n\nhtml {\n color-scheme: dark;\n}`:[t,`html {
|
|
1716
2533
|
color-scheme: light;
|
|
1717
|
-
}`,[`@media (prefers-color-scheme: dark) {`,` :root {`,
|
|
2534
|
+
}`,[`@media (prefers-color-scheme: dark) {`,` :root {`,ln(dn(),4),` }`,``,` html {`,` color-scheme: dark;`,` }`,`}`].join(`
|
|
1718
2535
|
`)].join(`
|
|
1719
2536
|
|
|
1720
|
-
`)}const
|
|
1721
|
-
`)}function
|
|
1722
|
-
`)}function
|
|
2537
|
+
`)}const V={header:`aikit-header`,brand:`aikit-header-brand`,title:`aikit-header-title`,titleText:`aikit-header-title-text`,subtitle:`aikit-header-subtitle`,actions:`aikit-header-actions`,themeToggle:`aikit-theme-toggle`,themeToggleIcon:`aikit-theme-toggle-icon`,themeToggleIconSun:`aikit-theme-toggle-icon--sun`,themeToggleIconMoon:`aikit-theme-toggle-icon--moon`,toolbox:`aikit-toolbox`,toolboxToggle:`aikit-toolbox-toggle`,toolboxMenu:`aikit-toolbox-menu`,toolboxItem:`aikit-toolbox-item`,footer:`aikit-footer`,footerMeta:`aikit-footer-meta`,footerText:`aikit-footer-text`,footerBrand:`aikit-footer-brand`,footerTimestamp:`aikit-footer-timestamp`,footerSlot:`aikit-footer-slot`,footerBadge:`aikit-footer-badge`},pn=[{kind:`shared-chrome-action`,id:`copy-image`,label:`Copy as Image`,icon:`<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg>`,onclick:`screenshotPage()`},{kind:`shared-chrome-action`,id:`download-image`,label:`Download as PNG`,icon:`<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>`,onclick:`downloadPng()`}];function mn(e){return[` <button type="button" class="${V.toolboxItem}" role="menuitem" data-shared-chrome-action="${n(e.id)}" aria-label="${n(e.label)}">`,` <span aria-hidden="true">${e.icon}</span>`,` <span>${n(e.label)}</span>`,` </button>`].join(`
|
|
2538
|
+
`)}function hn(e,t=[],n=!0){if(!n)return``;let r=t.filter(e=>e.kind===`shared-chrome-action`);return r.length===0?``:[` <div class="${V.toolbox}">`,` <button type="button" class="${V.toolboxToggle}" aria-label="Open tools menu" aria-haspopup="menu" aria-expanded="false" aria-controls="aikit-toolbox-menu">`,` <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>`,` </button>`,` <div id="aikit-toolbox-menu" class="${V.toolboxMenu}" role="menu" hidden>`,...r.map(e=>mn(e)),` </div>`,` </div>`].join(`
|
|
2539
|
+
`)}function gn(e){return e?.trim()?e.trim():``}function _n(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?{display:e}:{dateTime:t.toISOString(),display:new Intl.DateTimeFormat(void 0,{month:`long`,day:`numeric`,year:`numeric`,hour:`numeric`,minute:`2-digit`}).format(t)}}function vn(e){let t=e.brand??`AI KIT`,r=e.showToolbox??!0,i=e.sharedChromeActions??(r?pn:[]),a=[gn(e.actionsHtml),hn(e.transport,i,r),e.showThemeToggle===!1?``:[` <button type="button" class="${V.themeToggle}" aria-label="Switch to dark theme" aria-pressed="false">`,` <span class="${V.themeToggleIcon} ${V.themeToggleIconSun}" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></span>`,` <span class="${V.themeToggleIcon} ${V.themeToggleIconMoon}" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg></span>`,` </button>`].join(`
|
|
1723
2540
|
`)].filter(Boolean).join(`
|
|
1724
|
-
`);return[` <header class="${
|
|
1725
|
-
`)}function
|
|
1726
|
-
`)}const
|
|
2541
|
+
`);return[` <header class="${V.header}">`,` <div class="${V.brand}">${n(t)}</div>`,` <div class="${V.title}">`,` <span class="${V.titleText}">${n(e.title)}</span>`,...e.subtitle?[` <span class="${V.subtitle}">${n(e.subtitle)}</span>`]:[],` </div>`,` <div class="${V.actions}">`,a,` </div>`,` </header>`].join(`
|
|
2542
|
+
`)}function yn(e={}){let t=_n(e.generatedAt),r=e.showInstallGuide??!1,i=e.installUrl??`https://vpxa.io/ai-kit`,a=t?[`Generated by `,`<span class="${V.footerBrand}">AI KIT</span>`,` at `,t.dateTime?`<time class="${V.footerTimestamp}" datetime="${n(t.dateTime)}">${n(t.display)}</time>`:`<span class="${V.footerTimestamp}">${n(t.display)}</span>`].join(``):`Generated by <span class="${V.footerBrand}">AI KIT</span>`,o=gn(e.contentHtml),s=r?`<span class="${V.footerSlot}"><a href="${n(i)}" target="_blank" rel="noopener" style="color:inherit;text-decoration:underline;text-underline-offset:2px;text-decoration-color:var(--aikit-border)">Get AI Kit →</a></span>`:``;return[` <footer class="${V.footer}">`,` <div class="${V.footerMeta}">`,` <span class="${V.footerText}">${a}</span>`,...o?[` <span class="${V.footerSlot}">${o}</span>`]:[],s,` </div>`,` </footer>`].join(`
|
|
2543
|
+
`)}const bn=`
|
|
1727
2544
|
.aikit-header,
|
|
1728
2545
|
.aikit-toolbox-menu,
|
|
1729
2546
|
.aikit-copy-status,
|
|
@@ -2099,13 +2916,13 @@ html[data-theme='dark'] .aikit-theme-toggle-icon--moon {
|
|
|
2099
2916
|
box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.2);
|
|
2100
2917
|
}
|
|
2101
2918
|
}
|
|
2102
|
-
`;function
|
|
2919
|
+
`;function xn(e){let t={COMMENT:[],DELETION:[],GLOBAL_COMMENT:[]};for(let n of e)t[n.type in t?n.type:`COMMENT`].push(n);return t}function Sn(e){let t=i(e.id),r=[];return e.author&&r.push(`<span class="bk-annotation-author">${n(e.author)}</span>`),e.createdAt&&r.push(`<time class="bk-annotation-time">${n(e.createdAt)}</time>`),`<li class="bk-annotation-item" data-block-id="${t}" data-annotation-type="${e.type}">
|
|
2103
2920
|
<p class="bk-annotation-body">${n(e.body)}</p>
|
|
2104
2921
|
${r.length>0?`<div class="bk-annotation-meta">${r.join(``)}</div>`:``}
|
|
2105
|
-
</li>`}function
|
|
2106
|
-
<h4 class="bk-annotation-group-title">${n(
|
|
2107
|
-
<ol class="bk-annotation-list">${t.map(
|
|
2108
|
-
</div>`).join(``)||`<p class="bk-text-secondary">No annotations</p>`}</div>`}function
|
|
2922
|
+
</li>`}function Cn(e){switch(e){case`COMMENT`:return`Comments`;case`DELETION`:return`Deletions`;case`GLOBAL_COMMENT`:return`General Notes`;default:return e}}function wn(e,t){let r=xn(Array.isArray(e.value)?e.value:[]);return`<div class="bk-annotations">${Object.entries(r).filter(([,e])=>e.length>0).map(([e,t])=>`<div class="bk-annotation-group">
|
|
2923
|
+
<h4 class="bk-annotation-group-title">${n(Cn(e))}</h4>
|
|
2924
|
+
<ol class="bk-annotation-list">${t.map(Sn).join(``)}</ol>
|
|
2925
|
+
</div>`).join(``)||`<p class="bk-text-secondary">No annotations</p>`}</div>`}function Tn(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.prompt==`string`&&Array.isArray(t.options)}function En(e,t){let r=e.blockId?i(e.blockId):void 0,a=Tn(e.value)?e.value:{prompt:``,options:[]},o=a.prompt?`<p class="bk-approval-prompt">${n(a.prompt)}</p>`:``,s=a.options.map(e=>`<label class="bk-approval-option" data-option-id="${i(e.id)}">
|
|
2109
2926
|
<input type="radio" name="approval" value="${i(e.id)}" role="radio" />
|
|
2110
2927
|
<span class="bk-approval-option-label">${n(e.label)}</span>
|
|
2111
2928
|
${e.description?`<span class="bk-approval-option-desc">${n(e.description)}</span>`:``}
|
|
@@ -2116,9 +2933,9 @@ ${e.description?`<span class="bk-approval-option-desc">${n(e.description)}</span
|
|
|
2116
2933
|
${o}
|
|
2117
2934
|
<fieldset class="bk-approval-options">${s}</fieldset>
|
|
2118
2935
|
${c}
|
|
2119
|
-
</div>`}const
|
|
2120
|
-
`)}function
|
|
2121
|
-
`);return[{type:`heading`,value:e.path},{type:`paragraph`,value:`${e.status} | +${e.additions} / -${e.deletions}`},{type:`code`,language:`diff`,value:t}]}const An={id:`diff-view@1`,label:`Diff View`,description:`Static diff summary rendered as per-file diff code blocks.`,inputSchema:{type:`object`,properties:{files:{type:`array`,items:{type:`object`,required:[`path`,`status`,`additions`,`deletions`,`hunks`],properties:{path:{type:`string`},status:{type:`string`},additions:{type:`number`},deletions:{type:`number`},hunks:{type:`array`,items:{type:`object`,required:[`header`,`changes`],properties:{header:{type:`string`},changes:{type:`array`,items:{type:`object`,required:[`type`,`content`],properties:{type:{type:`string`},content:{type:`string`}},additionalProperties:!1}}},additionalProperties:!1}}},additionalProperties:!1}}},required:[`files`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>Dn(e).flatMap(kn),hydration:[],supportedTransports:wn},jn=[`mcp-app`,`browser`,`export`];function H(e){return typeof e==`object`&&!!e}function Mn(e){return H(e)&&typeof e.type==`string`}function Nn(e){return Array.isArray(e)&&e.every(Mn)}function Pn(e){if(!H(e))return{sections:[]};let t=Array.isArray(e.sections)?e.sections.flatMap(e=>{if(!H(e)||typeof e.heading!=`string`)return[];let t=typeof e.content==`string`||Nn(e.content)?e.content:``;return[{heading:e.heading,content:t}]}):[];return{title:typeof e.title==`string`?e.title:void 0,sections:t}}function Fn(e){let t=[{type:`heading`,value:e.heading}];return typeof e.content==`string`?(t.push({type:`paragraph`,value:e.content}),t):(t.push(...e.content),t)}const In={id:`document@1`,label:`Document`,description:`Structured document with optional title and section content blocks.`,inputSchema:{type:`object`,properties:{title:{type:`string`},sections:{type:`array`,items:{type:`object`,additionalProperties:!1,required:[`heading`,`content`],properties:{heading:{type:`string`},content:{oneOf:[{type:`string`},{type:`array`,items:{type:`object`}}]}}}}},required:[`sections`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t=Pn(e),n=[];t.title&&n.push({type:`heading`,value:t.title});for(let e of t.sections)n.push(...Fn(e));return n},hydration:[],supportedTransports:jn},Ln=[`mcp-app`,`browser`,`export`];function Rn(e){return typeof e==`object`&&!!e}function zn(e){return Rn(e)?{code:typeof e.code==`string`?e.code:`ERROR`,message:typeof e.message==`string`?e.message:`Unknown error`,details:typeof e.details==`string`?e.details:void 0,stack:typeof e.stack==`string`?e.stack:void 0}:{code:`ERROR`,message:`Unknown error`}}const U={id:`error@1`,label:`Error`,description:`Static error view with message and optional stack trace.`,inputSchema:{type:`object`,properties:{code:{type:`string`},message:{type:`string`},details:{type:`string`},stack:{type:`string`}},required:[`code`,`message`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t=zn(e),n=[{type:`heading`,value:`Error`},{type:`code`,title:t.code,language:`text`,value:t.details?`${t.message}\n\n${t.details}`:t.message}];return t.stack&&n.push({type:`code`,title:`Stack Trace`,language:`text`,value:t.stack}),n},hydration:[],supportedTransports:Ln};function W(e){return typeof e==`object`&&!!e}function Bn(e){return Array.isArray(e)?e.flatMap(e=>!W(e)||typeof e.name!=`string`||typeof e.label!=`string`?[]:[{name:e.name,label:e.label,type:typeof e.type==`string`?e.type:void 0,required:typeof e.required==`boolean`?e.required:void 0,placeholder:typeof e.placeholder==`string`?e.placeholder:void 0,default:typeof e.default==`string`?e.default:void 0,options:Array.isArray(e.options)?e.options.filter(e=>typeof e==`string`||W(e)&&typeof e.label==`string`&&typeof e.value==`string`):void 0,value:typeof e.value==`string`||typeof e.value==`boolean`?e.value:void 0}]):[]}const Vn={id:`form@1`,label:`Form`,description:`Browser-only form template rendered as a heading and table of field metadata.`,inputSchema:{type:`object`,properties:{title:{type:`string`},fields:{type:`array`,items:{type:`object`,required:[`name`,`label`],properties:{name:{type:`string`},label:{type:`string`},type:{type:`string`},required:{type:`boolean`},placeholder:{type:`string`},default:{type:`string`},options:{type:`array`,items:{anyOf:[{type:`string`},{type:`object`,required:[`label`,`value`],properties:{label:{type:`string`},value:{type:`string`}},additionalProperties:!1}]}},value:{type:[`string`,`boolean`]}},additionalProperties:!1}}},required:[`fields`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t={title:W(e)&&typeof e.title==`string`?e.title:`Form`,fields:W(e)?Bn(e.fields):[]};return[{type:`heading`,value:t.title},{type:`table`,value:{headers:[`Label`,`Name`,`Type`,`Required`,`Default/Placeholder`],rows:t.fields.map(e=>[e.label||e.name,e.name,e.type||`text`,e.required?`Yes`:`No`,e.placeholder||e.default||``])}}]},hydration:[`form`],supportedTransports:[`browser`]},Hn=[`mcp-app`,`browser`];function G(e){return typeof e==`object`&&!!e}function Un(e){if(!Array.isArray(e))return;let t=e.flatMap(e=>!G(e)||typeof e.id!=`string`||typeof e.label!=`string`?[]:[{id:e.id,label:e.label}]);return t.length>0?t:void 0}function Wn(e){return Array.isArray(e)?e.flatMap(e=>!G(e)||typeof e.id!=`string`||typeof e.label!=`string`?[]:[{id:e.id,label:e.label,category:typeof e.category==`string`?e.category:void 0,tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`):void 0}]):[]}function Gn(e){return G(e)?{categories:Un(e.categories),items:Wn(e.items)}:{items:[]}}function Kn(e){return{title:e.label,body:e.id,description:e.tags&&e.tags.length>0?e.tags.join(`, `):void 0}}function qn(e,t){return t.length===0?[]:[{type:`heading`,value:e},{type:`cards`,value:t.map(Kn)}]}const Jn={id:`picker@1`,label:`Picker`,description:`Grouped item picker rendered as cards with picker hydration metadata.`,inputSchema:{type:`object`,properties:{categories:{type:`array`,items:{type:`object`,required:[`id`,`label`],properties:{id:{type:`string`},label:{type:`string`}},additionalProperties:!1}},items:{type:`array`,items:{type:`object`,required:[`id`,`label`],properties:{id:{type:`string`},label:{type:`string`},category:{type:`string`},tags:{type:`array`,items:{type:`string`}}},additionalProperties:!1}}},required:[`items`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t=Gn(e),n=[];if(t.categories&&t.categories.length>0){let e=new Set(t.categories.map(e=>e.id)),r=[];for(let e of t.categories){let n=qn(e.label,t.items.filter(t=>t.category===e.id));n.length>0&&r.push(n)}let i=qn(`Other`,t.items.filter(t=>!t.category||!e.has(t.category)));return i.length>0&&r.push(i),n.push(...r.flatMap((e,t)=>t>0?[{type:`separator`},...e]:e)),n}return t.items.length>0&&n.push({type:`cards`,value:t.items.map(Kn)}),n},hydration:[`picker`],supportedTransports:Hn},Yn=[`mcp-app`,`browser`,`export`];function K(e){return typeof e==`object`&&!!e}function Xn(e){return K(e)&&typeof e.type==`string`}function Zn(e){return Array.isArray(e)&&e.every(Xn)}function Qn(e){return K(e)&&typeof e.label==`string`&&(typeof e.value==`string`||typeof e.value==`number`)}function $n(e){return Array.isArray(e)?e.flatMap(e=>{if(!K(e)||typeof e.heading!=`string`)return[];let t=typeof e.content==`string`||Zn(e.content)?e.content:``;return[{heading:e.heading,content:t}]}):[]}function er(e){return Array.isArray(e)?e.flatMap(e=>K(e)?[{title:typeof e.title==`string`?e.title:void 0,value:e.value,headers:Array.isArray(e.headers)?e.headers.filter(e=>typeof e==`string`):void 0,rows:Array.isArray(e.rows)?e.rows.filter(e=>Array.isArray(e)):void 0}]:[]):[]}function tr(e){let t=[{type:`heading`,value:e.heading}];return typeof e.content==`string`?(t.push({type:`paragraph`,value:e.content}),t):(t.push(...e.content),t)}function nr(e){let t={type:`table`};return e.title&&(t.title=e.title),e.value!==void 0&&(t.value=e.value),e.headers&&(t.headers=e.headers),e.rows&&(t.rows=e.rows),t}const rr={id:`report@1`,label:`Report`,description:`Static report with title, optional metrics, narrative sections, and tables.`,inputSchema:{type:`object`,properties:{title:{type:`string`},metrics:{type:`array`,items:{type:`object`,required:[`label`,`value`],properties:{label:{type:`string`},value:{type:[`string`,`number`]},trend:{type:[`string`,`number`]},status:{type:`string`}},additionalProperties:!1}},sections:{type:`array`,items:{type:`object`,required:[`heading`,`content`],properties:{heading:{type:`string`},content:{oneOf:[{type:`string`},{type:`array`,items:{type:`object`}}]}},additionalProperties:!1}},tables:{type:`array`,items:{type:`object`,properties:{title:{type:`string`},value:{},headers:{type:`array`,items:{type:`string`}},rows:{type:`array`,items:{type:`array`,items:{}}}},additionalProperties:!1}}},required:[`title`,`sections`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t={title:K(e)&&typeof e.title==`string`?e.title:`Report`,metrics:K(e)&&Array.isArray(e.metrics)?e.metrics.filter(Qn):void 0,sections:K(e)?$n(e.sections):[],tables:K(e)?er(e.tables):void 0},n=[{type:`heading`,value:t.title}];t.metrics&&t.metrics.length>0&&n.push({type:`metrics`,value:t.metrics});for(let e of t.sections)n.push(...tr(e));for(let e of t.tables??[])n.push(nr(e));return n},hydration:[],supportedTransports:Yn},ir=[`mcp-app`,`browser`];function q(e){return typeof e==`object`&&!!e}function ar(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function or(e){return Array.isArray(e)?e.flatMap(e=>{if(!q(e)||typeof e.id!=`string`||typeof e.body!=`string`)return[];let t=e.type;if(t!==`COMMENT`&&t!==`DELETION`&&t!==`GLOBAL_COMMENT`)return[];let n=q(e.anchor)?e.anchor:{};return[{id:e.id,type:t,body:e.body,anchor:{blockId:n.blockId},author:typeof e.author==`string`?e.author:void 0,createdAt:typeof e.createdAt==`string`?e.createdAt:void 0}]}):[]}function sr(e){return Array.isArray(e)?e.flatMap(e=>{if(!q(e)||typeof e.id!=`string`||typeof e.label!=`string`)return[];let t=e.outcome;return t!==`approved`&&t!==`rejected`&&t!==`changes-requested`&&t!==`deferred`?[]:[{id:e.id,label:e.label,outcome:t,description:typeof e.description==`string`?e.description:void 0}]}):[]}const cr={id:`review@1`,label:`Review`,description:`Review surface with criteria checklist, annotation items, and approval controls.`,inputSchema:{type:`object`,properties:{title:{type:`string`},criteria:{type:`array`,items:{type:`string`}},annotations:{type:`array`,items:{type:`object`,required:[`id`,`body`,`type`,`anchor`],properties:{id:{type:`string`},type:{type:`string`,enum:[`COMMENT`,`DELETION`,`GLOBAL_COMMENT`]},body:{type:`string`},anchor:{type:`object`,properties:{blockId:{type:`string`},contextHash:{type:`string`}}},author:{type:`string`},createdAt:{type:`string`}},additionalProperties:!1}},approval:{type:`object`,properties:{prompt:{type:`string`},options:{type:`array`,items:{type:`object`,required:[`id`,`label`,`outcome`],properties:{id:{type:`string`},label:{type:`string`},outcome:{type:`string`,enum:[`approved`,`rejected`,`changes-requested`,`deferred`]},description:{type:`string`}},additionalProperties:!1}},requireComment:{type:`boolean`}},required:[`prompt`,`options`]},comment:{type:`string`}},required:[`title`,`criteria`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t=[];if(!q(e))return t;let n=typeof e.title==`string`?e.title:`Review`;t.push({type:`heading`,value:n});let r=ar(e.criteria);r.length>0&&t.push({type:`checklist`,value:r.map(e=>({label:e,checked:!1}))});let i=or(e.annotations);i.length>0&&t.push({type:`annotation`,value:i});let a=e.approval;if(q(a)){let e=sr(a.options);e.length>0&&t.push({type:`approval`,value:{prompt:typeof a.prompt==`string`?a.prompt:``,options:e,requireComment:typeof a.requireComment==`boolean`?a.requireComment:!1}})}let o=typeof e.comment==`string`?e.comment:void 0;return o&&t.push({type:`markdown`,value:o}),t},hydration:[`checklist`],supportedTransports:ir},lr=[`mcp-app`,`browser`,`export`];function J(e){return typeof e==`object`&&!!e}function ur(e){return Array.isArray(e)?e.flatMap(e=>{if(!J(e)||typeof e.category!=`string`||!Array.isArray(e.items))return[];let t=e.items.flatMap(e=>!J(e)||typeof e.label!=`string`||typeof e.status!=`string`?[]:[{label:e.label,status:e.status,badge:typeof e.badge==`string`?e.badge:void 0}]);return[{category:e.category,items:t}]}):[]}function dr(e){return e.map(e=>({title:e.label,status:e.status,badge:e.badge}))}const fr={id:`status-board@1`,label:`Status Board`,description:`Static status board grouped into category headings and card collections.`,inputSchema:{type:`object`,properties:{categories:{type:`array`,items:{type:`object`,required:[`category`,`items`],properties:{category:{type:`string`},items:{type:`array`,items:{type:`object`,required:[`label`,`status`],properties:{label:{type:`string`},status:{type:`string`},badge:{type:`string`}},additionalProperties:!1}}},additionalProperties:!1}}},required:[`categories`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t=J(e)?ur(e.categories):[],n=[];for(let e of t)n.push({type:`heading`,value:e.category}),n.push({type:`cards`,value:dr(e.items)});return n},hydration:[],supportedTransports:lr},pr=[`mcp-app`,`browser`,`export`];function mr(e){return typeof e==`object`&&!!e}function hr(e){return Array.isArray(e)?e.flatMap(e=>!mr(e)||typeof e.title!=`string`?[]:[{title:e.title,description:typeof e.description==`string`?e.description:void 0,timestamp:typeof e.timestamp==`string`?e.timestamp:void 0,status:typeof e.status==`string`?e.status:void 0}]):[]}function gr(e){return Array.isArray(e)?{entries:hr(e)}:mr(e)?{entries:hr(e.entries??e.events??e.items),title:typeof e.title==`string`?e.title:void 0}:{entries:[]}}const Y={type:`array`,items:{type:`object`,required:[`title`],properties:{title:{type:`string`},description:{type:`string`},timestamp:{type:`string`},status:{type:`string`}},additionalProperties:!1}},_r={id:`timeline@1`,label:`Timeline`,description:`Static timeline events rendered as a timeline block.`,inputSchema:{oneOf:[Y,{type:`object`,properties:{title:{type:`string`},entries:Y,events:Y,items:Y},anyOf:[{required:[`entries`]},{required:[`events`]},{required:[`items`]}],additionalProperties:!1}]},defaultLayout:{},blocksFromData:e=>{let{entries:t,title:n}=gr(e),r=[];return n&&r.push({type:`heading`,value:n}),r.push({type:`timeline`,value:t}),r},hydration:[],supportedTransports:pr},vr=[`mcp-app`,`browser`,`export`];function X(e){return typeof e==`object`&&!!e}function yr(e){return X(e)&&typeof e.label==`string`}function br(e){return{name:e.label,children:Array.isArray(e.children)?e.children.filter(yr).map(br):[]}}function xr(e){if(!X(e))return{};let t=e.root;return yr(t)?br(t):X(t)?t:e}const Sr={id:`tree@1`,label:`Tree`,description:`Static tree view data with optional tree hydration metadata.`,inputSchema:{oneOf:[{type:`object`,properties:{root:{type:`object`}},required:[`root`],additionalProperties:!0},{type:`object`,additionalProperties:!0}]},defaultLayout:{},blocksFromData:e=>[{type:`tree`,value:xr(e)}],hydration:[`tree`],supportedTransports:vr},Z=new mn;Z.register(cr),Z.register(_n),Z.register(An),Z.register(In),Z.register(Jn),Z.register(rr),Z.register(_r),Z.register(Sr),Z.register(Cn),Z.register(U),Z.register(Vn),Z.register(fr);let Q=0;function Cr(){return Q=(Q+1)%(2**53-1),`${Date.now().toString(16).padStart(12,`0`).slice(-12)}${Q.toString(16).padStart(4,`0`).slice(-4)}${Array.from({length:8},()=>Math.floor(Math.random()*256).toString(16).padStart(2,`0`)).join(``)}`}function wr(e){return{id:e,version:1,entry:`@aikit/blocks-interactive/dist/islands/${e}.mjs`,selector:`[data-island="${e}"]`,needsData:!0}}function Tr(e,t){let n=new TextEncoder;return n.encode(e).byteLength+t.reduce((e,t)=>e+n.encode(t).byteLength,0)}function Er(e,t){let n=[],r=t.registry??Z,i={colorScheme:e.colorScheme??t.colorScheme??`auto`,transport:t.transport,lang:e.lang,dir:e.dir},a=[...e.blocks??[]],o=[...a],s=[],c=[...e.actions??[]];if(e.template){let t=r.get(e.template);if(t)try{o=t.blocksFromData(e.data,i),o.length===0&&e.data!==void 0&&(n.push({level:`warn`,message:`Template "${e.template}" produced no blocks from provided data`}),o=[{type:`markdown`,value:`> ⚠️ Template \`${e.template}\` received data but produced no content. Verify the data structure matches the template schema.`}]),t.actionsFromData&&(c=[...c,...t.actionsFromData(e.data)]),s=t.hydration.map(e=>wr(e))}catch(t){let r=t instanceof Error?t.message:String(t);n.push({level:`error`,message:`Template ${e.template} failed: ${r}`}),o=a.length===0?U.blocksFromData({code:`TEMPLATE_RENDER_ERROR`,message:`Failed to render template ${e.template}`,details:r},i):[...a]}else n.push({level:`warn`,message:`Template not found: ${e.template}`})}let l=fn(o,i),u=[I(o.map(e=>e.type))],d=t.nonce??Cr(),f=e.metadata?.surfaceId??`surface-${d}`,p=s.length>0?JSON.stringify({data:e.data,blocks:o}):void 0,m=t.blockVendorScripts?[...new Set(o.flatMap(e=>t.blockVendorScripts?.[e.type]??[]))]:void 0;return{surfaceId:f,nonce:d,html:l,css:u,vendorScripts:m&&m.length>0?m:void 0,islands:s,actions:c,payload:p,estimatedBytes:Tr(l,u),exportPolicy:s.length>0?`local-interactive`:`static-only`,diagnostics:n.length>0?n:void 0}}function Dr(e){return e===`up`||e===`down`||e===`neutral`}function $(e){return typeof e==`object`&&!!e}function Or(e){return!$(e)||!Array.isArray(e.metrics)?{metrics:[]}:{metrics:e.metrics.flatMap(e=>{if(!$(e)||typeof e.label!=`string`||typeof e.value!=`string`&&typeof e.value!=`number`)return[];let t=$(e.trend)&&typeof e.trend.value==`string`&&Dr(e.trend.direction)?{value:e.trend.value,direction:e.trend.direction}:void 0,n=Array.isArray(e.items)?e.items.flatMap(e=>!$(e)||typeof e.label!=`string`||typeof e.value!=`string`?[]:[{label:e.label,value:e.value}]):void 0;return[{id:typeof e.id==`string`?e.id:void 0,label:e.label,value:e.value,trend:t,status:e.status===`success`||e.status===`warning`||e.status===`error`||e.status===`info`?e.status:void 0,type:e.type===`progress`||e.type===`list`||e.type===`stat`?e.type:void 0,progress:typeof e.progress==`number`?Fr(e.progress):void 0,items:n}]})}}function kr(e){let t=e.type===`progress`&&typeof e.progress==`number`?`${e.progress}%`:void 0;return{label:e.label,value:e.value,trend:e.trend?.value??t,status:e.status}}function Ar(e){return e.type!==`progress`||typeof e.progress!=`number`?null:{label:e.label,value:Fr(e.progress),max:100}}function jr(e){return $(e)?{columns:Array.isArray(e.columns)?e.columns.flatMap(e=>!$(e)||typeof e.id!=`string`||typeof e.label!=`string`?[]:[{id:e.id,label:e.label}]):[],cards:Array.isArray(e.cards)?e.cards.flatMap(e=>!$(e)||typeof e.id!=`string`||typeof e.title!=`string`||typeof e.column!=`string`?[]:[{id:e.id,title:e.title,description:typeof e.description==`string`?e.description:void 0,column:e.column,tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`):void 0,priority:e.priority===`high`||e.priority===`medium`||e.priority===`low`?e.priority:void 0}]):[]}:{columns:[],cards:[]}}function Mr(e){return{title:e.title,description:e.description,badge:e.priority,body:e.tags?.join(`, `),status:e.priority}}function Nr(e){return!$(e)||!Array.isArray(e.items)?[]:e.items.flatMap(e=>!$(e)||typeof e.id!=`string`||typeof e.label!=`string`?[]:[{id:e.id,label:e.label}])}function Pr(e){return $(e)?{name:typeof e.name==`string`?e.name:``,total:typeof e.total==`number`?e.total:typeof e.value==`number`?e.value:0,self:typeof e.self==`number`?e.self:void 0,children:Array.isArray(e.children)?e.children.map(e=>Pr(e)):[]}:{name:``,total:0,children:[]}}function Fr(e){return Math.max(0,Math.min(100,e))}function Ir(e){let t=Or(e),n=[];t.metrics.length>0&&n.push({type:`metrics`,value:t.metrics.map(kr)});let r=t.metrics.map(Ar).filter(e=>e!==null);r.length>0&&n.push({type:`progress`,value:r});for(let e of t.metrics)e.type===`list`&&e.items&&e.items.length>0&&(n.push({type:`heading`,value:e.label}),n.push({type:`table`,value:e.items}));return n}function Lr(e){let t=jr(e),n=[];return t.columns.forEach((e,r)=>{r>0&&n.push({type:`separator`,value:``});let i=t.cards.filter(t=>t.column===e.id);n.push({type:`heading`,value:e.label}),n.push({type:`cards`,value:i.map(Mr)})}),n}function Rr(e){let t=Nr(e);return t.length===0?[]:[{type:`cards`,value:t.map((e,t)=>({title:e.label,body:e.id,badge:`#${t+1}`}))}]}function zr(e){return!$(e)||!$(e.profile)?[]:[{type:`flame-graph`,value:Pr(e.profile)}]}const Br={id:`dashboard@1`,label:`Dashboard`,description:`Metric cards grid with optional charts.`,inputSchema:{type:`object`,properties:{metrics:{type:`array`,items:{type:`object`,required:[`label`,`value`],properties:{id:{type:`string`},label:{type:`string`},value:{type:[`string`,`number`]},trend:{type:`object`,properties:{value:{type:`string`},direction:{enum:[`up`,`down`,`neutral`]}},required:[`value`,`direction`],additionalProperties:!1},status:{enum:[`success`,`warning`,`error`,`info`]},type:{enum:[`stat`,`progress`,`list`]},progress:{type:`number`},items:{type:`array`,items:{type:`object`,required:[`label`,`value`],properties:{label:{type:`string`},value:{type:`string`}},additionalProperties:!1}}},additionalProperties:!1}}},required:[`metrics`],additionalProperties:!1},defaultLayout:{maxWidth:`1200px`},blocksFromData:e=>Ir(e),hydration:[],supportedTransports:[`mcp-app`,`browser`]},Vr={id:`kanban@1`,label:`Kanban`,description:`Drag-and-drop task board grouped by columns.`,inputSchema:{type:`object`,properties:{columns:{type:`array`,items:{type:`object`,required:[`id`,`label`],properties:{id:{type:`string`},label:{type:`string`},color:{type:`string`}},additionalProperties:!1}},cards:{type:`array`,items:{type:`object`,required:[`id`,`title`,`column`],properties:{id:{type:`string`},title:{type:`string`},description:{type:`string`},column:{type:`string`},tags:{type:`array`,items:{type:`string`}},priority:{enum:[`high`,`medium`,`low`]}},additionalProperties:!1}}},required:[`columns`,`cards`],additionalProperties:!1},defaultLayout:{maxWidth:`1400px`},blocksFromData:e=>Lr(e),hydration:[],supportedTransports:[`browser`]},Hr={id:`list-sort@1`,label:`Sortable List`,description:`Reorderable list of items with browser drag-and-drop interactions.`,inputSchema:{type:`object`,properties:{items:{type:`array`,items:{type:`object`,required:[`id`,`label`],properties:{id:{type:`string`},label:{type:`string`}},additionalProperties:!1}}},required:[`items`],additionalProperties:!1},defaultLayout:{maxWidth:`720px`},blocksFromData:e=>Rr(e),hydration:[],supportedTransports:[`browser`]},Ur={id:`flame-graph@1`,label:`Flame Graph`,description:`Hierarchical performance profile with interactive zoom state.`,inputSchema:{type:`object`,properties:{profile:{type:`object`}},required:[`profile`],additionalProperties:!1},defaultLayout:{maxWidth:`1200px`},blocksFromData:e=>zr(e),hydration:[`flame-graph`],supportedTransports:[`browser`]},Wr={blockedClipboardMessage:`Image clipboard is blocked by this host or browser. Open in a browser that allows clipboard-write, then try again.`,clipboardSuccessMessage:`Copied image to clipboard.`,fallbackToServerCaptureMessage:`Client Copy as Image capture failed`};function Gr(){return Wr}function Kr(e){return e.replace(/</g,`\\u003c`).replace(/>/g,`\\u003e`).replace(/&/g,`\\u0026`).replace(/\u2028/g,`\\u2028`).replace(/\u2029/g,`\\u2029`)}function qr(e,t){let n=[`
|
|
2936
|
+
</div>`}const Dn={actions:m,annotation:wn,approval:En,cards:h,chart:v,checklist:we,code:ke,comparison:Pe,"architecture-diagram":N,"workflow-diagram":N,"sequence-diagram":N,"dataflow-diagram":N,"lifecycle-diagram":N,diff:rt,"component-detail":Ve,"data-table-schema":Ke,"docs-browser":at,"docs-hub":lt,"flame-graph":mt,finding:dt,graph:gt,heading:vt,kv:bt,"lifecycle-flow":kt,list:At,markdown:Ft,mermaid:It,metrics:Rt,paragraph:zt,progress:Vt,prompt:Ut,separator:Wt,"status-board":Kt,table:Xt,tags:Qt,text:$t,timeline:en,tree:tn};function On(e,t,r){let a={...e,value:o(e.value)},s=Dn[a.type],c=s?s(a,t):An(a);return a.title&&![`heading`,`finding`].includes(a.type)&&(c=`<section class="bk-section bk-section--${n(a.type)}"><h3 class="bk-section-title">${n(a.title)}</h3>${c}</section>`),`<div data-block-id="${i(a.blockId??`block-${r??0}`)}">${c}</div>`}function kn(e,t){return e.map((e,n)=>On(e,t,n)).join(`
|
|
2937
|
+
`)}function An(e){if(e.value===void 0||e.value===null)return``;if(typeof e.value==`string`)return`<p class="bk-paragraph">${n(e.value)}</p>`;try{return`<pre class="bk-fallback">${n(JSON.stringify(e.value,null,2))}</pre>`}catch{return`<pre class="bk-fallback">${n(String(e.value))}</pre>`}}var jn=class{templates=new Map;register(e){this.templates.set(e.id,e)}get(e){let t=this.templates.get(e);if(t)return t;let n=e.includes(`@`)?e:`${e}@`,r,i=-1;for(let[e,t]of this.templates){if(!e.startsWith(n))continue;let a=Number.parseInt(e.split(`@`)[1]??`0`,10);a>i&&(i=a,r=t)}return r}has(e){return this.get(e)!==void 0}list(){return[...this.templates.values()]}};const Mn=[`mcp-app`,`browser`];function H(e){return typeof e==`object`&&!!e}function Nn(e){return Array.isArray(e)?e.flatMap(e=>!H(e)||typeof e.label!=`string`?[]:[{label:e.label,checked:!!e.checked}]):[]}const Pn={id:`checklist@1`,label:`Checklist`,description:`Checklist with optional title and checklist hydration metadata.`,inputSchema:{type:`object`,properties:{title:{type:`string`},items:{type:`array`,items:{type:`object`,required:[`label`,`checked`],properties:{label:{type:`string`},checked:{type:`boolean`}},additionalProperties:!1}}},required:[`items`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t=[],n=H(e)&&typeof e.title==`string`?e.title:void 0,r=H(e)?Nn(e.items):[];return n&&t.push({type:`heading`,value:n}),t.push({type:`checklist`,value:r}),t},hydration:[`checklist`],supportedTransports:Mn},Fn=[`mcp-app`,`browser`,`export`];function U(e){return typeof e==`object`&&!!e}function In(e){return U(e)&&typeof e.label==`string`&&(typeof e.value==`string`||typeof e.value==`number`)}function Ln(e){return U(e)&&typeof e.key==`string`&&typeof e.label==`string`}function Rn(e){return Array.isArray(e)?e.filter(U):[]}function zn(e,t){if(Array.isArray(e)){let t=e.filter(Ln);if(t.length>0)return t}return Object.keys(t[0]??{}).map(e=>({key:e,label:e}))}const Bn={id:`data-table@1`,label:`Data Table`,description:`Static data table with optional metrics and sortable table hydration.`,inputSchema:{type:`object`,properties:{columns:{type:`array`,items:{type:`object`,required:[`key`,`label`],properties:{key:{type:`string`},label:{type:`string`}},additionalProperties:!1}},rows:{type:`array`,items:{type:`object`}},stats:{type:`array`,items:{type:`object`,required:[`label`,`value`],properties:{label:{type:`string`},value:{type:[`string`,`number`]},trend:{type:[`string`,`number`]},status:{type:`string`}},additionalProperties:!1}}},required:[`rows`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t=U(e)?Rn(e.rows):[],n=U(e)?zn(e.columns,t):[],r=n.map(e=>e.label),i=t.map(e=>n.map(t=>e[t.key])),a=[];if(U(e)&&Array.isArray(e.stats)){let t=e.stats.filter(In);t.length>0&&a.push({type:`metrics`,value:t})}return a.push({type:`table`,columns:n,headers:r,rows:i,value:{headers:r,rows:i}}),a},hydration:[`table`],supportedTransports:Fn},Vn=[`mcp-app`,`browser`,`export`];function W(e){return typeof e==`object`&&!!e}function Hn(e){return Array.isArray(e)?e.flatMap(e=>!W(e)||typeof e.type!=`string`||typeof e.content!=`string`?[]:[{type:e.type,content:e.content}]):[]}function Un(e){return Array.isArray(e)?e.flatMap(e=>!W(e)||typeof e.header!=`string`?[]:[{header:e.header,changes:Hn(e.changes)}]):[]}function Wn(e){return!W(e)||!Array.isArray(e.files)?[]:e.files.flatMap(e=>!W(e)||typeof e.path!=`string`||typeof e.status!=`string`?[]:[{path:e.path,status:e.status,additions:typeof e.additions==`number`?e.additions:0,deletions:typeof e.deletions==`number`?e.deletions:0,hunks:Un(e.hunks)}])}function Gn(e){return e===`add`?`+`:e===`delete`?`-`:` `}function Kn(e){let t=e.hunks.flatMap(e=>[e.header,...e.changes.map(e=>`${Gn(e.type)}${e.content}`)]).join(`
|
|
2938
|
+
`);return[{type:`heading`,value:e.path},{type:`paragraph`,value:`${e.status} | +${e.additions} / -${e.deletions}`},{type:`code`,language:`diff`,value:t}]}const qn={id:`diff-view@1`,label:`Diff View`,description:`Static diff summary rendered as per-file diff code blocks.`,inputSchema:{type:`object`,properties:{files:{type:`array`,items:{type:`object`,required:[`path`,`status`,`additions`,`deletions`,`hunks`],properties:{path:{type:`string`},status:{type:`string`},additions:{type:`number`},deletions:{type:`number`},hunks:{type:`array`,items:{type:`object`,required:[`header`,`changes`],properties:{header:{type:`string`},changes:{type:`array`,items:{type:`object`,required:[`type`,`content`],properties:{type:{type:`string`},content:{type:`string`}},additionalProperties:!1}}},additionalProperties:!1}}},additionalProperties:!1}}},required:[`files`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>Wn(e).flatMap(Kn),hydration:[],supportedTransports:Vn},Jn=[`mcp-app`,`browser`,`export`];function G(e){return typeof e==`object`&&!!e}function Yn(e){return G(e)&&typeof e.type==`string`}function Xn(e){return Array.isArray(e)&&e.every(Yn)}function Zn(e){if(!G(e))return{sections:[]};let t=Array.isArray(e.sections)?e.sections.flatMap(e=>{if(!G(e)||typeof e.heading!=`string`)return[];let t=typeof e.content==`string`||Xn(e.content)?e.content:``;return[{heading:e.heading,content:t}]}):[];return{title:typeof e.title==`string`?e.title:void 0,sections:t}}function Qn(e){let t=[{type:`heading`,value:e.heading}];return typeof e.content==`string`?(t.push({type:`paragraph`,value:e.content}),t):(t.push(...e.content),t)}const $n={id:`document@1`,label:`Document`,description:`Structured document with optional title and section content blocks.`,inputSchema:{type:`object`,properties:{title:{type:`string`},sections:{type:`array`,items:{type:`object`,additionalProperties:!1,required:[`heading`,`content`],properties:{heading:{type:`string`},content:{oneOf:[{type:`string`},{type:`array`,items:{type:`object`}}]}}}}},required:[`sections`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t=Zn(e),n=[];t.title&&n.push({type:`heading`,value:t.title});for(let e of t.sections)n.push(...Qn(e));return n},hydration:[],supportedTransports:Jn},er=[`mcp-app`,`browser`,`export`];function tr(e){return typeof e==`object`&&!!e}function nr(e){return tr(e)?{code:typeof e.code==`string`?e.code:`ERROR`,message:typeof e.message==`string`?e.message:`Unknown error`,details:typeof e.details==`string`?e.details:void 0,stack:typeof e.stack==`string`?e.stack:void 0}:{code:`ERROR`,message:`Unknown error`}}const K={id:`error@1`,label:`Error`,description:`Static error view with message and optional stack trace.`,inputSchema:{type:`object`,properties:{code:{type:`string`},message:{type:`string`},details:{type:`string`},stack:{type:`string`}},required:[`code`,`message`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t=nr(e),n=[{type:`heading`,value:`Error`},{type:`code`,title:t.code,language:`text`,value:t.details?`${t.message}\n\n${t.details}`:t.message}];return t.stack&&n.push({type:`code`,title:`Stack Trace`,language:`text`,value:t.stack}),n},hydration:[],supportedTransports:er};function q(e){return typeof e==`object`&&!!e}function rr(e){return Array.isArray(e)?e.flatMap(e=>!q(e)||typeof e.name!=`string`||typeof e.label!=`string`?[]:[{name:e.name,label:e.label,type:typeof e.type==`string`?e.type:void 0,required:typeof e.required==`boolean`?e.required:void 0,placeholder:typeof e.placeholder==`string`?e.placeholder:void 0,default:typeof e.default==`string`?e.default:void 0,options:Array.isArray(e.options)?e.options.filter(e=>typeof e==`string`||q(e)&&typeof e.label==`string`&&typeof e.value==`string`):void 0,value:typeof e.value==`string`||typeof e.value==`boolean`?e.value:void 0}]):[]}const ir={id:`form@1`,label:`Form`,description:`Browser-only form template rendered as a heading and table of field metadata.`,inputSchema:{type:`object`,properties:{title:{type:`string`},fields:{type:`array`,items:{type:`object`,required:[`name`,`label`],properties:{name:{type:`string`},label:{type:`string`},type:{type:`string`},required:{type:`boolean`},placeholder:{type:`string`},default:{type:`string`},options:{type:`array`,items:{anyOf:[{type:`string`},{type:`object`,required:[`label`,`value`],properties:{label:{type:`string`},value:{type:`string`}},additionalProperties:!1}]}},value:{type:[`string`,`boolean`]}},additionalProperties:!1}}},required:[`fields`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t={title:q(e)&&typeof e.title==`string`?e.title:`Form`,fields:q(e)?rr(e.fields):[]};return[{type:`heading`,value:t.title},{type:`table`,value:{headers:[`Label`,`Name`,`Type`,`Required`,`Default/Placeholder`],rows:t.fields.map(e=>[e.label||e.name,e.name,e.type||`text`,e.required?`Yes`:`No`,e.placeholder||e.default||``])}}]},hydration:[`form`],supportedTransports:[`browser`]},ar=[`mcp-app`,`browser`];function J(e){return typeof e==`object`&&!!e}function or(e){if(!Array.isArray(e))return;let t=e.flatMap(e=>!J(e)||typeof e.id!=`string`||typeof e.label!=`string`?[]:[{id:e.id,label:e.label}]);return t.length>0?t:void 0}function sr(e){return Array.isArray(e)?e.flatMap(e=>!J(e)||typeof e.id!=`string`||typeof e.label!=`string`?[]:[{id:e.id,label:e.label,category:typeof e.category==`string`?e.category:void 0,tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`):void 0}]):[]}function cr(e){return J(e)?{categories:or(e.categories),items:sr(e.items)}:{items:[]}}function lr(e){return{title:e.label,body:e.id,description:e.tags&&e.tags.length>0?e.tags.join(`, `):void 0}}function ur(e,t){return t.length===0?[]:[{type:`heading`,value:e},{type:`cards`,value:t.map(lr)}]}const dr={id:`picker@1`,label:`Picker`,description:`Grouped item picker rendered as cards with picker hydration metadata.`,inputSchema:{type:`object`,properties:{categories:{type:`array`,items:{type:`object`,required:[`id`,`label`],properties:{id:{type:`string`},label:{type:`string`}},additionalProperties:!1}},items:{type:`array`,items:{type:`object`,required:[`id`,`label`],properties:{id:{type:`string`},label:{type:`string`},category:{type:`string`},tags:{type:`array`,items:{type:`string`}}},additionalProperties:!1}}},required:[`items`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t=cr(e),n=[];if(t.categories&&t.categories.length>0){let e=new Set(t.categories.map(e=>e.id)),r=[];for(let e of t.categories){let n=ur(e.label,t.items.filter(t=>t.category===e.id));n.length>0&&r.push(n)}let i=ur(`Other`,t.items.filter(t=>!t.category||!e.has(t.category)));return i.length>0&&r.push(i),n.push(...r.flatMap((e,t)=>t>0?[{type:`separator`},...e]:e)),n}return t.items.length>0&&n.push({type:`cards`,value:t.items.map(lr)}),n},hydration:[`picker`],supportedTransports:ar},fr=[`mcp-app`,`browser`,`export`];function Y(e){return typeof e==`object`&&!!e}function pr(e){return Y(e)&&typeof e.type==`string`}function mr(e){return Array.isArray(e)&&e.every(pr)}function hr(e){return Y(e)&&typeof e.label==`string`&&(typeof e.value==`string`||typeof e.value==`number`)}function gr(e){return Array.isArray(e)?e.flatMap(e=>{if(!Y(e)||typeof e.heading!=`string`)return[];let t=typeof e.content==`string`||mr(e.content)?e.content:``;return[{heading:e.heading,content:t}]}):[]}function _r(e){return Array.isArray(e)?e.flatMap(e=>Y(e)?[{title:typeof e.title==`string`?e.title:void 0,value:e.value,headers:Array.isArray(e.headers)?e.headers.filter(e=>typeof e==`string`):void 0,rows:Array.isArray(e.rows)?e.rows.filter(e=>Array.isArray(e)):void 0}]:[]):[]}function vr(e){let t=[{type:`heading`,value:e.heading}];return typeof e.content==`string`?(t.push({type:`paragraph`,value:e.content}),t):(t.push(...e.content),t)}function yr(e){let t={type:`table`};if(e.title&&(t.title=e.title),e.value!==void 0)t.value=e.value;else if(e.headers||e.rows){let n={};e.headers&&(n.headers=e.headers),e.rows&&(n.rows=e.rows),t.value=n}return t}const br={id:`report@1`,label:`Report`,description:`Static report with title, optional metrics, narrative sections, and tables.`,inputSchema:{type:`object`,properties:{title:{type:`string`},metrics:{type:`array`,items:{type:`object`,required:[`label`,`value`],properties:{label:{type:`string`},value:{type:[`string`,`number`]},trend:{type:[`string`,`number`]},status:{type:`string`}},additionalProperties:!1}},sections:{type:`array`,items:{type:`object`,required:[`heading`,`content`],properties:{heading:{type:`string`},content:{oneOf:[{type:`string`},{type:`array`,items:{type:`object`}}]}},additionalProperties:!1}},tables:{type:`array`,items:{type:`object`,properties:{title:{type:`string`},value:{},headers:{type:`array`,items:{type:`string`}},rows:{type:`array`,items:{type:`array`,items:{}}}},additionalProperties:!1}}},required:[`title`,`sections`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t={title:Y(e)&&typeof e.title==`string`?e.title:`Report`,metrics:Y(e)&&Array.isArray(e.metrics)?e.metrics.filter(hr):void 0,sections:Y(e)?gr(e.sections):[],tables:Y(e)?_r(e.tables):void 0},n=[{type:`heading`,value:t.title}];t.metrics&&t.metrics.length>0&&n.push({type:`metrics`,value:t.metrics});for(let e of t.sections)n.push(...vr(e));for(let e of t.tables??[])n.push(yr(e));return n},hydration:[],supportedTransports:fr},xr=[`mcp-app`,`browser`];function X(e){return typeof e==`object`&&!!e}function Sr(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function Cr(e){return Array.isArray(e)?e.flatMap(e=>{if(!X(e)||typeof e.id!=`string`||typeof e.body!=`string`)return[];let t=e.type;if(t!==`COMMENT`&&t!==`DELETION`&&t!==`GLOBAL_COMMENT`)return[];let n=X(e.anchor)?e.anchor:{};return[{id:e.id,type:t,body:e.body,anchor:{blockId:n.blockId},author:typeof e.author==`string`?e.author:void 0,createdAt:typeof e.createdAt==`string`?e.createdAt:void 0}]}):[]}function wr(e){return Array.isArray(e)?e.flatMap(e=>{if(!X(e)||typeof e.id!=`string`||typeof e.label!=`string`)return[];let t=e.outcome;return t!==`approved`&&t!==`rejected`&&t!==`changes-requested`&&t!==`deferred`?[]:[{id:e.id,label:e.label,outcome:t,description:typeof e.description==`string`?e.description:void 0}]}):[]}const Tr={id:`review@1`,label:`Review`,description:`Review surface with criteria checklist, annotation items, and approval controls.`,inputSchema:{type:`object`,properties:{title:{type:`string`},criteria:{type:`array`,items:{type:`string`}},annotations:{type:`array`,items:{type:`object`,required:[`id`,`body`,`type`,`anchor`],properties:{id:{type:`string`},type:{type:`string`,enum:[`COMMENT`,`DELETION`,`GLOBAL_COMMENT`]},body:{type:`string`},anchor:{type:`object`,properties:{blockId:{type:`string`},contextHash:{type:`string`}}},author:{type:`string`},createdAt:{type:`string`}},additionalProperties:!1}},approval:{type:`object`,properties:{prompt:{type:`string`},options:{type:`array`,items:{type:`object`,required:[`id`,`label`,`outcome`],properties:{id:{type:`string`},label:{type:`string`},outcome:{type:`string`,enum:[`approved`,`rejected`,`changes-requested`,`deferred`]},description:{type:`string`}},additionalProperties:!1}},requireComment:{type:`boolean`}},required:[`prompt`,`options`]},comment:{type:`string`}},required:[`title`,`criteria`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t=[];if(!X(e))return t;let n=typeof e.title==`string`?e.title:`Review`;t.push({type:`heading`,value:n});let r=Sr(e.criteria);r.length>0&&t.push({type:`checklist`,value:r.map(e=>({label:e,checked:!1}))});let i=Cr(e.annotations);i.length>0&&t.push({type:`annotation`,value:i});let a=e.approval;if(X(a)){let e=wr(a.options);e.length>0&&t.push({type:`approval`,value:{prompt:typeof a.prompt==`string`?a.prompt:``,options:e,requireComment:typeof a.requireComment==`boolean`?a.requireComment:!1}})}let o=typeof e.comment==`string`?e.comment:void 0;return o&&t.push({type:`markdown`,value:o}),t},hydration:[`checklist`],supportedTransports:xr},Er=[`mcp-app`,`browser`,`export`];function Dr(e){return typeof e==`object`&&!!e}function Or(e){return Array.isArray(e)?e.flatMap(e=>{if(!Dr(e)||typeof e.category!=`string`||!Array.isArray(e.items))return[];let t=e.items.flatMap(e=>!Dr(e)||typeof e.label!=`string`||typeof e.status!=`string`?[]:[{label:e.label,status:e.status,badge:typeof e.badge==`string`?e.badge:void 0}]);return[{category:e.category,items:t}]}):[]}function kr(e){return e.map(e=>({title:e.label,status:e.status,badge:e.badge}))}const Ar={id:`status-board@1`,label:`Status Board`,description:`Static status board grouped into category headings and card collections.`,inputSchema:{type:`object`,properties:{categories:{type:`array`,items:{type:`object`,required:[`category`,`items`],properties:{category:{type:`string`},items:{type:`array`,items:{type:`object`,required:[`label`,`status`],properties:{label:{type:`string`},status:{type:`string`},badge:{type:`string`}},additionalProperties:!1}}},additionalProperties:!1}}},required:[`categories`],additionalProperties:!1},defaultLayout:{},blocksFromData:e=>{let t=Dr(e)?Or(e.categories):[],n=[];for(let e of t)n.push({type:`heading`,value:e.category}),n.push({type:`cards`,value:kr(e.items)});return n},hydration:[],supportedTransports:Er},jr=[`mcp-app`,`browser`,`export`];function Mr(e){return typeof e==`object`&&!!e}function Nr(e){return Array.isArray(e)?e.flatMap(e=>!Mr(e)||typeof e.title!=`string`?[]:[{title:e.title,description:typeof e.description==`string`?e.description:void 0,timestamp:typeof e.timestamp==`string`?e.timestamp:void 0,status:typeof e.status==`string`?e.status:void 0}]):[]}function Pr(e){return Array.isArray(e)?{entries:Nr(e)}:Mr(e)?{entries:Nr(e.entries??e.events??e.items),title:typeof e.title==`string`?e.title:void 0}:{entries:[]}}const Z={type:`array`,items:{type:`object`,required:[`title`],properties:{title:{type:`string`},description:{type:`string`},timestamp:{type:`string`},status:{type:`string`}},additionalProperties:!1}},Fr={id:`timeline@1`,label:`Timeline`,description:`Static timeline events rendered as a timeline block.`,inputSchema:{oneOf:[Z,{type:`object`,properties:{title:{type:`string`},entries:Z,events:Z,items:Z},anyOf:[{required:[`entries`]},{required:[`events`]},{required:[`items`]}],additionalProperties:!1}]},defaultLayout:{},blocksFromData:e=>{let{entries:t,title:n}=Pr(e),r=[];return n&&r.push({type:`heading`,value:n}),r.push({type:`timeline`,value:t}),r},hydration:[],supportedTransports:jr},Ir=[`mcp-app`,`browser`,`export`];function Lr(e){return typeof e==`object`&&!!e}function Rr(e){return Lr(e)&&typeof e.label==`string`}function zr(e){return{name:e.label,children:Array.isArray(e.children)?e.children.filter(Rr).map(zr):[]}}function Br(e){if(!Lr(e))return{};let t=e.root;return Rr(t)?zr(t):Lr(t)?t:e}const Vr={id:`tree@1`,label:`Tree`,description:`Static tree view data with optional tree hydration metadata.`,inputSchema:{oneOf:[{type:`object`,properties:{root:{type:`object`}},required:[`root`],additionalProperties:!0},{type:`object`,additionalProperties:!0}]},defaultLayout:{},blocksFromData:e=>[{type:`tree`,value:Br(e)}],hydration:[`tree`],supportedTransports:Ir},Q=new jn;Q.register(Tr),Q.register(Pn),Q.register(qn),Q.register($n),Q.register(dr),Q.register(br),Q.register(Fr),Q.register(Vr),Q.register(Bn),Q.register(K),Q.register(ir),Q.register(Ar);let Hr=0;function Ur(){return Hr=(Hr+1)%(2**53-1),`${Date.now().toString(16).padStart(12,`0`).slice(-12)}${Hr.toString(16).padStart(4,`0`).slice(-4)}${Array.from({length:8},()=>Math.floor(Math.random()*256).toString(16).padStart(2,`0`)).join(``)}`}function Wr(e){return{id:e,version:1,entry:`@aikit/blocks-interactive/dist/islands/${e}.mjs`,selector:`[data-island="${e}"]`,needsData:!0}}function Gr(e,t){let n=new TextEncoder;return n.encode(e).byteLength+t.reduce((e,t)=>e+n.encode(t).byteLength,0)}function Kr(e,t){let n=[],r=t.registry??Q,i={colorScheme:e.colorScheme??t.colorScheme??`auto`,transport:t.transport,lang:e.lang,dir:e.dir},a=[...e.blocks??[]],o=[...a],s=[],c=[...e.actions??[]];if(e.template){let t=r.get(e.template);if(t)try{o=t.blocksFromData(e.data,i),o.length===0&&e.data!==void 0&&(n.push({level:`warn`,message:`Template "${e.template}" produced no blocks from provided data`}),o=[{type:`markdown`,value:`> ⚠️ Template \`${e.template}\` received data but produced no content. Verify the data structure matches the template schema.`}]),t.actionsFromData&&(c=[...c,...t.actionsFromData(e.data)]),s=t.hydration.map(e=>Wr(e))}catch(t){let r=t instanceof Error?t.message:String(t);n.push({level:`error`,message:`Template ${e.template} failed: ${r}`}),o=a.length===0?K.blocksFromData({code:`TEMPLATE_RENDER_ERROR`,message:`Failed to render template ${e.template}`,details:r},i):[...a]}else n.push({level:`warn`,message:`Template not found: ${e.template}`})}let l=kn(o,i),u=[B(o.map(e=>e.type))],d=t.nonce??Ur(),f=e.metadata?.surfaceId??`surface-${d}`,p=s.length>0?JSON.stringify({data:e.data,blocks:o}):void 0,m=t.blockVendorScripts?[...new Set(o.flatMap(e=>t.blockVendorScripts?.[e.type]??[]))]:void 0;return{surfaceId:f,nonce:d,html:l,css:u,vendorScripts:m&&m.length>0?m:void 0,islands:s,actions:c,payload:p,estimatedBytes:Gr(l,u),exportPolicy:s.length>0?`local-interactive`:`static-only`,diagnostics:n.length>0?n:void 0}}function qr(e){return e===`up`||e===`down`||e===`neutral`}function $(e){return typeof e==`object`&&!!e}function Jr(e){return!$(e)||!Array.isArray(e.metrics)?{metrics:[]}:{metrics:e.metrics.flatMap(e=>{if(!$(e)||typeof e.label!=`string`||typeof e.value!=`string`&&typeof e.value!=`number`)return[];let t=$(e.trend)&&typeof e.trend.value==`string`&&qr(e.trend.direction)?{value:e.trend.value,direction:e.trend.direction}:void 0,n=Array.isArray(e.items)?e.items.flatMap(e=>!$(e)||typeof e.label!=`string`||typeof e.value!=`string`?[]:[{label:e.label,value:e.value}]):void 0;return[{id:typeof e.id==`string`?e.id:void 0,label:e.label,value:e.value,trend:t,status:e.status===`success`||e.status===`warning`||e.status===`error`||e.status===`info`?e.status:void 0,type:e.type===`progress`||e.type===`list`||e.type===`stat`?e.type:void 0,progress:typeof e.progress==`number`?ti(e.progress):void 0,items:n}]})}}function Yr(e){let t=e.type===`progress`&&typeof e.progress==`number`?`${e.progress}%`:void 0;return{label:e.label,value:e.value,trend:e.trend?`${(e=>e===`up`?`↑`:e===`down`?`↓`:`→`)(e.trend.direction)} ${e.trend.value}`:t,status:e.status}}function Xr(e){return e.type!==`progress`||typeof e.progress!=`number`?null:{label:e.label,value:ti(e.progress),max:100}}function Zr(e){return $(e)?{columns:Array.isArray(e.columns)?e.columns.flatMap(e=>!$(e)||typeof e.id!=`string`||typeof e.label!=`string`?[]:[{id:e.id,label:e.label}]):[],cards:Array.isArray(e.cards)?e.cards.flatMap(e=>!$(e)||typeof e.id!=`string`||typeof e.title!=`string`||typeof e.column!=`string`?[]:[{id:e.id,title:e.title,description:typeof e.description==`string`?e.description:void 0,column:e.column,tags:Array.isArray(e.tags)?e.tags.filter(e=>typeof e==`string`):void 0,priority:e.priority===`high`||e.priority===`medium`||e.priority===`low`?e.priority:void 0}]):[]}:{columns:[],cards:[]}}function Qr(e){return{title:e.title,description:e.description,badge:e.priority,body:e.tags?.join(`, `),status:e.priority}}function $r(e){return!$(e)||!Array.isArray(e.items)?[]:e.items.flatMap(e=>!$(e)||typeof e.id!=`string`||typeof e.label!=`string`?[]:[{id:e.id,label:e.label}])}function ei(e){return $(e)?{name:typeof e.name==`string`?e.name:``,total:typeof e.total==`number`?e.total:typeof e.value==`number`?e.value:0,self:typeof e.self==`number`?e.self:void 0,children:Array.isArray(e.children)?e.children.map(e=>ei(e)):[]}:{name:``,total:0,children:[]}}function ti(e){return Math.max(0,Math.min(100,e))}function ni(e){let t=Jr(e),n=[];t.metrics.length>0&&n.push({type:`metrics`,value:t.metrics.map(Yr)});let r=t.metrics.map(Xr).filter(e=>e!==null);r.length>0&&n.push({type:`progress`,value:r});for(let e of t.metrics)e.type===`list`&&e.items&&e.items.length>0&&(n.push({type:`heading`,value:e.label}),n.push({type:`table`,value:e.items}));return n}function ri(e){let t=Zr(e),n=[];return t.columns.forEach((e,r)=>{r>0&&n.push({type:`separator`,value:``});let i=t.cards.filter(t=>t.column===e.id);n.push({type:`heading`,value:e.label}),n.push({type:`cards`,value:i.map(Qr)})}),n}function ii(e){let t=$r(e);return t.length===0?[]:[{type:`cards`,value:t.map((e,t)=>({title:e.label,body:e.id,badge:`#${t+1}`}))}]}function ai(e){return!$(e)||!$(e.profile)?[]:[{type:`flame-graph`,value:ei(e.profile)}]}const oi={id:`dashboard@1`,label:`Dashboard`,description:`Metric cards grid with optional charts.`,inputSchema:{type:`object`,properties:{metrics:{type:`array`,items:{type:`object`,required:[`label`,`value`],properties:{id:{type:`string`},label:{type:`string`},value:{type:[`string`,`number`]},trend:{type:`object`,properties:{value:{type:`string`},direction:{enum:[`up`,`down`,`neutral`]}},required:[`value`,`direction`],additionalProperties:!1},status:{enum:[`success`,`warning`,`error`,`info`]},type:{enum:[`stat`,`progress`,`list`]},progress:{type:`number`},items:{type:`array`,items:{type:`object`,required:[`label`,`value`],properties:{label:{type:`string`},value:{type:`string`}},additionalProperties:!1}}},additionalProperties:!1}}},required:[`metrics`],additionalProperties:!1},defaultLayout:{maxWidth:`1200px`},blocksFromData:e=>ni(e),hydration:[],supportedTransports:[`mcp-app`,`browser`]},si={id:`kanban@1`,label:`Kanban`,description:`Drag-and-drop task board grouped by columns.`,inputSchema:{type:`object`,properties:{columns:{type:`array`,items:{type:`object`,required:[`id`,`label`],properties:{id:{type:`string`},label:{type:`string`},color:{type:`string`}},additionalProperties:!1}},cards:{type:`array`,items:{type:`object`,required:[`id`,`title`,`column`],properties:{id:{type:`string`},title:{type:`string`},description:{type:`string`},column:{type:`string`},tags:{type:`array`,items:{type:`string`}},priority:{enum:[`high`,`medium`,`low`]}},additionalProperties:!1}}},required:[`columns`,`cards`],additionalProperties:!1},defaultLayout:{maxWidth:`1400px`},blocksFromData:e=>ri(e),hydration:[],supportedTransports:[`browser`]},ci={id:`list-sort@1`,label:`Sortable List`,description:`Reorderable list of items with browser drag-and-drop interactions.`,inputSchema:{type:`object`,properties:{items:{type:`array`,items:{type:`object`,required:[`id`,`label`],properties:{id:{type:`string`},label:{type:`string`}},additionalProperties:!1}}},required:[`items`],additionalProperties:!1},defaultLayout:{maxWidth:`720px`},blocksFromData:e=>ii(e),hydration:[],supportedTransports:[`browser`]},li={id:`flame-graph@1`,label:`Flame Graph`,description:`Hierarchical performance profile with interactive zoom state.`,inputSchema:{type:`object`,properties:{profile:{type:`object`}},required:[`profile`],additionalProperties:!1},defaultLayout:{maxWidth:`1200px`},blocksFromData:e=>ai(e),hydration:[`flame-graph`],supportedTransports:[`browser`]},ui={blockedClipboardMessage:`Image clipboard is blocked by this host or browser. Open in a browser that allows clipboard-write, then try again.`,clipboardSuccessMessage:`Copied image to clipboard.`,fallbackToServerCaptureMessage:`Client Copy as Image capture failed`};function di(){return ui}function fi(e){return e.replace(/</g,`\\u003c`).replace(/>/g,`\\u003e`).replace(/&/g,`\\u0026`).replace(/\u2028/g,`\\u2028`).replace(/\u2029/g,`\\u2029`)}function pi(e,t){let n=[`
|
|
2122
2939
|
* {
|
|
2123
2940
|
box-sizing: border-box;
|
|
2124
2941
|
}
|
|
@@ -2149,9 +2966,8 @@ body {
|
|
|
2149
2966
|
@media (prefers-reduced-motion: reduce) {
|
|
2150
2967
|
html { scroll-behavior: auto; }
|
|
2151
2968
|
*, *::before, *::after {
|
|
2152
|
-
animation
|
|
2153
|
-
|
|
2154
|
-
transition-duration: 0.01ms !important;
|
|
2969
|
+
animation: none !important;
|
|
2970
|
+
transition: none !important;
|
|
2155
2971
|
}
|
|
2156
2972
|
}
|
|
2157
2973
|
|
|
@@ -2248,6 +3064,21 @@ main > * {
|
|
|
2248
3064
|
}
|
|
2249
3065
|
}
|
|
2250
3066
|
|
|
3067
|
+
@media (max-width: 360px) {
|
|
3068
|
+
main {
|
|
3069
|
+
padding: var(--aikit-main-padding-mobile-xs, 0.5rem 0.5rem);
|
|
3070
|
+
gap: var(--aikit-main-gap-mobile-xs, 0.5rem);
|
|
3071
|
+
}
|
|
3072
|
+
}
|
|
3073
|
+
|
|
3074
|
+
/* ── 320px: ultra-compact screens ── */
|
|
3075
|
+
@media (max-width: 320px) {
|
|
3076
|
+
main {
|
|
3077
|
+
padding: var(--aikit-main-padding-mobile-xxs, 0.25rem 0.25rem);
|
|
3078
|
+
gap: var(--aikit-main-gap-mobile-xxs, 0.25rem);
|
|
3079
|
+
}
|
|
3080
|
+
}
|
|
3081
|
+
|
|
2251
3082
|
@media (max-width: 480px) {
|
|
2252
3083
|
main {
|
|
2253
3084
|
padding: var(--aikit-main-padding-mobile-sm, 0.75rem 0.75rem);
|
|
@@ -2260,27 +3091,27 @@ main > * {
|
|
|
2260
3091
|
max-width: var(--aikit-max-width-wide, 1040px);
|
|
2261
3092
|
}
|
|
2262
3093
|
}
|
|
2263
|
-
`,
|
|
3094
|
+
`,bn,...(Array.isArray(t)?t:typeof t==`string`?[t]:[]).filter(e=>e.trim().length>0)].join(`
|
|
2264
3095
|
`);return[` <style>${e}</style>`,` <style>${n}</style>`].join(`
|
|
2265
|
-
`)}function
|
|
3096
|
+
`)}function mi(e){let t=Object.entries(R).map(([e,t])=>` ${e}: ${t};`).join(`
|
|
2266
3097
|
`);return[e,`html[data-theme="light"] {
|
|
2267
3098
|
color-scheme: light;
|
|
2268
3099
|
}`,`html[data-theme="dark"] {\n color-scheme: dark;\n${t}\n}`,`@media (prefers-color-scheme: dark) {\n html:not([data-theme]) {\n color-scheme: dark;\n${t}\n }\n}`].join(`
|
|
2269
3100
|
|
|
2270
|
-
`)}function
|
|
3101
|
+
`)}function hi(e,t){if(e.length===0)return``;let r=` nonce="${n(t)}"`;return e.map(e=>{let t=e.initScript?` <script${r}>\n${e.initScript}\n <\/script>\n`:``;if(e.inlineSource)return`${t} <script${r}>${e.inlineSource.replace(/<\/script/gi,`<\\/script`)}${e.onload?`\n;${e.onload}`:``}<\/script>`;if(!e.src)return t.trimEnd();let i=[];return i.push(`${t} <script src="${n(e.src)}"${r}><\/script>`),e.fallback?i.push(` <script${r}>`,`document.currentScript.previousElementSibling.addEventListener('error',function(){`,`var f=document.createElement('script');`,`f.src='${n(e.fallback)}';`,e.onload?`f.onload=function(){${e.onload}};`:``,`document.head.appendChild(f);`,`});`,`<\/script>`):e.onload&&i.push(` <script${r}>`,`document.currentScript.previousElementSibling.addEventListener('load',function(){${e.onload}});`,`<\/script>`),i.join(`
|
|
2271
3102
|
`)}).join(`
|
|
2272
|
-
`)}function
|
|
2273
|
-
`)}function
|
|
2274
|
-
`)}function
|
|
2275
|
-
`)}function
|
|
2276
|
-
`)}function
|
|
3103
|
+
`)}function gi(e,t,r=`client-only`){let i=JSON.stringify(e),a=_i(r),o=vi(di());return[` <script${` nonce="${n(t)}"`}>`,` (() => {`,` const preferredTheme = ${i};`,` const storageKey = "aikit-theme-mode";`,` const html = document.documentElement;`,` const toolbox = {`,` container: () => document.querySelector(".aikit-toolbox"),`,` button: () => document.querySelector(".aikit-toolbox-toggle"),`,` menu: () => document.querySelector(".aikit-toolbox-menu"),`,` firstItem: () => document.querySelector(".aikit-toolbox-item"),`,` };`,` const systemTheme = () =>`,` window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches`,` ? "dark"`,` : "light";`,` const readStoredTheme = () => {`,` try {`,` const stored = localStorage.getItem("aikit-theme-mode");`,` return stored === "light" || stored === "dark" ? stored : null;`,` } catch (_error) {`,` return null;`,` }`,` };`,` const resolvedTheme = () => html.getAttribute("data-theme") || readStoredTheme() || systemTheme();`,` const setToolboxOpen = (open, options = {}) => {`,` const button = toolbox.button();`,` const menu = toolbox.menu();`,` if (!button || !menu) return;`,` menu.hidden = !open;`,` button.setAttribute("aria-expanded", String(open));`,` if (open) {`,` if (options.focusItem) toolbox.firstItem()?.focus();`,` } else if (options.restoreFocus) {`,` button.focus();`,` }`,` };`,` const inlineComputedStyles = (source, clone) => {`,` if (!(source instanceof Element) || !(clone instanceof Element)) return;`,` const computed = window.getComputedStyle(source);`,` const cssText = Array.from(computed)`,` .map((name) => {`,` const value = computed.getPropertyValue(name);`,` const priority = computed.getPropertyPriority(name);`,' return `${name}:${value}${priority ? " !important" : ""};`;',` })`,` .join("");`,` clone.setAttribute("style", cssText);`,` for (let index = 0; index < source.children.length; index += 1) {`,` inlineComputedStyles(source.children[index], clone.children[index]);`,` }`,` };`,a,` const updateToggle = (theme) => {`,` const button = document.querySelector(".aikit-theme-toggle");`,` const nextTheme = theme === "dark" ? "light" : "dark";`,` if (button) {`,` button.setAttribute("aria-label", "Switch to " + nextTheme + " theme");`,` button.setAttribute("aria-pressed", String(theme === "dark"));`,` }`,` };`,` const applyTheme = (theme, persist = true) => {`,` html.setAttribute("data-theme", theme);`,` if (persist) {`,` try {`,` localStorage.setItem("aikit-theme-mode", theme);`,` } catch (_error) {`,` // Ignore storage failures.`,` }`,` }`,` updateToggle(theme);`,` };`,` if (preferredTheme === "light" || preferredTheme === "dark") {`,` applyTheme(preferredTheme, false);`,` } else {`,` applyTheme(readStoredTheme() || systemTheme(), false);`,` }`,` window.toggleTheme = () => {`,` applyTheme(resolvedTheme() === "dark" ? "light" : "dark");`,` };`,o,` document.addEventListener("click", (event) => {`,` const themeToggle = event.target?.closest?.(".aikit-theme-toggle");`,` if (themeToggle) { window.toggleTheme(); }`,` const toolboxToggle = event.target?.closest?.(".aikit-toolbox-toggle");`,` if (toolboxToggle) { window.toggleToolbox(); }`,` const chromeAction = event.target?.closest?.("[data-shared-chrome-action]");`,` if (chromeAction) {`,` const actionId = chromeAction.getAttribute("data-shared-chrome-action");`,` if (actionId === "copy-image") { window.screenshotPage(); }`,` if (actionId === "download-image") { window.downloadPng(); }`,` }`,` const container = toolbox.container();`,` if (!container) return;`,` const target = event.target;`,` if (target instanceof Node && container.contains(target)) return;`,` setToolboxOpen(false);`,` });`,` document.addEventListener("keydown", (event) => {`,` if (event.key === "Escape") {`,` setToolboxOpen(false, { restoreFocus: true });`,` return;`,` }`,` if ((event.key === "ArrowDown" || event.key === "Enter" || event.key === " ") && event.target === toolbox.button()) {`,` event.preventDefault();`,` setToolboxOpen(true, { focusItem: true });`,` }`,` });`,` if (preferredTheme === "auto" && window.matchMedia) {`,` const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");`,` mediaQuery.addEventListener("change", () => {`,` if (readStoredTheme()) return;`,` applyTheme(systemTheme(), false);`,` });`,` }`,` })();`,` <\/script>`].join(`
|
|
3104
|
+
`)}function _i(e){let t=e===`browser-server`;return[` const captureDocumentAsPng = async () => {`,` try {`,` return await captureDomViaSvg();`,` } catch (_err) {`,` // SVG foreignObject failed (tainted canvas or ForeignObject error).`,` // Fall back to server-side capture via agent-browser.`,` // We do NOT try html2canvas here -- Edge's Tracking Prevention`,` // blocks CDN script loading, and modern CSS color functions can`,` // cause parse errors. The server method (agent-browser isolated`,` // browser) is more reliable for this fallback path.`,` console.warn("SVG capture failed, falling back to server:", _err);`,` }`,` throw new Error("Client capture failed, use server fallback");`,` };`,` const captureDomViaSvg = async () => {`,` const width = Math.max(`,` document.documentElement.scrollWidth,`,` document.documentElement.clientWidth,`,` document.body ? document.body.scrollWidth : 0,`,` );`,` const height = Math.max(`,` document.documentElement.scrollHeight,`,` document.documentElement.clientHeight,`,` document.body ? document.body.scrollHeight : 0,`,` );`,` const scale = window.devicePixelRatio || 1;`,` const canvas = document.createElement("canvas");`,` canvas.width = Math.max(1, Math.ceil(width * scale));`,` canvas.height = Math.max(1, Math.ceil(height * scale));`,` const context = canvas.getContext("2d");`,` if (!context) throw new Error("Canvas context unavailable");`,` context.scale(scale, scale);`,` const clone = document.documentElement.cloneNode(true);`,` if (!(clone instanceof Element)) throw new Error("Document clone failed");`,` clone.setAttribute("xmlns", "http://www.w3.org/1999/xhtml");`,` clone.querySelectorAll("script").forEach((node) => node.remove());`,` inlineComputedStyles(document.documentElement, clone);`,' const svgMarkup = [`<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}">`, `<foreignObject width="100%" height="100%">${new XMLSerializer().serializeToString(clone)}</foreignObject>`, "</svg>"].join("");',` const svgBlob = new Blob([svgMarkup], { type: "image/svg+xml;charset=utf-8" });`,` const objectUrl = URL.createObjectURL(svgBlob);`,` try {`,` await new Promise((resolve, reject) => {`,` const image = new Image();`,` image.onload = () => {`,` context.drawImage(image, 0, 0, width, height);`,` resolve(undefined);`,` };`,` image.onerror = () => reject(new Error("ForeignObject render failed"));`,` image.src = objectUrl;`,` });`,` } finally {`,` URL.revokeObjectURL(objectUrl);`,` }`,` const blob = await new Promise((resolve) => canvas.toBlob(resolve, "image/png"));`,` if (!blob || blob.type !== "image/png") throw new Error("PNG export failed");`,` return blob;`,` };`,` const ensureHtml2canvas = async () => {`,` if (typeof window.html2canvas === "function") return;`,` if (typeof window.html2canvas_pro === "function") return;`,` var loaded = false;`,` var urls = [`,` "https://cdn.jsdelivr.net/npm/html2canvas-pro@1.5.5/dist/html2canvas.min.js",`,` "https://unpkg.com/html2canvas-pro@1.5.5/dist/html2canvas.min.js",`,` ];`,` for (var i = 0; i < urls.length; i++) {`,` try {`,` await new Promise(function(resolve, reject) {`,` var s = document.createElement("script");`,` s.src = urls[i];`,` s.onload = resolve;`,` s.onerror = reject;`,` document.head.appendChild(s);`,` });`,` loaded = true;`,` break;`,` } catch (_e) {`,` console.warn("html2canvas CDN fallback", i, _e);`,` }`,` }`,` if (!loaded) throw new Error("Failed to load html2canvas from any CDN");`,` };`,` const captureViaHtml2canvas = async () => {`,` var h2c = (typeof window.html2canvas_pro === "function") ? window.html2canvas_pro :`,` (typeof window.html2canvas === "function") ? window.html2canvas : null;`,` if (!h2c) throw new Error("html2canvas not available");`,` var bg = document.documentElement ? getComputedStyle(document.documentElement).backgroundColor : "";`,` var canvas = await h2c(document.documentElement, {`,` useCORS: true,`,` allowTaint: false,`,` scale: window.devicePixelRatio || 1,`,` logging: false,`,` backgroundColor: bg || "#ffffff",`,` });`,` var blob = await new Promise(function(resolve) { canvas.toBlob(resolve, "image/png"); });`,` if (!blob || blob.type !== "image/png") throw new Error("html2canvas PNG export failed");`,` return blob;`,` };`,...t?[` const captureClipboardPng = async () => {`,` console.warn("Server Copy as Image fallback request started", "/__aikit_clipboard.png");`,` const response = await fetch("/__aikit_clipboard.png", { method: "POST", cache: "no-store" });`,` if (!response.ok) {`,` const body = await response.text().catch(() => "");`,` throw new Error(`,` body`,` ? "Server clipboard capture unavailable (" + response.status + " " + response.statusText + "): " + body`,` : "Server clipboard capture unavailable (" + response.status + " " + response.statusText + ")",`,` );`,` }`,` const blob = await response.blob();`,` if (!blob || blob.type !== "image/png") {`,` throw new Error("Server clipboard capture failed (" + (blob?.type || "unknown content-type") + ")");`,` }`,` return blob;`,` };`]:[` const captureClipboardPng = async () => {`,` throw new Error("Server image capture is unavailable in this transport.");`,` };`],` const showCopyStatus = (message, tone = "info") => {`,` let status = document.querySelector(".aikit-copy-status");`,` if (!status) {`,` status = document.createElement("div");`,` status.className = "aikit-copy-status";`,` status.setAttribute("role", "status");`,` status.setAttribute("aria-live", "polite");`,` document.body.appendChild(status);`,` }`,` status.dataset.tone = tone;`,` status.textContent = message;`,` window.clearTimeout(status.__aikitCopyTimer);`,` status.__aikitCopyTimer = window.setTimeout(() => { status.remove(); }, 4000);`,` };`,` const blobToDataUrl = (blob) =>`,` new Promise((resolve, reject) => {`,` const reader = new FileReader();`,` reader.onload = () => resolve(String(reader.result));`,` reader.onerror = () => reject(reader.error || new Error("Image conversion failed"));`,` reader.readAsDataURL(blob);`,` });`,` const copyImageWithLegacyClipboard = async (blob) => {`,` const dataUrl = await blobToDataUrl(blob);`,` let copied = false;`,` let imageSet = false;`,` const onCopy = (event) => {`,` const data = event.clipboardData;`,` if (!data) return;`,` event.preventDefault();`,` try {`,` if (data.items && typeof File !== "undefined") {`,` data.items.add(new File([blob], "aikit-present.png", { type: "image/png" }));`,` imageSet = true;`,` copied = true;`,` }`,` } catch (_error) {`,` // Some hosts reject binary clipboard items in copy events; keep the HTML fallback below.`,` }`,' data.setData("text/html", `<img alt="AI Kit Present" src="${dataUrl}">`);',` if (!imageSet) {`,` data.setData("text/plain", dataUrl);`,` }`,` copied = true;`,` };`,` document.addEventListener("copy", onCopy, { once: true });`,` try {`,` copied = document.execCommand("copy") || copied;`,` } finally {`,` document.removeEventListener("copy", onCopy);`,` }`,` if (!copied) throw new Error("Legacy clipboard copy unavailable");`,` };`,` const writeImageToClipboard = async (blob) => {`,` try {`,` if (!navigator.clipboard?.write || typeof ClipboardItem === "undefined") {`,` throw new Error("Async image clipboard is unavailable in this host.");`,` }`,` await navigator.clipboard.write([new ClipboardItem({ "image/png": blob })]);`,` } catch (clipboardError) {`,` console.warn("Async Clipboard image write failed", clipboardError);`,` await copyImageWithLegacyClipboard(blob);`,` }`,` };`,...t?[` const writeImageToClipboardViaServer = async (blob) => {`,` const response = await fetch("/__aikit_system_clipboard", {`,` method: "POST",`,` body: blob,`,` });`,` if (!response.ok) {`,` const text = await response.text().catch(() => "Unknown server error");`,` throw new Error("Server clipboard write failed: " + text);`,` }`,` };`]:[` const writeImageToClipboardViaServer = async () => {`,` throw new Error("Server clipboard write is unavailable in this transport.");`,` };`],` const downloadImage = async (blob, filename = "aikit-present.png") => {`,` const url = URL.createObjectURL(blob);`,` const link = document.createElement("a");`,` link.href = url;`,` link.download = filename;`,` document.body.appendChild(link);`,` link.click();`,` link.remove();`,` setTimeout(() => URL.revokeObjectURL(url), 10000);`,` };`].join(`
|
|
3105
|
+
`)}function vi(e){return[` window.toggleToolbox = () => {`,` const menu = toolbox.menu();`,` setToolboxOpen(Boolean(menu?.hidden), { focusItem: Boolean(menu?.hidden) });`,` };`,` window.downloadPng = async () => {`,` const scrollX = window.scrollX;`,` const scrollY = window.scrollY;`,` setToolboxOpen(false);`,` window.scrollTo(0, 0);`,` await new Promise((resolve) => window.requestAnimationFrame(() => resolve(undefined)));`,` let blob;`,` try {`,` try {`,` blob = await captureClipboardPng();`,` } catch (serverError) {`,` console.warn("Server PNG capture unavailable, trying client-side SVG fallback:", serverError);`,` blob = await captureDocumentAsPng();`,` }`,` if (!blob) throw new Error("Screenshot capture returned no image");`,` const timestamp = new Date().toISOString().replace(/[.:]/g, "-");`," await downloadImage(blob, `aikit-present-${timestamp}.png`);",` showCopyStatus("Downloaded image.");`,` } catch (_error) {`,` console.warn("Download Image failed", _error);`,` showCopyStatus("Screenshot capture failed. Try using your browser's screenshot tool.", "error");`,` } finally {`,` window.scrollTo(scrollX, scrollY);`,` }`,` };`,` window.screenshotPage = async () => {`,` const scrollX = window.scrollX;`,` const scrollY = window.scrollY;`,` setToolboxOpen(false);`,` window.scrollTo(0, 0);`,` await new Promise((resolve) => window.requestAnimationFrame(() => resolve(undefined)));`,` let blob;`,` try {`,` blob = await captureClipboardPng();`,` } catch (captureError) {`,` console.warn("Server CDP capture failed, trying client-side SVG:", captureError);`,` try {`,` blob = await captureDocumentAsPng();`,` } catch (_svgError) {`,` console.warn("SVG capture also failed");`,` }`,` }`,` try {`,` if (!blob) throw new Error("No image captured");`,` await writeImageToClipboardViaServer(blob);`,` showCopyStatus(${JSON.stringify(`Copied image to clipboard.`)});`,` } catch (clipboardError) {`,` console.warn("Server clipboard write failed, trying client-side:", clipboardError);`,` try {`,` if (blob) {`,` await writeImageToClipboard(blob);`,` showCopyStatus(${JSON.stringify(`Copied image to clipboard.`)});`,` }`,` } catch (_clientError) {`,` console.warn("Client-side clipboard also failed", _clientError);`,` if (blob) {`,` try {`,` const timestamp = new Date().toISOString().replace(/[.:]/g, "-");`," await downloadImage(blob, `aikit-present-${timestamp}.png`);",` showCopyStatus(${JSON.stringify(`Clipboard blocked — image downloaded instead.`)});`,` } catch (_downloadError) {`,` showCopyStatus(${JSON.stringify(e.blockedClipboardMessage)}, "error");`,` }`,` } else {`,` showCopyStatus(${JSON.stringify(`Screenshot capture failed.`)}, "error");`,` }`,` }`,` } finally {`,` window.scrollTo(scrollX, scrollY);`,` }`,` };`].join(`
|
|
3106
|
+
`)}function yi(e,t,r){if(t!==`local-interactive`)return``;let i=new Set,a=[],o=` nonce="${n(r)}"`;for(let t of e)i.has(t.entry)||(i.add(t.entry),a.push(` <script type="module" src="${n(t.entry)}"${o}><\/script>`));return a.length>0&&a.push(` <script type="module"${o}>`,` import { hydrateAsync } from "/@aikit/blocks-interactive/dist/index.mjs";`,` const boot = () => {`,` void hydrateAsync();`,` };`,` if (document.readyState === "loading") {`,` document.addEventListener("DOMContentLoaded", boot, { once: true });`,` } else {`,` boot();`,` }`,` <\/script>`),a.join(`
|
|
3107
|
+
`)}function bi(e){let t=n(e.lang??`en`),r=n(e.dir??`ltr`),i=e.colorScheme??`auto`,a=e.imageExportMode??`client-only`,o=e.generatedAt??new Date().toISOString(),s=[`lang="${t}"`,`dir="${r}"`];i!==`auto`&&s.push(`data-theme="${i}"`);let c=``;e.maxWidth?(c+=` --aikit-max-width: ${e.maxWidth};\n`,c+=` --aikit-max-width-wide: ${e.maxWidth};\n`):e.layoutVariant===`wide`?(c+=` --aikit-max-width: 1400px;
|
|
2277
3108
|
`,c+=` --aikit-max-width-wide: 1400px;
|
|
2278
3109
|
`):e.layoutVariant===`full`&&(c+=` --aikit-max-width: none;
|
|
2279
3110
|
`,c+=` --aikit-max-width-wide: none;
|
|
2280
3111
|
`,c+=` --aikit-main-padding: 0;
|
|
2281
|
-
`),e.mainPadding&&(c+=` --aikit-main-padding: ${e.mainPadding};\n`),e.mainGap&&(c+=` --aikit-main-gap: ${e.mainGap};\n`);let l=``;e.showGlassCss&&(l=
|
|
3112
|
+
`),e.mainPadding&&(c+=` --aikit-main-padding: ${e.mainPadding};\n`),e.mainGap&&(c+=` --aikit-main-gap: ${e.mainGap};\n`);let l=``;e.showGlassCss&&(l=on);let u=mi(e.tokenCss??fn(`light`)),d=hi(e.headScripts??[],e.nonce),f=e.islands.length>0&&e.payload?` <script type="application/json" id="surface-payload">${fi(e.payload)}<\/script>`:``,p=yi(e.islands,e.exportPolicy,e.nonce),m=e.showGradientGlow?`
|
|
2282
3113
|
<div class="aikit-glow-primary"></div>
|
|
2283
3114
|
<div class="aikit-glow-secondary"></div>
|
|
2284
|
-
`:``,
|
|
2285
|
-
`),
|
|
2286
|
-
`)}export{
|
|
3115
|
+
`:``,h=gi(i,e.nonce,a),g=[f,p].filter(Boolean).join(`
|
|
3116
|
+
`),_=Array.isArray(e.css)?e.css:[e.css];return[`<!DOCTYPE html>`,`<html ${s.join(` `)}>`,`<head>`,` <meta charset="utf-8">`,` <meta name="viewport" content="width=device-width, initial-scale=1">`,` <title>${n(e.title)}</title>`,c?` <style>main {${c}}</style>`:``,pi(u,[..._,l].filter(Boolean)),d,`</head>`,`<body>`,vn({title:e.title,subtitle:e.subtitle,transport:e.transport,actionsHtml:e.headerActionsHtml,showToolbox:e.showToolbox??!0,sharedChromeActions:a===`disabled`?[]:void 0}),h,m,` <main>${e.html}</main>`,yn({generatedAt:o,contentHtml:e.footerContentHtml,showInstallGuide:e.showInstallGuide,installUrl:e.installUrl}),g,`</body>`,`</html>`].filter(Boolean).join(`
|
|
3117
|
+
`)}export{V as HEADER_CLASS_NAMES,bn as HEADER_CSS,jn as TemplateRegistry,sn as allCss,an as baseCss,f as blockItems,di as buildCopyImageExportFallback,yn as buildFooter,vn as buildHeader,bi as buildShell,gi as buildThemeScript,Pn as checklistTemplate,B as collectCss,rn as darkTokenNames,R as darkTokens,oi as dashboardTemplateDefinition,Bn as dataTableTemplate,Q as defaultRegistry,qn as diffViewTemplate,$n as documentTemplate,K as errorTemplate,n as escapeHtml,li as flameGraphTemplateDefinition,ir as formTemplate,a as formatValue,dn as generateDarkTokenCss,fn as generateTokenCss,on as glassCss,s as inlineMarkdown,t as isError,e as isResult,si as kanbanTemplateDefinition,ci as listSortTemplateDefinition,dr as pickerTemplate,On as renderBlock,kn as renderBlocks,Kr as renderSurface,br as reportTemplate,Tr as reviewTemplate,i as sanitizeId,r as sanitizeUrl,Ar as statusBoardTemplate,Fr as timelineTemplate,nn as tokenNames,L as tokens,u as toneName,d as toneVar,Vr as treeTemplate,o as tryParseJson};
|