summaryrefslogtreecommitdiff
path: root/frontend/src/pages/ProjectStrategyTab.svelte
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/pages/ProjectStrategyTab.svelte')
-rw-r--r--frontend/src/pages/ProjectStrategyTab.svelte36
1 files changed, 20 insertions, 16 deletions
diff --git a/frontend/src/pages/ProjectStrategyTab.svelte b/frontend/src/pages/ProjectStrategyTab.svelte
index 0df9f1a..8614cc0 100644
--- a/frontend/src/pages/ProjectStrategyTab.svelte
+++ b/frontend/src/pages/ProjectStrategyTab.svelte
@@ -5,6 +5,10 @@
import Modal from '../components/Modal.svelte';
import { Button } from '$lib/components/ui/button';
import { Input } from '$lib/components/ui/input';
+ import { Label } from '$lib/components/ui/label';
+ import { Alert } from '$lib/components/ui/alert';
+ import { Badge } from '$lib/components/ui/badge';
+ import * as Card from '$lib/components/ui/card';
import { projectsStore } from '../lib/listsStore.svelte';
import {
getProject,
@@ -261,14 +265,14 @@
<Status busy={initBusy} error={initErr} busyText="加载策略草稿…" empty={null} />
{#if !initBusy && !initErr}
- <div class="card stack">
+ <Card.Root size="sm" class="stack">
<div class="spread">
<h2>策略代码(Backtrader Python)</h2>
<span class="save-status" role="status">
{saveStatus === 'saved' && `已保存${saveMsg ? ` · ${saveMsg}` : ''}`}
- {#if saveStatus === 'dirty'}<span class="badge warn">有未保存修改</span>{/if}
- {#if saveStatus === 'saving'}<span class="badge teal">保存中…</span>{/if}
- {#if saveStatus === 'conflict'}<span class="badge danger">冲突</span>{/if}
+ {#if saveStatus === 'dirty'}<Badge variant="outline">有未保存修改</Badge>{/if}
+ {#if saveStatus === 'saving'}<Badge variant="secondary">保存中…</Badge>{/if}
+ {#if saveStatus === 'conflict'}<Badge variant="destructive">冲突</Badge>{/if}
</span>
</div>
<p class="hint">
@@ -298,23 +302,23 @@
<Status busy={false} error={snapshotErr} empty={snapshotMsg} />
{#if conflictServer}
- <div class="banner warn" role="alert">
+ <Alert variant="default" class="bg-[var(--warn-soft)] border-[#f0ddb4]">
<span aria-hidden="true">⚠</span>
<span>
服务器上的草稿已被其他修改更新(代 {conflictServer.generation}),你正在编辑的本地内容不会自动覆盖。
</span>
- </div>
+ </Alert>
<DiffView before={conflictServer.code} after={code} beforeLabel="服务器" afterLabel="本机" />
<div class="row">
<Button onclick={keepMine}>保留本机修改(覆盖服务器)</Button>
<Button variant="outline" onclick={loadServer}>采用服务器版本</Button>
</div>
{/if}
- </div>
+ </Card.Root>
<div class="stack">
<h2>AI 助手</h2>
- <div class="card stack">
+ <Card.Root size="sm" class="stack">
<label for="ai-instruction">希望 AI 帮你做什么?<span class="hint">例如:把均线周期改为两个可调参数并解释影响</span></label>
<textarea id="ai-instruction" rows="3" bind:value={instruction} placeholder="描述对策略的修改意图,AI 返回完整新源码与差异预览"></textarea>
<div class="row">
@@ -323,10 +327,10 @@
</Button>
</div>
{#if aiErr}
- <div class="banner error" role="alert">
+ <Alert variant="destructive" class="bg-[var(--danger-soft)] border-[#f2c7c7]">
<span aria-hidden="true">⚠</span>
<span>{aiErr}</span>
- </div>
+ </Alert>
{/if}
{#if aiResult}
@@ -352,18 +356,18 @@
</Button>
<Button variant="ghost" disabled={aiAcceptBusy} onclick={discardAI}>放弃建议</Button>
{#if aiResult.base_generation !== baseGeneration}
- <span class="banner warn" role="alert">草稿代 {aiResult.base_generation} 与当前 {baseGeneration} 不一致,接受会失败;请重新发起说明</span>
+ <span class="text-[var(--warn)]">草稿代 {aiResult.base_generation} 与当前 {baseGeneration} 不一致,接受会失败;请重新发起说明</span>
{/if}
{#if aiAcceptErr}
- <div class="banner error" role="alert">{aiAcceptErr}</div>
+ <Alert variant="destructive" class="bg-[var(--danger-soft)] border-[#f2c7c7]">{aiAcceptErr}</Alert>
{/if}
</div>
</div>
{/if}
{#if aiNote}
- <div class="banner info">{aiNote}</div>
+ <Alert variant="default" class="bg-[var(--brand-soft)] border-[#bfe9db]">{aiNote}</Alert>
{/if}
- </div>
+ </Card.Root>
</div>
<div class="stack">
@@ -373,7 +377,7 @@
<Status busy={false} empty="还没有版本快照" emptyHint="保存第一个快照后可以在历史中查看完整代码与恢复" />
{/if}
{#if !versionsBusy && versions.length > 0}
- <div class="card" style="padding:0.4rem 0.6rem">
+ <div class="px-3 py-2 rounded-[var(--radius-lg)] border border-border bg-card">
<table class="data">
<thead>
<tr>
@@ -393,7 +397,7 @@
<span class="hint">版本代 {v.hash?.slice(0, 8) || '—'}</span>
</td>
<td class="num">{v.hash?.slice(0, 12)}</td>
- <td><span class="badge grey">{versionSourceLabel[v.source]}</span></td>
+ <td><Badge variant="outline">{versionSourceLabel[v.source]}</Badge></td>
<td>
<div class="row">
<Button variant="outline" size="sm" onclick={() => void compareWithDraft(v)}>对比当前</Button>