@vpxa/aikit 0.1.352 → 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.
Files changed (26) hide show
  1. package/package.json +1 -1
  2. package/packages/blocks-core/dist/index.mjs +928 -130
  3. package/packages/present/dist/index.html +911 -127
  4. package/packages/server/dist/bin.js +1 -1
  5. package/packages/server/dist/index.js +1 -1
  6. package/packages/server/dist/prelude-DetbWo8R.js +1 -0
  7. package/packages/server/dist/prelude-hfAEi93R.js +2 -0
  8. package/packages/server/dist/sampling-CWjnUevo.js +2 -0
  9. package/packages/server/dist/sampling-CnE3owSt.js +1 -0
  10. package/packages/server/dist/{server-Crfl8sRN.js → server-D5eu57oU.js} +145 -148
  11. package/packages/server/dist/{server-Znp0a9J2.js → server-D7gZ4K_H.js} +145 -148
  12. package/packages/server/dist/{server-http-BSGdxVRV.js → server-http-AarbD3gm.js} +1 -1
  13. package/packages/server/dist/{server-http-BGF1k0j9.js → server-http-wnYmWFkC.js} +1 -1
  14. package/packages/server/dist/{server-stdio-CTgwgIGC.js → server-stdio-BWoMqXU8.js} +1 -1
  15. package/packages/server/dist/{server-stdio-B2N-eM5T.js → server-stdio-CBGO6XiO.js} +1 -1
  16. package/packages/server/viewers/canvas.html +912 -128
  17. package/packages/server/viewers/report-template.html +885 -101
  18. package/packages/server/viewers/task-plan-static.html +1 -1
  19. package/packages/server/viewers/tour-viewer.html +886 -102
  20. package/scaffold/dist/definitions/skills/c4-architecture.mjs +1 -1
  21. package/scaffold/dist/definitions/skills/docs.mjs +1 -1
  22. package/scaffold/dist/generated/block-docs.mjs +18 -64
  23. package/packages/server/dist/prelude-CXds3AXY.js +0 -2
  24. package/packages/server/dist/prelude-Cms2H0-F.js +0 -1
  25. package/packages/server/dist/sampling-BoH5wpOJ.js +0 -1
  26. package/packages/server/dist/sampling-SoUYZhFs.js +0 -2
