Cursor Canvas aracı
Bir Cursor .canvas.tsx dosyasını yapıştırın, tarayıcıda önizleyin ve paylaşılabilir kısa bir bağlantı yayımlayın.
Örnekler Her blok canlı bir önizlemedir. Dosyayı kopyalamak için Canvas kaynağı öğesini açın veya Cursor Canvas içinde Örnek yükle ile tam genel tür galerisini alın.
En küçük varsayılan dışa aktarma: başlık artı destek metni.
Kopyala 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>
);
}
İstatistikler, çağrılar ve iki sütunlu ızgara — tipik durum panoları.
Kopyala 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>
);
}
Yığılmış BarChart artı donut PieChart. Veriler örnek telemetridir.
Kopyala 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>
);
}
Çizgili Table, adlandırılmış varlık Card ve paylaşım akışının TodoList öğesi.
Kopyala 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>
);
}
Yalnızca cursor/canvas içe aktarın (React kancalarını host sağlar) Varsayılan bir işlev bileşeni dışa aktarın Ham HTML yerine yerleşim primitive’lerini (Stack, Row, Grid) tercih edin Önizleme yeniden derlemelerinden sonra kalması gereken girdiler için useCanvasState kullanın Web’de useCanvasAction deeplink ile Cursor’ı açar; göreli openFile yolları dosyaya atlamak yerine bir sohbet istemi doldurur