名称: raycast-extensions
描述: 使用 Raycast API 构建和维护 Raycast 扩展。在 @raycast/api、List、Grid、Detail、Form、AI.ask、LocalStorage、Cache、showToast 和 BrowserExtension 等场景下触发。请将此仓库的 references/api/*.md 文件作为组件规范和 API 使用的主要参考来源。
使用 React、TypeScript 和 Raycast API 构建功能强大的扩展。
当需要实现或修复 Raycast 功能时,请遵循以下步骤:
List、Grid、Detail 还是 Form。references/api/ 目录下的对应文件(例如 references/api/list.md)。showToast 处理加载/成功/失败状态。仅在快速后台任务完成时使用 showHUD。Cache,需要持久化的用户数据使用 LocalStorage。AI 或 BrowserExtension 前,务必先检查 environment.canAccess(AI) 或 environment.canAccess(BrowserExtension)。@raycast/api 组件提供简洁的实现代码。references/api/*.md 文件。文本密集型数据使用 List,图像密集型数据使用 Grid。
- List 参考 | Grid 参考
<List isLoading={isLoading} searchBarPlaceholder="搜索项目..." throttle>
<List.Item
title="项目标题"
subtitle="副标题"
accessories={[{ text: "标签" }]}
actions={
<ActionPanel>
<Action.Push title="查看详情" target={<Detail markdown="# 详情" />} />
<Action.CopyToClipboard title="复制" content="值" />
</ActionPanel>
}
/>
</List>
用于显示长篇幅内容或项目详情。
- Detail 参考
<Detail
isLoading={isLoading}
markdown="# 标题\n内容在此。"
metadata={
<Detail.Metadata>
<Detail.Metadata.Label title="状态" text="活跃" icon={Icon.Checkmark} />
</Detail.Metadata>
}
/>
务必包含 SubmitForm 操作。
- Form 参考
<Form
actions={
<ActionPanel>
<Action.SubmitForm onSubmit={(values) => console.log(values)} />
</ActionPanel>
}
>
<Form.TextField id="title" title="标题" placeholder="输入标题" />
<Form.TextArea id="description" title="描述" />
</Form>
多数反馈场景优先使用 showToast。
- Toast 参考 | HUD 参考
// 成功/失败
await showToast({ style: Toast.Style.Success, title: "成功!" });
// HUD(覆盖层)
await showHUD("完成!");
性能优先使用 Cache,持久化存储使用 LocalStorage。
- Cache 参考 | Storage 参考
// Cache(同步/临时)
const cache = new Cache();
cache.set("key", "value");
// LocalStorage(异步/持久化)
await LocalStorage.setItem("key", "value");
始终使用 environment.canAccess 进行检查。
- AI 参考 | Browser 参考
if (environment.canAccess(AI)) {
const result = await AI.ask("提示词");
}
if (environment.canAccess(BrowserExtension)) {
const tabs = await BrowserExtension.getTabs();
}
查看结合了多种组件和 API 的端到端示例,请参阅 examples.md。