@@ -1,32 +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,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}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=>{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 g=[`#3b82f6`,`#10b981`,`#f59e0b`,`#ef4444`,`#8b5cf6`,`#ec4899`,`#06b6d4`,`#84cc16`],_=new Set([`line`,`area`,`bar`,`horizontal-bar`,`pie`,`donut`,`sparkline`,`heatmap`]);function ee(e,t){let n=te(e),r=le(n.headers,n.data);if(n.data.length===0||!_.has(n.chartType))return v(n.note,r);let i=ne(n);if(!i)return v(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 te(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 ne(e){switch(e.chartType){case`line`:case`area`:return re(e,e.chartType===`area`);case`bar`:return ie(e);case`horizontal-bar`:return ae(e);case`pie`:return oe(e,!1);case`donut`:return oe(e,!0);case`sparkline`:return se(e);case`heatmap`:return ce(e);default:return``}}function re(e,t){let r=y(e.data,e.xKey,e.yKeys),i=r.flatMap(e=>e.values).filter(Number.isFinite);if(i.length===0)return``;let a=x(i),o=b(500,300,{left:60,right:20,top:20,bottom:40}),s=r.map((e,t)=>ve(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=S(e.values[n],a,o.bottom,o.top);return`${D(r)},${D(i)}`}),l=r.map((e,t)=>{let r=s[t],c=S(e.values[n],a,o.bottom,o.top);return`<circle cx="${D(r)}" cy="${D(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="${[`${D(s[0])},${D(o.bottom)}`,...c,`${D(s[s.length-1])},${D(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`)}">${me(o,a)}${ge(o)}${_e(r,s,o.bottom+18)}${c}</svg>`}function ie(e){let t=y(e.data,e.xKey,e.yKeys),n=t.flatMap(e=>e.values).filter(Number.isFinite);if(n.length===0)return``;let r=x(n,{includeZero:!0}),i=b(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=S(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=S(e,r,i.bottom,i.top),u=Math.min(l,c),d=Math.max(1,Math.abs(c-l));return`<rect x="${D(s)}" y="${D(u)}" width="${D(o)}" height="${D(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">${me(i,r)}${ge(i)}${_e(t,u,i.bottom+18)}${l}</svg>`}function ae(e){let t=y(e.data,e.xKey,e.yKeys),r=t.flatMap(e=>e.values).filter(Number.isFinite);if(r.length===0)return``;let i=x(r,{includeZero:!0}),a=b(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=S(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="${D(a.left-8)}" y="${D(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=S(e,i,a.left,a.right),u=Math.min(l,c),d=Math.max(1,Math.abs(c-l));return`<rect x="${D(u)}" y="${D(o)}" width="${D(d)}" height="${D(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">${he(a,i)}<line class="bk-chart-axis" x1="${D(l)}" y1="${D(a.top)}" x2="${D(l)}" y2="${D(a.bottom)}" />${u}</svg>`}function oe(e,t){let r=pe(e.data,e.xKey,e.yKeys),i=e.data.map(t=>({label:w(t[e.xKey]),value:T(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?be(150,140,88,o,s,d):ye(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=C(150,140,108,s+u/2);l.push(`<text class="bk-chart-slice-label" x="${D(m.x)}" y="${D(m.y)}" text-anchor="${m.x>=150?`start`:`end`}">${n(e.label)} ${n(E(f))}%</text>`),s=d});let u=t?`<circle cx="150" cy="140" r="${D(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 se(e){let t=pe(e.data,e.xKey,e.yKeys),n=e.data.map(e=>T(e[t]));if(n.every(e=>e===0))return``;let r=x(n),i=n.map((e,t)=>{let i=ve(t,n.length,0,100),a=S(e,r,28,2);return`${D(i)},${D(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 ce(e){let t=e.data.map(t=>({label:w(t[e.xKey]),values:e.yKeys.map(e=>T(t[e]))})),r=t.flatMap(e=>e.values).filter(Number.isFinite);if(r.length===0)return``;let i=x(r),a=b(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="${D(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="${D(a.left-8)}" y="${D(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="${D(r)}" y="${D(c)}" width="${D(o-4)}" height="${D(s-4)}" rx="4" stroke="var(--dt-border-muted)" style="fill: ${xe(e,i)}" />`}).join(``)).join(``)}</svg>`}function le(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 v(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=>Se(e[n])));if(r)return r;for(let n of e){let e=Object.keys(n).find(e=>e!==t&&Se(n[e]));if(e)return e}return n[0]??`value`}function y(e,t,n){return e.map(e=>({label:w(e[t]),values:n.map(t=>T(e[t]))}))}function me(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="${D(e.left)}" y1="${D(s)}" x2="${D(e.right)}" y2="${D(s)}" /><text class="bk-chart-label" x="${D(e.left-8)}" y="${D(s+4)}" text-anchor="end">${n(E(o))}</text>`}).join(``)}function he(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="${D(s)}" y1="${D(e.top)}" x2="${D(s)}" y2="${D(e.bottom)}" /><text class="bk-chart-label" x="${D(s)}" y="${D(e.bottom+18)}" text-anchor="middle">${n(E(o))}</text>`}).join(``)}function ge(e){return`<line class="bk-chart-axis" x1="${D(e.left)}" y1="${D(e.top)}" x2="${D(e.left)}" y2="${D(e.bottom)}" /><line class="bk-chart-axis" x1="${D(e.left)}" y1="${D(e.bottom)}" x2="${D(e.right)}" y2="${D(e.bottom)}" />`}function _e(e,t,r){return e.map((e,i)=>`<text class="bk-chart-label" x="${D(t[i])}" y="${D(r)}" text-anchor="middle">${n(e.label)}</text>`).join(``)}function b(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 x(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 ve(e,t,n,r){return t<=1?(n+r)/2:n+e/(t-1)*(r-n)}function S(e,t,n,r){return n+(e-t.min)/(t.max-t.min)*(r-n)}function ye(e,t,n,r,i){if(Math.abs(i-r)>=359.999)return``;let a=C(e,t,n,r),o=C(e,t,n,i),s=+(i-r>180);return`M ${D(e)} ${D(t)} L ${D(a.x)} ${D(a.y)} A ${D(n)} ${D(n)} 0 ${s} 1 ${D(o.x)} ${D(o.y)} Z`}function be(e,t,n,r,i,a){if(Math.abs(a-i)>=359.999)return``;let o=C(e,t,n,i),s=C(e,t,n,a),c=C(e,t,r,a),l=C(e,t,r,i),u=+(a-i>180);return[`M ${D(o.x)} ${D(o.y)}`,`A ${D(n)} ${D(n)} 0 ${u} 1 ${D(s.x)} ${D(s.y)}`,`L ${D(c.x)} ${D(c.y)}`,`A ${D(r)} ${D(r)} 0 ${u} 0 ${D(l.x)} ${D(l.y)}`,`Z`].join(` `)}function C(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 xe(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) ${D(100-n)}%, var(--dt-accent-fg) ${D(n)}%)`}function w(e){return e==null?``:String(a(e))}function T(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 Se(e){return typeof e==`number`?Number.isFinite(e):typeof e==`string`&&e.trim()!==``&&Number.isFinite(Number(e))}function E(e){return String(a(Number(e.toFixed(2))))}function D(e){return Number(e.toFixed(2)).toString()}function Ce(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 we(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 Te(e){let t=o(e);return Array.isArray(t)?t:t&&typeof t==`object`&&Array.isArray(t.columns)?t.columns:[]}function Ee(e,t){return`<div class="bk-comparison">${Te(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 De(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 Oe(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 ke(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 Ae(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 je(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 Me(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 Ne(e,t){let r=De(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=[Oe(r.responsibilities??[]),ke(r.interfaces??[]),Ae(r.dependencies??[]),je(r.metrics),Me(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 Pe(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 Fe(e){return Array.isArray(e.constraints)&&e.constraints.includes(`primary-key`)}function Ie(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 Le(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 Re(e,t){let r=Pe(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=>Ie(e)).join(``):`<span class="bk-data-table-schema-badge">none</span>`;return`<tr class="bk-data-table-schema-row${Fe(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>${Le(r.indexes??[])}</section>`}const ze={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:`))`}},Be={open:`[`,close:`]`};function Ve(e){return ze[e]??Be}function O(e,t){return e.replace(/[^a-zA-Z0-9_]/g,`_`).replace(/^_+|_+$/g,``).replace(/_+/g,`_`)||(t===void 0?`node`:`node_${t}`)}function k(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 He(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=Ue(r.components??r.nodes??r.participants??r.states??[]),c=Ue(r.connections??r.edges??r.messages??r.flows??r.transitions??[]),l=[`graph TD`],u=new Set,d=new Map,f=0;for(let e of s){let t=O(String(e.id??e.label??e.name??`node`),f);if(f++,u.has(t))continue;u.add(t),d.set(t,e);let n=String(e.label??e.name??t),r=String(e.type??String(e.kind??``)),i=e.technology?`<br><small>${k(String(e.technology))}</small>`:``,a=Ve(r);l.push(` ${t}${a.open}"${k(n)}${i}"${a.close}`)}for(let e of c){let t=String(e.from??e.source??``),n=String(e.to??e.target??``),r=O(t),i=O(n);if(!u.has(r)||!u.has(i))continue;let a=e.label?` -- "${k(String(e.label))}" --> `:` --> `;l.push(` ${r}${a}${i}`)}let p=u.size>0,m=l.join(`
2
- `),h=[`<dt>Type</dt><dd>${n(i)}</dd>`,`<dt>Components</dt><dd>${s.length}</dd>`,`<dt>Relationships</dt><dd>${c.length}</dd>`];r.schema_version!==void 0&&h.push(`<dt>Schema</dt><dd>v${String(r.schema_version)}</dd>`);let g=``;s.length>0&&(g=`<table><thead><tr><th>Component</th><th>Type</th></tr></thead><tbody>${s.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>${s.length>30?`<p class="bk-diagram-truncated">… and ${s.length-30} more</p>`:``}`);let _=``;return c.length>0&&(_=`<h4>Relationships</h4><ul>${c.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>${c.length>20?`<p class="bk-diagram-truncated">… and ${c.length-20} more relationships</p>`:``}`),p?`<div class="${`bk-diagram${p?` bk-diagram-has-viz`:``}`}">
3
- <pre class="bk-diagram-viz mermaid">${n(m)}</pre>
1
+ function e(e){return e.kind===`result`}function t(e){return e.kind===`error`}function n(e){return String(e??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}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>
4
107
  <details class="bk-diagram-fallback">
5
- <summary>${n(o)} <small>(${i}, ${s.length} components)</small></summary>
108
+ <summary>${n(s)} <small>(${a}, ${c.length} components)</small></summary>
6
109
  <div class="bk-diagram-content">
7
- <dl class="bk-diagram-meta">${h.join(``)}</dl>
8
- ${g}
110
+ <dl class="bk-diagram-meta">${g.join(``)}</dl>
9
111
  ${_}
112
+ ${v}
10
113
  </div>
11
114
  </details>
12
115
  </div>`:`<div class="bk-diagram">
13
116
  <details open>
14
- <summary>${n(o)} <small>(${n(i)}, ${s.length} components)</small></summary>
117
+ <summary>${n(s)} <small>(${n(a)}, ${c.length} components)</small></summary>
15
118
  <div class="bk-diagram-content">
16
- <dl class="bk-diagram-meta">${h.join(``)}</dl>
17
- ${g}
119
+ <dl class="bk-diagram-meta">${g.join(``)}</dl>
18
120
  ${_}
121
+ ${v}
19
122
  </div>
20
123
  </details>
21
- </div>`}function Ue(e){return Array.isArray(e)?e:[]}function We(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 Ge(t.before,t.after)}return``}function Ge(e,t){let n=e.split(`
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(`
22
125
  `),r=t.split(`
23
- `),i=[`@@ -1,${n.length} +1,${r.length} @@`];for(let e of n)i.push(`-${e}`);for(let e of r)i.push(`+${e}`);return i.join(`
24
- `)}function Ke(e,t){let r=We(e.value);if(!r)return`<div class="bk-diff"></div>`;let i=r.split(`
25
- `),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(/\+(\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(`+++`))s.push(`<tr class="bk-diff-header"><td colspan="3">${n(e)}</td></tr>`);else if(e.startsWith(`+`))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++,s.push(`<tr class="bk-diff-del"><td class="bk-diff-ln">${a}</td><td class="bk-diff-ln"></td><td class="bk-diff-line">${n(e)}</td></tr>`);else{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>`)}return`<div class="bk-diff"><table class="bk-diff-table">${s.join(``)}</table></div>`}function qe(e){let t=o(e);return Array.isArray(t)?t:t&&typeof t==`object`&&Array.isArray(t.files)?t.files:[]}function Je(e,t){return`<div class="bk-docs-browser">${qe(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 Ye(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 Xe(e){switch(e){case`draft`:return`warning`;case`deprecated`:return`danger`;default:return`accent`}}function Ze(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="${Xe(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 Qe(e,t){let r=Ye(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=>Ze(e)).join(``)}</div>`:`<p class="bk-docs-hub-empty">No documentation pages available.</p>`}</section>`}function $e(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 et(e,t){let r=$e(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 A(e){return typeof e==`object`&&!!e}function j(e){return A(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(j).filter(e=>e!==null):[]}:null}function tt(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 nt(e){let t=[`#e24d28`,`#e8602a`,`#edad2a`,`#f5c842`,`#fce94f`,`#c4a000`,`#e07028`,`#d45500`];return t[e%t.length]}function rt(e,t){let r=o(e.value);if(!A(r))return`<div class="bk-flame"></div>`;let i=A(r.profile)?j(r.profile):j(r);if(!i)return`<div class="bk-flame"></div>`;let a=tt(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:${nt(t)}" title="${o}" data-has-children="${a}">
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}">
26
129
  <span class="bk-flame-bar-label${i}">${n(e.name)} (${e.total})</span>
27
130
  </div>`}).join(``)}</div>`).join(`
28
- `)}</div>`}function it(e){return String(e??``).replace(/"/g,`\\"`)}function at(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=it(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?`|${it(e.label)}|`:``;a.push(` ${t} -->${r} ${n}`)}return`<pre class="bk-graph mermaid">${n(a.join(`
29
- `))}</pre>`}const ot=`
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=`
30
133
  .bk-heading {
31
134
  margin: 0;
32
135
  color: var(--dt-text-primary);
@@ -41,16 +144,16 @@ function e(e){return e.kind===`result`}function t(e){return e.kind===`error`}fun
41
144
  .bk-heading--4 { font-size: var(--dt-font-size-xl); }
42
145
  .bk-heading--5,
43
146
  .bk-heading--6 { font-size: var(--dt-font-size-base); letter-spacing: normal; }
44
- `;function st(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 ct(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 lt(e,t){return`<dl class="bk-kv">${ct(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 ut(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 dt(e){switch(e){case`completed`:return`success`;case`error`:return`danger`;case`pending`:return`slate`;default:return`accent`}}function ft(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 pt(e){return e.type===`decision`?{width:112,height:112}:{width:164,height:84}}function mt(e){let t=32;return e.map(e=>{let{width:n,height:r}=pt(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 ht(e){let t=ft(e.step.label,e.step.type===`decision`?12:16),r=e.step.description?ft(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--${dt(e.step.status)}" id="${i(e.step.id)}">${s}${c}${o}</g>`}function gt(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 _t(e,t){return Array.isArray(t)&&t.length>0?t:e.slice(1).map((t,n)=>({from:e[n].id,to:t.id}))}function vt(e,t){let r=ut(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=mt(i),o=new Map(a.map(e=>[e.step.id,e])),s=_t(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=>gt(e,o)).join(``)}</g><g class="bk-lifecycle-flow-nodes">${a.map(e=>ht(e)).join(``)}</g></svg></div></figure>`}function yt(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 bt=`
45
- ${ot}
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}
46
149
  .bk-markdown {
47
150
  color: var(--dt-text-primary);
48
151
  font-size: var(--dt-font-size-base);
49
152
  line-height: 1.7;
50
153
  }
51
- `,xt=/^(#{1,6})\s+(.+)$/,St=/^(?:(?:-\s*){3,}|(?:\*\s*){3,}|(?:_\s*){3,})$/;function Ct(e){return e.length?`<p>${e.map(e=>s(e)).join(`<br>`)}</p>`:``}function wt(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=Ct(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)}"`:``;i.push(`<pre class="bk-code"><code${e}>${n(s.join(`
52
- `))}</code></pre>`),o=!1,s=[],c=``}continue}if(o){s.push(e);continue}if(!t){l();continue}let r=t.match(xt);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(St.test(t)){l(),i.push(`<hr>`);continue}a.push(e)}if(l(),o&&s.length>0){let e=c?` class="${n(c)}"`:``;i.push(`<pre class="bk-code"><code${e}>${n(s.join(`
53
- `))}</code></pre>`)}return`<div class="bk-markdown">${i.join(``)}</div>`}function Tt(e,t){return`<pre class="bk-mermaid mermaid">${n(String(e.value??``))}</pre>`}function Et(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 Dt(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>${Et(e.trend)}</article>`).join(``)}</div>`}function Ot(e,t){return`<p class="bk-paragraph">${n(String(e.value??e.text??``))}</p>`}function kt(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 At(e,t){return`<div class="bk-progress">${kt(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 jt(e){if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e??``)}}function Mt(e,t){return`<pre class="bk-prompt">${n(jt(e.value))}</pre>`}function Nt(e,t){return`<hr class="bk-separator">`}function Pt(e){let t=o(e);return Array.isArray(t)?t:t&&typeof t==`object`&&Array.isArray(t.items)?t.items:[]}function Ft(e,t){return`<div class="bk-status-board">${Pt(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 It(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Lt(e){let t=(e??[]).map(e=>{if(It(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 Rt(e){if(Array.isArray(e.columns)){let{headers:t,keys:n}=Lt(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}=Lt(e.columns);return{headers:t,keys:n,rows:[]}}return{headers:[],keys:[],rows:[]}}function zt(e,t){let{headers:r,keys:i,rows:o}=Rt(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 Bt(e){let t=o(e);return Array.isArray(t)?t:t&&typeof t==`object`&&Array.isArray(t.items)?t.items:[]}function Vt(e,t){return`<div class="bk-tags">${Bt(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 Ht(e,t){return`<div class="bk-text">${s(String(e.value??``)).replace(/\n/g,`<br>`)}</div>`}function Ut(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 Wt(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)`},Gt=`--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(`.`),Kt=`--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:`
54
157
  .bk-actions {
55
158
  display: flex;
56
159
  flex-wrap: wrap;
@@ -138,6 +241,8 @@ ${ot}
138
241
  background: var(--dt-bg-secondary);
139
242
  box-shadow: var(--dt-shadow-sm);
140
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);
141
246
  }
142
247
 
143
248
  .bk-card:hover {
@@ -177,6 +282,25 @@ ${ot}
177
282
  letter-spacing: 0.02em;
178
283
  white-space: nowrap;
179
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
+ }
180
304
  `,chart:`
181
305
  .bk-chart {
182
306
  display: grid;
@@ -200,6 +324,7 @@ ${ot}
200
324
  width: 100%;
201
325
  height: auto;
202
326
  overflow: visible;
327
+ animation: aikit-enter-fade 500ms ease-out both;
203
328
  }
204
329
 
205
330
  .bk-chart-svg .bk-chart-grid {
@@ -287,7 +412,64 @@ ${ot}
287
412
  border-bottom: 1px solid var(--dt-border-muted);
288
413
  text-align: left;
289
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
+ }
290
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
+
291
473
  .bk-checklist {
292
474
  display: grid;
293
475
  gap: var(--dt-space-2);
@@ -305,6 +487,7 @@ ${ot}
305
487
  border-radius: var(--dt-radius-lg);
306
488
  background: var(--dt-bg-secondary);
307
489
  transition: border-color var(--dt-transition-fast), background var(--dt-transition-fast);
490
+ animation: slide-in 400ms ease-out both;
308
491
  }
309
492
 
310
493
  .bk-checklist-item:hover {
@@ -312,6 +495,7 @@ ${ot}
312
495
  background: var(--dt-bg-tertiary);
313
496
  }
314
497
 
498
+ /* ===== Icon Styles ===== */
315
499
  .bk-checklist-icon {
316
500
  display: inline-flex;
317
501
  align-items: center;
@@ -330,14 +514,67 @@ ${ot}
330
514
  .bk-checklist-item[data-checked='true'] .bk-checklist-icon {
331
515
  background: var(--dt-success-subtle);
332
516
  color: var(--dt-success-fg);
517
+ animation: aikit-check-bounce 400ms cubic-bezier(0.34,1.56,0.64,1) 500ms both;
333
518
  }
334
519
 
520
+ /* ===== Label Styles ===== */
335
521
  .bk-checklist-label {
336
522
  color: var(--dt-text-primary);
337
523
  font-size: var(--dt-font-size-sm);
338
524
  line-height: 1.5;
339
525
  padding-top: 1px;
340
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
+ }
341
578
  `,code:`
342
579
  .bk-code {
343
580
  margin: 0;
@@ -356,101 +593,284 @@ ${ot}
356
593
  font-size: var(--dt-font-size-sm);
357
594
  line-height: 1.7;
358
595
  }
359
- `,diagram:`
360
- .bk-diagram {
361
- border: 1px solid var(--dt-border-default, #e0e0e0);
362
- border-radius: var(--dt-radius-lg, 8px);
363
- overflow: hidden;
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;
364
617
  }
365
- .bk-diagram.bk-diagram-has-viz summary {
366
- padding: var(--dt-space-2, 8px) var(--dt-space-3, 12px);
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);
666
+ }
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);
367
730
  cursor: pointer;
368
- font-weight: 600;
369
- font-size: var(--dt-font-size-sm, 13px);
370
- background: var(--dt-bg-secondary, #f5f5f5);
371
- border-bottom: 1px solid var(--dt-border-default, #e0e0e0);
372
- user-select: none;
373
- color: var(--dt-text-secondary, #666);
731
+ transition: color var(--dt-transition-fast), border-color var(--dt-transition-fast);
374
732
  }
375
- .bk-diagram.bk-diagram-has-viz[open] summary {
376
- border-bottom: 1px solid var(--dt-border-default, #e0e0e0);
377
- margin-bottom: 0;
733
+
734
+ .bk-diff-btn:hover {
735
+ color: var(--dt-text-primary);
736
+ border-color: var(--dt-accent-muted);
378
737
  }
379
- .bk-diagram .bk-diagram-content {
380
- padding: var(--dt-space-3, 12px);
738
+
739
+ .bk-diff-btn:active {
740
+ transform: scale(0.96);
381
741
  }
382
- .bk-diagram table {
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 {
383
774
  width: 100%;
384
775
  border-collapse: collapse;
385
- font-size: var(--dt-font-size-sm, 13px);
386
776
  }
387
- .bk-diagram th, .bk-diagram td {
388
- padding: var(--dt-space-1, 4px) var(--dt-space-2, 8px);
389
- text-align: left;
390
- border-bottom: 1px solid var(--dt-border-subtle, #eee);
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;
391
790
  }
392
- .bk-diagram th {
393
- font-weight: 600;
394
- color: var(--dt-text-secondary, #666);
395
- font-size: var(--dt-font-size-xs, 11px);
396
- text-transform: uppercase;
397
- letter-spacing: 0.5px;
791
+
792
+ /* ── Content Cells ── */
793
+ .bk-diff-line {
794
+ padding: 0 12px;
795
+ white-space: pre-wrap;
796
+ word-break: break-all;
398
797
  }
399
- .bk-diagram .bk-diagram-meta {
400
- display: grid;
401
- grid-template-columns: auto 1fr;
402
- gap: var(--dt-space-1, 4px) var(--dt-space-3, 12px);
403
- font-size: var(--dt-font-size-sm, 13px);
404
- margin-bottom: var(--dt-space-3, 12px);
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;
405
805
  }
406
- .bk-diagram .bk-diagram-meta dt {
407
- font-weight: 600;
408
- color: var(--dt-text-secondary, #666);
806
+
807
+ /* ── Added Lines (+) ── */
808
+ .bk-diff-add td {
809
+ background: var(--dt-success-subtle);
409
810
  }
410
- .bk-diagram .bk-diagram-meta dd {
411
- margin: 0;
811
+
812
+ /* ── Removed Lines (-) ── */
813
+ .bk-diff-del td {
814
+ background: var(--dt-danger-subtle);
412
815
  }
413
- .bk-diagram ul {
414
- margin: var(--dt-space-2, 8px) 0;
415
- padding-left: var(--dt-space-4, 16px);
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);
416
823
  }
417
- .bk-diagram li {
418
- font-size: var(--dt-font-size-sm, 13px);
419
- line-height: 1.6;
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;
420
831
  }
421
832
 
422
- /* When rendered by mini-mermaid — hide overflow border, show SVG cleanly */
423
- .bk-diagram[data-mini-mermaid-rendered] {
424
- border: none;
425
- border-radius: 0;
426
- overflow: visible;
833
+ .bk-diff-word-add {
834
+ background: var(--dt-success-subtle);
835
+ border-radius: 2px;
836
+ padding: 0 1px;
427
837
  }
428
- .bk-diagram[data-mini-mermaid-rendered] .bk-diagram-viz {
429
- display: block;
838
+
839
+ /* ── Expand/Collapse ── */
840
+ .bk-diff-body {
841
+ transition: max-height 300ms ease;
842
+ overflow: hidden;
430
843
  }
431
- .bk-diagram[data-mini-mermaid-rendered] .bk-diagram-fallback {
432
- display: none;
844
+
845
+ .bk-diff-body[data-collapsed="true"] {
846
+ max-height: 480px;
847
+ position: relative;
433
848
  }
434
- .bk-diagram-viz {
435
- display: block;
436
- overflow-x: auto;
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;
437
863
  }
438
- `,diff:`
439
- .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); }
440
- .bk-diff-table { width: 100%; border-collapse: collapse; }
441
- .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); }
442
- .bk-diff-line { padding: 0 12px; white-space: pre-wrap; word-break: break-all; }
443
- .bk-diff-hunk td { background: var(--dt-blue-subtle); color: var(--dt-blue-fg); padding: 4px 12px; font-style: italic; }
444
- .bk-diff-add td { background: var(--dt-green-subtle); }
445
- .bk-diff-del td { background: var(--dt-red-subtle); }
446
- .bk-diff-header td { font-weight: bold; padding: 4px 12px; background: var(--dt-bg-secondary); }
447
864
  `,comparison:`
865
+ /* ── Comparison grid (CSS Grid for equal-height columns) ──────────────── */
448
866
  .bk-comparison {
449
867
  display: grid;
450
868
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
451
869
  gap: var(--dt-space-4);
870
+ align-items: stretch;
452
871
  }
453
872
 
873
+ /* ── Column card ────────────────────────────────────────────────────────── */
454
874
  .bk-comparison-column {
455
875
  display: grid;
456
876
  gap: var(--dt-space-3);
@@ -459,8 +879,36 @@ ${ot}
459
879
  border-radius: var(--dt-radius-lg);
460
880
  background: var(--dt-bg-secondary);
461
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);
462
890
  }
463
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;
909
+ }
910
+
911
+ /* ── Column title ───────────────────────────────────────────────────────── */
464
912
  .bk-comparison-title {
465
913
  color: var(--dt-text-primary);
466
914
  font-size: var(--dt-font-size-lg);
@@ -470,19 +918,81 @@ ${ot}
470
918
  border-bottom: 1px solid var(--dt-border-muted);
471
919
  }
472
920
 
921
+ /* ── Item list ──────────────────────────────────────────────────────────── */
473
922
  .bk-comparison-items {
474
923
  display: grid;
475
924
  gap: var(--dt-space-2);
476
925
  margin: 0;
477
926
  padding: 0;
478
- padding-left: var(--dt-space-4);
927
+ list-style: none;
479
928
  color: var(--dt-text-secondary);
480
929
  font-size: var(--dt-font-size-sm);
481
930
  line-height: 1.6;
482
931
  }
483
932
 
484
933
  .bk-comparison-items li {
485
- padding-left: var(--dt-space-1);
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
+ }
486
996
  }
487
997
  `,"component-detail":`
488
998
  .bk-component-detail {
@@ -1097,7 +1607,7 @@ ${ot}
1097
1607
  font-size: var(--dt-font-size-sm);
1098
1608
  line-height: 1.6;
1099
1609
  }
1100
- `,heading:ot,kv:`
1610
+ `,heading:_t,kv:`
1101
1611
  .bk-kv {
1102
1612
  display: grid;
1103
1613
  grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
@@ -1252,7 +1762,7 @@ ${ot}
1252
1762
  box-shadow: 0 0 0 3px var(--dt-accent-subtle);
1253
1763
  transform: translateY(-50%);
1254
1764
  }
1255
- `,markdown:bt,mermaid:`
1765
+ `,markdown:jt,mermaid:`
1256
1766
  .bk-mermaid {
1257
1767
  margin: 0;
1258
1768
  padding: var(--dt-space-4);
@@ -1281,6 +1791,19 @@ ${ot}
1281
1791
  max-width: 100%;
1282
1792
  height: auto;
1283
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
+ }
1284
1807
  `,metrics:`
1285
1808
  .bk-metrics {
1286
1809
  display: grid;
@@ -1297,6 +1820,8 @@ ${ot}
1297
1820
  background: var(--dt-bg-secondary);
1298
1821
  box-shadow: var(--dt-shadow-sm);
1299
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);
1300
1825
  }
1301
1826
 
1302
1827
  .bk-metric:hover {
@@ -1324,6 +1849,28 @@ ${ot}
1324
1849
  color: var(--dt-text-tertiary);
1325
1850
  font-size: var(--dt-font-size-sm);
1326
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
+ }
1327
1874
  `,paragraph:`
1328
1875
  .bk-paragraph {
1329
1876
  margin: 0;
@@ -1332,6 +1879,15 @@ ${ot}
1332
1879
  line-height: 1.7;
1333
1880
  }
1334
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
+
1335
1891
  .bk-progress {
1336
1892
  display: grid;
1337
1893
  gap: var(--dt-space-4);
@@ -1365,8 +1921,16 @@ ${ot}
1365
1921
  min-width: 0;
1366
1922
  border-radius: inherit;
1367
1923
  background: var(--dt-accent-emphasis);
1368
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15);
1369
- transition: width var(--dt-transition-slow);
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;
1370
1934
  }
1371
1935
  `,prompt:`
1372
1936
  .bk-prompt {
@@ -1447,12 +2011,22 @@ ${ot}
1447
2011
  color: var(--dt-text-secondary);
1448
2012
  }
1449
2013
  `,table:`
2014
+ /* ── Scroll fade mask (indicates overflow) ── */
1450
2015
  .bk-table-wrap {
1451
2016
  overflow-x: auto;
1452
2017
  border: 1px solid var(--dt-border-default);
1453
2018
  border-radius: var(--dt-radius-lg);
1454
2019
  background: var(--dt-bg-secondary);
1455
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;
1456
2030
  }
1457
2031
 
1458
2032
  .bk-table {
@@ -1484,8 +2058,30 @@ ${ot}
1484
2058
  text-transform: uppercase;
1485
2059
  font-size: var(--dt-font-size-xs);
1486
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;
1487
2076
  }
1488
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);
2082
+ }
2083
+
2084
+ /* ── Row hover + even-row styling ── */
1489
2085
  .bk-table tbody tr {
1490
2086
  transition: background var(--dt-transition-fast);
1491
2087
  }
@@ -1505,6 +2101,71 @@ ${ot}
1505
2101
  .bk-table tbody tr:last-child td {
1506
2102
  border-bottom: none;
1507
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
+ }
1508
2169
  `,tags:`
1509
2170
  .bk-tags {
1510
2171
  display: flex;
@@ -1579,6 +2240,26 @@ ${ot}
1579
2240
  font-size: var(--dt-font-size-xs);
1580
2241
  line-height: 1.5;
1581
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
+ }
1582
2263
  `,tree:`
1583
2264
  .bk-tree {
1584
2265
  display: grid;
@@ -1611,7 +2292,55 @@ ${ot}
1611
2292
  .bk-tree-key {
1612
2293
  color: var(--dt-text-primary);
1613
2294
  }
1614
- `},qt=`
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
+
1615
2344
  .bk-section {
1616
2345
  display: grid;
1617
2346
  gap: var(--dt-space-3);
@@ -1629,6 +2358,27 @@ ${ot}
1629
2358
  line-height: 1.3;
1630
2359
  }
1631
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
+
1632
2382
  .bk-text,
1633
2383
  .bk-markdown,
1634
2384
  .bk-paragraph,
@@ -1735,28 +2485,62 @@ blockquote {
1735
2485
  border-radius: 0 var(--dt-radius-sm) var(--dt-radius-sm) 0;
1736
2486
  color: var(--dt-text-secondary);
1737
2487
  }
1738
- `;function I(e){let t=[qt],n=new Set;for(let r of e)!n.has(r)&&F[r]&&(n.add(r),t.push(F[r]));return t.join(`
1739
- `)}const Jt=`
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=`
1740
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)}
1741
2525
  .aikit-glass-solid{border:1px solid var(--dt-border-default);border-radius:var(--dt-radius-xl);background:var(--dt-bg-secondary)}
1742
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)}
1743
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)}
1744
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}
1745
- .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 Yt(){return I(Object.keys(F))}function Xt(e){return Object.entries(e).map(([e,t])=>` ${e}: ${t};`).join(`
1746
- `)}function Zt(e,t){let n=` `.repeat(t);return e.split(`
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(`
1747
2531
  `).map(e=>`${n}${e}`).join(`
1748
- `)}function Qt(e){return e===`dark`?{...N,...P}:{...N}}function $t(){return Xt(P)}function en(e=`auto`){let t=`:root {\n${Xt(Qt(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 {
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 {
1749
2533
  color-scheme: light;
1750
- }`,[`@media (prefers-color-scheme: dark) {`,` :root {`,Zt($t(),4),` }`,``,` html {`,` color-scheme: dark;`,` }`,`}`].join(`
2534
+ }`,[`@media (prefers-color-scheme: dark) {`,` :root {`,ln(dn(),4),` }`,``,` html {`,` color-scheme: dark;`,` }`,`}`].join(`
1751
2535
  `)].join(`
1752
2536
 
1753
- `)}const L={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`},tn=[{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 nn(e){return[` <button type="button" class="${L.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(`
1754
- `)}function rn(e,t=[],n=!0){if(!n)return``;let r=t.filter(e=>e.kind===`shared-chrome-action`);return r.length===0?``:[` <div class="${L.toolbox}">`,` <button type="button" class="${L.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="${L.toolboxMenu}" role="menu" hidden>`,...r.map(e=>nn(e)),` </div>`,` </div>`].join(`
1755
- `)}function an(e){return e?.trim()?e.trim():``}function on(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 R(e){let t=e.brand??`AI KIT`,r=e.showToolbox??!0,i=e.sharedChromeActions??(r?tn:[]),a=[an(e.actionsHtml),rn(e.transport,i,r),e.showThemeToggle===!1?``:[` <button type="button" class="${L.themeToggle}" aria-label="Switch to dark theme" aria-pressed="false">`,` <span class="${L.themeToggleIcon} ${L.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="${L.themeToggleIcon} ${L.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(`
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(`
1756
2540
  `)].filter(Boolean).join(`
1757
- `);return[` <header class="${L.header}">`,` <div class="${L.brand}">${n(t)}</div>`,` <div class="${L.title}">`,` <span class="${L.titleText}">${n(e.title)}</span>`,...e.subtitle?[` <span class="${L.subtitle}">${n(e.subtitle)}</span>`]:[],` </div>`,` <div class="${L.actions}">`,a,` </div>`,` </header>`].join(`
1758
- `)}function sn(e={}){let t=on(e.generatedAt),r=e.showInstallGuide??!1,i=e.installUrl??`https://vpxa.io/ai-kit`,a=t?[`Generated by `,`<span class="${L.footerBrand}">AI KIT</span>`,` at `,t.dateTime?`<time class="${L.footerTimestamp}" datetime="${n(t.dateTime)}">${n(t.display)}</time>`:`<span class="${L.footerTimestamp}">${n(t.display)}</span>`].join(``):`Generated by <span class="${L.footerBrand}">AI KIT</span>`,o=an(e.contentHtml),s=r?`<span class="${L.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="${L.footer}">`,` <div class="${L.footerMeta}">`,` <span class="${L.footerText}">${a}</span>`,...o?[` <span class="${L.footerSlot}">${o}</span>`]:[],s,` </div>`,` </footer>`].join(`
1759
- `)}const cn=`
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=`
1760
2544
  .aikit-header,
1761
2545
  .aikit-toolbox-menu,
1762
2546
  .aikit-copy-status,
@@ -2132,13 +2916,13 @@ html[data-theme='dark'] .aikit-theme-toggle-icon--moon {
2132
2916
  box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.2);
2133
2917
  }
2134
2918
  }
2135
- `;function ln(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 un(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}">
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}">
2136
2920
  <p class="bk-annotation-body">${n(e.body)}</p>
2137
2921
  ${r.length>0?`<div class="bk-annotation-meta">${r.join(``)}</div>`:``}
2138
- </li>`}function dn(e){switch(e){case`COMMENT`:return`Comments`;case`DELETION`:return`Deletions`;case`GLOBAL_COMMENT`:return`General Notes`;default:return e}}function fn(e,t){let r=ln(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">
2139
- <h4 class="bk-annotation-group-title">${n(dn(e))}</h4>
2140
- <ol class="bk-annotation-list">${t.map(un).join(``)}</ol>
2141
- </div>`).join(``)||`<p class="bk-text-secondary">No annotations</p>`}</div>`}function pn(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.prompt==`string`&&Array.isArray(t.options)}function mn(e,t){let r=e.blockId?i(e.blockId):void 0,a=pn(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)}">
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)}">
2142
2926
  <input type="radio" name="approval" value="${i(e.id)}" role="radio" />
2143
2927
  <span class="bk-approval-option-label">${n(e.label)}</span>
2144
2928
  ${e.description?`<span class="bk-approval-option-desc">${n(e.description)}</span>`:``}
@@ -2149,9 +2933,9 @@ ${e.description?`<span class="bk-approval-option-desc">${n(e.description)}</span
2149
2933
  ${o}
2150
2934
  <fieldset class="bk-approval-options">${s}</fieldset>
2151
2935
  ${c}
2152
- </div>`}const hn={actions:m,annotation:fn,approval:mn,cards:h,chart:ee,checklist:Ce,code:we,comparison:Ee,diagram:He,diff:Ke,"component-detail":Ne,"data-table-schema":Re,"docs-browser":Je,"docs-hub":Qe,"flame-graph":rt,finding:et,graph:at,heading:st,kv:lt,"lifecycle-flow":vt,list:yt,markdown:wt,mermaid:Tt,metrics:Dt,paragraph:Ot,progress:At,prompt:Mt,separator:Nt,"status-board":Ft,table:zt,tags:Vt,text:Ht,timeline:Ut,tree:Wt};function gn(e,t,r){let a={...e,value:o(e.value)},s=hn[a.type],c=s?s(a,t):vn(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 _n(e,t){return e.map((e,n)=>gn(e,t,n)).join(`
2153
- `)}function vn(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 yn=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 bn=[`mcp-app`,`browser`];function z(e){return typeof e==`object`&&!!e}function xn(e){return Array.isArray(e)?e.flatMap(e=>!z(e)||typeof e.label!=`string`?[]:[{label:e.label,checked:!!e.checked}]):[]}const Sn={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=z(e)&&typeof e.title==`string`?e.title:void 0,r=z(e)?xn(e.items):[];return n&&t.push({type:`heading`,value:n}),t.push({type:`checklist`,value:r}),t},hydration:[`checklist`],supportedTransports:bn},Cn=[`mcp-app`,`browser`,`export`];function B(e){return typeof e==`object`&&!!e}function wn(e){return B(e)&&typeof e.label==`string`&&(typeof e.value==`string`||typeof e.value==`number`)}function Tn(e){return B(e)&&typeof e.key==`string`&&typeof e.label==`string`}function En(e){return Array.isArray(e)?e.filter(B):[]}function Dn(e,t){if(Array.isArray(e)){let t=e.filter(Tn);if(t.length>0)return t}return Object.keys(t[0]??{}).map(e=>({key:e,label:e}))}const On={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=B(e)?En(e.rows):[],n=B(e)?Dn(e.columns,t):[],r=n.map(e=>e.label),i=t.map(e=>n.map(t=>e[t.key])),a=[];if(B(e)&&Array.isArray(e.stats)){let t=e.stats.filter(wn);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:Cn},kn=[`mcp-app`,`browser`,`export`];function V(e){return typeof e==`object`&&!!e}function An(e){return Array.isArray(e)?e.flatMap(e=>!V(e)||typeof e.type!=`string`||typeof e.content!=`string`?[]:[{type:e.type,content:e.content}]):[]}function jn(e){return Array.isArray(e)?e.flatMap(e=>!V(e)||typeof e.header!=`string`?[]:[{header:e.header,changes:An(e.changes)}]):[]}function Mn(e){return!V(e)||!Array.isArray(e.files)?[]:e.files.flatMap(e=>!V(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:jn(e.hunks)}])}function Nn(e){return e===`add`?`+`:e===`delete`?`-`:` `}function Pn(e){let t=e.hunks.flatMap(e=>[e.header,...e.changes.map(e=>`${Nn(e.type)}${e.content}`)]).join(`
2154
- `);return[{type:`heading`,value:e.path},{type:`paragraph`,value:`${e.status} | +${e.additions} / -${e.deletions}`},{type:`code`,language:`diff`,value:t}]}const Fn={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=>Mn(e).flatMap(Pn),hydration:[],supportedTransports:kn},In=[`mcp-app`,`browser`,`export`];function H(e){return typeof e==`object`&&!!e}function Ln(e){return H(e)&&typeof e.type==`string`}function Rn(e){return Array.isArray(e)&&e.every(Ln)}function zn(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`||Rn(e.content)?e.content:``;return[{heading:e.heading,content:t}]}):[];return{title:typeof e.title==`string`?e.title:void 0,sections:t}}function Bn(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 Vn={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(...Bn(e));return n},hydration:[],supportedTransports:In},Hn=[`mcp-app`,`browser`,`export`];function Un(e){return typeof e==`object`&&!!e}function Wn(e){return Un(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=Wn(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:Hn};function W(e){return typeof e==`object`&&!!e}function Gn(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 Kn={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)?Gn(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`]},qn=[`mcp-app`,`browser`];function G(e){return typeof e==`object`&&!!e}function Jn(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 Yn(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 Xn(e){return G(e)?{categories:Jn(e.categories),items:Yn(e.items)}:{items:[]}}function Zn(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(Zn)}]}const $n={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=Xn(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(Zn)}),n},hydration:[`picker`],supportedTransports:qn},er=[`mcp-app`,`browser`,`export`];function K(e){return typeof e==`object`&&!!e}function tr(e){return K(e)&&typeof e.type==`string`}function nr(e){return Array.isArray(e)&&e.every(tr)}function rr(e){return K(e)&&typeof e.label==`string`&&(typeof e.value==`string`||typeof e.value==`number`)}function ir(e){return Array.isArray(e)?e.flatMap(e=>{if(!K(e)||typeof e.heading!=`string`)return[];let t=typeof e.content==`string`||nr(e.content)?e.content:``;return[{heading:e.heading,content:t}]}):[]}function ar(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 or(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 sr(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 cr={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(rr):void 0,sections:K(e)?ir(e.sections):[],tables:K(e)?ar(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(...or(e));for(let e of t.tables??[])n.push(sr(e));return n},hydration:[],supportedTransports:er},lr=[`mcp-app`,`browser`];function q(e){return typeof e==`object`&&!!e}function ur(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function dr(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 fr(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 pr={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=ur(e.criteria);r.length>0&&t.push({type:`checklist`,value:r.map(e=>({label:e,checked:!1}))});let i=dr(e.annotations);i.length>0&&t.push({type:`annotation`,value:i});let a=e.approval;if(q(a)){let e=fr(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:lr},mr=[`mcp-app`,`browser`,`export`];function J(e){return typeof e==`object`&&!!e}function hr(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 gr(e){return e.map(e=>({title:e.label,status:e.status,badge:e.badge}))}const _r={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)?hr(e.categories):[],n=[];for(let e of t)n.push({type:`heading`,value:e.category}),n.push({type:`cards`,value:gr(e.items)});return n},hydration:[],supportedTransports:mr},vr=[`mcp-app`,`browser`,`export`];function yr(e){return typeof e==`object`&&!!e}function br(e){return Array.isArray(e)?e.flatMap(e=>!yr(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 xr(e){return Array.isArray(e)?{entries:br(e)}:yr(e)?{entries:br(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}},Sr={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}=xr(e),r=[];return n&&r.push({type:`heading`,value:n}),r.push({type:`timeline`,value:t}),r},hydration:[],supportedTransports:vr},Cr=[`mcp-app`,`browser`,`export`];function X(e){return typeof e==`object`&&!!e}function wr(e){return X(e)&&typeof e.label==`string`}function Tr(e){return{name:e.label,children:Array.isArray(e.children)?e.children.filter(wr).map(Tr):[]}}function Er(e){if(!X(e))return{};let t=e.root;return wr(t)?Tr(t):X(t)?t:e}const Dr={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:Er(e)}],hydration:[`tree`],supportedTransports:Cr},Z=new yn;Z.register(pr),Z.register(Sn),Z.register(Fn),Z.register(Vn),Z.register($n),Z.register(cr),Z.register(Sr),Z.register(Dr),Z.register(On),Z.register(U),Z.register(Kn),Z.register(_r);let Q=0;function Or(){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 kr(e){return{id:e,version:1,entry:`@aikit/blocks-interactive/dist/islands/${e}.mjs`,selector:`[data-island="${e}"]`,needsData:!0}}function Ar(e,t){let n=new TextEncoder;return n.encode(e).byteLength+t.reduce((e,t)=>e+n.encode(t).byteLength,0)}function jr(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=>kr(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=_n(o,i),u=[I(o.map(e=>e.type))],d=t.nonce??Or(),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:Ar(l,u),exportPolicy:s.length>0?`local-interactive`:`static-only`,diagnostics:n.length>0?n:void 0}}function Mr(e){return e===`up`||e===`down`||e===`neutral`}function $(e){return typeof e==`object`&&!!e}function Nr(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`&&Mr(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`?Br(e.progress):void 0,items:n}]})}}function Pr(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 Fr(e){return e.type!==`progress`||typeof e.progress!=`number`?null:{label:e.label,value:Br(e.progress),max:100}}function Ir(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 Lr(e){return{title:e.title,description:e.description,badge:e.priority,body:e.tags?.join(`, `),status:e.priority}}function Rr(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 zr(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=>zr(e)):[]}:{name:``,total:0,children:[]}}function Br(e){return Math.max(0,Math.min(100,e))}function Vr(e){let t=Nr(e),n=[];t.metrics.length>0&&n.push({type:`metrics`,value:t.metrics.map(Pr)});let r=t.metrics.map(Fr).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 Hr(e){let t=Ir(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(Lr)})}),n}function Ur(e){let t=Rr(e);return t.length===0?[]:[{type:`cards`,value:t.map((e,t)=>({title:e.label,body:e.id,badge:`#${t+1}`}))}]}function Wr(e){return!$(e)||!$(e.profile)?[]:[{type:`flame-graph`,value:zr(e.profile)}]}const Gr={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=>Vr(e),hydration:[],supportedTransports:[`mcp-app`,`browser`]},Kr={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=>Hr(e),hydration:[],supportedTransports:[`browser`]},qr={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=>Ur(e),hydration:[],supportedTransports:[`browser`]},Jr={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=>Wr(e),hydration:[`flame-graph`],supportedTransports:[`browser`]},Yr={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 Xr(){return Yr}function Zr(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=[`
2155
2939
  * {
2156
2940
  box-sizing: border-box;
2157
2941
  }
@@ -2182,9 +2966,8 @@ body {
2182
2966
  @media (prefers-reduced-motion: reduce) {
2183
2967
  html { scroll-behavior: auto; }
2184
2968
  *, *::before, *::after {
2185
- animation-duration: 0.01ms !important;
2186
- animation-iteration-count: 1 !important;
2187
- transition-duration: 0.01ms !important;
2969
+ animation: none !important;
2970
+ transition: none !important;
2188
2971
  }
2189
2972
  }
2190
2973
 
@@ -2281,6 +3064,21 @@ main > * {
2281
3064
  }
2282
3065
  }
2283
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
+
2284
3082
  @media (max-width: 480px) {
2285
3083
  main {
2286
3084
  padding: var(--aikit-main-padding-mobile-sm, 0.75rem 0.75rem);
@@ -2293,27 +3091,27 @@ main > * {
2293
3091
  max-width: var(--aikit-max-width-wide, 1040px);
2294
3092
  }
2295
3093
  }
2296
- `,cn,...(Array.isArray(t)?t:typeof t==`string`?[t]:[]).filter(e=>e.trim().length>0)].join(`
3094
+ `,bn,...(Array.isArray(t)?t:typeof t==`string`?[t]:[]).filter(e=>e.trim().length>0)].join(`
2297
3095
  `);return[` <style>${e}</style>`,` <style>${n}</style>`].join(`
2298
- `)}function $r(e){let t=Object.entries(P).map(([e,t])=>` ${e}: ${t};`).join(`
3096
+ `)}function mi(e){let t=Object.entries(R).map(([e,t])=>` ${e}: ${t};`).join(`
2299
3097
  `);return[e,`html[data-theme="light"] {
2300
3098
  color-scheme: light;
2301
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(`
2302
3100
 
2303
- `)}function ei(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(`
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(`
2304
3102
  `)}).join(`
2305
- `)}function ti(e,t,r=`client-only`){let i=JSON.stringify(e),a=ni(r),o=ri(Xr());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(`
2306
- `)}function ni(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(`
2307
- `)}function ri(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(`
2308
- `)}function ii(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(`
2309
- `)}function ai(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;
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;
2310
3108
  `,c+=` --aikit-max-width-wide: 1400px;
2311
3109
  `):e.layoutVariant===`full`&&(c+=` --aikit-max-width: none;
2312
3110
  `,c+=` --aikit-max-width-wide: none;
2313
3111
  `,c+=` --aikit-main-padding: 0;
2314
- `),e.mainPadding&&(c+=` --aikit-main-padding: ${e.mainPadding};\n`),e.mainGap&&(c+=` --aikit-main-gap: ${e.mainGap};\n`);let l=``;e.showGlassCss&&(l=Jt);let u=$r(e.tokenCss??en(`light`)),d=ei(e.headScripts??[],e.nonce),f=e.islands.length>0&&e.payload?` <script type="application/json" id="surface-payload">${Zr(e.payload)}<\/script>`:``,p=ii(e.islands,e.exportPolicy,e.nonce),m=e.showGradientGlow?`
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?`
2315
3113
  <div class="aikit-glow-primary"></div>
2316
3114
  <div class="aikit-glow-secondary"></div>
2317
- `:``,h=ti(i,e.nonce,a),g=[f,p].filter(Boolean).join(`
2318
- `),_=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>`:``,Qr(u,[..._,l].filter(Boolean)),d,`</head>`,`<body>`,R({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>`,sn({generatedAt:o,contentHtml:e.footerContentHtml,showInstallGuide:e.showInstallGuide,installUrl:e.installUrl}),g,`</body>`,`</html>`].filter(Boolean).join(`
2319
- `)}export{L as HEADER_CLASS_NAMES,cn as HEADER_CSS,yn as TemplateRegistry,Yt as allCss,qt as baseCss,f as blockItems,Xr as buildCopyImageExportFallback,sn as buildFooter,R as buildHeader,ai as buildShell,ti as buildThemeScript,Sn as checklistTemplate,I as collectCss,Kt as darkTokenNames,P as darkTokens,Gr as dashboardTemplateDefinition,On as dataTableTemplate,Z as defaultRegistry,Fn as diffViewTemplate,Vn as documentTemplate,U as errorTemplate,n as escapeHtml,Jr as flameGraphTemplateDefinition,Kn as formTemplate,a as formatValue,$t as generateDarkTokenCss,en as generateTokenCss,Jt as glassCss,s as inlineMarkdown,t as isError,e as isResult,Kr as kanbanTemplateDefinition,qr as listSortTemplateDefinition,$n as pickerTemplate,gn as renderBlock,_n as renderBlocks,jr as renderSurface,cr as reportTemplate,pr as reviewTemplate,i as sanitizeId,r as sanitizeUrl,_r as statusBoardTemplate,Sr as timelineTemplate,Gt as tokenNames,N as tokens,u as toneName,d as toneVar,Dr as treeTemplate,o as tryParseJson};
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};