第21个.dev 工具栏
视觉氛围编码. 就在你的密码库里.

关于项目
playwise 是一个浏览器工具栏,将您的前端 UI 连接到您的代码编辑器中的代码 AI 代理.
- QQ 选择网络应用程序中的任何元素
- 请留言
- 让你的人工智能特工做魔法
对厌倦将文件夹路径粘贴成提示的 devs来说是完美的. 阶段性地给出您的 AI 实时、 浏览器驱动的上下文 .
* 特性
由AI代理编辑前端代码:
- {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}没有用
- QQ 用插件自定义和扩展功能
- 将 DOM 元素和更多元数据发送给您的 AI 代理
- 🧪 举出一些例子来说明React, Vue, Svelte 等
- QQ 从21st.dev 库搜索并整合 UI 组件
- QQ 在智能辅助下检测运行时间出错
- 使用魔法聊天的 AI 驱动组件生成
地方发展
对于本地开发,请使用您的 API 服务器编辑 TWENTY_FIRST_URL 常数在 toolbar/core/src/constants.ts数字 :
// For local development
export const TWENTY_FIRST_URL = 'http://localhost:3000';
// For production (default)
export const TWENTY_FIRST_URL = 'https://21st.dev';
QQ 快速启动
1. 国家 安装代码编辑器扩展名( Cursor, Windsurf, VS 代码, Trae IDE, Kilo 代码)
2. 国家 安装并注入工具栏
[TIP] 🪄 自动安装工具栏(AI-guided):
- 在光标中,按
CMD + Shift + P- 输入
setupToolbar- 执行命令和工具栏将自动输入QQ
或者按照手动方式:
安装 @ 21st- extension/ 工具栏数字 :
pnpm i -D @21st-extension/toolbar
将工具栏注入您的应用程序 dev-mode :
// 1. Import the toolbar
import { initToolbar } from '@21st-extension/toolbar';
// 2. Define your toolbar configuration
const stagewiseConfig = {
plugins: [],
};
// 3. Initialize the toolbar when your app starts
// Framework-agnostic approach - call this when your app initializes
function setupStagewise() {
// Only initialize once and only in development mode
if (process.env.NODE_ENV === 'development') {
initToolbar(stagewiseConfig);
}
}
// Call the setup function when appropriate for your framework
setupStagewise();
工具栏将 自动连接 到扩展站!
[大 🚫 如果发送提示时无结果 :
如果您打开了多个光标窗口,工具栏可能会向错误的窗口发送提示,使其显得好像"没有发送提示". 为确保可靠运作:
- 使用相机时只打开一个光标窗口
解决这件事的快到了!
具体框架的一体化实例
为了便于整合,我们提供了带有专用工具箱组件(例如:, <TwentyFirstToolbar>) (中文(简体) ). 您通常可以导入这些 @21st-extension/toolbar-[framework-name]。 。 。 .
反应.js
我们提供 @21st-extension/toolbar-react 用于 React 工程的软件包。 初始化您主条目文件中的工具栏( 例如 ), src/main.tsx),通过为它创建单独的反应根. 这样可以保证不会干扰你的主要应用树.
// src/main.tsx
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import App from './App.tsx';
import { TwentyFirstToolbar } from '@21st-extension/toolbar-react';
import './index.css';
// Render the main app
createRoot(document.getElementById('root')!).render(
<StrictMode>
<App />
</StrictMode>,
);
// Initialize toolbar separately
const toolbarConfig = {
plugins: [], // Add your custom plugins here
};
document.addEventListener('DOMContentLoaded', () => {
const toolbarRoot = document.createElement('div');
toolbarRoot.id = 'stagewise-toolbar-root'; // Ensure a unique ID
document.body.appendChild(toolbarRoot);
createRoot(toolbarRoot).render(
<StrictMode>
<TwentyFirstToolbar config={toolbarConfig} />
</StrictMode>
);
});
下一个.js
使用 @21st-extension/toolbar-next next.js 应用程序的软件包。 包含 <TwentyFirstToolbar> 根布局文件中的组件(src/app/layout.tsx) (中文(简体) ).
// src/app/layout.tsx
import { TwentyFirstToolbar } from '@21st-extension/toolbar-next';
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en">
<body>
<TwentyFirstToolbar
config={{
plugins: [], // Add your custom plugins here
}}
/>
{children}
</body>
</html>
);
}
纳克特.js
对于 Nuxt.js 工程,您可以使用 @21st-extension/toolbar-vue 软件包。 设置 <TwentyFirstToolbar> 组件 app.vue 或相关的布局文件.
// app.vue
<script setup lang="ts">
import { TwentyFirstToolbar, type ToolbarConfig } from '@21st-extension/toolbar-vue';
const config: ToolbarConfig = {
plugins: [], // Add your custom plugins here
};
</script>
<template>
<div>
<NuxtRouteAnnouncer />
<ClientOnly>
<TwentyFirstToolbar :config="config" />
</ClientOnly>
<NuxtWelcome />
</div>
</template>
Vue.js (英语)
使用 @21st-extension/toolbar-vue vue.js 项目的软件包。 添加 <TwentyFirstToolbar> 组件到您的主要 App 组件(例如, App.vue) (中文(简体) ).
// src/App.vue
<script setup lang="ts">
import { TwentyFirstToolbar, type ToolbarConfig } from '@21st-extension/toolbar-vue';
const config: ToolbarConfig = {
plugins: [], // Add your custom plugins here
};
</script>
<template>
<TwentyFirstToolbar :config="config" />
<div>
<!-- Your app content -->
</div>
</template>
斯维尔特基特
对于SvelteKit, 您可以使用工具栏集成 @21st-extension/toolbar 和斯维尔特的生命周期功能,或寻找一个专用 @21st-extension/toolbar-svelte 软件包。 创建一个组件,有条件地使/初始化客户端的工具栏(例如, src/lib/components/TwentyFirstToolbarLoader.svelte 或直接输入 src/routes/+layout.svelte) (中文(简体) ).
使用 onMount 内 +layout.svelte (与 @21st-extension/toolbar:
<!-- src/routes/+layout.svelte -->
<script lang="ts">
import { onMount } from 'svelte';
import { browser } from '$app/environment';
import { initToolbar, type ToolbarConfig } from '@21st-extension/toolbar'; // Adjust path if needed
onMount(() => {
if (browser) {
const stagewiseConfig: ToolbarConfig = {
plugins: [
// Add your Svelte-specific plugins or configurations here
],
};
initToolbar(stagewiseConfig);
}
});
</script>
<slot />
使用加载器组件(从仓库中取出的例子):
实例存储器使用 ToolbarLoader.svelte 关闭 ToolbarWrapper.svelte。 。 。 . ToolbarWrapper.svelte 然后会打电话 initToolbar 从 @21st-extension/toolbar。 。 。 .
<!-- examples/svelte-kit-example/src/lib/components/stagewise/ToolbarLoader.svelte -->
<script lang="ts">
import type { ToolbarConfig } from '@21st-extension/toolbar';
// ToolbarWrapper.svelte is a custom component that would call initToolbar
import ToolbarWrapper from './ToolbarWrapper.svelte';
import { browser } from '$app/environment';
const stagewiseConfig: ToolbarConfig = {
plugins: [
// ... your svelte plugin config
],
};
</script>
{#if browser}
<ToolbarWrapper config={stagewiseConfig} />
{/if}
然后,你会使用 TwentyFirstToolbarLoader 在你身边 src/routes/+layout.svelte。 。 。 .
代理支持
| 探员 | 支助 |
|---|---|
| 光标 | ✅ |
| GitHub 副驾驶 | ✅ |
| 风起浪起 | ✅ |
| 线 | ✅ |
| Roo 代码 | ✅ |
| 拖车 IDE | ✅ |
| Kilo 代码 | ✅ |
| 克劳德代码 | QQ( 通过复制提示) |
| 双子座CLI | QQ( 通过复制提示) |
| 任何AI探员 | QQ( 通过复制提示) |
* 路线图
看看我们 项目路线图 用于当前特性、错误修正和进度.
许可证
由tiq UG(haftungsbeschränkt)开发,并在AGPLv3许可证下提供.
关于许可证模式的更多信息,请访问 关于 GNU 许可证的 FAQ。 。 。 .
对于AGPLv3许可范围以外的使用情况,请自觉: 联系我们。 。 。 .
捐款
我们才刚开始 爱的捐献! 看看我们 捐款额 指导参与。 对于虫子和新想法,请 打开一个问题!
社区和支持
- 👾 加入我们的Discord
- 打开一个 gitHub 上的问题 为 dev 支持.
联系我们
有问题或想给商业或企业使用许可吗?
📧 销售量