feat(web): 将原生 select 替换为 shadcn/ui Select 组件并支持图片消息发送

- 在 AccountForm、AssetGallery、ChatView、ConfigForm、PromptEditor 中将 `<select>` 替换为 shadcn/ui 的 Select 组件以统一 UI 风格
- 在 ChatView 和 useChat hook 中支持发送图片附件
- 更新 pi-bridge 和 ws/chat 以处理 agent 调用中的图片数据
This commit is contained in:
2026-05-08 02:18:50 +08:00
parent 803b55605f
commit 2186b04675
9 changed files with 110 additions and 84 deletions

View File

@@ -4,6 +4,7 @@ import { useAssets } from '@/hooks/useAssets';
import { AssetProjectGroup } from './AssetProjectGroup';
import { AssetPreview } from './AssetPreview';
import { Button } from '@/components/ui/button';
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from '@/components/ui/select';
import type { Asset } from '@/types';
interface ManifestGroup {
@@ -125,16 +126,17 @@ export function AssetGallery() {
))}
</div>
<select
value={accountFilter}
onChange={(e) => setAccountFilter(e.target.value)}
className="h-8 rounded-lg border border-zinc-100 bg-zinc-50/80 px-2 text-xs hover:border-zinc-200 transition-colors"
>
<option value=""></option>
{accounts.map((a) => (
<option key={a.id} value={a.id}>{a.name}</option>
))}
</select>
<Select value={accountFilter || 'all'} onValueChange={(v) => setAccountFilter(v === 'all' ? '' : v)}>
<SelectTrigger className="h-8 w-auto min-w-[100px] text-xs border-zinc-100 bg-zinc-50/80 hover:border-zinc-200">
<SelectValue placeholder="全部账号" />
</SelectTrigger>
<SelectContent>
<SelectItem value="all"></SelectItem>
{accounts.map((a) => (
<SelectItem key={a.id} value={a.id}>{a.name}</SelectItem>
))}
</SelectContent>
</Select>
<div className="flex-1" />
<Button size="sm" variant="outline" className="h-8 text-xs rounded-lg" onClick={handleScan}>