组件
如果您的注册表已托管并通过 URL 公开访问,您可以使用 https://v0.dev/chat/api/open?url=[URL]
端点在 v0 中打开注册表项。
例如:https://v0.dev/chat/api/open?url=https://ui.shadcn.org.cn/r/styles/new-york/login-01.json
重要提示: 在 v0 中打开
不支持 cssVars
、css
、envVars
、命名空间注册表或高级身份验证方法。
按钮
有关如何构建自己的 在 v0 中打开
按钮的更多信息,请参阅构建您的“在 v0 中打开”按钮。
这是一个如何在您的网站上添加 在 v0 中打开
按钮的简单示例。
import { Button } from "@/components/ui/button"
export function OpenInV0Button({ url }: { url: string }) {
return (
<Button
aria-label="Open in v0"
className="h-8 gap-1 rounded-[6px] bg-black px-3 text-xs text-white hover:bg-black hover:text-white dark:bg-white dark:text-black"
asChild
>
<a
href={`https://v0.dev/chat/api/open?url=${url}`}
target="_blank"
rel="noreferrer"
>
Open in{" "}
<svg
viewBox="0 0 40 20"
fill="none"
xmlns="http://www.w3.org/2000/svg"
className="h-5 w-5 text-current"
>
<path
d="M23.3919 0H32.9188C36.7819 0 39.9136 3.13165 39.9136 6.99475V16.0805H36.0006V6.99475C36.0006 6.90167 35.9969 6.80925 35.9898 6.71766L26.4628 16.079C26.4949 16.08 26.5272 16.0805 26.5595 16.0805H36.0006V19.7762H26.5595C22.6964 19.7762 19.4788 16.6139 19.4788 12.7508V3.68923H23.3919V12.7508C23.3919 12.9253 23.4054 13.0977 23.4316 13.2668L33.1682 3.6995C33.0861 3.6927 33.003 3.68923 32.9188 3.68923H23.3919V0Z"
fill="currentColor"
></path>
<path
d="M13.7688 19.0956L0 3.68759H5.53933L13.6231 12.7337V3.68759H17.7535V17.5746C17.7535 19.6705 15.1654 20.6584 13.7688 19.0956Z"
fill="currentColor"
></path>
</svg>
</a>
</Button>
)
}
<OpenInV0Button url="https://example.com/r/hello-world.json" />
身份验证
“在 v0 中打开”仅支持查询参数认证。它不支持命名空间注册表或Bearer令牌或API密钥等高级认证方法。
使用查询参数认证
要在 v0 中为您的注册表添加认证,请使用 token
查询参数
https://registry.company.com/r/hello-world.json?token=your_secure_token_here
在您的注册表服务器上实现时
- 检查
token
查询参数 - 根据您的身份验证系统验证令牌
- 如果令牌无效或缺失,则返回
401 Unauthorized
响应 - shadcn CLI 和 v0 中的“打开”都将处理 401 响应并向用户显示相应的消息
实施示例
// Next.js API route example
export async function GET(request: NextRequest) {
const token = request.nextUrl.searchParams.get("token")
if (!isValidToken(token)) {
return NextResponse.json(
{
error: "Unauthorized",
message: "Invalid or missing token",
},
{ status: 401 }
)
}
// Return the registry item
return NextResponse.json(registryItem)
}
安全提示: 务必对令牌进行加密并设置过期时间。切勿在文档或示例中公开生产令牌。