archik 0.16.1 → 0.17.1
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.
|
@@ -217,7 +217,7 @@ ${P0n(p.errors)}`);return p.value}function B0n(f){return`${JSON.stringify(f,null
|
|
|
217
217
|
`}function nje(f){const d=f.split(/[?#]/,1)[0]??f,p=k1n(d);if(p!==null)return p;const m=f.indexOf("?");if(m>=0){const M=new URLSearchParams(f.slice(m+1)).get("path");if(M!==null&&M!==""){const k=k1n(M);if(k!==null)return k}}throw new Error(`Unknown document format for "${f}" (expected .yaml/.yml/.json)`)}function k1n(f){const d=f.toLowerCase();return d.endsWith(".yaml")||d.endsWith(".yml")?"yaml":d.endsWith(".json")?"json":null}function BXn(f,d){return d==="yaml"?z0n(f):zXn(f)}function F0n(f,d){return d==="yaml"?eje(f):B0n(f)}async function FXn(f){const d=nje(f),p=await fetch(f);if(!p.ok)throw new Error(`Failed to fetch ${f}: ${p.status} ${p.statusText}`);const m=await p.text();try{return{document:BXn(m,d),text:m}}catch(A){const M=A instanceof Error?A.message:String(A);throw new Error(`Could not load ${f}:
|
|
218
218
|
${M}`)}}async function qXn(f,d){const p=nje(f),m=F0n(d,p),A=p==="yaml"?g7e.yaml:g7e.json,M=await fetch(f,{method:"PUT",headers:{"content-type":A},body:m});if(!M.ok){let k="";try{k=(await M.text()).trim()}catch{}const R=`Failed to save ${f}: ${M.status} ${M.statusText}`;throw new Error(k.length>0?`${R}
|
|
219
219
|
|
|
220
|
-
${k}`:R)}return{text:m}}const g7e={yaml:"application/yaml",json:"application/json"};function GXn(f,d){const p=nje(f),m=F0n(d,p),A=new Blob([m],{type:g7e[p]}),M=URL.createObjectURL(A),k=document.createElement("a");k.href=M,k.download=f,k.style.display="none",document.body.appendChild(k),k.click(),document.body.removeChild(k),URL.revokeObjectURL(M)}const UXn="archik:doc-changed",JXn="archik:suggestion-changed",w7e=new Set,p7e=new Set;function j1n(f){return q0n(),w7e.add(f),()=>{w7e.delete(f)}}function S1n(f){return q0n(),p7e.add(f),()=>{p7e.delete(f)}}function HXn(){for(const f of[...w7e])f()}function KXn(){for(const f of[...p7e])f()}let E1n=!1;function q0n(){if(!E1n&&(E1n=!0,!(typeof window>"u")&&typeof EventSource<"u"))try{const f=new EventSource("/__archik/events");f.addEventListener(UXn,()=>HXn()),f.addEventListener(JXn,()=>KXn())}catch{}}function m7e(f,d){const p=new Map(f.nodes.map(B=>[B.id,B])),m=new Map(d.nodes.map(B=>[B.id,B])),A=new Map(f.edges.map(B=>[B.id,B])),M=new Map(d.edges.map(B=>[B.id,B])),k={added:[],removed:[],changed:[],unchanged:[]},R={added:[],removed:[],changed:[],unchanged:[]};for(const[B,J]of m){const ce=p.get(B);if(ce===void 0)k.added.push(J);else{const ie=A1n(ce,J,ZXn);ie.length===0?k.unchanged.push(B):k.changed.push({node:J,before:ce,changes:ie})}}for(const[B,J]of p)m.has(B)||k.removed.push(J);for(const[B,J]of M){const ce=A.get(B);if(ce===void 0)R.added.push(J);else{const ie=A1n(ce,J,XXn);ie.length===0?R.unchanged.push(B):R.changed.push({edge:J,before:ce,changes:ie})}}for(const[B,J]of A)M.has(B)||R.removed.push(J);return{nodes:k,edges:R}}const ZXn=["kind","name","description","stack","parentId","responsibilities","interfaces","notes","metadata","archikFile","sourcePath","seqFiles","status","stereotype","owner"],XXn=["from","to","relationship","label","description","protocol","color","fromFile","toFile"];function A1n(f,d,p){const m=[];for(const A of p){const M=f[A],k=d[A];v7e(M,k)||m.push({field:A,before:M,after:k})}return m}function VXn(f,d){const p=G0n(m7e(f,d));new Map(f.nodes.map(M=>[M.id,M])),new Map(f.edges.map(M=>[M.id,M]));const m=[];for(const M of d.nodes)m.push(M);for(const M of f.nodes){if(!p.nodes.has(M.id)||p.nodes.get(M.id)!=="removed")continue;const k=M.parentId===void 0||d.nodes.some(R=>R.id===M.parentId)||f.nodes.some(R=>R.id===M.parentId&&p.nodes.get(R.id)==="removed");m.push(k?M:{...M,parentId:void 0})}const A=[];for(const M of d.edges)A.push(M);for(const M of f.edges)p.edges.get(M.id)==="removed"&&A.push(M);return{...d,nodes:m,edges:A}}function G0n(f){const d=new Map,p=new Map;for(const m of f.nodes.added)d.set(m.id,"added");for(const m of f.nodes.removed)d.set(m.id,"removed");for(const m of f.nodes.changed)d.set(m.node.id,"changed");for(const m of f.nodes.unchanged)d.set(m,"unchanged");for(const m of f.edges.added)p.set(m.id,"added");for(const m of f.edges.removed)p.set(m.id,"removed");for(const m of f.edges.changed)p.set(m.edge.id,"changed");for(const m of f.edges.unchanged)p.set(m,"unchanged");return{nodes:d,edges:p}}function v7e(f,d){if(Object.is(f,d))return!0;if(f===null||d===null||typeof f!="object"||typeof d!="object"||Array.isArray(f)!==Array.isArray(d))return!1;if(Array.isArray(f)&&Array.isArray(d)){if(f.length!==d.length)return!1;for(let k=0;k<f.length;k++)if(!v7e(f[k],d[k]))return!1;return!0}const p=f,m=d,A=Object.keys(p),M=Object.keys(m);if(A.length!==M.length)return!1;for(const k of A)if(!v7e(p[k],m[k]))return!1;return!0}class Kh extends Error{constructor(d){super(d),this.name="CommandError"}}function ok(f,d){return f.nodes.find(p=>p.id===d)}function WXn(f,d){if(ok(f,d.id))throw new Kh(`node id "${d.id}" already exists`);if(d.parentId!==void 0&&!ok(f,d.parentId))throw new Kh(`node "${d.id}" references missing parent "${d.parentId}"`);return{...f,nodes:[...f.nodes,d]}}function YXn(f,d){if(!ok(f,d))throw new Kh(`node "${d}" does not exist`);const p=f.nodes.find(m=>m.parentId===d);if(p)throw new Kh(`cannot remove "${d}": "${p.id}" still references it as parent`);return{...f,nodes:f.nodes.filter(m=>m.id!==d),edges:f.edges.filter(m=>m.from!==d&&m.to!==d)}}function QXn(f,d,p){let m=p;const A=new Set;for(;m;){if(m===d||A.has(m))return!0;A.add(m),m=f.nodes.find(M=>M.id===m)?.parentId}return!1}function eVn(f,d,p){const m=ok(f,d);if(!m)throw new Kh(`node "${d}" does not exist`);if("id"in p&&p.id!==void 0&&p.id!==d)throw new Kh(`update_node cannot change id (${d} → ${p.id})`);if(p.parentId!==void 0){if(p.parentId===d)throw new Kh(`node "${d}" cannot be its own parent`);if(!ok(f,p.parentId))throw new Kh(`node "${d}" references missing parent "${p.parentId}"`);if(QXn(f,d,p.parentId))throw new Kh(`setting parent of "${d}" to "${p.parentId}" would create a parent cycle`)}const A={...m,...p,id:d};return{...f,nodes:f.nodes.map(M=>M.id===d?A:M)}}function nVn(f,d){if(f.edges.some(p=>p.id===d.id))throw new Kh(`edge id "${d.id}" already exists`);if(!ok(f,d.from))throw new Kh(`edge "${d.id}" references missing from "${d.from}"`);if(!ok(f,d.to))throw new Kh(`edge "${d.id}" references missing to "${d.to}"`);return{...f,edges:[...f.edges,d]}}function tVn(f,d){if(!f.edges.some(p=>p.id===d))throw new Kh(`edge "${d}" does not exist`);return{...f,edges:f.edges.filter(p=>p.id!==d)}}function iVn(f,d,p){const m=f.edges.find(M=>M.id===d);if(!m)throw new Kh(`edge "${d}" does not exist`);if("id"in p&&p.id!==void 0&&p.id!==d)throw new Kh(`update_edge cannot change id (${d} → ${p.id})`);if(p.from!==void 0&&!ok(f,p.from))throw new Kh(`edge "${d}" references missing from "${p.from}"`);if(p.to!==void 0&&!ok(f,p.to))throw new Kh(`edge "${d}" references missing to "${p.to}"`);const A={...m,...p,id:d};return{...f,edges:f.edges.map(M=>M.id===d?A:M)}}function rVn(f,d){switch(d.type){case"add_node":return WXn(f,d.node);case"remove_node":return YXn(f,d.id);case"update_node":return eVn(f,d.id,d.patch);case"connect":return nVn(f,d.edge);case"disconnect":return tVn(f,d.id);case"update_edge":return iVn(f,d.id,d.patch);case"rename_document":return{...f,name:d.name};default:throw new Kh("unhandled command")}}function uI(f,d){const p=rVn(f,d);return L0n.parse(p)}function cVn(f,d,p){const m=new Map,A=(R,B)=>{const J=m.get(R)??new Set;J.add(B),m.set(R,J)};for(const R of f)A(R.from,R.to),A(R.to,R.from);const M=new Set([d]);let k=new Set([d]);for(let R=0;R<p;R++){const B=new Set;for(const J of k)for(const ce of m.get(J)??[])M.has(ce)||(M.add(ce),B.add(ce));if(B.size===0)break;k=B}return M}function uVn(f,d,p){const m=cVn(f.edges,d,p);return{...f,nodes:f.nodes.filter(A=>m.has(A.id)).map(A=>A.parentId!==void 0&&!m.has(A.parentId)?(({parentId:M,...k})=>k)(A):A),edges:f.edges.filter(A=>m.has(A.from)&&m.has(A.to))}}function sVn(f,d){return f!==null&&!d.nodes.some(p=>p.id===f.id)}function oVn(f,d){const p=new Set(d.hideRel??[]),m=d.onlyRel?new Set(d.onlyRel):null,A=f.edges.filter(M=>!(m&&!m.has(M.relationship)||p.has(M.relationship)||EXn(M.relationship)==="structural"));return{...f,edges:A}}function U0n(f,d){const p=new Map;for(const B of f.nodes)p.set(B.id,B.parentId);const m=B=>{let J=B,ce=B;const ie=new Set;for(;J!==void 0&&!ie.has(J);)ie.add(J),d.has(J)&&(ce=J),J=p.get(J);return ce},A=B=>m(B)!==B,M=f.nodes.filter(B=>!A(B.id)),k=new Set,R=[];for(const B of f.edges){const J=m(B.from),ce=m(B.to);if(J===ce)continue;const ie=`${J}|${ce}|${B.relationship}`;k.has(ie)||(k.add(ie),R.push({...B,from:J,to:ce}))}return{...f,nodes:M,edges:R}}function lVn(f,d){let p=f;return d.collapsed.size>0&&(p=U0n(p,d.collapsed)),d.focus&&(p=uVn(p,d.focus.id,d.focus.depth)),d.hideStructural&&(p=oVn(p,{})),p}function U8e(f){return f.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+/,"").replace(/-+$/,"").replace(/^[0-9]+/,"").replace(/^-+/,"")}function J8e(f,d,p="node"){const m=f.length>0?f:p;if(!d.has(m))return m;let A=2;for(;d.has(`${m}-${A}`);)A++;return`${m}-${A}`}const x1n=f=>{let d;const p=new Set,m=(J,ce)=>{const ie=typeof J=="function"?J(d):J;if(!Object.is(ie,d)){const le=d;d=ce??(typeof ie!="object"||ie===null)?ie:Object.assign({},d,ie),p.forEach(ye=>ye(d,le))}},A=()=>d,R={setState:m,getState:A,getInitialState:()=>B,subscribe:J=>(p.add(J),()=>p.delete(J))},B=d=f(m,A,R);return R},fVn=(f=>f?x1n(f):x1n),aVn=f=>f;function hVn(f,d=aVn){const p=qce.useSyncExternalStore(f.subscribe,qce.useCallback(()=>d(f.getState()),[f,d]),qce.useCallback(()=>d(f.getInitialState()),[f,d]));return qce.useDebugValue(p),p}const T1n=f=>{const d=fVn(f),p=m=>hVn(d,m);return Object.assign(p,d),p},dVn=(f=>f?T1n(f):T1n);function tue(f,d){return f.type===d.type&&f.id===d.id}const Nf=dVn(f=>({selection:[],connectFrom:null,selectNode:d=>f({selection:[{type:"node",id:d}]}),selectEdge:d=>f({selection:[{type:"edge",id:d}]}),toggleNode:d=>f(p=>{const m={type:"node",id:d};return{selection:p.selection.some(M=>tue(M,m))?p.selection.filter(M=>!tue(M,m)):[...p.selection,m]}}),toggleEdge:d=>f(p=>{const m={type:"edge",id:d};return{selection:p.selection.some(M=>tue(M,m))?p.selection.filter(M=>!tue(M,m)):[...p.selection,m]}}),clearSelection:()=>f({selection:[]}),startConnect:d=>f({connectFrom:d,selection:[]}),cancelConnect:()=>f({connectFrom:null}),collapsed:new Set,hideStructural:!1,focus:null,toggleCollapse:d=>f(p=>{const m=new Set(p.collapsed);return m.has(d)?m.delete(d):m.add(d),{collapsed:m,focus:null}}),collapseAll:d=>f({collapsed:new Set(d),focus:null}),expandAll:()=>f({collapsed:new Set}),setHideStructural:d=>f({hideStructural:d}),setFocus:(d,p)=>f({focus:{id:d,depth:p},collapsed:new Set}),setFocusDepth:d=>f(p=>p.focus?{focus:{id:p.focus.id,depth:d}}:{}),clearFocus:()=>f({focus:null})}));function Ox({trigger:f,align:d="end",children:p}){const[m,A]=Xn.useState(!1),M=Xn.useRef(null);return Xn.useEffect(()=>{if(!m)return;const k=B=>{M.current&&!M.current.contains(B.target)&&A(!1)},R=B=>{B.key==="Escape"&&A(!1)};return document.addEventListener("mousedown",k),document.addEventListener("keydown",R),()=>{document.removeEventListener("mousedown",k),document.removeEventListener("keydown",R)}},[m]),I.jsxs("div",{ref:M,style:{position:"relative",display:"inline-block"},children:[I.jsx("div",{onClick:()=>A(k=>!k),children:f(m)}),m&&I.jsx("div",{className:"archik-popover",style:{position:"absolute",top:"calc(100% + 6px)",...d==="end"?{right:0}:{left:0},zIndex:20,minWidth:200},children:p(()=>A(!1))})]})}function J0n({value:f,onChange:d,id:p,ariaLabel:m,disabled:A}){const M=zp[f],k=M.icon;return I.jsx(Ox,{align:"start",trigger:R=>I.jsxs("button",{id:p,type:"button","aria-label":m,"aria-expanded":R,disabled:A,className:"archik-input",style:{width:"100%",display:"flex",alignItems:"center",gap:8,cursor:A?"not-allowed":"pointer",textAlign:"left"},children:[I.jsx(k,{size:14,color:M.color,strokeWidth:1.8}),I.jsx("span",{style:{flex:1},children:f}),I.jsx("span",{style:{opacity:.5,fontSize:10},children:R?"▴":"▾"})]}),children:R=>I.jsx("div",{style:{minWidth:240,maxHeight:"min(60vh, 360px)",overflowY:"auto",padding:4},children:Y7e.map(B=>{const J=zp[B],ce=J.icon,ie=B===f;return I.jsxs("button",{type:"button",onClick:()=>{d(B),R()},className:"archik-menu-item",style:{background:ie?"var(--archik-surface-hover)":void 0},children:[I.jsx("span",{"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:16,color:J.color,flexShrink:0},children:I.jsx(ce,{size:14,strokeWidth:1.8})}),I.jsx("span",{style:{fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:11,minWidth:90},children:B}),I.jsx("span",{style:{color:"var(--archik-fg-dim)",fontSize:11,flex:1},children:J.description})]},B)})})})}function bVn({node:f,dispatch:d,onStartConnect:p,allNodes:m=[],readOnly:A=!1,viewKey:M}){if(!f)return I.jsx("div",{className:"flex h-full flex-col items-center justify-center p-6 text-center text-sm",style:{color:"var(--archik-fg-muted)"},children:"Select a node to edit its properties."});const k=R=>d({type:"update_node",id:f.id,patch:R});return I.jsxs("div",{className:"flex h-full flex-col gap-4 overflow-y-auto p-4 text-sm",children:[I.jsxs("div",{children:[I.jsx("div",{className:"archik-label",children:"Id"}),I.jsx("div",{className:"archik-mono",children:f.id})]}),I.jsx(W8,{label:"Name",htmlFor:"ni-name",children:I.jsx("input",{id:"ni-name",type:"text",value:f.name,onChange:R=>k({name:R.target.value}),disabled:A,className:"archik-input w-full"})}),I.jsx(W8,{label:"Kind",htmlFor:"ni-kind",children:I.jsx(J0n,{id:"ni-kind",value:f.kind,onChange:R=>k({kind:R}),disabled:A})}),I.jsx(pVn,{value:f.stereotype,onChange:R=>k({stereotype:R}),readOnly:A}),I.jsx(W8,{label:"Stack",htmlFor:"ni-stack",children:I.jsx("input",{id:"ni-stack",type:"text",value:f.stack??"",onChange:R=>k({stack:R.target.value}),disabled:A,placeholder:"e.g. Go, Postgres 16",className:"archik-input w-full"})}),I.jsx(W8,{label:"Owner",htmlFor:"ni-owner",children:I.jsx("input",{id:"ni-owner",type:"text",value:f.owner??"",onChange:R=>{const B=R.target.value;k(B===""?{owner:void 0}:{owner:B})},disabled:A,placeholder:"e.g. team-billing",className:"archik-input w-full"})}),I.jsx(W8,{label:"Description",htmlFor:"ni-desc",children:I.jsx("textarea",{id:"ni-desc",value:f.description??"",onChange:R=>k({description:R.target.value}),disabled:A,rows:3,className:"archik-input w-full"})}),I.jsx(W8,{label:"Parent (group)",htmlFor:"ni-parent",children:I.jsxs("select",{id:"ni-parent",value:f.parentId??"",onChange:R=>{const B=R.target.value;k(B===""?{parentId:void 0}:{parentId:B})},disabled:A,className:"archik-input w-full",children:[I.jsx("option",{value:"",children:"(none)"}),m.filter(R=>R.id!==f.id).map(R=>I.jsxs("option",{value:R.id,children:[R.name," (",R.id,")"]},R.id))]})}),I.jsxs(W8,{label:"Source path",htmlFor:"ni-sourcepath",children:[I.jsx("input",{id:"ni-sourcepath",type:"text",value:f.sourcePath??"",onChange:R=>{const B=R.target.value;k(B===""?{sourcePath:void 0}:{sourcePath:B})},disabled:A,placeholder:"e.g. src/orders or src/payments/api.ts",className:"archik-input archik-mono w-full"}),I.jsx("div",{className:"mt-1 text-xs",style:{color:"var(--archik-fg-muted)"},children:"Relative to project root. Required for code-bearing kinds in normal/suggested files; optional when status is proposed or deprecated."})]}),I.jsx(W8,{label:"Lifecycle status",htmlFor:"ni-status",children:I.jsxs("select",{id:"ni-status",value:f.status??"active",onChange:R=>{const B=R.target.value;k(B==="active"?{status:void 0}:{status:B})},disabled:A,className:"archik-input w-full",children:[I.jsx("option",{value:"active",children:"active (default — built and live)"}),I.jsx("option",{value:"proposed",children:"proposed (planned, not built yet)"}),I.jsx("option",{value:"deprecated",children:"deprecated (being phased out)"})]})}),I.jsx(mVn,{interfaces:f.interfaces??[],onChange:R=>k({interfaces:R.length>0?R:void 0}),readOnly:A}),I.jsx(vVn,{responsibilities:f.responsibilities??[],onChange:R=>k({responsibilities:R.length>0?R:void 0}),readOnly:A}),I.jsx(yVn,{notes:f.notes??[],onChange:R=>k({notes:R.length>0?R:void 0}),readOnly:A}),f.seqFiles&&f.seqFiles.length>0&&I.jsxs("div",{children:[I.jsx("div",{className:"archik-label",children:"Sequence Diagrams"}),I.jsx("div",{className:"flex flex-col gap-1 mt-1",children:f.seqFiles.map(R=>{const B=R.replace(/^.*\//,"").replace(/\.archik\.seq\.yaml$/,""),J=`/__archik/seq?path=${encodeURIComponent(R)}${M?`&from-file=${encodeURIComponent(M)}`:""}`;return I.jsxs("a",{href:J,style:{display:"inline-flex",alignItems:"center",gap:4,fontSize:12,padding:"5px 10px",borderRadius:6,background:"var(--archik-status-proposed)",border:"none",color:"white",fontWeight:500,textDecoration:"none",cursor:"pointer"},children:[I.jsx(X1n,{size:12,strokeWidth:2}),B]},R)})})]}),I.jsx(gVn,{nodeId:f.id,allNodes:m}),I.jsx("div",{className:"mt-auto flex flex-col gap-2 pt-4 archik-divider",children:I.jsxs("button",{type:"button",onClick:()=>Nf.getState().setFocus(f.id,1),className:"archik-btn",style:{justifyContent:"center",padding:"8px 12px",display:"inline-flex",alignItems:"center",gap:6},title:"Show only this node and its direct neighbors",children:[I.jsx(W1n,{size:14,strokeWidth:1.8}),"Focus on this node"]})}),!A&&I.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[p!==void 0&&I.jsx("button",{type:"button",onClick:()=>p(f.id),className:"archik-btn archik-btn-primary",style:{justifyContent:"center",padding:"8px 12px"},children:"Connect to…"}),I.jsx("button",{type:"button",onClick:()=>d({type:"remove_node",id:f.id}),className:"archik-btn archik-btn-danger",style:{justifyContent:"center",padding:"8px 12px"},children:"Delete node"})]})]})}function gVn({nodeId:f,allNodes:d}){const p=d.some(k=>k.parentId===f),m=Nf(k=>k.collapsed),A=Nf(k=>k.toggleCollapse);if(!p)return null;const M=m.has(f);return I.jsx("div",{className:"flex flex-col gap-2 pt-2",children:I.jsxs("button",{type:"button",onClick:()=>A(f),className:"archik-btn",style:{justifyContent:"center",padding:"8px 12px",display:"inline-flex",alignItems:"center",gap:6},title:M?"Show child nodes on the canvas":"Hide child nodes on the canvas",children:[M?I.jsx(Aue,{size:14,strokeWidth:1.8}):I.jsx(Eue,{size:14,strokeWidth:1.8}),M?"Expand children":"Collapse children"]})})}const wVn={boundary:"Actor-facing surface — UI, API gateway, external adapter.",control:"Orchestrates use-case logic; coordinates boundary ↔ entity.",entity:"Long-lived domain state — persistent data, domain rules."};function pVn({value:f,onChange:d,readOnly:p}){return I.jsxs("div",{children:[I.jsx("div",{className:"archik-label",children:"ECB Stereotype"}),I.jsxs("div",{className:"flex flex-col gap-2 mt-1",children:[f&&I.jsx("span",{className:"archik-stereotype-pill","data-stereotype":f,children:f.toUpperCase()}),I.jsxs("select",{value:f??"",onChange:m=>{const A=m.target.value;d(A===""?void 0:A)},disabled:p,className:"archik-input w-full",children:[I.jsx("option",{value:"",children:"(none)"}),I.jsx("option",{value:"boundary",children:"boundary"}),I.jsx("option",{value:"control",children:"control"}),I.jsx("option",{value:"entity",children:"entity"})]}),f&&I.jsx("div",{className:"text-xs",style:{color:"var(--archik-fg-muted)"},children:wVn[f]})]})]})}function W8({label:f,htmlFor:d,children:p}){return I.jsxs("div",{children:[I.jsx("label",{htmlFor:d,className:"archik-label",children:f}),p]})}function mVn({interfaces:f,onChange:d,readOnly:p=!1}){const m=(k,R)=>{const B=f.map((J,ce)=>ce===k?{...J,...R}:J);d(B)},A=k=>{d(f.filter((R,B)=>B!==k))},M=()=>{d([...f,{name:"",protocol:""}])};return I.jsxs("div",{children:[I.jsxs("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",marginBottom:4},children:[I.jsx("span",{className:"archik-label",style:{margin:0},children:"Interfaces"}),I.jsx("span",{className:"archik-mono",style:{fontSize:10,color:"var(--archik-fg-muted)"},children:f.length})]}),f.length===0&&I.jsx("div",{style:{fontSize:11,color:"var(--archik-fg-muted)",fontStyle:"italic",marginBottom:6},children:"No interfaces yet."}),f.map((k,R)=>I.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4,marginBottom:10,padding:"8px",borderRadius:4,background:"var(--archik-bg-subtle, rgba(0,0,0,0.04))"},children:[I.jsxs("div",{style:{display:"flex",gap:4,alignItems:"center"},children:[I.jsx("input",{type:"text",value:k.name,onChange:B=>m(R,{name:B.target.value}),disabled:p,placeholder:"Interface name",className:"archik-input",style:{flex:1,fontSize:12}}),I.jsx("input",{type:"text",value:k.protocol,onChange:B=>m(R,{protocol:B.target.value}),disabled:p,placeholder:"Protocol",className:"archik-input",style:{width:80,fontSize:12}}),!p&&I.jsx("button",{type:"button",onClick:()=>A(R),title:"Remove interface","aria-label":"Remove interface",className:"archik-btn",style:{padding:"4px 8px",color:"var(--archik-danger)"},children:"×"})]}),I.jsx("input",{type:"text",value:k.description??"",onChange:B=>{const J=B.target.value;m(R,{description:J===""?void 0:J})},disabled:p,placeholder:"Description (optional)",className:"archik-input",style:{fontSize:11,color:"var(--archik-fg-muted)"}})]},R)),!p&&I.jsx("button",{type:"button",onClick:M,className:"archik-btn",style:{width:"100%",justifyContent:"center"},children:"+ Add interface"})]})}function vVn({responsibilities:f,onChange:d,readOnly:p=!1}){const m=(k,R)=>{const B=f.slice();B[k]=R,d(B)},A=k=>{d(f.filter((R,B)=>B!==k))},M=()=>{d([...f,""])};return I.jsxs("div",{children:[I.jsxs("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",marginBottom:4},children:[I.jsx("span",{className:"archik-label",style:{margin:0},children:"Responsibilities"}),I.jsx("span",{className:"archik-mono",style:{fontSize:10,color:"var(--archik-fg-muted)"},children:f.length})]}),f.length===0&&I.jsx("div",{style:{fontSize:11,color:"var(--archik-fg-muted)",fontStyle:"italic",marginBottom:6},children:"No responsibilities yet."}),f.map((k,R)=>I.jsxs("div",{style:{display:"flex",gap:4,marginBottom:6,alignItems:"center"},children:[I.jsx("input",{type:"text",value:k,onChange:B=>m(R,B.target.value),disabled:p,placeholder:`Responsibility ${R+1}`,className:"archik-input",style:{flex:1,fontSize:12}}),!p&&I.jsx("button",{type:"button",onClick:()=>A(R),title:"Remove responsibility","aria-label":"Remove responsibility",className:"archik-btn",style:{padding:"4px 8px",color:"var(--archik-danger)"},children:"×"})]},R)),!p&&I.jsx("button",{type:"button",onClick:M,className:"archik-btn",style:{width:"100%",justifyContent:"center"},children:"+ Add responsibility"})]})}function yVn({notes:f,onChange:d,readOnly:p=!1}){const m=(k,R)=>{const B=f.slice();B[k]=R,d(B)},A=k=>{d(f.filter((R,B)=>B!==k))},M=()=>{d([...f,""])};return I.jsxs("div",{children:[I.jsxs("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",marginBottom:4},children:[I.jsx("span",{className:"archik-label",style:{margin:0},children:"Notes"}),I.jsx("span",{className:"archik-mono",style:{fontSize:10,color:"var(--archik-fg-muted)"},children:f.length})]}),f.length===0&&I.jsx("div",{style:{fontSize:11,color:"var(--archik-fg-muted)",fontStyle:"italic",marginBottom:6},children:"No notes yet."}),f.map((k,R)=>I.jsxs("div",{style:{display:"flex",gap:4,marginBottom:6,alignItems:"flex-start"},children:[I.jsx("textarea",{value:k,onChange:B=>m(R,B.target.value),disabled:p,placeholder:`Note ${R+1}`,rows:2,className:"archik-input",style:{flex:1,resize:"vertical",fontSize:12}}),!p&&I.jsx("button",{type:"button",onClick:()=>A(R),title:"Remove note","aria-label":"Remove note",className:"archik-btn",style:{padding:"4px 8px",color:"var(--archik-danger)"},children:"×"})]},R)),!p&&I.jsx("button",{type:"button",onClick:M,className:"archik-btn",style:{width:"100%",justifyContent:"center"},children:"+ Add note"})]})}function kVn({edge:f,dispatch:d,readOnly:p=!1}){if(!f)return I.jsx("div",{className:"flex h-full flex-col items-center justify-center p-6 text-center text-sm",style:{color:"var(--archik-fg-muted)"},children:"Select an edge to edit its properties."});const m=A=>d({type:"update_edge",id:f.id,patch:A});return I.jsxs("div",{className:"flex h-full flex-col gap-4 overflow-y-auto p-4 text-sm",children:[I.jsxs("div",{children:[I.jsx("div",{className:"archik-label",children:"Id"}),I.jsx("div",{className:"archik-mono",children:f.id})]}),I.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[I.jsxs("div",{children:[I.jsx("div",{className:"archik-label",children:"From"}),I.jsx("div",{className:"archik-mono",children:f.from})]}),I.jsxs("div",{children:[I.jsx("div",{className:"archik-label",children:"To"}),I.jsx("div",{className:"archik-mono",children:f.to})]})]}),I.jsx(sI,{label:"Relationship",htmlFor:"ei-rel",children:I.jsx("select",{id:"ei-rel",value:f.relationship,onChange:A=>m({relationship:A.target.value}),disabled:p,className:"archik-input w-full",children:I0n.map(A=>I.jsx("option",{value:A,children:A},A))})}),I.jsx(sI,{label:"Label",htmlFor:"ei-label",children:I.jsx("input",{id:"ei-label",type:"text",value:f.label??"",onChange:A=>m({label:A.target.value}),disabled:p,placeholder:"optional",className:"archik-input w-full"})}),I.jsx(sI,{label:"Description",htmlFor:"ei-desc",children:I.jsx("textarea",{id:"ei-desc",value:f.description??"",onChange:A=>m({description:A.target.value}),disabled:p,rows:2,className:"archik-input w-full"})}),I.jsx(sI,{label:"Protocol",htmlFor:"ei-protocol",children:I.jsx("input",{id:"ei-protocol",type:"text",value:f.protocol??"",onChange:A=>m({protocol:A.target.value}),disabled:p,placeholder:"e.g. http, kafka",className:"archik-input w-full"})}),I.jsx(sI,{label:"Color",htmlFor:"ei-color",children:I.jsxs("div",{style:{display:"flex",gap:6,alignItems:"center"},children:[I.jsx("input",{id:"ei-color",type:"color",value:jVn(f.color)??"#cbd5e1",onChange:A=>m({color:A.target.value}),disabled:p,"aria-label":"Pick edge color",style:{width:28,height:28,padding:0,border:"1px solid var(--archik-border)",borderRadius:4,background:"transparent",cursor:p?"not-allowed":"pointer",flexShrink:0}}),I.jsx("input",{type:"text",value:f.color??"",onChange:A=>{const M=A.target.value.trim();m({color:M.length>0?M:void 0})},disabled:p,placeholder:"default (whitish)",className:"archik-input",style:{flex:1,fontFamily:"ui-monospace, monospace"}}),I.jsx("button",{type:"button",onClick:()=>m({color:void 0}),disabled:p||f.color===void 0,className:"archik-btn",title:"Reset to default color",children:"Reset"})]})}),I.jsx(sI,{label:"Lifecycle status",htmlFor:"ei-status",children:I.jsxs("select",{id:"ei-status",value:f.status??"active",onChange:A=>{const M=A.target.value;m(M==="active"?{status:void 0}:{status:M})},disabled:p,className:"archik-input w-full",children:[I.jsx("option",{value:"active",children:"active (default — built and live)"}),I.jsx("option",{value:"proposed",children:"proposed (planned, not built yet)"}),I.jsx("option",{value:"deprecated",children:"deprecated (being phased out)"})]})}),!p&&I.jsx("div",{className:"mt-auto pt-4 archik-divider",children:I.jsx("button",{type:"button",onClick:()=>d({type:"disconnect",id:f.id}),className:"archik-btn archik-btn-danger",style:{width:"100%",justifyContent:"center",padding:"8px 12px"},children:"Delete connection"})})]})}function jVn(f){if(!f)return null;const d=f.trim();if(/^#[0-9a-fA-F]{6}$/.test(d))return d.toLowerCase();if(/^#[0-9a-fA-F]{3}$/.test(d)){const p=d[1],m=d[2],A=d[3];return`#${p}${p}${m}${m}${A}${A}`.toLowerCase()}return null}function sI({label:f,htmlFor:d,children:p}){return I.jsxs("div",{children:[I.jsx("label",{htmlFor:d,className:"archik-label",children:f}),p]})}function SVn({onAdd:f}){const[d,p]=Xn.useState(!1),[m,A]=Xn.useState("service"),[M,k]=Xn.useState(""),[R,B]=Xn.useState(""),J=()=>{p(!1),k(""),B(""),A("service")},ce=()=>{const ie=M.trim(),le=R.trim();ie.length===0||le.length===0||(f(m,ie,le),J())};return Xn.useEffect(()=>{if(!d)return;const ie=le=>{le.key==="Escape"&&J()};return window.addEventListener("keydown",ie),()=>window.removeEventListener("keydown",ie)},[d]),I.jsxs(I.Fragment,{children:[I.jsx("button",{type:"button",onClick:()=>p(!0),className:"archik-btn",children:"+ Node"}),d&&I.jsx("div",{className:"archik-modal-overlay",onClick:J,children:I.jsxs("form",{onClick:ie=>ie.stopPropagation(),onSubmit:ie=>{ie.preventDefault(),ce()},className:"archik-modal",role:"dialog","aria-label":"Add node",children:[I.jsxs("div",{style:{display:"flex",alignItems:"baseline",gap:8,marginBottom:16},children:[I.jsx("h2",{style:{margin:0,fontSize:14,fontWeight:600,letterSpacing:"0.01em",color:"var(--archik-fg)"},children:"Add node"}),I.jsx("span",{style:{fontSize:11,color:"var(--archik-fg-dim)"},children:"routed through applyCommand"})]}),I.jsx("label",{className:"archik-label",htmlFor:"add-node-kind",children:"Kind"}),I.jsx("div",{style:{marginBottom:12},children:I.jsx(J0n,{id:"add-node-kind",value:m,onChange:ie=>A(ie)})}),I.jsx("label",{className:"archik-label",htmlFor:"add-node-name",children:"Name"}),I.jsx("input",{id:"add-node-name",type:"text",value:M,onChange:ie=>k(ie.target.value),placeholder:"e.g. Inventory Service",autoFocus:!0,className:"archik-input",style:{width:"100%",marginBottom:12}}),I.jsx("label",{className:"archik-label",htmlFor:"add-node-desc",children:"Description"}),I.jsx("textarea",{id:"add-node-desc",value:R,onChange:ie=>B(ie.target.value),placeholder:"What does it do? (required by the schema)",rows:2,className:"archik-input",style:{width:"100%",marginBottom:16,resize:"vertical"}}),I.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:8},children:[I.jsx("button",{type:"button",onClick:J,className:"archik-btn",children:"Cancel"}),I.jsx("button",{type:"submit",disabled:M.trim().length===0||R.trim().length===0,className:"archik-btn archik-btn-primary",children:"Add"})]})]})})]})}const EVn={stakeholders:"Stakeholders",requirements:"Requirements",softwareSystem:"Software System",work:"Work"},AVn="/__archik/alphas";async function xVn(f){const d=await fetch(AVn,{cache:"no-store",signal:f});if(!d.ok)throw new Error(`HTTP ${d.status} ${d.statusText}`);return await d.json()}function TVn(){return I.jsx(Ox,{align:"end",trigger:f=>I.jsxs("button",{type:"button",className:"archik-btn","aria-expanded":f,children:["Alphas",I.jsx("span",{style:{opacity:.6},children:f?"▴":"▾"})]}),children:()=>I.jsx(MVn,{})})}function MVn(){const[f,d]=Xn.useState({status:"loading"});return Xn.useEffect(()=>{let p=!1;const m=new AbortController;return xVn(m.signal).then(A=>{p||d({status:"ready",file:A.file,alphas:A.alphas??[]})}).catch(A=>{p||m.signal.aborted||d({status:"error",message:A instanceof Error?A.message:String(A)})}),()=>{p=!0,m.abort()}},[]),I.jsxs("div",{style:{minWidth:360,maxHeight:"min(70vh, 560px)",overflowY:"auto",padding:6},children:[I.jsx(_Vn,{label:"Essence alphas"}),f.status==="loading"&&I.jsx(H8e,{children:"Loading…"}),f.status==="error"&&I.jsxs(H8e,{tone:"error",children:["Couldn't load: ",f.message]}),f.status==="ready"&&f.file===null&&I.jsxs(H8e,{children:["No alphas file yet. Run"," ",I.jsx("code",{children:"archik alpha promote <alpha> <state>"})," to create one."]}),f.status==="ready"&&f.alphas.length>0&&I.jsx("div",{children:f.alphas.map(p=>I.jsx(OVn,{row:p},p.alpha))})]})}const CVn={verified:{glyph:"✓",tone:"var(--archik-status-active, #4ade80)",label:"verified"},"over-claimed":{glyph:"✗",tone:"var(--archik-status-deprecated, #f87171)",label:"over-claimed"},subjective:{glyph:"?",tone:"var(--archik-status-proposed, #fbbf24)",label:"subjective (no machine check)"},missing:{glyph:"·",tone:"var(--archik-fg-dim)",label:"unset"}};function OVn({row:f}){const[d,p]=Xn.useState(!1),m=CVn[f.verification],A=f.reason!==void 0||f.note!==void 0||f.evidence!==void 0&&f.evidence.length>0;return I.jsxs("div",{style:{padding:"8px 8px 6px",borderTop:"1px solid var(--archik-border)"},children:[I.jsxs("button",{type:"button",onClick:()=>A&&p(M=>!M),disabled:!A,"aria-expanded":d,style:{display:"grid",gridTemplateColumns:"16px 1fr auto",alignItems:"baseline",gap:8,width:"100%",padding:0,background:"transparent",border:"none",textAlign:"left",cursor:A?"pointer":"default",color:"inherit"},children:[I.jsx("span",{"aria-label":m.label,title:m.label,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:14,height:14,fontSize:11,fontWeight:600,color:m.tone},children:m.glyph}),I.jsxs("span",{style:{display:"flex",flexDirection:"column",gap:2},children:[I.jsx("span",{style:{fontSize:12,color:"var(--archik-fg)",fontWeight:500},children:EVn[f.alpha]??f.alpha}),I.jsx("span",{style:{fontSize:11,color:"var(--archik-fg-dim)"},children:f.state===null?"(unset)":I.jsxs(I.Fragment,{children:[I.jsx("code",{children:f.state})," ",I.jsxs("span",{style:{color:"var(--archik-fg-muted)"},children:[f.ladderIndex+1,"/",f.ladderLength]})]})})]}),A&&I.jsx("span",{style:{color:"var(--archik-fg-muted)",fontSize:10},children:d?"▴":"▾"})]}),d&&I.jsxs("div",{style:{paddingLeft:24,paddingTop:6,color:"var(--archik-fg-dim)",fontSize:11},children:[f.note&&I.jsxs("div",{style:{marginBottom:4},children:[I.jsx("span",{style:{color:"var(--archik-fg-muted)"},children:"note:"})," ",f.note]}),f.evidence&&f.evidence.length>0&&I.jsx("ul",{style:{margin:"4px 0",paddingLeft:16},children:f.evidence.map((M,k)=>I.jsx("li",{children:M},k))}),f.reason&&I.jsx("div",{style:{color:"var(--archik-status-deprecated, #f87171)",marginTop:4},children:f.reason})]})]})}function _Vn({label:f}){return I.jsx("div",{style:{position:"sticky",top:0,background:"var(--archik-panel)",fontSize:10,letterSpacing:"0.12em",textTransform:"uppercase",color:"var(--archik-fg-muted)",padding:"4px 6px 8px",zIndex:1},children:f})}function H8e({children:f,tone:d}){return I.jsx("div",{style:{padding:"8px 8px 12px",fontSize:12,color:d==="error"?"var(--archik-status-deprecated, #f87171)":"var(--archik-fg-dim)"},children:f})}const NVn={"--archik-canvas":"#050912","--archik-panel":"#0c1426","--archik-surface":"#14203a","--archik-surface-hover":"#1c2c4d","--archik-fg":"#e6edf7","--archik-fg-dim":"#8b9bb8","--archik-fg-muted":"#5b6a87","--archik-border":"#1d2b48","--archik-border-strong":"#2c3e63","--archik-accent":"#22d3ee","--archik-accent-bright":"#67e8f9","--archik-magenta":"#f472b6","--archik-success":"#34d399","--archik-warning":"#fbbf24","--archik-danger":"#fb7185","--archik-node-fill":"#0c1426","--archik-node-fill-tinted":"#142037","--archik-node-fill-frame":"#14203a","--archik-node-stroke":"#2c3e63","--archik-node-stroke-soft":"#1d2b48","--archik-node-text":"#e6edf7","--archik-node-text-dim":"#b6c2d8","--archik-node-caption":"#67e8f9","--archik-node-chrome-dot":"#475878","--archik-edge-filled":"#cbd5e1","--archik-edge-open":"#94a3b8","--archik-edge-dim":"#64748b","--archik-edge-async":"#67e8f9","--archik-grid-minor":"#0d1830","--archik-grid-major":"#182748","--archik-selected":"#22d3ee","--archik-selected-glow":"rgba(34, 211, 238, 0.28)"},IVn={"--archik-canvas":"#f8fafc","--archik-panel":"#ffffff","--archik-surface":"#f1f5f9","--archik-surface-hover":"#e2e8f0","--archik-fg":"#0f172a","--archik-fg-dim":"#475569","--archik-fg-muted":"#94a3b8","--archik-border":"#e2e8f0","--archik-border-strong":"#cbd5e1","--archik-accent":"#2563eb","--archik-accent-bright":"#3b82f6","--archik-magenta":"#db2777","--archik-success":"#10b981","--archik-warning":"#d97706","--archik-danger":"#e11d48","--archik-node-fill":"#ffffff","--archik-node-fill-tinted":"#f1f5f9","--archik-node-fill-frame":"#ffffff","--archik-node-stroke":"#0f172a","--archik-node-stroke-soft":"#475569","--archik-node-text":"#0f172a","--archik-node-text-dim":"#475569","--archik-node-caption":"#64748b","--archik-node-chrome-dot":"#cbd5f5","--archik-edge-filled":"#0f172a","--archik-edge-open":"#334155","--archik-edge-dim":"#64748b","--archik-edge-async":"#2563eb","--archik-grid-minor":"#e2e8f0","--archik-grid-major":"#cbd5e1","--archik-selected":"#2563eb","--archik-selected-glow":"rgba(37, 99, 235, 0.18)"};function M1n(f,d="dark"){const p=d==="light"?IVn:NVn;return f.replace(/var\(--archik-([a-z0-9-]+)\)/g,(m,A)=>p[`--archik-${A}`]??m)}const C1n=2,DVn=["canvas","panel","surface","surface-hover","fg","fg-dim","fg-muted","border","border-strong","accent","accent-bright","magenta","success","warning","danger","node-fill","node-fill-tinted","node-fill-frame","node-stroke","node-stroke-soft","node-text","node-text-dim","node-caption","node-chrome-dot","edge-filled","edge-open","edge-dim","edge-async","grid-minor","grid-major","selected","selected-glow","container-border"];function $Vn(f){if(typeof window>"u"||typeof document>"u")return M1n(f,"dark");const d=document.documentElement,p=getComputedStyle(d),m={};let A=!1;for(const M of DVn){const k=p.getPropertyValue(`--archik-${M}`).trim();k!==""&&(m[`--archik-${M}`]=k,A=!0)}return A?f.replace(/var\(--archik-([a-z0-9-]+)\)/g,(M,k)=>m[`--archik-${k}`]??M):M1n(f,"dark")}function H0n(f){const d=f.cloneNode(!0);for(const A of Array.from(d.querySelectorAll("[data-archik-selected]")))A.removeAttribute("data-archik-selected");d.getAttribute("xmlns")||d.setAttribute("xmlns","http://www.w3.org/2000/svg"),d.getAttribute("xmlns:xlink")||d.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink");const p=new XMLSerializer().serializeToString(d);return`<?xml version="1.0" encoding="UTF-8"?>
|
|
220
|
+
${k}`:R)}return{text:m}}const g7e={yaml:"application/yaml",json:"application/json"};function GXn(f,d){const p=nje(f),m=F0n(d,p),A=new Blob([m],{type:g7e[p]}),M=URL.createObjectURL(A),k=document.createElement("a");k.href=M,k.download=f,k.style.display="none",document.body.appendChild(k),k.click(),document.body.removeChild(k),URL.revokeObjectURL(M)}const UXn="archik:doc-changed",JXn="archik:suggestion-changed",w7e=new Set,p7e=new Set;function j1n(f){return q0n(),w7e.add(f),()=>{w7e.delete(f)}}function S1n(f){return q0n(),p7e.add(f),()=>{p7e.delete(f)}}function HXn(){for(const f of[...w7e])f()}function KXn(){for(const f of[...p7e])f()}let E1n=!1;function q0n(){if(!E1n&&(E1n=!0,!(typeof window>"u")&&typeof EventSource<"u"))try{const f=new EventSource("/__archik/events");f.addEventListener(UXn,()=>HXn()),f.addEventListener(JXn,()=>KXn())}catch{}}function m7e(f,d){const p=new Map(f.nodes.map(B=>[B.id,B])),m=new Map(d.nodes.map(B=>[B.id,B])),A=new Map(f.edges.map(B=>[B.id,B])),M=new Map(d.edges.map(B=>[B.id,B])),k={added:[],removed:[],changed:[],unchanged:[]},R={added:[],removed:[],changed:[],unchanged:[]};for(const[B,J]of m){const ce=p.get(B);if(ce===void 0)k.added.push(J);else{const ie=A1n(ce,J,ZXn);ie.length===0?k.unchanged.push(B):k.changed.push({node:J,before:ce,changes:ie})}}for(const[B,J]of p)m.has(B)||k.removed.push(J);for(const[B,J]of M){const ce=A.get(B);if(ce===void 0)R.added.push(J);else{const ie=A1n(ce,J,XXn);ie.length===0?R.unchanged.push(B):R.changed.push({edge:J,before:ce,changes:ie})}}for(const[B,J]of A)M.has(B)||R.removed.push(J);return{nodes:k,edges:R}}const ZXn=["kind","name","description","stack","parentId","responsibilities","interfaces","notes","metadata","archikFile","sourcePath","seqFiles","status","stereotype","owner"],XXn=["from","to","relationship","label","description","protocol","color","fromFile","toFile"];function A1n(f,d,p){const m=[];for(const A of p){const M=f[A],k=d[A];v7e(M,k)||m.push({field:A,before:M,after:k})}return m}function VXn(f,d){const p=G0n(m7e(f,d));new Map(f.nodes.map(M=>[M.id,M])),new Map(f.edges.map(M=>[M.id,M]));const m=[];for(const M of d.nodes)m.push(M);for(const M of f.nodes){if(!p.nodes.has(M.id)||p.nodes.get(M.id)!=="removed")continue;const k=M.parentId===void 0||d.nodes.some(R=>R.id===M.parentId)||f.nodes.some(R=>R.id===M.parentId&&p.nodes.get(R.id)==="removed");m.push(k?M:{...M,parentId:void 0})}const A=[];for(const M of d.edges)A.push(M);for(const M of f.edges)p.edges.get(M.id)==="removed"&&A.push(M);return{...d,nodes:m,edges:A}}function G0n(f){const d=new Map,p=new Map;for(const m of f.nodes.added)d.set(m.id,"added");for(const m of f.nodes.removed)d.set(m.id,"removed");for(const m of f.nodes.changed)d.set(m.node.id,"changed");for(const m of f.nodes.unchanged)d.set(m,"unchanged");for(const m of f.edges.added)p.set(m.id,"added");for(const m of f.edges.removed)p.set(m.id,"removed");for(const m of f.edges.changed)p.set(m.edge.id,"changed");for(const m of f.edges.unchanged)p.set(m,"unchanged");return{nodes:d,edges:p}}function v7e(f,d){if(Object.is(f,d))return!0;if(f===null||d===null||typeof f!="object"||typeof d!="object"||Array.isArray(f)!==Array.isArray(d))return!1;if(Array.isArray(f)&&Array.isArray(d)){if(f.length!==d.length)return!1;for(let k=0;k<f.length;k++)if(!v7e(f[k],d[k]))return!1;return!0}const p=f,m=d,A=Object.keys(p),M=Object.keys(m);if(A.length!==M.length)return!1;for(const k of A)if(!v7e(p[k],m[k]))return!1;return!0}class Kh extends Error{constructor(d){super(d),this.name="CommandError"}}function ok(f,d){return f.nodes.find(p=>p.id===d)}function WXn(f,d){if(ok(f,d.id))throw new Kh(`node id "${d.id}" already exists`);if(d.parentId!==void 0&&!ok(f,d.parentId))throw new Kh(`node "${d.id}" references missing parent "${d.parentId}"`);return{...f,nodes:[...f.nodes,d]}}function YXn(f,d){if(!ok(f,d))throw new Kh(`node "${d}" does not exist`);const p=f.nodes.find(m=>m.parentId===d);if(p)throw new Kh(`cannot remove "${d}": "${p.id}" still references it as parent`);return{...f,nodes:f.nodes.filter(m=>m.id!==d),edges:f.edges.filter(m=>m.from!==d&&m.to!==d)}}function QXn(f,d,p){let m=p;const A=new Set;for(;m;){if(m===d||A.has(m))return!0;A.add(m),m=f.nodes.find(M=>M.id===m)?.parentId}return!1}function eVn(f,d,p){const m=ok(f,d);if(!m)throw new Kh(`node "${d}" does not exist`);if("id"in p&&p.id!==void 0&&p.id!==d)throw new Kh(`update_node cannot change id (${d} → ${p.id})`);if(p.parentId!==void 0){if(p.parentId===d)throw new Kh(`node "${d}" cannot be its own parent`);if(!ok(f,p.parentId))throw new Kh(`node "${d}" references missing parent "${p.parentId}"`);if(QXn(f,d,p.parentId))throw new Kh(`setting parent of "${d}" to "${p.parentId}" would create a parent cycle`)}const A={...m,...p,id:d};return{...f,nodes:f.nodes.map(M=>M.id===d?A:M)}}function nVn(f,d){if(f.edges.some(p=>p.id===d.id))throw new Kh(`edge id "${d.id}" already exists`);if(!ok(f,d.from))throw new Kh(`edge "${d.id}" references missing from "${d.from}"`);if(!ok(f,d.to))throw new Kh(`edge "${d.id}" references missing to "${d.to}"`);return{...f,edges:[...f.edges,d]}}function tVn(f,d){if(!f.edges.some(p=>p.id===d))throw new Kh(`edge "${d}" does not exist`);return{...f,edges:f.edges.filter(p=>p.id!==d)}}function iVn(f,d,p){const m=f.edges.find(M=>M.id===d);if(!m)throw new Kh(`edge "${d}" does not exist`);if("id"in p&&p.id!==void 0&&p.id!==d)throw new Kh(`update_edge cannot change id (${d} → ${p.id})`);if(p.from!==void 0&&!ok(f,p.from))throw new Kh(`edge "${d}" references missing from "${p.from}"`);if(p.to!==void 0&&!ok(f,p.to))throw new Kh(`edge "${d}" references missing to "${p.to}"`);const A={...m,...p,id:d};return{...f,edges:f.edges.map(M=>M.id===d?A:M)}}function rVn(f,d){switch(d.type){case"add_node":return WXn(f,d.node);case"remove_node":return YXn(f,d.id);case"update_node":return eVn(f,d.id,d.patch);case"connect":return nVn(f,d.edge);case"disconnect":return tVn(f,d.id);case"update_edge":return iVn(f,d.id,d.patch);case"rename_document":return{...f,name:d.name};default:throw new Kh("unhandled command")}}function uI(f,d){const p=rVn(f,d);return L0n.parse(p)}function cVn(f,d,p){const m=new Map,A=(R,B)=>{const J=m.get(R)??new Set;J.add(B),m.set(R,J)};for(const R of f)A(R.from,R.to),A(R.to,R.from);const M=new Set([d]);let k=new Set([d]);for(let R=0;R<p;R++){const B=new Set;for(const J of k)for(const ce of m.get(J)??[])M.has(ce)||(M.add(ce),B.add(ce));if(B.size===0)break;k=B}return M}function uVn(f,d,p){const m=cVn(f.edges,d,p);return{...f,nodes:f.nodes.filter(A=>m.has(A.id)).map(A=>A.parentId!==void 0&&!m.has(A.parentId)?(({parentId:M,...k})=>k)(A):A),edges:f.edges.filter(A=>m.has(A.from)&&m.has(A.to))}}function sVn(f,d){return f!==null&&!d.nodes.some(p=>p.id===f.id)}function oVn(f,d){const p=new Set(d.hideRel??[]),m=d.onlyRel?new Set(d.onlyRel):null,A=f.edges.filter(M=>!(m&&!m.has(M.relationship)||p.has(M.relationship)||EXn(M.relationship)==="structural"));return{...f,edges:A}}function U0n(f,d){const p=new Map;for(const B of f.nodes)p.set(B.id,B.parentId);const m=B=>{let J=B,ce=B;const ie=new Set;for(;J!==void 0&&!ie.has(J);)ie.add(J),d.has(J)&&(ce=J),J=p.get(J);return ce},A=B=>m(B)!==B,M=f.nodes.filter(B=>!A(B.id)),k=new Set,R=[];for(const B of f.edges){const J=m(B.from),ce=m(B.to);if(J===ce)continue;const ie=`${J}|${ce}|${B.relationship}`;k.has(ie)||(k.add(ie),R.push({...B,from:J,to:ce}))}return{...f,nodes:M,edges:R}}function lVn(f,d){let p=f;return d.collapsed.size>0&&(p=U0n(p,d.collapsed)),d.focus&&(p=uVn(p,d.focus.id,d.focus.depth)),d.hideStructural&&(p=oVn(p,{})),p}function U8e(f){return f.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+/,"").replace(/-+$/,"").replace(/^[0-9]+/,"").replace(/^-+/,"")}function J8e(f,d,p="node"){const m=f.length>0?f:p;if(!d.has(m))return m;let A=2;for(;d.has(`${m}-${A}`);)A++;return`${m}-${A}`}const x1n=f=>{let d;const p=new Set,m=(J,ce)=>{const ie=typeof J=="function"?J(d):J;if(!Object.is(ie,d)){const le=d;d=ce??(typeof ie!="object"||ie===null)?ie:Object.assign({},d,ie),p.forEach(ye=>ye(d,le))}},A=()=>d,R={setState:m,getState:A,getInitialState:()=>B,subscribe:J=>(p.add(J),()=>p.delete(J))},B=d=f(m,A,R);return R},fVn=(f=>f?x1n(f):x1n),aVn=f=>f;function hVn(f,d=aVn){const p=qce.useSyncExternalStore(f.subscribe,qce.useCallback(()=>d(f.getState()),[f,d]),qce.useCallback(()=>d(f.getInitialState()),[f,d]));return qce.useDebugValue(p),p}const T1n=f=>{const d=fVn(f),p=m=>hVn(d,m);return Object.assign(p,d),p},dVn=(f=>f?T1n(f):T1n);function tue(f,d){return f.type===d.type&&f.id===d.id}const Nf=dVn(f=>({selection:[],connectFrom:null,selectNode:d=>f({selection:[{type:"node",id:d}]}),selectEdge:d=>f({selection:[{type:"edge",id:d}]}),toggleNode:d=>f(p=>{const m={type:"node",id:d};return{selection:p.selection.some(M=>tue(M,m))?p.selection.filter(M=>!tue(M,m)):[...p.selection,m]}}),toggleEdge:d=>f(p=>{const m={type:"edge",id:d};return{selection:p.selection.some(M=>tue(M,m))?p.selection.filter(M=>!tue(M,m)):[...p.selection,m]}}),clearSelection:()=>f({selection:[]}),startConnect:d=>f({connectFrom:d,selection:[]}),cancelConnect:()=>f({connectFrom:null}),collapsed:new Set,hideStructural:!1,focus:null,toggleCollapse:d=>f(p=>{const m=new Set(p.collapsed);return m.has(d)?m.delete(d):m.add(d),{collapsed:m,focus:null}}),collapseAll:d=>f({collapsed:new Set(d),focus:null}),expandAll:()=>f({collapsed:new Set}),setHideStructural:d=>f({hideStructural:d}),setFocus:(d,p)=>f({focus:{id:d,depth:p},collapsed:new Set}),setFocusDepth:d=>f(p=>p.focus?{focus:{id:p.focus.id,depth:d}}:{}),clearFocus:()=>f({focus:null})}));function Ox({trigger:f,align:d="end",children:p}){const[m,A]=Xn.useState(!1),M=Xn.useRef(null);return Xn.useEffect(()=>{if(!m)return;const k=B=>{M.current&&!M.current.contains(B.target)&&A(!1)},R=B=>{B.key==="Escape"&&A(!1)};return document.addEventListener("mousedown",k),document.addEventListener("keydown",R),()=>{document.removeEventListener("mousedown",k),document.removeEventListener("keydown",R)}},[m]),I.jsxs("div",{ref:M,style:{position:"relative",display:"inline-block"},children:[I.jsx("div",{onClick:()=>A(k=>!k),children:f(m)}),m&&I.jsx("div",{className:"archik-popover",style:{position:"absolute",top:"calc(100% + 6px)",...d==="end"?{right:0}:{left:0},zIndex:20,minWidth:200},children:p(()=>A(!1))})]})}function J0n({value:f,onChange:d,id:p,ariaLabel:m,disabled:A}){const M=zp[f],k=M.icon;return I.jsx(Ox,{align:"start",trigger:R=>I.jsxs("button",{id:p,type:"button","aria-label":m,"aria-expanded":R,disabled:A,className:"archik-input",style:{width:"100%",display:"flex",alignItems:"center",gap:8,cursor:A?"not-allowed":"pointer",textAlign:"left"},children:[I.jsx(k,{size:14,color:M.color,strokeWidth:1.8}),I.jsx("span",{style:{flex:1},children:f}),I.jsx("span",{style:{opacity:.5,fontSize:10},children:R?"▴":"▾"})]}),children:R=>I.jsx("div",{style:{minWidth:240,maxHeight:"min(60vh, 360px)",overflowY:"auto",padding:4},children:Y7e.map(B=>{const J=zp[B],ce=J.icon,ie=B===f;return I.jsxs("button",{type:"button",onClick:()=>{d(B),R()},className:"archik-menu-item",style:{background:ie?"var(--archik-surface-hover)":void 0},children:[I.jsx("span",{"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:16,color:J.color,flexShrink:0},children:I.jsx(ce,{size:14,strokeWidth:1.8})}),I.jsx("span",{style:{fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:11,minWidth:90},children:B}),I.jsx("span",{style:{color:"var(--archik-fg-dim)",fontSize:11,flex:1},children:J.description})]},B)})})})}function bVn({node:f,dispatch:d,onStartConnect:p,allNodes:m=[],readOnly:A=!1,viewKey:M}){if(!f)return I.jsx("div",{className:"flex h-full flex-col items-center justify-center p-6 text-center text-sm",style:{color:"var(--archik-fg-muted)"},children:"Select a node to edit its properties."});const k=R=>d({type:"update_node",id:f.id,patch:R});return I.jsxs("div",{className:"flex h-full flex-col gap-4 overflow-y-auto p-4 text-sm",children:[I.jsxs("div",{children:[I.jsx("div",{className:"archik-label",children:"Id"}),I.jsx("div",{className:"archik-mono",children:f.id})]}),I.jsx(W8,{label:"Name",htmlFor:"ni-name",children:I.jsx("input",{id:"ni-name",type:"text",value:f.name,onChange:R=>k({name:R.target.value}),disabled:A,className:"archik-input w-full"})}),I.jsx(W8,{label:"Kind",htmlFor:"ni-kind",children:I.jsx(J0n,{id:"ni-kind",value:f.kind,onChange:R=>k({kind:R}),disabled:A})}),I.jsx(pVn,{value:f.stereotype,onChange:R=>k({stereotype:R}),readOnly:A}),I.jsx(W8,{label:"Stack",htmlFor:"ni-stack",children:I.jsx("input",{id:"ni-stack",type:"text",value:f.stack??"",onChange:R=>k({stack:R.target.value}),disabled:A,placeholder:"e.g. Go, Postgres 16",className:"archik-input w-full"})}),I.jsx(W8,{label:"Owner",htmlFor:"ni-owner",children:I.jsx("input",{id:"ni-owner",type:"text",value:f.owner??"",onChange:R=>{const B=R.target.value;k(B===""?{owner:void 0}:{owner:B})},disabled:A,placeholder:"e.g. team-billing",className:"archik-input w-full"})}),I.jsx(W8,{label:"Description",htmlFor:"ni-desc",children:I.jsx("textarea",{id:"ni-desc",value:f.description??"",onChange:R=>k({description:R.target.value}),disabled:A,rows:3,className:"archik-input w-full"})}),I.jsx(W8,{label:"Parent (group)",htmlFor:"ni-parent",children:I.jsxs("select",{id:"ni-parent",value:f.parentId??"",onChange:R=>{const B=R.target.value;k(B===""?{parentId:void 0}:{parentId:B})},disabled:A,className:"archik-input w-full",children:[I.jsx("option",{value:"",children:"(none)"}),m.filter(R=>R.id!==f.id).map(R=>I.jsxs("option",{value:R.id,children:[R.name," (",R.id,")"]},R.id))]})}),I.jsxs(W8,{label:"Source path",htmlFor:"ni-sourcepath",children:[I.jsx("input",{id:"ni-sourcepath",type:"text",value:f.sourcePath??"",onChange:R=>{const B=R.target.value;k(B===""?{sourcePath:void 0}:{sourcePath:B})},disabled:A,placeholder:"e.g. src/orders or src/payments/api.ts",className:"archik-input archik-mono w-full"}),I.jsx("div",{className:"mt-1 text-xs",style:{color:"var(--archik-fg-muted)"},children:"Relative to project root. Required for code-bearing kinds in normal/suggested files; optional when status is proposed or deprecated."})]}),I.jsx(W8,{label:"Lifecycle status",htmlFor:"ni-status",children:I.jsxs("select",{id:"ni-status",value:f.status??"active",onChange:R=>{const B=R.target.value;k(B==="active"?{status:void 0}:{status:B})},disabled:A,className:"archik-input w-full",children:[I.jsx("option",{value:"active",children:"active (default — built and live)"}),I.jsx("option",{value:"proposed",children:"proposed (planned, not built yet)"}),I.jsx("option",{value:"deprecated",children:"deprecated (being phased out)"})]})}),I.jsx(mVn,{interfaces:f.interfaces??[],onChange:R=>k({interfaces:R.length>0?R:void 0}),readOnly:A}),I.jsx(vVn,{responsibilities:f.responsibilities??[],onChange:R=>k({responsibilities:R.length>0?R:void 0}),readOnly:A}),I.jsx(yVn,{notes:f.notes??[],onChange:R=>k({notes:R.length>0?R:void 0}),readOnly:A}),f.seqFiles&&f.seqFiles.length>0&&I.jsxs("div",{children:[I.jsx("div",{className:"archik-label",children:"Sequence Diagrams"}),I.jsx("div",{className:"flex flex-col gap-1 mt-1",children:f.seqFiles.map(R=>{const B=R.replace(/^.*\//,"").replace(/\.archik\.seq\.yaml$/,""),J=`/__archik/seq?path=${encodeURIComponent(R)}${M?`&from-file=${encodeURIComponent(M)}`:""}`;return I.jsxs("a",{href:J,style:{display:"inline-flex",alignItems:"center",gap:4,fontSize:12,padding:"5px 10px",borderRadius:6,background:"var(--archik-status-proposed)",border:"none",color:"white",fontWeight:500,textDecoration:"none",cursor:"pointer"},children:[I.jsx(X1n,{size:12,strokeWidth:2}),B]},R)})})]}),I.jsx(gVn,{nodeId:f.id,allNodes:m}),I.jsx("div",{className:"mt-auto flex flex-col gap-2 pt-4 archik-divider",children:I.jsxs("button",{type:"button",onClick:()=>Nf.getState().setFocus(f.id,1),className:"archik-btn",style:{justifyContent:"center",padding:"8px 12px",display:"inline-flex",alignItems:"center",gap:6},title:"Show only this node and its direct neighbors",children:[I.jsx(W1n,{size:14,strokeWidth:1.8}),"Focus on this node"]})}),!A&&I.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[p!==void 0&&I.jsx("button",{type:"button",onClick:()=>p(f.id),className:"archik-btn archik-btn-primary",style:{justifyContent:"center",padding:"8px 12px"},children:"Connect to…"}),I.jsx("button",{type:"button",onClick:()=>d({type:"remove_node",id:f.id}),className:"archik-btn archik-btn-danger",style:{justifyContent:"center",padding:"8px 12px"},children:"Delete node"})]})]})}function gVn({nodeId:f,allNodes:d}){const p=d.some(k=>k.parentId===f),m=Nf(k=>k.collapsed),A=Nf(k=>k.toggleCollapse);if(!p)return null;const M=m.has(f);return I.jsx("div",{className:"flex flex-col gap-2 pt-2",children:I.jsxs("button",{type:"button",onClick:()=>A(f),className:"archik-btn",style:{justifyContent:"center",padding:"8px 12px",display:"inline-flex",alignItems:"center",gap:6},title:M?"Show child nodes on the canvas":"Hide child nodes on the canvas",children:[M?I.jsx(Aue,{size:14,strokeWidth:1.8}):I.jsx(Eue,{size:14,strokeWidth:1.8}),M?"Expand children":"Collapse children"]})})}const wVn={boundary:"Actor-facing surface — UI, API gateway, external adapter.",control:"Orchestrates use-case logic; coordinates boundary ↔ entity.",entity:"Long-lived domain state — persistent data, domain rules."};function pVn({value:f,onChange:d,readOnly:p}){return I.jsxs("div",{children:[I.jsx("div",{className:"archik-label",children:"ECB Stereotype"}),I.jsxs("div",{className:"flex flex-col gap-2 mt-1",children:[f&&I.jsx("span",{className:"archik-stereotype-pill","data-stereotype":f,children:f.toUpperCase()}),I.jsxs("select",{value:f??"",onChange:m=>{const A=m.target.value;d(A===""?void 0:A)},disabled:p,className:"archik-input w-full",children:[I.jsx("option",{value:"",children:"(none)"}),I.jsx("option",{value:"boundary",children:"boundary"}),I.jsx("option",{value:"control",children:"control"}),I.jsx("option",{value:"entity",children:"entity"})]}),f&&I.jsx("div",{className:"text-xs",style:{color:"var(--archik-fg-muted)"},children:wVn[f]})]})]})}function W8({label:f,htmlFor:d,children:p}){return I.jsxs("div",{children:[I.jsx("label",{htmlFor:d,className:"archik-label",children:f}),p]})}function mVn({interfaces:f,onChange:d,readOnly:p=!1}){const m=(k,R)=>{const B=f.map((J,ce)=>ce===k?{...J,...R}:J);d(B)},A=k=>{d(f.filter((R,B)=>B!==k))},M=()=>{d([...f,{name:"",protocol:""}])};return I.jsxs("div",{children:[I.jsxs("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",marginBottom:4},children:[I.jsx("span",{className:"archik-label",style:{margin:0},children:"Interfaces"}),I.jsx("span",{className:"archik-mono",style:{fontSize:10,color:"var(--archik-fg-muted)"},children:f.length})]}),f.length===0&&I.jsx("div",{style:{fontSize:11,color:"var(--archik-fg-muted)",fontStyle:"italic",marginBottom:6},children:"No interfaces yet."}),f.map((k,R)=>I.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:4,marginBottom:10,padding:"8px",borderRadius:4,background:"var(--archik-bg-subtle, rgba(0,0,0,0.04))"},children:[I.jsxs("div",{style:{display:"flex",gap:4,alignItems:"center"},children:[I.jsx("input",{type:"text",value:k.name,onChange:B=>m(R,{name:B.target.value}),disabled:p,placeholder:"Interface name",className:"archik-input",style:{flex:1,fontSize:12}}),I.jsx("input",{type:"text",value:k.protocol,onChange:B=>m(R,{protocol:B.target.value}),disabled:p,placeholder:"Protocol",className:"archik-input",style:{width:80,fontSize:12}}),!p&&I.jsx("button",{type:"button",onClick:()=>A(R),title:"Remove interface","aria-label":"Remove interface",className:"archik-btn",style:{padding:"4px 8px",color:"var(--archik-danger)"},children:"×"})]}),I.jsx("input",{type:"text",value:k.description??"",onChange:B=>{const J=B.target.value;m(R,{description:J===""?void 0:J})},disabled:p,placeholder:"Description (optional)",className:"archik-input",style:{fontSize:11,color:"var(--archik-fg-muted)"}})]},R)),!p&&I.jsx("button",{type:"button",onClick:M,className:"archik-btn",style:{width:"100%",justifyContent:"center"},children:"+ Add interface"})]})}function vVn({responsibilities:f,onChange:d,readOnly:p=!1}){const m=(k,R)=>{const B=f.slice();B[k]=R,d(B)},A=k=>{d(f.filter((R,B)=>B!==k))},M=()=>{d([...f,""])};return I.jsxs("div",{children:[I.jsxs("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",marginBottom:4},children:[I.jsx("span",{className:"archik-label",style:{margin:0},children:"Responsibilities"}),I.jsx("span",{className:"archik-mono",style:{fontSize:10,color:"var(--archik-fg-muted)"},children:f.length})]}),f.length===0&&I.jsx("div",{style:{fontSize:11,color:"var(--archik-fg-muted)",fontStyle:"italic",marginBottom:6},children:"No responsibilities yet."}),f.map((k,R)=>I.jsxs("div",{style:{display:"flex",gap:4,marginBottom:6,alignItems:"center"},children:[I.jsx("input",{type:"text",value:k,onChange:B=>m(R,B.target.value),disabled:p,placeholder:`Responsibility ${R+1}`,className:"archik-input",style:{flex:1,fontSize:12}}),!p&&I.jsx("button",{type:"button",onClick:()=>A(R),title:"Remove responsibility","aria-label":"Remove responsibility",className:"archik-btn",style:{padding:"4px 8px",color:"var(--archik-danger)"},children:"×"})]},R)),!p&&I.jsx("button",{type:"button",onClick:M,className:"archik-btn",style:{width:"100%",justifyContent:"center"},children:"+ Add responsibility"})]})}function yVn({notes:f,onChange:d,readOnly:p=!1}){const m=(k,R)=>{const B=f.slice();B[k]=R,d(B)},A=k=>{d(f.filter((R,B)=>B!==k))},M=()=>{d([...f,""])};return I.jsxs("div",{children:[I.jsxs("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",marginBottom:4},children:[I.jsx("span",{className:"archik-label",style:{margin:0},children:"Notes"}),I.jsx("span",{className:"archik-mono",style:{fontSize:10,color:"var(--archik-fg-muted)"},children:f.length})]}),f.length===0&&I.jsx("div",{style:{fontSize:11,color:"var(--archik-fg-muted)",fontStyle:"italic",marginBottom:6},children:"No notes yet."}),f.map((k,R)=>I.jsxs("div",{style:{display:"flex",gap:4,marginBottom:6,alignItems:"flex-start"},children:[I.jsx("textarea",{value:k,onChange:B=>m(R,B.target.value),disabled:p,placeholder:`Note ${R+1}`,rows:2,className:"archik-input",style:{flex:1,resize:"vertical",fontSize:12}}),!p&&I.jsx("button",{type:"button",onClick:()=>A(R),title:"Remove note","aria-label":"Remove note",className:"archik-btn",style:{padding:"4px 8px",color:"var(--archik-danger)"},children:"×"})]},R)),!p&&I.jsx("button",{type:"button",onClick:M,className:"archik-btn",style:{width:"100%",justifyContent:"center"},children:"+ Add note"})]})}function kVn({edge:f,dispatch:d,readOnly:p=!1}){if(!f)return I.jsx("div",{className:"flex h-full flex-col items-center justify-center p-6 text-center text-sm",style:{color:"var(--archik-fg-muted)"},children:"Select an edge to edit its properties."});const m=A=>d({type:"update_edge",id:f.id,patch:A});return I.jsxs("div",{className:"flex h-full flex-col gap-4 overflow-y-auto p-4 text-sm",children:[I.jsxs("div",{children:[I.jsx("div",{className:"archik-label",children:"Id"}),I.jsx("div",{className:"archik-mono",children:f.id})]}),I.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[I.jsxs("div",{children:[I.jsx("div",{className:"archik-label",children:"From"}),I.jsx("div",{className:"archik-mono",children:f.from})]}),I.jsxs("div",{children:[I.jsx("div",{className:"archik-label",children:"To"}),I.jsx("div",{className:"archik-mono",children:f.to})]})]}),I.jsx(sI,{label:"Relationship",htmlFor:"ei-rel",children:I.jsx("select",{id:"ei-rel",value:f.relationship,onChange:A=>m({relationship:A.target.value}),disabled:p,className:"archik-input w-full",children:I0n.map(A=>I.jsx("option",{value:A,children:A},A))})}),I.jsx(sI,{label:"Label",htmlFor:"ei-label",children:I.jsx("input",{id:"ei-label",type:"text",value:f.label??"",onChange:A=>m({label:A.target.value}),disabled:p,placeholder:"optional",className:"archik-input w-full"})}),I.jsx(sI,{label:"Description",htmlFor:"ei-desc",children:I.jsx("textarea",{id:"ei-desc",value:f.description??"",onChange:A=>m({description:A.target.value}),disabled:p,rows:2,className:"archik-input w-full"})}),I.jsx(sI,{label:"Protocol",htmlFor:"ei-protocol",children:I.jsx("input",{id:"ei-protocol",type:"text",value:f.protocol??"",onChange:A=>m({protocol:A.target.value}),disabled:p,placeholder:"e.g. http, kafka",className:"archik-input w-full"})}),I.jsx(sI,{label:"Color",htmlFor:"ei-color",children:I.jsxs("div",{style:{display:"flex",gap:6,alignItems:"center"},children:[I.jsx("input",{id:"ei-color",type:"color",value:jVn(f.color)??"#cbd5e1",onChange:A=>m({color:A.target.value}),disabled:p,"aria-label":"Pick edge color",style:{width:28,height:28,padding:0,border:"1px solid var(--archik-border)",borderRadius:4,background:"transparent",cursor:p?"not-allowed":"pointer",flexShrink:0}}),I.jsx("input",{type:"text",value:f.color??"",onChange:A=>{const M=A.target.value.trim();m({color:M.length>0?M:void 0})},disabled:p,placeholder:"default (whitish)",className:"archik-input",style:{flex:1,fontFamily:"ui-monospace, monospace"}}),I.jsx("button",{type:"button",onClick:()=>m({color:void 0}),disabled:p||f.color===void 0,className:"archik-btn",title:"Reset to default color",children:"Reset"})]})}),I.jsx(sI,{label:"Lifecycle status",htmlFor:"ei-status",children:I.jsxs("select",{id:"ei-status",value:f.status??"active",onChange:A=>{const M=A.target.value;m(M==="active"?{status:void 0}:{status:M})},disabled:p,className:"archik-input w-full",children:[I.jsx("option",{value:"active",children:"active (default — built and live)"}),I.jsx("option",{value:"proposed",children:"proposed (planned, not built yet)"}),I.jsx("option",{value:"deprecated",children:"deprecated (being phased out)"})]})}),!p&&I.jsx("div",{className:"mt-auto pt-4 archik-divider",children:I.jsx("button",{type:"button",onClick:()=>d({type:"disconnect",id:f.id}),className:"archik-btn archik-btn-danger",style:{width:"100%",justifyContent:"center",padding:"8px 12px"},children:"Delete connection"})})]})}function jVn(f){if(!f)return null;const d=f.trim();if(/^#[0-9a-fA-F]{6}$/.test(d))return d.toLowerCase();if(/^#[0-9a-fA-F]{3}$/.test(d)){const p=d[1],m=d[2],A=d[3];return`#${p}${p}${m}${m}${A}${A}`.toLowerCase()}return null}function sI({label:f,htmlFor:d,children:p}){return I.jsxs("div",{children:[I.jsx("label",{htmlFor:d,className:"archik-label",children:f}),p]})}function SVn({onAdd:f}){const[d,p]=Xn.useState(!1),[m,A]=Xn.useState("service"),[M,k]=Xn.useState(""),[R,B]=Xn.useState(""),J=()=>{p(!1),k(""),B(""),A("service")},ce=()=>{const ie=M.trim(),le=R.trim();ie.length===0||le.length===0||(f(m,ie,le),J())};return Xn.useEffect(()=>{if(!d)return;const ie=le=>{le.key==="Escape"&&J()};return window.addEventListener("keydown",ie),()=>window.removeEventListener("keydown",ie)},[d]),I.jsxs(I.Fragment,{children:[I.jsx("button",{type:"button",onClick:()=>p(!0),className:"archik-btn",children:"+ Node"}),d&&I.jsx("div",{className:"archik-modal-overlay",onClick:J,children:I.jsxs("form",{onClick:ie=>ie.stopPropagation(),onSubmit:ie=>{ie.preventDefault(),ce()},className:"archik-modal",role:"dialog","aria-label":"Add node",children:[I.jsxs("div",{style:{display:"flex",alignItems:"baseline",gap:8,marginBottom:16},children:[I.jsx("h2",{style:{margin:0,fontSize:14,fontWeight:600,letterSpacing:"0.01em",color:"var(--archik-fg)"},children:"Add node"}),I.jsx("span",{style:{fontSize:11,color:"var(--archik-fg-dim)"},children:"routed through applyCommand"})]}),I.jsx("label",{className:"archik-label",htmlFor:"add-node-kind",children:"Kind"}),I.jsx("div",{style:{marginBottom:12},children:I.jsx(J0n,{id:"add-node-kind",value:m,onChange:ie=>A(ie)})}),I.jsx("label",{className:"archik-label",htmlFor:"add-node-name",children:"Name"}),I.jsx("input",{id:"add-node-name",type:"text",value:M,onChange:ie=>k(ie.target.value),placeholder:"e.g. Inventory Service",autoFocus:!0,className:"archik-input",style:{width:"100%",marginBottom:12}}),I.jsx("label",{className:"archik-label",htmlFor:"add-node-desc",children:"Description"}),I.jsx("textarea",{id:"add-node-desc",value:R,onChange:ie=>B(ie.target.value),placeholder:"What does it do? (required by the schema)",rows:2,className:"archik-input",style:{width:"100%",marginBottom:16,resize:"vertical"}}),I.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:8},children:[I.jsx("button",{type:"button",onClick:J,className:"archik-btn",children:"Cancel"}),I.jsx("button",{type:"submit",disabled:M.trim().length===0||R.trim().length===0,className:"archik-btn archik-btn-primary",children:"Add"})]})]})})]})}const EVn={stakeholders:"Stakeholders",requirements:"Requirements",softwareSystem:"Software System",work:"Work"},AVn="/__archik/alphas";async function xVn(f){const d=await fetch(AVn,{cache:"no-store",signal:f});if(!d.ok)throw new Error(`HTTP ${d.status} ${d.statusText}`);return await d.json()}function TVn(){return I.jsx(Ox,{align:"end",trigger:f=>I.jsxs("button",{type:"button",className:"archik-btn","aria-expanded":f,children:["Alphas",I.jsx("span",{style:{opacity:.6},children:f?"▴":"▾"})]}),children:()=>I.jsx(MVn,{})})}function MVn(){const[f,d]=Xn.useState({status:"loading"});return Xn.useEffect(()=>{let p=!1;const m=new AbortController;return xVn(m.signal).then(A=>{p||d({status:"ready",file:A.file,alphas:A.alphas??[]})}).catch(A=>{p||m.signal.aborted||d({status:"error",message:A instanceof Error?A.message:String(A)})}),()=>{p=!0,m.abort()}},[]),I.jsxs("div",{style:{minWidth:360,maxHeight:"min(70vh, 560px)",overflowY:"auto",padding:6},children:[I.jsx(_Vn,{label:"Essence alphas"}),f.status==="loading"&&I.jsx(H8e,{children:"Loading…"}),f.status==="error"&&I.jsxs(H8e,{tone:"error",children:["Couldn't load: ",f.message]}),f.status==="ready"&&f.file===null&&I.jsxs(H8e,{children:["No alphas file yet. Run"," ",I.jsx("code",{children:"archik alpha promote <alpha> <state>"})," to create one."]}),f.status==="ready"&&f.alphas.length>0&&I.jsx("div",{children:f.alphas.map(p=>I.jsx(OVn,{row:p},p.alpha))})]})}const CVn={verified:{glyph:"✓",tone:"var(--archik-status-active, #4ade80)",label:"verified"},"over-claimed":{glyph:"✗",tone:"var(--archik-status-deprecated, #f87171)",label:"over-claimed"},subjective:{glyph:"?",tone:"var(--archik-status-proposed, #fbbf24)",label:"subjective (no machine check)"},missing:{glyph:"·",tone:"var(--archik-fg-dim)",label:"unset"}};function OVn({row:f}){const[d,p]=Xn.useState(!1),m=CVn[f.verification],A=f.reason!==void 0||f.note!==void 0||f.evidence!==void 0&&f.evidence.length>0;return I.jsxs("div",{style:{padding:"8px 8px 6px",borderTop:"1px solid var(--archik-border)"},children:[I.jsxs("button",{type:"button",onClick:()=>A&&p(M=>!M),disabled:!A,"aria-expanded":d,style:{display:"grid",gridTemplateColumns:"16px 1fr auto",alignItems:"baseline",gap:8,width:"100%",padding:0,background:"transparent",border:"none",textAlign:"left",cursor:A?"pointer":"default",color:"inherit"},children:[I.jsx("span",{"aria-label":m.label,title:m.label,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:14,height:14,fontSize:11,fontWeight:600,color:m.tone},children:m.glyph}),I.jsxs("span",{style:{display:"flex",flexDirection:"column",gap:2},children:[I.jsx("span",{style:{fontSize:12,color:"var(--archik-fg)",fontWeight:500},children:EVn[f.alpha]??f.alpha}),I.jsx("span",{style:{fontSize:11,color:"var(--archik-fg-dim)"},children:f.state===null?"(unset)":I.jsxs(I.Fragment,{children:[I.jsx("code",{children:f.state})," ",I.jsxs("span",{style:{color:"var(--archik-fg-muted)"},children:[f.ladderIndex+1,"/",f.ladderLength]})]})})]}),A&&I.jsx("span",{style:{color:"var(--archik-fg-muted)",fontSize:10},children:d?"▴":"▾"})]}),d&&I.jsxs("div",{style:{paddingLeft:24,paddingTop:6,color:"var(--archik-fg-dim)",fontSize:11},children:[f.note&&I.jsxs("div",{style:{marginBottom:4},children:[I.jsx("span",{style:{color:"var(--archik-fg-muted)"},children:"note:"})," ",f.note]}),f.evidence&&f.evidence.length>0&&I.jsx("ul",{style:{margin:"4px 0",paddingLeft:16},children:f.evidence.map((M,k)=>I.jsx("li",{children:M},k))}),f.reason&&I.jsx("div",{style:{color:"var(--archik-status-deprecated, #f87171)",marginTop:4},children:f.reason})]})]})}function _Vn({label:f}){return I.jsx("div",{style:{position:"sticky",top:0,background:"var(--archik-panel)",fontSize:10,letterSpacing:"0.12em",textTransform:"uppercase",color:"var(--archik-fg-muted)",padding:"4px 6px 8px",zIndex:1},children:f})}function H8e({children:f,tone:d}){return I.jsx("div",{style:{padding:"8px 8px 12px",fontSize:12,color:d==="error"?"var(--archik-status-deprecated, #f87171)":"var(--archik-fg-dim)"},children:f})}const NVn={"--archik-canvas":"#000000","--archik-panel":"#0a0a0a","--archik-surface":"#161616","--archik-surface-hover":"#222222","--archik-fg":"#ffffff","--archik-fg-dim":"#c8c8c8","--archik-fg-muted":"#9a9a9a","--archik-border":"#262626","--archik-border-strong":"#3d3d3d","--archik-accent":"#22d3ee","--archik-accent-bright":"#67e8f9","--archik-magenta":"#f472b6","--archik-success":"#34d399","--archik-warning":"#fbbf24","--archik-danger":"#fb7185","--archik-node-fill":"#0c0c0c","--archik-node-fill-tinted":"#181818","--archik-node-fill-frame":"#101010","--archik-node-stroke":"#3d3d3d","--archik-node-stroke-soft":"#2a2a2a","--archik-node-text":"#ffffff","--archik-node-text-dim":"#d6d6d6","--archik-node-caption":"#67e8f9","--archik-node-chrome-dot":"#3a3a3a","--archik-edge-filled":"#ededed","--archik-edge-open":"#b0b0b0","--archik-edge-dim":"#7a7a7a","--archik-edge-async":"#67e8f9","--archik-grid-minor":"#0f0f0f","--archik-grid-major":"#1c1c1c","--archik-selected":"#22d3ee","--archik-selected-glow":"rgba(34, 211, 238, 0.28)"},IVn={"--archik-canvas":"#f8fafc","--archik-panel":"#ffffff","--archik-surface":"#f1f5f9","--archik-surface-hover":"#e2e8f0","--archik-fg":"#0f172a","--archik-fg-dim":"#475569","--archik-fg-muted":"#94a3b8","--archik-border":"#e2e8f0","--archik-border-strong":"#cbd5e1","--archik-accent":"#2563eb","--archik-accent-bright":"#3b82f6","--archik-magenta":"#db2777","--archik-success":"#10b981","--archik-warning":"#d97706","--archik-danger":"#e11d48","--archik-node-fill":"#ffffff","--archik-node-fill-tinted":"#f1f5f9","--archik-node-fill-frame":"#ffffff","--archik-node-stroke":"#0f172a","--archik-node-stroke-soft":"#475569","--archik-node-text":"#0f172a","--archik-node-text-dim":"#475569","--archik-node-caption":"#64748b","--archik-node-chrome-dot":"#cbd5f5","--archik-edge-filled":"#0f172a","--archik-edge-open":"#334155","--archik-edge-dim":"#64748b","--archik-edge-async":"#2563eb","--archik-grid-minor":"#e2e8f0","--archik-grid-major":"#cbd5e1","--archik-selected":"#2563eb","--archik-selected-glow":"rgba(37, 99, 235, 0.18)"};function M1n(f,d="dark"){const p=d==="light"?IVn:NVn;return f.replace(/var\(--archik-([a-z0-9-]+)\)/g,(m,A)=>p[`--archik-${A}`]??m)}const C1n=2,DVn=["canvas","panel","surface","surface-hover","fg","fg-dim","fg-muted","border","border-strong","accent","accent-bright","magenta","success","warning","danger","node-fill","node-fill-tinted","node-fill-frame","node-stroke","node-stroke-soft","node-text","node-text-dim","node-caption","node-chrome-dot","edge-filled","edge-open","edge-dim","edge-async","grid-minor","grid-major","selected","selected-glow","container-border"];function $Vn(f){if(typeof window>"u"||typeof document>"u")return M1n(f,"dark");const d=document.documentElement,p=getComputedStyle(d),m={};let A=!1;for(const M of DVn){const k=p.getPropertyValue(`--archik-${M}`).trim();k!==""&&(m[`--archik-${M}`]=k,A=!0)}return A?f.replace(/var\(--archik-([a-z0-9-]+)\)/g,(M,k)=>m[`--archik-${k}`]??M):M1n(f,"dark")}function H0n(f){const d=f.cloneNode(!0);for(const A of Array.from(d.querySelectorAll("[data-archik-selected]")))A.removeAttribute("data-archik-selected");d.getAttribute("xmlns")||d.setAttribute("xmlns","http://www.w3.org/2000/svg"),d.getAttribute("xmlns:xlink")||d.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink");const p=new XMLSerializer().serializeToString(d);return`<?xml version="1.0" encoding="UTF-8"?>
|
|
221
221
|
${$Vn(p)}
|
|
222
222
|
`}function LVn(f){return new Blob([H0n(f)],{type:"image/svg+xml;charset=utf-8"})}function RVn(f){return new Promise((d,p)=>{const m=H0n(f),A=new Blob([m],{type:"image/svg+xml;charset=utf-8"}),M=URL.createObjectURL(A);let k=parseFloat(f.getAttribute("width")??"0"),R=parseFloat(f.getAttribute("height")??"0");if(!Number.isFinite(k)||k<=0){const J=f.viewBox?.baseVal;k=J?J.width:f.clientWidth}if(!Number.isFinite(R)||R<=0){const J=f.viewBox?.baseVal;R=J?J.height:f.clientHeight}const B=new Image;B.onload=()=>{try{const J=document.createElement("canvas");J.width=Math.max(1,Math.round(k*C1n)),J.height=Math.max(1,Math.round(R*C1n));const ce=J.getContext("2d");if(!ce)throw new Error("2D canvas context unavailable");const ie=getComputedStyle(document.documentElement).getPropertyValue("--archik-canvas").trim();ie!==""&&(ce.fillStyle=ie,ce.fillRect(0,0,J.width,J.height)),ce.drawImage(B,0,0,J.width,J.height),J.toBlob(le=>{if(URL.revokeObjectURL(M),!le){p(new Error("canvas.toBlob returned null"));return}d(le)},"image/png")}catch(J){URL.revokeObjectURL(M),p(J instanceof Error?J:new Error(String(J)))}},B.onerror=()=>{URL.revokeObjectURL(M),p(new Error("Failed to rasterise SVG — image failed to load"))},B.src=M})}function O1n(f,d){if(typeof document>"u")return;const p=URL.createObjectURL(d),m=document.createElement("a");m.href=p,m.download=f,m.style.display="none",document.body.appendChild(m),m.click(),document.body.removeChild(m),setTimeout(()=>URL.revokeObjectURL(p),1e3)}function _1n(f,d){return`${(f.split("/").pop()??f).replace(/\.ya?ml$/i,"").replace(/^\./,"")}.${d}`}function PVn(f){const d=[];if(d.push(`### ${f.name} (${f.kind})`),f.id!==void 0&&d.push(`- **id**: \`${f.id}\``),f.status&&f.status!=="active"&&d.push(`- **status**: ${f.status}`),f.stack!==void 0&&d.push(`- **stack**: ${f.stack}`),f.description!==void 0&&d.push(`- **description**: ${f.description}`),f.parentId!==void 0&&d.push(`- **parent**: \`${f.parentId}\``),f.responsibilities&&f.responsibilities.length>0){d.push("- **responsibilities**:");for(const m of f.responsibilities)d.push(` - ${m}`)}if(f.interfaces&&f.interfaces.length>0){d.push("- **interfaces**:");for(const m of f.interfaces){const A=m.description!==void 0?` — ${m.description}`:"";d.push(` - \`${m.name}\` (${m.protocol})${A}`)}}const p=f.notes?.filter(m=>m.trim().length>0)??[];if(p.length>0){d.push("- **notes**:");for(const m of p)d.push(` - ${m}`)}return d.join(`
|
|
223
223
|
`)}function zVn(f,d){const p=d.get(f.from)?.name??f.from,m=d.get(f.to)?.name??f.to,A=f.label!==void 0?`: ${f.label}`:"",M=f.status&&f.status!=="active"?` _(${f.status})_`:"";return`- ${p} **${f.relationship}** ${m}${A}${M}`}function BVn(f){const d=new Map;for(const m of f.nodes)d.set(m.id,m);const p=[];if(p.push(`# ${f.name}`),f.description!==void 0&&p.push("",f.description),p.push("","## Components"),f.nodes.length===0)p.push("","_No components yet._");else for(const m of f.nodes)p.push("",PVn(m));if(p.push("","## Connections"),f.edges.length===0)p.push("","_No connections yet._");else{p.push("");for(const m of f.edges)p.push(zVn(m,d))}return`${p.join(`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-rose-700:oklch(51.4% .222 16.935);--spacing:.25rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-semibold:600;--tracking-tight:-.025em;--radius-md:.375rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-auto{margin-top:auto}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-full{height:100%}.h-screen{height:100vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.w-72{width:calc(var(--spacing) * 72)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.flex-1{flex:1}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-baseline{align-items:baseline}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.whitespace-pre-wrap{white-space:pre-wrap}.text-rose-700{color:var(--color-rose-700)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.hover\:no-underline:hover{text-decoration-line:none}}}:root,[data-theme=light]{--archik-canvas:#f8fafc;--archik-panel:#fff;--archik-surface:#f1f5f9;--archik-surface-hover:#e2e8f0;--archik-fg:#0f172a;--archik-fg-dim:#475569;--archik-fg-muted:#94a3b8;--archik-border:#e2e8f0;--archik-border-strong:#cbd5e1;--archik-accent:#2563eb;--archik-accent-bright:#3b82f6;--archik-magenta:#db2777;--archik-success:#10b981;--archik-warning:#d97706;--archik-danger:#e11d48;--archik-node-fill:#fff;--archik-node-fill-tinted:#f1f5f9;--archik-node-fill-frame:#fff;--archik-node-stroke:#0f172a;--archik-node-stroke-soft:#475569;--archik-container-border:#94a3b8;--archik-node-text:#0f172a;--archik-node-text-dim:#475569;--archik-node-caption:#64748b;--archik-node-chrome-dot:#cbd5f5;--archik-edge-filled:#0f172a;--archik-edge-open:#334155;--archik-edge-dim:#64748b;--archik-edge-async:#2563eb;--archik-grid-minor:#e2e8f0;--archik-grid-major:#cbd5e1;--archik-selected:#2563eb;--archik-selected-glow:#2563eb2e;--archik-status-proposed:#6366f1;--archik-status-deprecated:#d97706;--archik-stereotype-boundary:#0369a1;--archik-stereotype-control:#b45309;--archik-stereotype-entity:#15803d;color-scheme:light}[data-theme=dark]{--archik-canvas:#000;--archik-panel:#0a0a0a;--archik-surface:#161616;--archik-surface-hover:#222;--archik-fg:#fff;--archik-fg-dim:#c8c8c8;--archik-fg-muted:#9a9a9a;--archik-border:#262626;--archik-border-strong:#3d3d3d;--archik-accent:#22d3ee;--archik-accent-bright:#67e8f9;--archik-magenta:#f472b6;--archik-success:#34d399;--archik-warning:#fbbf24;--archik-danger:#fb7185;--archik-node-fill:#0c0c0c;--archik-node-fill-tinted:#181818;--archik-node-fill-frame:#101010;--archik-node-stroke:#3d3d3d;--archik-node-stroke-soft:#2a2a2a;--archik-container-border:#4a4a4a;--archik-node-text:#fff;--archik-node-text-dim:#d6d6d6;--archik-node-caption:#67e8f9;--archik-node-chrome-dot:#3a3a3a;--archik-edge-filled:#ededed;--archik-edge-open:#b0b0b0;--archik-edge-dim:#7a7a7a;--archik-edge-async:#67e8f9;--archik-grid-minor:#0f0f0f;--archik-grid-major:#1c1c1c;--archik-selected:#22d3ee;--archik-selected-glow:#22d3ee47;--archik-status-proposed:#818cf8;--archik-status-deprecated:#fbbf24;--archik-stereotype-boundary:#38bdf8;--archik-stereotype-control:#f59e0b;--archik-stereotype-entity:#22c55e;color-scheme:dark}html,body,#root{background:var(--archik-canvas);height:100%;color:var(--archik-fg);-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,system-ui,sans-serif}.archik-panel{background:var(--archik-panel);border:1px solid var(--archik-border);border-radius:8px}.archik-input{background:var(--archik-surface);color:var(--archik-fg);border:1px solid var(--archik-border);font:inherit;border-radius:4px;outline:none;padding:4px 8px;font-size:12px;transition:border-color .12s,box-shadow .12s}.archik-input:focus{border-color:var(--archik-accent);box-shadow:0 0 0 3px var(--archik-selected-glow)}.archik-btn{background:var(--archik-surface);color:var(--archik-fg);border:1px solid var(--archik-border);cursor:pointer;border-radius:4px;align-items:center;gap:4px;padding:5px 10px;font-size:12px;font-weight:500;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.archik-btn:hover{background:var(--archik-surface-hover);border-color:var(--archik-border-strong)}.archik-btn:disabled{opacity:.5;cursor:not-allowed}.archik-focus-step{width:22px;height:22px;color:var(--archik-fg-dim);cursor:pointer;background:0 0;border:none;border-radius:5px;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:inline-flex}.archik-focus-step:hover:not(:disabled){background:var(--archik-accent)}@supports (color:color-mix(in lab,red,red)){.archik-focus-step:hover:not(:disabled){background:color-mix(in srgb,var(--archik-accent) 22%,transparent)}}.archik-focus-step:hover:not(:disabled){color:var(--archik-accent)}.archik-focus-step:focus-visible{outline:2px solid var(--archik-accent);outline-offset:1px}.archik-focus-step:disabled{opacity:.4;cursor:not-allowed}.archik-btn-primary{background:var(--archik-accent);border-color:var(--archik-accent);color:#000}.archik-btn-primary:hover{background:var(--archik-accent-bright);border-color:var(--archik-accent-bright)}[data-theme=light] .archik-btn-primary{color:#fff}.archik-btn-danger{color:var(--archik-danger);border-color:var(--archik-danger);background:0 0;border-style:dashed}.archik-btn-danger:hover{background:var(--archik-danger);color:#000;border-style:solid}.archik-pill{letter-spacing:.02em;border:1px solid #0000;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;display:inline-flex}.archik-pill--info{color:var(--archik-accent);border-color:var(--archik-border-strong);background:var(--archik-accent)}@supports (color:color-mix(in lab,red,red)){.archik-pill--info{background:color-mix(in oklab,var(--archik-accent) 8%,transparent)}}.archik-pill--success{color:var(--archik-success);background:var(--archik-success)}@supports (color:color-mix(in lab,red,red)){.archik-pill--success{background:color-mix(in oklab,var(--archik-success) 12%,transparent)}}.archik-pill--warning{color:var(--archik-warning);background:var(--archik-warning)}@supports (color:color-mix(in lab,red,red)){.archik-pill--warning{background:color-mix(in oklab,var(--archik-warning) 14%,transparent)}}.archik-pill--danger{color:var(--archik-danger);background:var(--archik-danger)}@supports (color:color-mix(in lab,red,red)){.archik-pill--danger{background:color-mix(in oklab,var(--archik-danger) 14%,transparent)}}.archik-label{letter-spacing:.12em;text-transform:uppercase;color:var(--archik-fg-muted);margin-bottom:4px;font-size:10px;display:block}.archik-mono{color:var(--archik-fg);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.archik-divider{border-top:1px solid var(--archik-border)}.archik-grid{background-color:var(--archik-canvas);background-image:radial-gradient(var(--archik-grid-minor) 1px,transparent 1px),radial-gradient(var(--archik-grid-major) 1px,transparent 1px);background-position:0 0,0 0;background-size:20px 20px,100px 100px}.archik-selected-glow{filter:drop-shadow(0 0 6px var(--archik-selected-glow)) drop-shadow(0 0 2px var(--archik-selected-glow));animation:1.8s ease-in-out infinite archikPulse}[data-archik-node-id][data-archik-status=proposed]{opacity:.82}[data-archik-node-id][data-archik-status=proposed] rect,[data-archik-node-id][data-archik-status=proposed] path,[data-archik-node-id][data-archik-status=proposed] ellipse,[data-archik-node-id][data-archik-status=proposed] line{stroke:var(--archik-status-proposed);stroke-dasharray:5 3}[data-archik-node-id][data-archik-status=deprecated]{opacity:.7}[data-archik-node-id][data-archik-status=deprecated] rect,[data-archik-node-id][data-archik-status=deprecated] path,[data-archik-node-id][data-archik-status=deprecated] ellipse,[data-archik-node-id][data-archik-status=deprecated] line{stroke:var(--archik-status-deprecated);stroke-dasharray:2 4}[data-archik-node-id][data-archik-status=deprecated] text{text-decoration:line-through;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--archik-status-deprecated);text-decoration-color:var(--archik-status-deprecated)}.archik-stereotype-band{pointer-events:none}[data-archik-stereotype=boundary] .archik-stereotype-band{fill:var(--archik-stereotype-boundary)}[data-archik-stereotype=control] .archik-stereotype-band{fill:var(--archik-stereotype-control)}[data-archik-stereotype=entity] .archik-stereotype-band{fill:var(--archik-stereotype-entity)}.archik-stereotype-pill{letter-spacing:.08em;border:1px solid #0000;border-radius:10px;align-self:flex-start;align-items:center;padding:3px 10px;font-size:10px;font-weight:700;display:inline-flex}.archik-stereotype-pill[data-stereotype=boundary]{background:var(--archik-stereotype-boundary)}@supports (color:color-mix(in lab,red,red)){.archik-stereotype-pill[data-stereotype=boundary]{background:color-mix(in srgb,var(--archik-stereotype-boundary) 15%,transparent)}}.archik-stereotype-pill[data-stereotype=boundary]{border-color:var(--archik-stereotype-boundary);color:var(--archik-stereotype-boundary)}.archik-stereotype-pill[data-stereotype=control]{background:var(--archik-stereotype-control)}@supports (color:color-mix(in lab,red,red)){.archik-stereotype-pill[data-stereotype=control]{background:color-mix(in srgb,var(--archik-stereotype-control) 15%,transparent)}}.archik-stereotype-pill[data-stereotype=control]{border-color:var(--archik-stereotype-control);color:var(--archik-stereotype-control)}.archik-stereotype-pill[data-stereotype=entity]{background:var(--archik-stereotype-entity)}@supports (color:color-mix(in lab,red,red)){.archik-stereotype-pill[data-stereotype=entity]{background:color-mix(in srgb,var(--archik-stereotype-entity) 15%,transparent)}}.archik-stereotype-pill[data-stereotype=entity]{border-color:var(--archik-stereotype-entity);color:var(--archik-stereotype-entity)}@keyframes archikPulse{0%,to{filter:drop-shadow(0 0 4px var(--archik-selected-glow)) drop-shadow(0 0 1px var(--archik-selected-glow))}50%{filter:drop-shadow(0 0 12px var(--archik-selected-glow)) drop-shadow(0 0 3px var(--archik-selected-glow))}}.archik-modal-overlay{z-index:50;background:var(--archik-canvas);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}@supports (color:color-mix(in lab,red,red)){.archik-modal-overlay{background:color-mix(in oklab,var(--archik-canvas) 70%,transparent)}}.archik-modal-overlay{-webkit-backdrop-filter:blur(4px);animation:.14s ease-out archikFadeIn}.archik-modal{background:var(--archik-panel);border:1px solid var(--archik-border);width:360px;max-width:calc(100vw - 32px);box-shadow:0 12px 40px #00000059,0 0 0 1px var(--archik-border-strong);border-radius:8px;padding:16px;animation:.2s cubic-bezier(.2,.8,.2,1) archikModalIn}.archik-selected-outline{fill:none;stroke:var(--archik-selected);stroke-width:2px;pointer-events:none}@keyframes archikEdgeFlow{0%{stroke-dashoffset:0}to{stroke-dashoffset:calc(-1 * var(--archik-dash-period,8) * 1px)}}.archik-edge-flowing{animation:1.4s linear infinite archikEdgeFlow}@media(prefers-reduced-motion:reduce){.archik-edge-flowing{animation:none}}.archik-popover{background:var(--archik-panel);border:1px solid var(--archik-border-strong);border-radius:6px;flex-direction:column;max-height:min(80vh,600px);padding:4px;animation:.16s cubic-bezier(.2,.8,.2,1) archikModalIn;display:flex;overflow:hidden;box-shadow:0 12px 32px #00000059}.archik-menu-item{width:100%;color:var(--archik-fg);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:4px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:flex}.archik-menu-item:hover{background:var(--archik-surface-hover)}.archik-menu-item--danger{color:var(--archik-danger)}@keyframes archikFadeIn{0%{opacity:0}to{opacity:1}}@keyframes archikModalIn{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}.archik-drawer-shell{flex-direction:column;min-width:0;transition:width .22s cubic-bezier(.2,.8,.2,1),opacity .2s,margin-left .22s cubic-bezier(.2,.8,.2,1);display:flex;overflow:hidden}.archik-drawer-shell--open{opacity:1;width:320px;margin-left:16px}.archik-drawer-shell--closed{opacity:0;pointer-events:none;width:0;margin-left:0}.archik-drawer-content{flex-shrink:0;width:320px;height:100%}.archik-drawer-fade{animation:.22s ease-out archikFadeIn}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
|
package/dist/ui/index.html
CHANGED
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
}
|
|
15
15
|
} catch {}
|
|
16
16
|
</script>
|
|
17
|
-
<script type="module" crossorigin src="/assets/index-
|
|
18
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
17
|
+
<script type="module" crossorigin src="/assets/index-CHprccC7.js"></script>
|
|
18
|
+
<link rel="stylesheet" crossorigin href="/assets/index-ChT3p5Ns.css">
|
|
19
19
|
</head>
|
|
20
20
|
<body>
|
|
21
21
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "archik",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.1",
|
|
4
4
|
"description": "The shared vocabulary between you and Claude Code, at the engineering level. Plain-YAML architecture diagrams with a live browser canvas, headless SVG render in CI, and an installable Claude skill so the model treats the diagram as the spec.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"architecture",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-rose-700:oklch(51.4% .222 16.935);--spacing:.25rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-semibold:600;--tracking-tight:-.025em;--radius-md:.375rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-auto{margin-top:auto}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-full{height:100%}.h-screen{height:100vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.w-72{width:calc(var(--spacing) * 72)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.flex-1{flex:1}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-baseline{align-items:baseline}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.whitespace-pre-wrap{white-space:pre-wrap}.text-rose-700{color:var(--color-rose-700)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.hover\:no-underline:hover{text-decoration-line:none}}}:root,[data-theme=light]{--archik-canvas:#f8fafc;--archik-panel:#fff;--archik-surface:#f1f5f9;--archik-surface-hover:#e2e8f0;--archik-fg:#0f172a;--archik-fg-dim:#475569;--archik-fg-muted:#94a3b8;--archik-border:#e2e8f0;--archik-border-strong:#cbd5e1;--archik-accent:#2563eb;--archik-accent-bright:#3b82f6;--archik-magenta:#db2777;--archik-success:#10b981;--archik-warning:#d97706;--archik-danger:#e11d48;--archik-node-fill:#fff;--archik-node-fill-tinted:#f1f5f9;--archik-node-fill-frame:#fff;--archik-node-stroke:#0f172a;--archik-node-stroke-soft:#475569;--archik-container-border:#94a3b8;--archik-node-text:#0f172a;--archik-node-text-dim:#475569;--archik-node-caption:#64748b;--archik-node-chrome-dot:#cbd5f5;--archik-edge-filled:#0f172a;--archik-edge-open:#334155;--archik-edge-dim:#64748b;--archik-edge-async:#2563eb;--archik-grid-minor:#e2e8f0;--archik-grid-major:#cbd5e1;--archik-selected:#2563eb;--archik-selected-glow:#2563eb2e;--archik-status-proposed:#6366f1;--archik-status-deprecated:#d97706;--archik-stereotype-boundary:#0369a1;--archik-stereotype-control:#b45309;--archik-stereotype-entity:#15803d;color-scheme:light}[data-theme=dark]{--archik-canvas:#050912;--archik-panel:#0c1426;--archik-surface:#14203a;--archik-surface-hover:#1c2c4d;--archik-fg:#e6edf7;--archik-fg-dim:#8b9bb8;--archik-fg-muted:#5b6a87;--archik-border:#1d2b48;--archik-border-strong:#2c3e63;--archik-accent:#22d3ee;--archik-accent-bright:#67e8f9;--archik-magenta:#f472b6;--archik-success:#34d399;--archik-warning:#fbbf24;--archik-danger:#fb7185;--archik-node-fill:#0c1426;--archik-node-fill-tinted:#142037;--archik-node-fill-frame:#14203a;--archik-node-stroke:#2c3e63;--archik-node-stroke-soft:#1d2b48;--archik-container-border:#3a4f7a;--archik-node-text:#e6edf7;--archik-node-text-dim:#b6c2d8;--archik-node-caption:#67e8f9;--archik-node-chrome-dot:#475878;--archik-edge-filled:#cbd5e1;--archik-edge-open:#94a3b8;--archik-edge-dim:#64748b;--archik-edge-async:#67e8f9;--archik-grid-minor:#0d1830;--archik-grid-major:#182748;--archik-selected:#22d3ee;--archik-selected-glow:#22d3ee47;--archik-status-proposed:#818cf8;--archik-status-deprecated:#fbbf24;--archik-stereotype-boundary:#38bdf8;--archik-stereotype-control:#f59e0b;--archik-stereotype-entity:#22c55e;color-scheme:dark}html,body,#root{background:var(--archik-canvas);height:100%;color:var(--archik-fg);-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,system-ui,sans-serif}.archik-panel{background:var(--archik-panel);border:1px solid var(--archik-border);border-radius:8px}.archik-input{background:var(--archik-surface);color:var(--archik-fg);border:1px solid var(--archik-border);font:inherit;border-radius:4px;outline:none;padding:4px 8px;font-size:12px;transition:border-color .12s,box-shadow .12s}.archik-input:focus{border-color:var(--archik-accent);box-shadow:0 0 0 3px var(--archik-selected-glow)}.archik-btn{background:var(--archik-surface);color:var(--archik-fg);border:1px solid var(--archik-border);cursor:pointer;border-radius:4px;align-items:center;gap:4px;padding:5px 10px;font-size:12px;font-weight:500;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.archik-btn:hover{background:var(--archik-surface-hover);border-color:var(--archik-border-strong)}.archik-btn:disabled{opacity:.5;cursor:not-allowed}.archik-focus-step{width:22px;height:22px;color:var(--archik-fg-dim);cursor:pointer;background:0 0;border:none;border-radius:5px;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:inline-flex}.archik-focus-step:hover:not(:disabled){background:var(--archik-accent)}@supports (color:color-mix(in lab,red,red)){.archik-focus-step:hover:not(:disabled){background:color-mix(in srgb,var(--archik-accent) 22%,transparent)}}.archik-focus-step:hover:not(:disabled){color:var(--archik-accent)}.archik-focus-step:focus-visible{outline:2px solid var(--archik-accent);outline-offset:1px}.archik-focus-step:disabled{opacity:.4;cursor:not-allowed}.archik-btn-primary{background:var(--archik-accent);border-color:var(--archik-accent);color:#050912}.archik-btn-primary:hover{background:var(--archik-accent-bright);border-color:var(--archik-accent-bright)}[data-theme=light] .archik-btn-primary{color:#fff}.archik-btn-danger{color:var(--archik-danger);border-color:var(--archik-danger);background:0 0;border-style:dashed}.archik-btn-danger:hover{background:var(--archik-danger);color:#050912;border-style:solid}.archik-pill{letter-spacing:.02em;border:1px solid #0000;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;display:inline-flex}.archik-pill--info{color:var(--archik-accent);border-color:var(--archik-border-strong);background:var(--archik-accent)}@supports (color:color-mix(in lab,red,red)){.archik-pill--info{background:color-mix(in oklab,var(--archik-accent) 8%,transparent)}}.archik-pill--success{color:var(--archik-success);background:var(--archik-success)}@supports (color:color-mix(in lab,red,red)){.archik-pill--success{background:color-mix(in oklab,var(--archik-success) 12%,transparent)}}.archik-pill--warning{color:var(--archik-warning);background:var(--archik-warning)}@supports (color:color-mix(in lab,red,red)){.archik-pill--warning{background:color-mix(in oklab,var(--archik-warning) 14%,transparent)}}.archik-pill--danger{color:var(--archik-danger);background:var(--archik-danger)}@supports (color:color-mix(in lab,red,red)){.archik-pill--danger{background:color-mix(in oklab,var(--archik-danger) 14%,transparent)}}.archik-label{letter-spacing:.12em;text-transform:uppercase;color:var(--archik-fg-muted);margin-bottom:4px;font-size:10px;display:block}.archik-mono{color:var(--archik-fg);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.archik-divider{border-top:1px solid var(--archik-border)}.archik-grid{background-color:var(--archik-canvas);background-image:radial-gradient(var(--archik-grid-minor) 1px,transparent 1px),radial-gradient(var(--archik-grid-major) 1px,transparent 1px);background-position:0 0,0 0;background-size:20px 20px,100px 100px}.archik-selected-glow{filter:drop-shadow(0 0 6px var(--archik-selected-glow)) drop-shadow(0 0 2px var(--archik-selected-glow));animation:1.8s ease-in-out infinite archikPulse}[data-archik-node-id][data-archik-status=proposed]{opacity:.82}[data-archik-node-id][data-archik-status=proposed] rect,[data-archik-node-id][data-archik-status=proposed] path,[data-archik-node-id][data-archik-status=proposed] ellipse,[data-archik-node-id][data-archik-status=proposed] line{stroke:var(--archik-status-proposed);stroke-dasharray:5 3}[data-archik-node-id][data-archik-status=deprecated]{opacity:.7}[data-archik-node-id][data-archik-status=deprecated] rect,[data-archik-node-id][data-archik-status=deprecated] path,[data-archik-node-id][data-archik-status=deprecated] ellipse,[data-archik-node-id][data-archik-status=deprecated] line{stroke:var(--archik-status-deprecated);stroke-dasharray:2 4}[data-archik-node-id][data-archik-status=deprecated] text{text-decoration:line-through;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--archik-status-deprecated);text-decoration-color:var(--archik-status-deprecated)}.archik-stereotype-band{pointer-events:none}[data-archik-stereotype=boundary] .archik-stereotype-band{fill:var(--archik-stereotype-boundary)}[data-archik-stereotype=control] .archik-stereotype-band{fill:var(--archik-stereotype-control)}[data-archik-stereotype=entity] .archik-stereotype-band{fill:var(--archik-stereotype-entity)}.archik-stereotype-pill{letter-spacing:.08em;border:1px solid #0000;border-radius:10px;align-self:flex-start;align-items:center;padding:3px 10px;font-size:10px;font-weight:700;display:inline-flex}.archik-stereotype-pill[data-stereotype=boundary]{background:var(--archik-stereotype-boundary)}@supports (color:color-mix(in lab,red,red)){.archik-stereotype-pill[data-stereotype=boundary]{background:color-mix(in srgb,var(--archik-stereotype-boundary) 15%,transparent)}}.archik-stereotype-pill[data-stereotype=boundary]{border-color:var(--archik-stereotype-boundary);color:var(--archik-stereotype-boundary)}.archik-stereotype-pill[data-stereotype=control]{background:var(--archik-stereotype-control)}@supports (color:color-mix(in lab,red,red)){.archik-stereotype-pill[data-stereotype=control]{background:color-mix(in srgb,var(--archik-stereotype-control) 15%,transparent)}}.archik-stereotype-pill[data-stereotype=control]{border-color:var(--archik-stereotype-control);color:var(--archik-stereotype-control)}.archik-stereotype-pill[data-stereotype=entity]{background:var(--archik-stereotype-entity)}@supports (color:color-mix(in lab,red,red)){.archik-stereotype-pill[data-stereotype=entity]{background:color-mix(in srgb,var(--archik-stereotype-entity) 15%,transparent)}}.archik-stereotype-pill[data-stereotype=entity]{border-color:var(--archik-stereotype-entity);color:var(--archik-stereotype-entity)}@keyframes archikPulse{0%,to{filter:drop-shadow(0 0 4px var(--archik-selected-glow)) drop-shadow(0 0 1px var(--archik-selected-glow))}50%{filter:drop-shadow(0 0 12px var(--archik-selected-glow)) drop-shadow(0 0 3px var(--archik-selected-glow))}}.archik-modal-overlay{z-index:50;background:var(--archik-canvas);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}@supports (color:color-mix(in lab,red,red)){.archik-modal-overlay{background:color-mix(in oklab,var(--archik-canvas) 70%,transparent)}}.archik-modal-overlay{-webkit-backdrop-filter:blur(4px);animation:.14s ease-out archikFadeIn}.archik-modal{background:var(--archik-panel);border:1px solid var(--archik-border);width:360px;max-width:calc(100vw - 32px);box-shadow:0 12px 40px #00000059,0 0 0 1px var(--archik-border-strong);border-radius:8px;padding:16px;animation:.2s cubic-bezier(.2,.8,.2,1) archikModalIn}.archik-selected-outline{fill:none;stroke:var(--archik-selected);stroke-width:2px;pointer-events:none}@keyframes archikEdgeFlow{0%{stroke-dashoffset:0}to{stroke-dashoffset:calc(-1 * var(--archik-dash-period,8) * 1px)}}.archik-edge-flowing{animation:1.4s linear infinite archikEdgeFlow}@media(prefers-reduced-motion:reduce){.archik-edge-flowing{animation:none}}.archik-popover{background:var(--archik-panel);border:1px solid var(--archik-border-strong);border-radius:6px;flex-direction:column;max-height:min(80vh,600px);padding:4px;animation:.16s cubic-bezier(.2,.8,.2,1) archikModalIn;display:flex;overflow:hidden;box-shadow:0 12px 32px #00000059}.archik-menu-item{width:100%;color:var(--archik-fg);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:4px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:flex}.archik-menu-item:hover{background:var(--archik-surface-hover)}.archik-menu-item--danger{color:var(--archik-danger)}@keyframes archikFadeIn{0%{opacity:0}to{opacity:1}}@keyframes archikModalIn{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}.archik-drawer-shell{flex-direction:column;min-width:0;transition:width .22s cubic-bezier(.2,.8,.2,1),opacity .2s,margin-left .22s cubic-bezier(.2,.8,.2,1);display:flex;overflow:hidden}.archik-drawer-shell--open{opacity:1;width:320px;margin-left:16px}.archik-drawer-shell--closed{opacity:0;pointer-events:none;width:0;margin-left:0}.archik-drawer-content{flex-shrink:0;width:320px;height:100%}.archik-drawer-fade{animation:.22s ease-out archikFadeIn}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
|