文案(搜索):按 human-copy 重写搜索与命令面板文案
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
This commit is contained in:
1 parent
542f107566
commit
822d4e7c63
4 files changed
+15
-15
No files matched your search
@@ -194,7 +194,7 @@ function PaletteBody({ initial }: { initial: string }) {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<p className="py-6 text-center text-caption text-muted-foreground">
|
<p className="py-6 text-center text-caption text-muted-foreground">
|
||||||
输入作品名、别名或页面名称。选中作品打开详情页。
|
输入作品名、别名或页面名
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
@@ -320,7 +320,7 @@ function actionItem(a: SearchAction, run: () => void): Item {
|
|||||||
icon: actionIcon(a.kind),
|
icon: actionIcon(a.kind),
|
||||||
title: a.title,
|
title: a.title,
|
||||||
meta: a.group,
|
meta: a.group,
|
||||||
hint: "前往",
|
hint: "打开",
|
||||||
run,
|
run,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -181,7 +181,7 @@ export function ReleaseResults({
|
|||||||
</h2>
|
</h2>
|
||||||
{first ? (
|
{first ? (
|
||||||
<p className="mt-0.5 text-meta break-words text-muted-foreground tabular-nums">
|
<p className="mt-0.5 text-meta break-words text-muted-foreground tabular-nums">
|
||||||
{first.sites.length} 个站点 · {first.cached ? "缓存结果" : "站点实时结果"} · 抓取于{" "}
|
{first.sites.length} 个站点 · {first.cached ? "缓存结果" : "实时结果"} · 上次抓取{" "}
|
||||||
{relTime(first.fetchedAt)}
|
{relTime(first.fetchedAt)}
|
||||||
</p>
|
</p>
|
||||||
) : null}
|
) : null}
|
||||||
@@ -199,7 +199,7 @@ export function ReleaseResults({
|
|||||||
onClick={() => refresh.mutate(api, { onError: (e) => toast.error(errorMessage(e, "刷新失败")) })}
|
onClick={() => refresh.mutate(api, { onError: (e) => toast.error(errorMessage(e, "刷新失败")) })}
|
||||||
>
|
>
|
||||||
<RefreshCw className={cn(refresh.isPending && "animate-spin")} />
|
<RefreshCw className={cn(refresh.isPending && "animate-spin")} />
|
||||||
{refresh.isPending ? "查询中…" : "刷新"}
|
{refresh.isPending ? "刷新中…" : "刷新"}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -240,7 +240,7 @@ export function ReleaseResults({
|
|||||||
<div className="pg-slab min-w-0 overflow-hidden rounded-xl">
|
<div className="pg-slab min-w-0 overflow-hidden rounded-xl">
|
||||||
{res.isPending ? (
|
{res.isPending ? (
|
||||||
<div className="p-4">
|
<div className="p-4">
|
||||||
<p className="mb-3 text-meta text-muted-foreground">正在查询各站点,最慢约 15 秒…</p>
|
<p className="mb-3 text-meta text-muted-foreground">查询各站点中,最长约 15 秒…</p>
|
||||||
<LoadingState rows={4} />
|
<LoadingState rows={4} />
|
||||||
</div>
|
</div>
|
||||||
) : res.isError && !rows.length ? (
|
) : res.isError && !rows.length ? (
|
||||||
@@ -361,7 +361,7 @@ function CoverageNotice({ page }: { page: ReleaseSearchPage }) {
|
|||||||
<ul className="mt-1 flex flex-wrap gap-x-3 gap-y-0.5 text-meta text-muted-foreground">
|
<ul className="mt-1 flex flex-wrap gap-x-3 gap-y-0.5 text-meta text-muted-foreground">
|
||||||
{page.failedSites.map((s) => (
|
{page.failedSites.map((s) => (
|
||||||
<li key={s.siteId} className="break-all" title={s.error ?? undefined}>
|
<li key={s.siteId} className="break-all" title={s.error ?? undefined}>
|
||||||
{s.siteName}:{SITE_STATUS[s.status]}
|
{s.siteName}:{SITE_STATUS[s.status]}
|
||||||
{s.error ? `(${s.error})` : ""}
|
{s.error ? `(${s.error})` : ""}
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
@@ -384,7 +384,7 @@ function CoverageNotice({ page }: { page: ReleaseSearchPage }) {
|
|||||||
<ul className="mt-1 space-y-0.5 pl-4">
|
<ul className="mt-1 space-y-0.5 pl-4">
|
||||||
{skipped.map((s) => (
|
{skipped.map((s) => (
|
||||||
<li key={s.siteId} className="break-all">
|
<li key={s.siteId} className="break-all">
|
||||||
{s.siteName}:{s.error ?? "站点不支持搜索"}
|
{s.siteName}:{s.error ?? "不支持搜索"}
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
@@ -650,11 +650,11 @@ function ReleaseRow({ r, onOpen, onDownload }: { r: SearchRelease; onOpen: () =>
|
|||||||
</span>
|
</span>
|
||||||
<span className="lg:w-16 lg:text-right">{r.sizeBytes === null ? "—" : formatBytes(r.sizeBytes, 1)}</span>
|
<span className="lg:w-16 lg:text-right">{r.sizeBytes === null ? "—" : formatBytes(r.sizeBytes, 1)}</span>
|
||||||
<span className="inline-flex items-center gap-0.5 lg:w-28" title="做种 / 下载">
|
<span className="inline-flex items-center gap-0.5 lg:w-28" title="做种 / 下载">
|
||||||
<ArrowUp aria-label="做种" className="h-3.5 w-3.5" />
|
<ArrowUp aria-label="做种数" className="h-3.5 w-3.5" />
|
||||||
<span className={cn("text-body", seedless ? "text-muted-foreground" : "font-semibold text-foreground")}>
|
<span className={cn("text-body", seedless ? "text-muted-foreground" : "font-semibold text-foreground")}>
|
||||||
{r.seeders ?? "—"}
|
{r.seeders ?? "—"}
|
||||||
</span>
|
</span>
|
||||||
<ArrowDown aria-label="下载" className="ml-1.5 h-3 w-3" />
|
<ArrowDown aria-label="下载数" className="ml-1.5 h-3 w-3" />
|
||||||
{r.leechers ?? "—"}
|
{r.leechers ?? "—"}
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
@@ -667,15 +667,15 @@ function ReleaseRow({ r, onOpen, onDownload }: { r: SearchRelease; onOpen: () =>
|
|||||||
<span className="flex flex-wrap items-center gap-1">
|
<span className="flex flex-wrap items-center gap-1">
|
||||||
{r.sourceReleaseId ? (
|
{r.sourceReleaseId ? (
|
||||||
<Button asChild variant="ghost" size="sm">
|
<Button asChild variant="ghost" size="sm">
|
||||||
<Link to={`/console/sites/${r.siteId}`} title="在站点工作台查看">
|
<Link to={`/console/sites/${r.siteId}`} title="打开站点页">
|
||||||
<ExternalLink />
|
<ExternalLink />
|
||||||
工作台
|
站点页
|
||||||
</Link>
|
</Link>
|
||||||
</Button>
|
</Button>
|
||||||
) : null}
|
) : null}
|
||||||
<Button variant="ghost" size="sm" onClick={() => delegateToAgent(r)}>
|
<Button variant="ghost" size="sm" onClick={() => delegateToAgent(r)}>
|
||||||
<Bot />
|
<Bot />
|
||||||
委托智能体
|
交给智能体
|
||||||
</Button>
|
</Button>
|
||||||
<Button size="sm" onClick={onDownload}>
|
<Button size="sm" onClick={onDownload}>
|
||||||
<Download />
|
<Download />
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ export function WorksSection({ q }: { q: string }) {
|
|||||||
plain
|
plain
|
||||||
icon={Film}
|
icon={Film}
|
||||||
title="没有匹配的作品"
|
title="没有匹配的作品"
|
||||||
description="换个译名、原名或别名再搜;资源标题可以点「按关键词搜资源」。"
|
description="换个译名、原名或别名再搜,或点「按关键词搜资源」直接搜资源标题。"
|
||||||
className="py-8"
|
className="py-8"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ export function SitePickerDialog({
|
|||||||
))}
|
))}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
{sitesQ.isPending ? (
|
{sitesQ.isPending ? (
|
||||||
<p className="text-caption text-muted-foreground">加载站点…</p>
|
<p className="text-caption text-muted-foreground">加载中…</p>
|
||||||
) : sites.length === 0 ? (
|
) : sites.length === 0 ? (
|
||||||
<p className="text-caption text-muted-foreground">
|
<p className="text-caption text-muted-foreground">
|
||||||
还没有启用的站点。
|
还没有启用的站点。
|
||||||
@@ -156,7 +156,7 @@ export function SitePickerDialog({
|
|||||||
.filter((s) => ids.includes(s.id))
|
.filter((s) => ids.includes(s.id))
|
||||||
.map((s) => s.name)
|
.map((s) => s.name)
|
||||||
.join("、")
|
.join("、")
|
||||||
: "没有站点勾选「默认参与搜索」。在站点页打开,或改选全部站点。"}
|
: "没有站点勾选「默认参与搜索」。到站点页勾选,或改选「全部站点」。"}
|
||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
<DialogFooter>
|
<DialogFooter>
|
||||||
|
|||||||
Reference in new issue
Block a user