Cursor Canvas 工具
貼上 Cursor 產生的 .canvas.tsx,在瀏覽器預覽,並產生可分享短鏈。
進階功能
原始碼在瀏覽器裡用 Sucrase 編譯,再按模組白名單求值:
- 允許:
cursor/canvas、react、react/jsx-runtime、react/jsx-dev-runtime - 其他 import 會在編譯期被攔截
- 檔案必須包含
from "cursor/canvas" 或 from 'cursor/canvas' - 原始碼最長 20 萬字元
這是預覽沙箱,不是通用 React 打包器。npm 套件、CSS 檔案和本機工作區匯入都無法解析。
預覽透過 useHostTheme 跟隨站點的淺色 / 深色模式。切換主題時會重新渲染。
useCanvasState 會在目前頁面的重建之間保留控制項值。編輯附近原始碼時,表單、膠囊按鈕和開關仍會記住目前值。
import { Callout, Grid, H2, Row, Stack, Stat, Text } from "cursor/canvas";
export default function Metrics() {
return (
<Stack gap={16}>
<H2>Release health</H2>
<Row gap={16} wrap>
<Stat value="99.2%" label="Uptime" tone="success" />
<Stat value="142 ms" label="p95 latency" tone="info" />
<Stat value="3" label="Open incidents" tone="warning" />
</Row>
<Grid columns={2} gap={12}>
<Callout tone="success" title="Deployed">
canvas-host 1.4.2 is live in all regions.
</Callout>
<Callout tone="warning" title="Budget">
Error budget burn is 18% for the current window.
</Callout>
</Grid>
<Text size="small" tone="tertiary">
Sample data · not connected to production
</Text>
</Stack>
);
}
本預覽覆蓋 Cursor gallery 裡公開的 cursor/canvas 元件:版面、排版、卡片、提示、指標、表格、圖表、待辦、Diff 和 DAG 輔助函式。
import { BarChart, H2, PieChart, Stack, Text } from "cursor/canvas";
export default function Charts() {
return (
<Stack gap={16}>
<H2>Traffic mix</H2>
<BarChart
categories={["Mon", "Tue", "Wed", "Thu", "Fri"]}
series={[
{ name: "Accepted", data: [42, 55, 48, 61, 58], tone: "success" },
{ name: "Rejected", data: [8, 6, 11, 7, 9], tone: "danger" },
]}
stacked
height={200}
/>
<PieChart
data={[
{ label: "IDE", value: 128, tone: "info" },
{ label: "CLI", value: 34, tone: "success" },
{ label: "Cloud", value: 51, tone: "warning" },
]}
donut
size={180}
/>
<Text size="small" tone="tertiary">
Sample telemetry · stacked series and donut share
</Text>
</Stack>
);
}
- 短鏈形如
/cursor-canvas/cv_xxxx - 每次開啟會增加
viewCount - 連結會一直保留,直到擁有者在 已發布短鏈 裡刪除
- 同一 owner 的相同原始碼 MD5 會重用既有紀錄(
reused: true)
網頁上的 useCanvasAction 會透過官方 deeplink 喚起 Cursor。newComposerChat 會預填聊天提示。絕對路徑的 openFile 使用 cursor://file/...;工作區相對路徑在瀏覽器裡無法解析,因此也會預填提示。openAgent 沒有公開 deeplink,會帶上會話 id 預填提示。系統仍會在啟動 Cursor 前徵求確認。