feat: 核心股追踪题材标签跳题材详情、股票名跳股票详情

- 题材标签 → /theme/$code
- 股票名 → /stock/$code(阻止冒泡避免触发行展开)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Sakurasan
2026-08-10 21:53:47 +08:00
co-authored by Claude
parent 6d3c470b7b
commit b4d48180b7
+13 -4
View File
@@ -87,7 +87,14 @@ function CoreStocksPage() {
<td className="px-3 py-1.5 whitespace-nowrap"> <td className="px-3 py-1.5 whitespace-nowrap">
<span className="inline-flex items-center gap-1"> <span className="inline-flex items-center gap-1">
{isOpen ? <ChevronDown className="h-3.5 w-3.5 text-muted-foreground" /> : <ChevronRight className="h-3.5 w-3.5 text-muted-foreground" />} {isOpen ? <ChevronDown className="h-3.5 w-3.5 text-muted-foreground" /> : <ChevronRight className="h-3.5 w-3.5 text-muted-foreground" />}
<span className="font-medium">{s.stockName}</span> <Link
to="/stock/$code"
params={{ code: s.stockCode }}
onClick={(e) => e.stopPropagation()}
className="font-medium hover:text-primary hover:underline"
>
{s.stockName}
</Link>
<span className="ml-1 text-[10px] text-muted-foreground">{s.stockCode}</span> <span className="ml-1 text-[10px] text-muted-foreground">{s.stockCode}</span>
</span> </span>
</td> </td>
@@ -120,12 +127,14 @@ function CoreStocksPage() {
{s.themes && s.themes.length > 0 ? ( {s.themes && s.themes.length > 0 ? (
<div className="flex flex-wrap gap-1"> <div className="flex flex-wrap gap-1">
{s.themes.map((t) => ( {s.themes.map((t) => (
<span <Link
key={t.theme_code} key={t.theme_code}
className="px-1.5 py-0.5 rounded bg-primary/10 text-primary text-[11px]" to="/theme/$code"
params={{ code: t.theme_code }}
className="px-1.5 py-0.5 rounded bg-primary/10 text-primary text-[11px] hover:bg-primary/20 transition-colors"
> >
{t.theme_name} {t.theme_name}
</span> </Link>
))} ))}
</div> </div>
) : ( ) : (