@flesler/cursor-canvas-web 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -17
- package/dist/cursor-canvas.cjs +1 -1
- package/dist/cursor-canvas.js +505 -457
- package/package.json +33 -20
- package/src/superset/chart-extra.d.ts +39 -0
- package/src/superset/index.d.ts +25 -0
package/README.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# cursor-canvas-web
|
|
2
2
|
|
|
3
|
-
> **
|
|
3
|
+
> **Standalone project** published as [`@flesler/cursor-canvas-web`](https://www.npmjs.com/package/@flesler/cursor-canvas-web), initially forked from [`@thisismydesign/cursor-canvas-web`](https://github.com/thisismydesign/cursor-canvas-web) and developed independently since. We keep the shim aligned with the Cursor IDE `cursor/canvas` SDK (see [`COMPAT.md`](./COMPAT.md), `npm run test:contract`) on **Mantine 8** and **Recharts 2 or 3**.
|
|
4
4
|
|
|
5
5
|
Deploy **Cursor canvases** to the web.
|
|
6
6
|
|
|
7
7
|
A Cursor canvas is a `.tsx` that imports only from `cursor/canvas`. That module isn't an installable package; it's provided by the Cursor IDE at compile time, so a canvas can't build or render anywhere outside the IDE. This project is an open, **Mantine-backed shim** of `cursor/canvas`. A build-time Vite alias swaps the module for the shim, so the same `.tsx` renders in the Cursor IDE and on the web. No converter, no fork of your source.
|
|
8
8
|
|
|
9
|
-
**Live demo
|
|
9
|
+
**Live demo:** <https://flesler.github.io/cursor-canvas-web/> — built from
|
|
10
10
|
[`.cursor/canvases/demo.canvas.tsx`](./.cursor/canvases/demo.canvas.tsx) (max SDK showcase + vitest smoke).
|
|
11
11
|
**Upstream reference:** <https://thisismydesign.github.io/cursor-canvas-web/>
|
|
12
12
|
|
|
@@ -15,7 +15,7 @@ A Cursor canvas is a `.tsx` that imports only from `cursor/canvas`. That module
|
|
|
15
15
|
<img src="docs/demo-dark.png" alt="Demo canvas (dark)" width="49%" />
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
|
-
Regenerate demo: `
|
|
18
|
+
Regenerate demo: `npm run sync:demo` then `npm run demo:screenshot` (sibling [open-canvas](https://github.com/flesler/open-canvas) built; `sync:demo` runs `generate --formats cursor --inline-state`).
|
|
19
19
|
|
|
20
20
|
## How it works: a module shim, not a converter
|
|
21
21
|
|
|
@@ -37,9 +37,9 @@ compiles and renders unchanged in the Cursor IDE.
|
|
|
37
37
|
## Install
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
|
|
40
|
+
npm install @flesler/cursor-canvas-web
|
|
41
41
|
# peer deps your app must supply (Mantine 8 + matching charts styles):
|
|
42
|
-
|
|
42
|
+
npm install react react-dom @mantine/core@^8 @mantine/charts@^8 recharts@^2
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
The package ships two entry points:
|
|
@@ -105,7 +105,7 @@ The canvas file itself never changes — it still imports only from
|
|
|
105
105
|
|
|
106
106
|
### 3. Deploy
|
|
107
107
|
|
|
108
|
-
The result is a plain Vite app, so `
|
|
108
|
+
The result is a plain Vite app, so `npm run build` produces a static `dist/` you
|
|
109
109
|
can host anywhere (GitHub Pages, Netlify, Vercel, S3, …). This repo deploys its
|
|
110
110
|
example canvas to GitHub Pages — see [Example deployment](#example-deployment).
|
|
111
111
|
|
|
@@ -155,24 +155,23 @@ defaults to `/cursor-canvas-web/` (project Page); override it with the
|
|
|
155
155
|
|
|
156
156
|
## Develop this repo
|
|
157
157
|
|
|
158
|
-
|
|
159
|
-
and managed with [mise](https://mise.jdx.dev/).
|
|
158
|
+
Node is pinned in [`.nvmrc`](./.nvmrc) (`v24.11.1`).
|
|
160
159
|
|
|
161
160
|
```bash
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
161
|
+
nvm use
|
|
162
|
+
npm install
|
|
163
|
+
npm run dev # start the dev server
|
|
165
164
|
```
|
|
166
165
|
|
|
167
166
|
Validation gate:
|
|
168
167
|
|
|
169
168
|
```bash
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
169
|
+
npm run typecheck # tsc --noEmit, strict
|
|
170
|
+
npm run lint # eslint
|
|
171
|
+
npm test # vitest run
|
|
172
|
+
npm run test:contract # IDE SDK snapshot + export parity + consumer tsc
|
|
173
|
+
npm run sync:sdk # refresh src/vendor/canvas-sdk from ~/.cursor/skills-cursor/canvas/sdk
|
|
174
|
+
npm run build # typecheck + vite build -> dist/
|
|
176
175
|
```
|
|
177
176
|
|
|
178
177
|
### Layout
|
package/dist/cursor-canvas.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),h=require("@mantine/core"),j=require("react"),S=require("./host-tokens-Cjzmp0z_.cjs"),D=require("@mantine/charts"),C={success:"#1F8A65",danger:"#CF2D56",warning:"#E8A33D",info:"#2E79B5",neutral:"#8888A8",added:"#1F8A65",deleted:"#CF2D56",renamed:"#5A6CC0"},te={success:"green",danger:"red",warning:"orange",info:"blue",neutral:"gray",added:"green",deleted:"red",renamed:"indigo"};function g(){const t=h.useComputedColorScheme("light")==="dark"?"dark":"light";return S.resolveThemeForColorScheme(t)}const re={verticalAlign:"bottom",align:"center"},ne={legend:{justifyContent:"center"}};function G(){const t=g().chart.sequence;return(r,o)=>r?C[r]:t[o%t.length]}function oe(){const t=g().text.primary;return{textColor:t,barLabelColor:t}}function ae(e,t){return e.map((r,o)=>{const s={category:r};for(const a of t)s[a.name]=a.data[o]??0;return s})}function se(e,t){return e.map((r,o)=>({name:r.name,color:t(r.tone,o)}))}function ie(e,t){return r=>`${t??""}${r}${e??""}`}function pe(e,t){if(e!=null&&e.length)return e.map(r=>({...t?{x:r.value}:{y:r.value},label:r.label,color:r.tone?C[r.tone]:C.neutral}))}function le(e){const t=pe(e.referenceLines,!!e.horizontal);if(e.stacked||e.normalized)return{referenceLines:t};const r=e.beginAtZero!==!1,o=[e.yMin??(r?0:"auto"),e.yMax??"auto"];return e.horizontal?{xAxisProps:{domain:o},referenceLines:t}:{yAxisProps:{domain:o},referenceLines:t}}function xe(e,t,r){return e!==void 0?e:t.length===1&&r.length<=8}const Q=14;function ge(e){return e.length<=Q?e:`${e.slice(0,Q-1)}…`}function ye(e){var a;const t=typeof e.x=="number"?e.x:Number(e.x)||0,r=typeof e.y=="number"?e.y:Number(e.y)||0,o=String(((a=e.payload)==null?void 0:a.value)??""),s=ge(o);return n.jsx("g",{transform:`translate(${t},${r})`,children:n.jsxs("text",{x:-10,y:0,dy:4,textAnchor:"end",fill:"currentColor",fontSize:12,children:[n.jsx("title",{children:o}),s]})})}function me(e){return{fontWeight:700,fill:e}}function be(){return{yAxisProps:{tick:ye,width:96},barChartProps:{margin:{right:32}}}}function je(){return{barChartProps:{margin:{top:22}}}}function ve({categories:e,series:t,height:r=240,fill:o,valueSuffix:s,valuePrefix:a,showValues:c,showHoverGuide:f=!0,beginAtZero:u,yMin:l,yMax:d,referenceLines:y,style:b,smooth:p}){const T=G(),k=oe(),L=ae(e,t),P=se(t,T),A=le({beginAtZero:u,yMin:l,yMax:d,referenceLines:y,horizontal:!1}),w={h:r,data:L,dataKey:"category",series:P,curveType:p?"monotone":"linear",withLegend:t.length>1,legendProps:re,valueFormatter:ie(s,a),withPointLabels:c??e.length<=20,tooltipProps:f?void 0:{cursor:!1},styles:{...ne,legendItemName:{color:k.textColor}},...k,...A,style:b};return o?n.jsx(D.AreaChart,{...w}):n.jsx(D.LineChart,{...w})}function Se({categories:e,series:t,height:r=240,stacked:o,horizontal:s,normalized:a,valueSuffix:c,valuePrefix:f,showValues:u,beginAtZero:l,yMin:d,yMax:y,referenceLines:b,style:p}){const T=G(),k=oe(),L=ae(e,t),P=a?"percent":o?"stacked":"default",A=le({beginAtZero:l,yMin:d,yMax:y,referenceLines:b,horizontal:s,stacked:o,normalized:a}),w=!o&&!a&&xe(u,t,e);return n.jsx(D.BarChart,{h:r,data:L,dataKey:"category",series:se(t,T),type:P,orientation:s?"vertical":"horizontal",withLegend:t.length>1,legendProps:re,valueFormatter:ie(c,f),withBarValueLabel:w,...w?{valueLabelProps:me(k.barLabelColor)}:{},...s?be():w?je():{},styles:{...ne,legendItemName:{color:k.textColor}},...k,...A,style:p})}const ke=180,Ce=540;function Te(e,t){if(t<=0)return"0%";const r=e/t*100;return r<10&&Math.abs(r-Math.round(r))>.05?`${r.toFixed(1)}%`:`${Math.round(r)}%`}function we(e){return Math.max(28,Math.round(e*.22))}function Le(e){return e.map(t=>({dataKey:t.name,value:t.name,color:t.color,type:"circle"}))}function Pe(e,t){return e.map(r=>({name:r.name,color:r.color,label:`${r.name} ${Te(r.value,t)}`}))}function Ae({data:e,size:t=200,donut:r,style:o}){const[s,a]=j.useState(null),c=g(),f=G(),u=e.map((p,T)=>({name:p.label,value:p.value,color:f(p.tone,T)})),l=u.reduce((p,T)=>p+T.value,0),d={startAngle:ke,endAngle:Ce},y=p=>({opacity:s===null||s===p?1:.35}),b=r?n.jsx(D.DonutChart,{data:u,size:t,thickness:we(t),withTooltip:!0,chartLabel:l,cellProps:p=>y(p.name),...d}):n.jsx(D.PieChart,{data:u,size:t,withTooltip:!0,withLabelsLine:!1,cellProps:p=>y(p.name),...d});return n.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",alignItems:"center",...o},children:[n.jsx("div",{style:{width:"100%",height:t,minHeight:t,display:"flex",alignItems:"center",justifyContent:"center"},children:b}),n.jsx(D.ChartLegend,{payload:Le(u),series:Pe(u,l),legendPosition:"bottom",centered:!0,onHighlight:a,mt:"sm",w:"100%",styles:{legend:{justifyContent:"center",gap:12,color:c.text.primary},legendItemName:{color:c.text.primary}}})]})}function Me(e){const{nodes:t,edges:r,direction:o="vertical",nodeWidth:s=160,nodeHeight:a=40,rankGap:c=64,nodeGap:f=48,padding:u=24}=e,l=t.map(i=>i.id),d=new Set(l),y=new Map;for(const i of l)y.set(i,[]);for(const i of r)d.has(i.from)&&d.has(i.to)&&y.get(i.from).push(i.to);const b=0,p=1,T=2,k=new Map(l.map(i=>[i,b])),L=new Set,P=(i,x)=>`${i}\0${x}`,A=i=>{k.set(i,p);for(const x of y.get(i)??[]){const m=k.get(x);m===p?L.add(P(i,x)):m===b&&A(x)}k.set(i,T)};for(const i of l)k.get(i)===b&&A(i);const w=r.filter(i=>d.has(i.from)&&d.has(i.to)&&!L.has(P(i.from,i.to))),M=new Map(l.map(i=>[i,0])),O=new Map(l.map(i=>[i,[]]));for(const i of w)O.get(i.from).push(i.to),M.set(i.to,(M.get(i.to)??0)+1);const F=new Map(l.map(i=>[i,0])),I=l.filter(i=>(M.get(i)??0)===0);for(;I.length>0;){const i=I.shift(),x=F.get(i);for(const m of O.get(i))F.set(m,Math.max(F.get(m),x+1)),M.set(m,M.get(m)-1),M.get(m)===0&&I.push(m)}const B=new Map;for(const i of l){const x=F.get(i);B.has(x)||B.set(x,[]),B.get(x).push(i)}const E=[...B.keys()].sort((i,x)=>i-x),v=o==="vertical",W=i=>i*(v?s:a)+Math.max(0,i-1)*f,q=Math.max(0,...E.map(i=>W(B.get(i).length))),H=new Map,K=[];E.forEach((i,x)=>{const m=B.get(i),N=W(m.length),z=u+(q-N)/2,R=u+x*((v?a:s)+c);m.forEach((U,Z)=>{const J=z+Z*((v?s:a)+f),fe=v?J:R,he=v?R:J;H.set(U,{id:U,x:fe,y:he,rank:i,order:Z})}),K.push({rank:i,x:v?z:R,y:v?R:z,width:v?N:s,height:v?a:N,nodeIds:m})});const X=(i,x)=>i?v?{x:i.x+s/2,y:x==="source"?i.y+a:i.y}:{x:x==="source"?i.x+s:i.x,y:i.y+a/2}:{x:0,y:0},de=r.filter(i=>d.has(i.from)&&d.has(i.to)).map(i=>{const x=X(H.get(i.from),"source"),m=X(H.get(i.to),"target");return{from:i.from,to:i.to,sourceX:x.x,sourceY:x.y,targetX:m.x,targetY:m.y,isBackEdge:L.has(P(i.from,i.to))}}),V=u*2+E.length*(v?a:s)+Math.max(0,E.length-1)*c,Y=u*2+q;return{nodes:[...H.values()],edges:de,ranks:K,direction:o,width:v?Y:V,height:v?V:Y}}function Be({additions:e=0,deletions:t=0,style:r}){return e===0&&t===0?null:n.jsxs("span",{style:{display:"inline-flex",gap:8,fontVariantNumeric:"tabular-nums",fontSize:12,fontWeight:600,...r},children:[e>0&&n.jsxs("span",{style:{color:C.added},children:["+",e]}),t>0&&n.jsxs("span",{style:{color:C.deleted},children:["-",t]})]})}const De={added:"+",removed:"-",unchanged:" "};function Fe({lines:e,showLineNumbers:t=!0,coloredLineNumbers:r=!0,showAccentStrip:o=!0,style:s}){const a=g(),c=l=>l==="added"?a.diff.insertedLine:l==="removed"?a.diff.removedLine:"transparent",f=l=>l==="added"?a.diff.stripAdded:l==="removed"?a.diff.stripRemoved:"transparent",u=l=>r&&l==="added"?C.added:r&&l==="removed"?C.deleted:a.text.tertiary;return n.jsx("div",{style:{fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Code", monospace',fontSize:12.5,lineHeight:"18px",color:a.text.primary,overflowX:"auto",...s},children:e.map((l,d)=>n.jsxs("div",{style:{display:"flex",alignItems:"stretch",background:c(l.type),borderLeft:o?`3px solid ${f(l.type)}`:void 0},children:[t&&n.jsx("span",{style:{flex:"0 0 auto",width:40,textAlign:"right",paddingRight:10,userSelect:"none",color:u(l.type)},children:l.lineNumber??""}),n.jsx("span",{style:{flex:"0 0 auto",width:14,textAlign:"center",userSelect:"none",color:u(l.type)},children:De[l.type]}),n.jsx("pre",{style:{margin:0,padding:"0 8px",whiteSpace:"pre",fontFamily:"inherit"},children:l.content})]},d))})}function Ee({status:e}){const t=g(),r=e==="completed"?C.success:e==="in_progress"?t.accent.primary:e==="cancelled"?C.danger:t.text.tertiary;return n.jsxs("svg",{width:14,height:14,viewBox:"0 0 14 14",fill:"none",style:{flex:"0 0 auto",marginTop:3},"aria-hidden":!0,children:[n.jsx("circle",{cx:7,cy:7,r:6,stroke:r,strokeWidth:1.4}),e==="completed"&&n.jsx("path",{d:"M4 7.2l2 2 4-4.4",stroke:r,strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"}),e==="in_progress"&&n.jsx("circle",{cx:7,cy:7,r:3,fill:r}),e==="cancelled"&&n.jsx("path",{d:"M4.8 4.8l4.4 4.4M9.2 4.8l-4.4 4.4",stroke:r,strokeWidth:1.4,strokeLinecap:"round"})]})}function ce({todos:e,dimmedTodoIds:t,onTodoClick:r,style:o}){const s=g();return e.length===0?null:n.jsx("div",{style:{display:"flex",flexDirection:"column",...o},children:e.map(a=>{const c=t==null?void 0:t.has(a.id);return n.jsxs("button",{type:"button",onClick:()=>r==null?void 0:r(a),style:{display:"flex",gap:8,alignItems:"flex-start",width:"100%",textAlign:"left",padding:"4px 6px",background:"transparent",border:"none",cursor:r?"pointer":"default",color:s.text.primary,fontSize:14,lineHeight:"20px",opacity:c?.45:1},children:[n.jsx(Ee,{status:a.status}),n.jsx("span",{style:{textDecoration:a.status==="cancelled"?"line-through":void 0,color:a.status==="cancelled"?s.text.tertiary:void 0},children:a.content})]},a.id)})})}function He({todos:e,dimmedTodoIds:t,defaultExpanded:r=!1,onTodoClick:o,style:s}){const a=g(),[c,f]=j.useState(r);if(e.length===0)return null;const u=e.filter(l=>l.status==="completed").length;return n.jsxs("div",{style:{border:`1px solid ${a.stroke.primary}`,borderRadius:6,overflow:"hidden",...s},children:[n.jsxs("button",{type:"button",onClick:()=>f(l=>!l),style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 10px",background:a.fill.secondary,border:"none",cursor:"pointer",color:a.text.secondary,fontSize:12,fontWeight:600},children:[n.jsx("svg",{width:12,height:12,viewBox:"0 0 12 12",fill:"none",style:{transform:c?"rotate(90deg)":"none",transition:"transform 120ms"},"aria-hidden":!0,children:n.jsx("path",{d:"M4 2.5L8 6l-4 3.5",stroke:"currentColor",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"})}),n.jsx("span",{children:"Todos"}),n.jsx("span",{style:{flex:1}}),n.jsxs("span",{children:[u," of ",e.length," Done"]})]}),c&&n.jsx("div",{style:{padding:6},children:n.jsx(ce,{todos:e,dimmedTodoIds:t,onTodoClick:o})})]})}function Re(e,t){const r=`canvas:${e}`,[o,s]=j.useState(()=>{if(typeof localStorage>"u")return t;try{const c=localStorage.getItem(r);return c===null?t:JSON.parse(c)}catch{return t}}),a=j.useCallback(c=>{s(f=>{const u=typeof c=="function"?c(f):c;try{localStorage==null||localStorage.setItem(r,JSON.stringify(u))}catch{}return u})},[r]);return[o,a]}function Ie(){return j.useCallback(e=>{},[])}function Ne(e,t){return{...e,...t}}function _(e,t,r){const o=e.typography[t];return{fontFamily:e.typography.fontFamily,fontSize:o.fontSize,lineHeight:o.lineHeight,fontWeight:o.fontWeight,color:e.text.primary,margin:0,...r}}function ze({children:e,style:t}){const r=g();return n.jsx(h.Title,{order:1,style:_(r,"h1",t),children:e})}function Ge({children:e,style:t}){const r=g();return n.jsx(h.Title,{order:2,style:_(r,"h2",t),children:e})}function _e({children:e,style:t}){const r=g();return n.jsx(h.Title,{order:3,style:_(r,"h3",t),children:e})}const $e={normal:400,medium:500,semibold:600,bold:700};function Oe({children:e,tone:t="primary",size:r="body",as:o="p",weight:s="normal",italic:a,truncate:c,style:f}){const u=g();return n.jsx(h.Text,{component:o,size:r==="small"?"xs":"sm",fw:$e[s],c:t==="primary"?void 0:u.text[t],truncate:c,style:{fontStyle:a?"italic":void 0,...t==="primary"?{color:u.text.primary}:void 0,fontFamily:u.typography.fontFamily,...f},children:e})}function We({children:e,style:t}){const r=g();return n.jsx("code",{style:{fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Code", monospace',fontSize:"0.92em",color:r.text.primary,background:r.fill.secondary,borderRadius:r.radius.sm,padding:"1px 4px",...t},children:e})}function qe({children:e,href:t,style:r}){const o=g();return n.jsx("a",{href:t,target:"_blank",rel:"noreferrer",style:{color:o.text.link,...r},children:e})}function Ke({children:e,gap:t,style:r}){return n.jsx(h.Stack,{gap:t,style:r,children:e})}const ee={start:"flex-start",center:"center",end:"flex-end",stretch:"stretch","space-between":"space-between"};function Xe({children:e,gap:t,align:r="center",justify:o="start",wrap:s=!1,style:a}){return n.jsx(h.Group,{gap:t,align:ee[r],justify:ee[o],wrap:s?"wrap":"nowrap",style:a,children:e})}function Ve(){return n.jsx("div",{style:{flex:1}})}function Ye({children:e,columns:t,gap:r=16,align:o,style:s}){const a=typeof t=="number"?`repeat(${t}, minmax(0, 1fr))`:t;return n.jsx("div",{style:{display:"grid",gridTemplateColumns:a,gap:r,alignItems:o,...s},children:e})}function Ue({style:e}){return n.jsx(h.Divider,{style:e})}const $=j.createContext({collapsible:!1,open:!0,toggle:()=>{}});function Ze({children:e,variant:t="default",collapsible:r=!1,defaultOpen:o=!0,open:s,onOpenChange:a,style:c}){const f=g(),[u,l]=j.useState(o),d=s??u,y=j.useCallback(()=>{const b=!d;s===void 0&&l(b),a==null||a(b)},[d,s,a]);return n.jsx(h.Card,{withBorder:t!=="borderless",radius:f.radius.md,padding:0,style:{background:f.bg.elevated,borderColor:f.stroke.secondary,...c},children:n.jsx($.Provider,{value:{collapsible:r,open:d,toggle:y},children:e})})}function Je({children:e,trailing:t,style:r}){const o=g(),{collapsible:s,open:a,toggle:c}=j.useContext($);return n.jsxs("div",{onClick:s?c:void 0,style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,padding:"8px 14px",borderBottom:`1px solid ${o.stroke.secondary}`,fontSize:o.typography.small.fontSize,fontWeight:o.typography.h3.fontWeight,color:o.text.primary,fontFamily:o.typography.fontFamily,cursor:s?"pointer":void 0,userSelect:s?"none":void 0,...r},children:[n.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:6},children:[s&&n.jsx(ue,{expanded:a}),e]}),t!=null&&n.jsx("span",{children:t})]})}function Qe({children:e,style:t}){const{collapsible:r,open:o}=j.useContext($);return r&&!o?null:n.jsx("div",{style:{padding:14,...t},children:e})}function ue({expanded:e}){return n.jsx("svg",{width:12,height:12,viewBox:"0 0 12 12",fill:"none",style:{transform:e?"rotate(90deg)":"none",transition:"transform 120ms"},"aria-hidden":!0,children:n.jsx("path",{d:"M4 2.5L8 6l-4 3.5",stroke:"currentColor",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"})})}function et({value:e,label:t,tone:r,style:o}){const s=g();return n.jsxs("div",{style:o,children:[n.jsx(h.Text,{fz:22,fw:700,lh:1.2,style:{color:r?C[r]:s.text.primary,fontFamily:s.typography.fontFamily},children:e}),n.jsx(h.Text,{fz:12,style:{color:s.text.tertiary,fontFamily:s.typography.fontFamily},children:t})]})}function tt({children:e,active:t,tone:r="neutral",size:o="md",leadingContent:s,keyboardHint:a,title:c,style:f,onClick:u}){return n.jsx(h.Badge,{color:te[r],variant:t?"filled":"light",size:o==="sm"?"sm":"md",leftSection:s,rightSection:a,title:c,onClick:u,style:{cursor:u?"pointer":void 0,textTransform:"none",...f},children:e})}function rt({children:e,tone:t="neutral",title:r,icon:o,style:s}){return n.jsx(h.Alert,{color:te[t],title:r,icon:o,variant:"light",style:s,children:e})}const nt={success:"rgba(31,138,101,0.12)",danger:"rgba(207,45,86,0.12)",warning:"rgba(232,163,61,0.14)",info:"rgba(46,121,181,0.12)",neutral:"rgba(136,136,168,0.12)"};function ot({headers:e,rows:t,columnAlign:r,rowTone:o,framed:s=!0,striped:a,stickyHeader:c,style:f,emptyMessage:u}){return n.jsxs(h.Table,{withTableBorder:s,withColumnBorders:!1,striped:a,stickyHeader:c,highlightOnHover:!0,style:f,children:[n.jsx(h.Table.Thead,{children:n.jsx(h.Table.Tr,{children:e.map((l,d)=>n.jsx(h.Table.Th,{ta:(r==null?void 0:r[d])??"left",children:l},d))})}),n.jsx(h.Table.Tbody,{children:t.length===0?n.jsx(h.Table.Tr,{children:n.jsx(h.Table.Td,{colSpan:e.length,ta:"center",c:"dimmed",children:u??"No data"})}):t.map((l,d)=>{const y=o==null?void 0:o[d];return n.jsx(h.Table.Tr,{style:y?{background:nt[y]}:void 0,children:e.map((b,p)=>n.jsx(h.Table.Td,{ta:(r==null?void 0:r[p])??"left",children:l[p]},p))},d)})})]})}const at={primary:"filled",secondary:"default",ghost:"subtle"};function st({children:e,variant:t="secondary",disabled:r,type:o="button",style:s,onClick:a}){return n.jsx(h.Button,{variant:at[t],color:t==="primary"?"accent":void 0,size:"xs",disabled:r,type:o,onClick:a,style:s,children:e})}function it({children:e,onClick:t,disabled:r,title:o,variant:s="default",size:a="md",style:c}){return n.jsx(h.ActionIcon,{variant:s==="circle"?"light":"subtle",radius:s==="circle"?"xl":"sm",size:a==="sm"?"sm":"md",color:"gray",disabled:r,title:o,"aria-label":o,onClick:t,style:c,children:e})}function lt({value:e,onChange:t,options:r,placeholder:o,disabled:s,style:a}){return n.jsx(h.Select,{value:e,data:r,placeholder:o,disabled:s,allowDeselect:!1,onChange:c=>{c!==null&&(t==null||t(c))},style:a})}function ct({checked:e,onChange:t,disabled:r,label:o,style:s}){return n.jsx(h.Checkbox,{checked:e,disabled:r,label:o,onChange:a=>t==null?void 0:t(a.currentTarget.checked),style:s})}function ut({checked:e,onChange:t,disabled:r,size:o="sm",style:s}){return n.jsx(h.Switch,{checked:e,disabled:r,size:o==="sm"?"sm":"md",onChange:a=>t==null?void 0:t(a.currentTarget.checked),style:s})}function dt({value:e,onChange:t,placeholder:r,disabled:o,type:s,style:a}){return n.jsx(h.TextInput,{value:e,placeholder:r,disabled:o,type:s,onChange:c=>t==null?void 0:t(c.currentTarget.value),style:a})}function ft({value:e,onChange:t,placeholder:r,disabled:o,rows:s=3,style:a}){return n.jsx(h.Textarea,{value:e,placeholder:r,disabled:o,autosize:!0,minRows:s,onChange:c=>t==null?void 0:t(c.currentTarget.value),style:a})}function ht({color:e,style:t}){const r=g();return n.jsx("span",{style:{display:"inline-block",width:14,height:14,borderRadius:4,background:r.category[e],flex:"0 0 auto",...t}})}function pt({segments:e,total:t,topLeftLabel:r,topRightLabel:o,style:s}){const a=g(),c=t>0?t:1,f=e.reduce((l,d)=>l+(Number.isFinite(d.value)&&d.value>0?d.value:0),0),u=Math.max(0,c-f);return n.jsxs("div",{style:s,children:[(r!=null||o!=null)&&n.jsxs("div",{style:{display:"flex",justifyContent:"space-between",fontSize:12,color:a.text.secondary,marginBottom:6},children:[n.jsx("span",{children:r}),n.jsx("span",{children:o})]}),n.jsxs("div",{style:{display:"flex",gap:2,height:8},children:[e.map((l,d)=>{const y=Number.isFinite(l.value)&&l.value>0?l.value:0,b=a.category[l.color??S.usageColorSequence[d%S.usageColorSequence.length]];return n.jsx("div",{style:{width:`${y/c*100}%`,background:b,borderRadius:3}},l.id)}),u>0&&n.jsx("div",{style:{width:`${u/c*100}%`,background:a.fill.tertiary,borderRadius:3}})]})]})}function xt({title:e,leading:t,count:r,trailing:o,children:s,defaultOpen:a=!1,style:c}){const f=g(),[u,l]=j.useState(a);return n.jsxs("div",{style:c,children:[n.jsxs("div",{onClick:()=>l(d=>!d),style:{display:"flex",alignItems:"center",gap:6,padding:"4px 0",cursor:"pointer",userSelect:"none",color:f.text.primary,fontSize:14},children:[n.jsx(ue,{expanded:u}),t,n.jsx("span",{style:{fontWeight:500},children:e}),r!=null&&n.jsx("span",{style:{color:f.text.tertiary,fontSize:12},children:r}),n.jsx("span",{style:{flex:1}}),o!=null&&n.jsx("span",{style:{color:f.text.tertiary},children:o})]}),u&&n.jsx("div",{style:{paddingLeft:18,paddingBottom:4},children:s})]})}Object.defineProperty(exports,"useEffect",{enumerable:!0,get:()=>j.useEffect});Object.defineProperty(exports,"useMemo",{enumerable:!0,get:()=>j.useMemo});Object.defineProperty(exports,"useRef",{enumerable:!0,get:()=>j.useRef});Object.defineProperty(exports,"useState",{enumerable:!0,get:()=>j.useState});exports.canvasPaletteDark=S.canvasPaletteDark;exports.canvasPaletteGrokDark=S.canvasPaletteGrokDark;exports.canvasPaletteGrokLight=S.canvasPaletteGrokLight;exports.canvasPaletteLight=S.canvasPaletteLight;exports.canvasTokens=S.canvasTokens;exports.canvasTokensLight=S.canvasTokensLight;exports.categoryPaletteDark=S.categoryPaletteDark;exports.categoryPaletteLight=S.categoryPaletteLight;exports.colorPalette=S.colorPalette;exports.usageColorSequence=S.usageColorSequence;exports.BarChart=Se;exports.Button=st;exports.Callout=rt;exports.Card=Ze;exports.CardBody=Qe;exports.CardHeader=Je;exports.Checkbox=ct;exports.Code=We;exports.CollapsibleSection=xt;exports.DiffStats=Be;exports.DiffView=Fe;exports.Divider=Ue;exports.Grid=Ye;exports.H1=ze;exports.H2=Ge;exports.H3=_e;exports.IconButton=it;exports.LineChart=ve;exports.Link=qe;exports.PieChart=Ae;exports.Pill=tt;exports.Row=Xe;exports.Select=lt;exports.Spacer=Ve;exports.Stack=Ke;exports.Stat=et;exports.Swatch=ht;exports.Table=ot;exports.Text=Oe;exports.TextArea=ft;exports.TextInput=dt;exports.TodoList=ce;exports.TodoListCard=He;exports.Toggle=ut;exports.UsageBar=pt;exports.computeDAGLayout=Me;exports.mergeStyle=Ne;exports.useCanvasAction=Ie;exports.useCanvasState=Re;exports.useHostTheme=g;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),p=require("@mantine/core"),j=require("react"),k=require("./host-tokens-Cjzmp0z_.cjs"),D=require("@mantine/charts"),w={success:"#1F8A65",danger:"#CF2D56",warning:"#E8A33D",info:"#2E79B5",neutral:"#8888A8",added:"#1F8A65",deleted:"#CF2D56",renamed:"#5A6CC0"},te={success:"green",danger:"red",warning:"orange",info:"blue",neutral:"gray",added:"green",deleted:"red",renamed:"indigo"};function g(){const t=p.useComputedColorScheme("light")==="dark"?"dark":"light";return k.resolveThemeForColorScheme(t)}const ne={verticalAlign:"bottom",align:"center"},re={legend:{justifyContent:"center"}};function G(){const t=g().chart.sequence;return(n,o)=>n?w[n]:t[o%t.length]}function oe(){const t=g().text.primary;return{textColor:t,barLabelColor:t}}function se(e,t){return e.map((n,o)=>{const a={category:n};for(const s of t)a[s.name]=s.data[o]??0;return a})}function ae(e,t){return e.map((n,o)=>({name:n.name,color:t(n.tone,o)}))}function ie(e,t){return n=>`${t??""}${n}${e??""}`}function pe(e,t){if(e!=null&&e.length)return e.map(n=>({...t?{x:n.value}:{y:n.value},label:n.label,color:n.tone?w[n.tone]:w.neutral}))}const ye=new Set(["log","symlog","pow","sqrt"]);function ge(e){const{scale:t}=e;return typeof t!="string"||!ye.has(t)?e:{...e,type:e.type??"number",allowDataOverflow:e.allowDataOverflow??!0,allowDecimals:e.allowDecimals??!0,domain:e.domain??[1,"dataMax"]}}function le(e){const t=pe(e.referenceLines,!!e.horizontal);let n;if(!e.stacked&&!e.normalized){const s=e.beginAtZero!==!1;n=[e.yMin??(s?0:"auto"),e.yMax??"auto"]}const o=e.valueAxis?ge(e.valueAxis):void 0;if(!n&&!o)return{referenceLines:t};const a={...n&&{domain:n},...o};return e.horizontal?{xAxisProps:a,referenceLines:t}:{yAxisProps:a,referenceLines:t}}function xe(e,t,n){return e!==void 0?e:t.length===1&&n.length<=8}const Q=14;function me(e){return e.length<=Q?e:`${e.slice(0,Q-1)}…`}function be(e){var s;const t=typeof e.x=="number"?e.x:Number(e.x)||0,n=typeof e.y=="number"?e.y:Number(e.y)||0,o=String(((s=e.payload)==null?void 0:s.value)??""),a=me(o);return r.jsx("g",{transform:`translate(${t},${n})`,children:r.jsxs("text",{x:-10,y:0,dy:4,textAnchor:"end",fill:"currentColor",fontSize:12,children:[r.jsx("title",{children:o}),a]})})}function je(e){return{fontWeight:700,fill:e}}function ve(){return{yAxisProps:{tick:be,width:96},barChartProps:{margin:{right:32}}}}function Se(){return{barChartProps:{margin:{top:22}}}}function ke({categories:e,series:t,height:n=240,fill:o,valueSuffix:a,valuePrefix:s,showValues:c,showHoverGuide:f=!0,beginAtZero:d,yMin:l,yMax:u,referenceLines:x,style:b,extra:h,smooth:C}){const L=(h==null?void 0:h.smooth)??C,T=G(),P=oe(),M=se(e,t),E=ae(t,T),v=!!(o&&(h!=null&&h.stacked)),F=le({beginAtZero:d,yMin:l,yMax:u,referenceLines:x,horizontal:!1,stacked:v,valueAxis:h==null?void 0:h.valueAxis}),A={h:n,data:M,dataKey:"category",series:E,curveType:L?"monotone":"linear",withLegend:t.length>1,legendProps:ne,valueFormatter:ie(a,s),withPointLabels:c??e.length<=20,tooltipProps:f?void 0:{cursor:!1},styles:{...re,legendItemName:{color:P.textColor}},...P,...F,style:b};return o?r.jsx(D.AreaChart,{...A,type:v?"stacked":"default"}):r.jsx(D.LineChart,{...A})}function Ce({categories:e,series:t,height:n=240,stacked:o,horizontal:a,normalized:s,valueSuffix:c,valuePrefix:f,showValues:d,beginAtZero:l,yMin:u,yMax:x,referenceLines:b,style:h,extra:C}){const L=G(),T=oe(),P=se(e,t),M=s?"percent":o?"stacked":"default",E=le({beginAtZero:l,yMin:u,yMax:x,referenceLines:b,horizontal:a,stacked:o,normalized:s,valueAxis:C==null?void 0:C.valueAxis}),v=!o&&!s&&xe(d,t,e);return r.jsx(D.BarChart,{h:n,data:P,dataKey:"category",series:ae(t,L),type:M,orientation:a?"vertical":"horizontal",withLegend:t.length>1,legendProps:ne,valueFormatter:ie(c,f),withBarValueLabel:v,...v?{valueLabelProps:je(T.barLabelColor)}:{},...a?ve():v?Se():{},styles:{...re,legendItemName:{color:T.textColor}},...T,...E,style:h})}const we=180,Te=540;function Le(e,t){if(t<=0)return"0%";const n=e/t*100;return n<10&&Math.abs(n-Math.round(n))>.05?`${n.toFixed(1)}%`:`${Math.round(n)}%`}function Pe(e){return Math.max(28,Math.round(e*.22))}function Ae(e){return e.map(t=>({dataKey:t.name,value:t.name,color:t.color,type:"circle"}))}function Me(e,t){return e.map(n=>({name:n.name,color:n.color,label:`${n.name} ${Le(n.value,t)}`}))}function Be({total:e,family:t,primary:n,subtitle:o}){return r.jsxs("text",{x:"50%",y:"50%",textAnchor:"middle",dominantBaseline:"central",fontFamily:t,children:[r.jsx("tspan",{x:"50%",dy:"-0.4em",fontSize:20,fontWeight:600,fill:n,children:e}),r.jsx("tspan",{x:"50%",dy:"1.55em",fontSize:16,fontWeight:500,fill:o,children:"Total"})]})}function De({data:e,size:t=200,donut:n,style:o}){const[a,s]=j.useState(null),c=g(),f=G(),d=e.map((h,C)=>({name:h.label,value:h.value,color:f(h.tone,C)})),l=d.reduce((h,C)=>h+C.value,0),u={startAngle:we,endAngle:Te},x=h=>({opacity:a===null||a===h?1:.35}),b=n?r.jsx(D.DonutChart,{data:d,size:t,thickness:Pe(t),withTooltip:!0,cellProps:h=>x(h.name),...u,children:r.jsx(Be,{total:l,family:c.typography.fontFamily,primary:c.text.primary,subtitle:c.text.secondary})}):r.jsx(D.PieChart,{data:d,size:t,withTooltip:!0,withLabelsLine:!1,cellProps:h=>x(h.name),...u});return r.jsxs("div",{style:{width:"100%",display:"flex",flexDirection:"column",alignItems:"center",...o},children:[r.jsx("div",{style:{width:"100%",height:t,minHeight:t,display:"flex",alignItems:"center",justifyContent:"center"},children:b}),r.jsx(D.ChartLegend,{payload:Ae(d),series:Me(d,l),legendPosition:"bottom",centered:!0,onHighlight:s,mt:"sm",w:"100%",styles:{legend:{justifyContent:"center",gap:12,color:c.text.primary},legendItemName:{color:c.text.primary}}})]})}function Ee(e){const{nodes:t,edges:n,direction:o="vertical",nodeWidth:a=160,nodeHeight:s=40,rankGap:c=64,nodeGap:f=48,padding:d=24}=e,l=t.map(i=>i.id),u=new Set(l),x=new Map;for(const i of l)x.set(i,[]);for(const i of n)u.has(i.from)&&u.has(i.to)&&x.get(i.from).push(i.to);const b=0,h=1,C=2,L=new Map(l.map(i=>[i,b])),T=new Set,P=(i,y)=>`${i}\0${y}`,M=i=>{L.set(i,h);for(const y of x.get(i)??[]){const m=L.get(y);m===h?T.add(P(i,y)):m===b&&M(y)}L.set(i,C)};for(const i of l)L.get(i)===b&&M(i);const E=n.filter(i=>u.has(i.from)&&u.has(i.to)&&!T.has(P(i.from,i.to))),v=new Map(l.map(i=>[i,0])),F=new Map(l.map(i=>[i,[]]));for(const i of E)F.get(i.from).push(i.to),v.set(i.to,(v.get(i.to)??0)+1);const A=new Map(l.map(i=>[i,0])),N=l.filter(i=>(v.get(i)??0)===0);for(;N.length>0;){const i=N.shift(),y=A.get(i);for(const m of F.get(i))A.set(m,Math.max(A.get(m),y+1)),v.set(m,v.get(m)-1),v.get(m)===0&&N.push(m)}const B=new Map;for(const i of l){const y=A.get(i);B.has(y)||B.set(y,[]),B.get(y).push(i)}const R=[...B.keys()].sort((i,y)=>i-y),S=o==="vertical",$=i=>i*(S?a:s)+Math.max(0,i-1)*f,q=Math.max(0,...R.map(i=>$(B.get(i).length))),H=new Map,K=[];R.forEach((i,y)=>{const m=B.get(i),z=$(m.length),_=d+(q-z)/2,I=d+y*((S?s:a)+c);m.forEach((U,Z)=>{const J=_+Z*((S?a:s)+f),fe=S?J:I,he=S?I:J;H.set(U,{id:U,x:fe,y:he,rank:i,order:Z})}),K.push({rank:i,x:S?_:I,y:S?I:_,width:S?z:a,height:S?s:z,nodeIds:m})});const V=(i,y)=>i?S?{x:i.x+a/2,y:y==="source"?i.y+s:i.y}:{x:y==="source"?i.x+a:i.x,y:i.y+s/2}:{x:0,y:0},ue=n.filter(i=>u.has(i.from)&&u.has(i.to)).map(i=>{const y=V(H.get(i.from),"source"),m=V(H.get(i.to),"target");return{from:i.from,to:i.to,sourceX:y.x,sourceY:y.y,targetX:m.x,targetY:m.y,isBackEdge:T.has(P(i.from,i.to))}}),X=d*2+R.length*(S?s:a)+Math.max(0,R.length-1)*c,Y=d*2+q;return{nodes:[...H.values()],edges:ue,ranks:K,direction:o,width:S?Y:X,height:S?X:Y}}function Fe({additions:e=0,deletions:t=0,style:n}){return e===0&&t===0?null:r.jsxs("span",{style:{display:"inline-flex",gap:8,fontVariantNumeric:"tabular-nums",fontSize:12,fontWeight:600,...n},children:[e>0&&r.jsxs("span",{style:{color:w.added},children:["+",e]}),t>0&&r.jsxs("span",{style:{color:w.deleted},children:["-",t]})]})}const Re={added:"+",removed:"-",unchanged:" "};function He({lines:e,showLineNumbers:t=!0,coloredLineNumbers:n=!0,showAccentStrip:o=!0,style:a}){const s=g(),c=l=>l==="added"?s.diff.insertedLine:l==="removed"?s.diff.removedLine:"transparent",f=l=>l==="added"?s.diff.stripAdded:l==="removed"?s.diff.stripRemoved:"transparent",d=l=>n&&l==="added"?w.added:n&&l==="removed"?w.deleted:s.text.tertiary;return r.jsx("div",{style:{fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Code", monospace',fontSize:12.5,lineHeight:"18px",color:s.text.primary,overflowX:"auto",...a},children:e.map((l,u)=>r.jsxs("div",{style:{display:"flex",alignItems:"stretch",background:c(l.type),borderLeft:o?`3px solid ${f(l.type)}`:void 0},children:[t&&r.jsx("span",{style:{flex:"0 0 auto",width:40,textAlign:"right",paddingRight:10,userSelect:"none",color:d(l.type)},children:l.lineNumber??""}),r.jsx("span",{style:{flex:"0 0 auto",width:14,textAlign:"center",userSelect:"none",color:d(l.type)},children:Re[l.type]}),r.jsx("pre",{style:{margin:0,padding:"0 8px",whiteSpace:"pre",fontFamily:"inherit"},children:l.content})]},u))})}function Ie({status:e}){const t=g(),n=e==="completed"?w.success:e==="in_progress"?t.accent.primary:e==="cancelled"?w.danger:t.text.tertiary;return r.jsxs("svg",{width:14,height:14,viewBox:"0 0 14 14",fill:"none",style:{flex:"0 0 auto",marginTop:3},"aria-hidden":!0,children:[r.jsx("circle",{cx:7,cy:7,r:6,stroke:n,strokeWidth:1.4}),e==="completed"&&r.jsx("path",{d:"M4 7.2l2 2 4-4.4",stroke:n,strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"}),e==="in_progress"&&r.jsx("circle",{cx:7,cy:7,r:3,fill:n}),e==="cancelled"&&r.jsx("path",{d:"M4.8 4.8l4.4 4.4M9.2 4.8l-4.4 4.4",stroke:n,strokeWidth:1.4,strokeLinecap:"round"})]})}function ce({todos:e,dimmedTodoIds:t,onTodoClick:n,style:o}){const a=g();return e.length===0?null:r.jsx("div",{style:{display:"flex",flexDirection:"column",...o},children:e.map(s=>{const c=t==null?void 0:t.has(s.id);return r.jsxs("button",{type:"button",onClick:()=>n==null?void 0:n(s),style:{display:"flex",gap:8,alignItems:"flex-start",width:"100%",textAlign:"left",padding:"4px 6px",background:"transparent",border:"none",cursor:n?"pointer":"default",color:a.text.primary,fontSize:14,lineHeight:"20px",opacity:c?.45:1},children:[r.jsx(Ie,{status:s.status}),r.jsx("span",{style:{textDecoration:s.status==="cancelled"?"line-through":void 0,color:s.status==="cancelled"?a.text.tertiary:void 0},children:s.content})]},s.id)})})}function Ne({todos:e,dimmedTodoIds:t,defaultExpanded:n=!1,onTodoClick:o,style:a}){const s=g(),[c,f]=j.useState(n);if(e.length===0)return null;const d=e.filter(l=>l.status==="completed").length;return r.jsxs("div",{style:{border:`1px solid ${s.stroke.primary}`,borderRadius:6,overflow:"hidden",...a},children:[r.jsxs("button",{type:"button",onClick:()=>f(l=>!l),style:{display:"flex",alignItems:"center",gap:8,width:"100%",padding:"6px 10px",background:s.fill.secondary,border:"none",cursor:"pointer",color:s.text.secondary,fontSize:12,fontWeight:600},children:[r.jsx("svg",{width:12,height:12,viewBox:"0 0 12 12",fill:"none",style:{transform:c?"rotate(90deg)":"none",transition:"transform 120ms"},"aria-hidden":!0,children:r.jsx("path",{d:"M4 2.5L8 6l-4 3.5",stroke:"currentColor",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"})}),r.jsx("span",{children:"Todos"}),r.jsx("span",{style:{flex:1}}),r.jsxs("span",{children:[d," of ",e.length," Done"]})]}),c&&r.jsx("div",{style:{padding:6},children:r.jsx(ce,{todos:e,dimmedTodoIds:t,onTodoClick:o})})]})}function ze(e,t){const n=`canvas:${e}`,[o,a]=j.useState(()=>{if(typeof localStorage>"u")return t;try{const c=localStorage.getItem(n);return c===null?t:JSON.parse(c)}catch{return t}}),s=j.useCallback(c=>{a(f=>{const d=typeof c=="function"?c(f):c;try{localStorage==null||localStorage.setItem(n,JSON.stringify(d))}catch{}return d})},[n]);return[o,s]}function _e(){return j.useCallback(e=>{},[])}function Ge(e,t){return{...e,...t}}function O(e,t,n){const o=e.typography[t];return{fontFamily:e.typography.fontFamily,fontSize:o.fontSize,lineHeight:o.lineHeight,fontWeight:o.fontWeight,color:e.text.primary,margin:0,...n}}function Oe({children:e,style:t}){const n=g();return r.jsx(p.Title,{order:1,style:O(n,"h1",t),children:e})}function We({children:e,style:t}){const n=g();return r.jsx(p.Title,{order:2,style:O(n,"h2",t),children:e})}function $e({children:e,style:t}){const n=g();return r.jsx(p.Title,{order:3,style:O(n,"h3",t),children:e})}const qe={normal:400,medium:500,semibold:600,bold:700};function Ke({children:e,tone:t="primary",size:n="body",as:o="p",weight:a="normal",italic:s,truncate:c,style:f}){const d=g();return r.jsx(p.Text,{component:o,size:n==="small"?"xs":"sm",fw:qe[a],c:t==="primary"?void 0:d.text[t],truncate:c,style:{fontStyle:s?"italic":void 0,...t==="primary"?{color:d.text.primary}:void 0,fontFamily:d.typography.fontFamily,...f},children:e})}function Ve({children:e,style:t}){const n=g();return r.jsx("code",{style:{fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Code", monospace',fontSize:"0.92em",color:n.text.primary,background:n.fill.secondary,borderRadius:n.radius.sm,padding:"1px 4px",...t},children:e})}function Xe({children:e,href:t,style:n}){const o=g();return r.jsx("a",{href:t,target:"_blank",rel:"noreferrer",style:{color:o.text.link,...n},children:e})}function Ye({children:e,gap:t,style:n}){return r.jsx(p.Stack,{gap:t,style:n,children:e})}const ee={start:"flex-start",center:"center",end:"flex-end",stretch:"stretch","space-between":"space-between"};function Ue({children:e,gap:t,align:n="center",justify:o="start",wrap:a=!1,style:s}){return r.jsx(p.Group,{gap:t,align:ee[n],justify:ee[o],wrap:a?"wrap":"nowrap",style:s,children:e})}function Ze(){return r.jsx("div",{style:{flex:1}})}function Je({children:e,columns:t,gap:n=16,align:o,style:a}){const s=typeof t=="number"?`repeat(${t}, minmax(0, 1fr))`:t;return r.jsx("div",{style:{display:"grid",gridTemplateColumns:s,gap:n,alignItems:o,...a},children:e})}function Qe({style:e}){return r.jsx(p.Divider,{style:e})}const W=j.createContext({collapsible:!1,open:!0,toggle:()=>{}});function et({children:e,variant:t="default",collapsible:n=!1,defaultOpen:o=!0,open:a,onOpenChange:s,style:c}){const f=g(),[d,l]=j.useState(o),u=a??d,x=j.useCallback(()=>{const b=!u;a===void 0&&l(b),s==null||s(b)},[u,a,s]);return r.jsx(p.Card,{withBorder:t!=="borderless",radius:f.radius.md,padding:0,style:{background:f.bg.elevated,borderColor:f.stroke.secondary,...c},children:r.jsx(W.Provider,{value:{collapsible:n,open:u,toggle:x},children:e})})}function tt({children:e,trailing:t,style:n}){const o=g(),{collapsible:a,open:s,toggle:c}=j.useContext(W);return r.jsxs("div",{onClick:a?c:void 0,style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,padding:"8px 14px",borderBottom:`1px solid ${o.stroke.secondary}`,fontSize:o.typography.small.fontSize,fontWeight:o.typography.h3.fontWeight,color:o.text.primary,fontFamily:o.typography.fontFamily,cursor:a?"pointer":void 0,userSelect:a?"none":void 0,...n},children:[r.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:6},children:[a&&r.jsx(de,{expanded:s}),e]}),t!=null&&r.jsx("span",{children:t})]})}function nt({children:e,style:t}){const{collapsible:n,open:o}=j.useContext(W);return n&&!o?null:r.jsx("div",{style:{padding:14,...t},children:e})}function de({expanded:e}){return r.jsx("svg",{width:12,height:12,viewBox:"0 0 12 12",fill:"none",style:{transform:e?"rotate(90deg)":"none",transition:"transform 120ms"},"aria-hidden":!0,children:r.jsx("path",{d:"M4 2.5L8 6l-4 3.5",stroke:"currentColor",strokeWidth:1.4,strokeLinecap:"round",strokeLinejoin:"round"})})}function rt({value:e,label:t,tone:n,style:o}){const a=g();return r.jsxs("div",{style:o,children:[r.jsx(p.Text,{fz:22,fw:700,lh:1.2,style:{color:n?w[n]:a.text.primary,fontFamily:a.typography.fontFamily},children:e}),r.jsx(p.Text,{fz:12,style:{color:a.text.tertiary,fontFamily:a.typography.fontFamily},children:t})]})}function ot({children:e,active:t,tone:n="neutral",size:o="md",leadingContent:a,keyboardHint:s,title:c,style:f,onClick:d}){return r.jsx(p.Badge,{color:te[n],variant:t?"filled":"light",size:o==="sm"?"sm":"md",leftSection:a,rightSection:s,title:c,onClick:d,style:{cursor:d?"pointer":void 0,textTransform:"none",...f},children:e})}function st({children:e,tone:t="neutral",title:n,icon:o,style:a}){return r.jsx(p.Alert,{color:te[t],title:n,icon:o,variant:"light",style:a,children:e})}const at={success:"rgba(31,138,101,0.12)",danger:"rgba(207,45,86,0.12)",warning:"rgba(232,163,61,0.14)",info:"rgba(46,121,181,0.12)",neutral:"rgba(136,136,168,0.12)"};function it({headers:e,rows:t,columnAlign:n,rowTone:o,framed:a=!0,striped:s,stickyHeader:c,style:f,emptyMessage:d}){return r.jsxs(p.Table,{withTableBorder:a,withColumnBorders:!1,striped:s,stickyHeader:c,highlightOnHover:!0,style:f,children:[r.jsx(p.Table.Thead,{children:r.jsx(p.Table.Tr,{children:e.map((l,u)=>r.jsx(p.Table.Th,{ta:(n==null?void 0:n[u])??"left",children:l},u))})}),r.jsx(p.Table.Tbody,{children:t.length===0?r.jsx(p.Table.Tr,{children:r.jsx(p.Table.Td,{colSpan:e.length,ta:"center",c:"dimmed",children:d??"No data"})}):t.map((l,u)=>{const x=o==null?void 0:o[u];return r.jsx(p.Table.Tr,{style:x?{background:at[x]}:void 0,children:e.map((b,h)=>r.jsx(p.Table.Td,{ta:(n==null?void 0:n[h])??"left",children:l[h]},h))},u)})})]})}const lt={primary:"filled",secondary:"default",ghost:"subtle"};function ct({children:e,variant:t="secondary",disabled:n,type:o="button",style:a,onClick:s}){return r.jsx(p.Button,{variant:lt[t],color:t==="primary"?"accent":void 0,size:"xs",disabled:n,type:o,onClick:s,style:a,children:e})}function dt({children:e,onClick:t,disabled:n,title:o,variant:a="default",size:s="md",style:c}){return r.jsx(p.ActionIcon,{variant:a==="circle"?"light":"subtle",radius:a==="circle"?"xl":"sm",size:s==="sm"?"sm":"md",color:"gray",disabled:n,title:o,"aria-label":o,onClick:t,style:c,children:e})}function ut({value:e,onChange:t,options:n,placeholder:o,disabled:a,style:s}){return r.jsx(p.Select,{value:e,data:n,placeholder:o,disabled:a,allowDeselect:!1,onChange:c=>{c!==null&&(t==null||t(c))},style:s})}function ft({checked:e,onChange:t,disabled:n,label:o,style:a}){return r.jsx(p.Checkbox,{checked:e,disabled:n,label:o,onChange:s=>t==null?void 0:t(s.currentTarget.checked),style:a})}function ht({checked:e,onChange:t,disabled:n,size:o="sm",style:a}){return r.jsx(p.Switch,{checked:e,disabled:n,size:o==="sm"?"sm":"md",onChange:s=>t==null?void 0:t(s.currentTarget.checked),style:a})}function pt({value:e,onChange:t,placeholder:n,disabled:o,type:a,style:s}){return r.jsx(p.TextInput,{value:e,placeholder:n,disabled:o,type:a,onChange:c=>t==null?void 0:t(c.currentTarget.value),style:s})}function yt({value:e,onChange:t,placeholder:n,disabled:o,rows:a=3,style:s}){return r.jsx(p.Textarea,{value:e,placeholder:n,disabled:o,autosize:!0,minRows:a,onChange:c=>t==null?void 0:t(c.currentTarget.value),style:s})}function gt({color:e,style:t}){const n=g();return r.jsx("span",{style:{display:"inline-block",width:14,height:14,borderRadius:4,background:n.category[e],flex:"0 0 auto",...t}})}function xt({segments:e,total:t,topLeftLabel:n,topRightLabel:o,style:a}){const s=g(),c=t>0?t:1,f=e.reduce((l,u)=>l+(Number.isFinite(u.value)&&u.value>0?u.value:0),0),d=Math.max(0,c-f);return r.jsxs("div",{style:a,children:[(n!=null||o!=null)&&r.jsxs("div",{style:{display:"flex",justifyContent:"space-between",fontSize:12,color:s.text.secondary,marginBottom:6},children:[r.jsx("span",{children:n}),r.jsx("span",{children:o})]}),r.jsxs("div",{style:{display:"flex",gap:2,height:8},children:[e.map((l,u)=>{const x=Number.isFinite(l.value)&&l.value>0?l.value:0,b=s.category[l.color??k.usageColorSequence[u%k.usageColorSequence.length]];return r.jsx("div",{style:{width:`${x/c*100}%`,background:b,borderRadius:3}},l.id)}),d>0&&r.jsx("div",{style:{width:`${d/c*100}%`,background:s.fill.tertiary,borderRadius:3}})]})]})}function mt({title:e,leading:t,count:n,trailing:o,children:a,defaultOpen:s=!1,style:c}){const f=g(),[d,l]=j.useState(s);return r.jsxs("div",{style:c,children:[r.jsxs("div",{onClick:()=>l(u=>!u),style:{display:"flex",alignItems:"center",gap:6,padding:"4px 0",cursor:"pointer",userSelect:"none",color:f.text.primary,fontSize:14},children:[r.jsx(de,{expanded:d}),t,r.jsx("span",{style:{fontWeight:500},children:e}),n!=null&&r.jsx("span",{style:{color:f.text.tertiary,fontSize:12},children:n}),r.jsx("span",{style:{flex:1}}),o!=null&&r.jsx("span",{style:{color:f.text.tertiary},children:o})]}),d&&r.jsx("div",{style:{paddingLeft:18,paddingBottom:4},children:a})]})}Object.defineProperty(exports,"useEffect",{enumerable:!0,get:()=>j.useEffect});Object.defineProperty(exports,"useMemo",{enumerable:!0,get:()=>j.useMemo});Object.defineProperty(exports,"useRef",{enumerable:!0,get:()=>j.useRef});Object.defineProperty(exports,"useState",{enumerable:!0,get:()=>j.useState});exports.canvasPaletteDark=k.canvasPaletteDark;exports.canvasPaletteGrokDark=k.canvasPaletteGrokDark;exports.canvasPaletteGrokLight=k.canvasPaletteGrokLight;exports.canvasPaletteLight=k.canvasPaletteLight;exports.canvasTokens=k.canvasTokens;exports.canvasTokensLight=k.canvasTokensLight;exports.categoryPaletteDark=k.categoryPaletteDark;exports.categoryPaletteLight=k.categoryPaletteLight;exports.colorPalette=k.colorPalette;exports.usageColorSequence=k.usageColorSequence;exports.BarChart=Ce;exports.Button=ct;exports.Callout=st;exports.Card=et;exports.CardBody=nt;exports.CardHeader=tt;exports.Checkbox=ft;exports.Code=Ve;exports.CollapsibleSection=mt;exports.DiffStats=Fe;exports.DiffView=He;exports.Divider=Qe;exports.Grid=Je;exports.H1=Oe;exports.H2=We;exports.H3=$e;exports.IconButton=dt;exports.LineChart=ke;exports.Link=Xe;exports.PieChart=De;exports.Pill=ot;exports.Row=Ue;exports.Select=ut;exports.Spacer=Ze;exports.Stack=Ye;exports.Stat=rt;exports.Swatch=gt;exports.Table=it;exports.Text=Ke;exports.TextArea=yt;exports.TextInput=pt;exports.TodoList=ce;exports.TodoListCard=Ne;exports.Toggle=ht;exports.UsageBar=xt;exports.computeDAGLayout=Ee;exports.mergeStyle=Ge;exports.useCanvasAction=_e;exports.useCanvasState=ze;exports.useHostTheme=g;
|