Cursor Canvas 도구
Cursor .canvas.tsx 파일을 붙여 넣고 브라우저에서 미리 본 뒤, 공유 가능한 짧은 링크를 만듭니다.
예제 각 블록은 라이브 미리보기입니다. Canvas 소스 를 펼쳐 복사하거나 Cursor Canvas 에서 예제 불러오기 를 눌러 전체 공개 타입 갤러리를 넣으세요.
최소 default export: 제목과 보조 텍스트.
Hello, Canvas Live preview rendered in the browser from cursor/canvas.
복사 import { H1, Stack, Text } from "cursor/canvas";
export default function Hello() {
return (
<Stack gap={12}>
<H1>Hello, Canvas</H1>
<Text tone="secondary">
Live preview rendered in the browser from cursor/canvas.
</Text>
</Stack>
);
}
통계, 콜아웃, 두 열 그리드 — 전형적인 상태 대시보드.
Release health Deployed
canvas-host 1.4.2 is live in all regions.
Budget
Error budget burn is 18% for the current window.
Sample data · not connected to production
복사 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>
);
}
누적 BarChart와 도넛 PieChart. 데이터는 샘플 텔레메트리입니다.
Traffic mix Sample telemetry · stacked series and donut share
복사 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>
);
}
줄무늬 Table, 명명된 엔터티 Card, 공유 흐름의 TodoList.
Review board Service Owner Status canvas-host platform Healthy workers data Watch api-gateway edge Healthy
Paste a .canvas.tsx file Confirm the live preview Publish a short link 복사 import {
Card,
CardBody,
CardHeader,
H2,
Pill,
Stack,
Table,
TodoList,
} from "cursor/canvas";
export default function Review() {
return (
<Stack gap={16}>
<H2>Review board</H2>
<Table
headers={["Service", "Owner", "Status"]}
striped
rows={[
["canvas-host", "platform", "Healthy"],
["workers", "data", "Watch"],
["api-gateway", "edge", "Healthy"],
]}
/>
<Card>
<CardHeader trailing={<Pill size="sm" active>In progress</Pill>}>
Sprint tasks
</CardHeader>
<CardBody>
<TodoList
todos={[
{ id: "1", content: "Paste a .canvas.tsx file", status: "completed" },
{ id: "2", content: "Confirm the live preview", status: "in_progress" },
{ id: "3", content: "Publish a short link", status: "pending" },
]}
/>
</CardBody>
</Card>
</Stack>
);
}
cursor/canvas만 import합니다(React 훅은 호스트가 제공합니다)default 함수 컴포넌트를 export합니다 원시 HTML보다 레이아웃 프리미티브(Stack, Row, Grid)를 사용합니다 미리보기 재빌드 후에도 유지할 입력에는 useCanvasState를 사용합니다 웹의 useCanvasAction은 딥링크로 Cursor를 엽니다. 상대 openFile 경로는 파일로 이동하는 대신 채팅 프롬프트를 미리 채웁니다