feat: persist research conversations and refine deck headers

This commit is contained in:
2026-09-24 18:50:44 +09:00
parent ceab2e2384
commit 80cadf7242
24 changed files with 1719 additions and 127 deletions
+6 -2
View File
@@ -6,6 +6,7 @@ import {
import { PostLoadError } from '#/features/posts/use-post-feed'
import { citationUrlKey } from '#/features/research/citation-url'
import type { CitationTarget } from '#/features/research/use-citation-navigation'
import { PlatformIcon } from '../platforms/platform-icon'
import { type ColumnRegistry, useRegisterColumn } from './column-tools'
import type { DeckColumn } from './model'
import { ResearchPostCard } from './research-post-card'
@@ -50,7 +51,7 @@ export function ResearchColumn({
<section className="deck-column" aria-labelledby={headingId}>
<header className="deck-column-header">
<div className="deck-column-title">
<Icon name={column.source.kind} />
<PlatformIcon platform={column.source.platform} />
<h2 id={headingId}>{column.title}</h2>
<button
className="icon-button"
@@ -117,7 +118,10 @@ export function ResearchColumn({
>
{connectionLabel ?? '接続が見つかりません'}
</span>
<span>{sourceDescription.label}</span>
<span className="deck-source-label">
<Icon name={column.source.kind} />
{sourceDescription.label}
</span>
</div>
<p className="deck-query">{sourceDescription.query}</p>
<p className="deck-column-status" role="status">
-5
View File
@@ -214,11 +214,6 @@ export function DeckPage() {
</button>
</div>
</div>
{!deck.persisted && ready ? (
<p className="deck-save-status">
一時ビューです。再読み込みやタブを閉じると失われます。
</p>
) : null}
{saving ? (
<p className="deck-save-status" role="status">
保存しています…
+9 -3
View File
@@ -115,9 +115,6 @@
align-items: center;
gap: var(--space-xs);
}
.deck-column-title > svg {
color: var(--accent);
}
.deck-column h2 {
flex: 1;
min-width: 0;
@@ -140,6 +137,15 @@
min-width: 0;
overflow-wrap: anywhere;
}
.deck-source-label {
display: inline-flex;
align-items: center;
gap: var(--space-2xs);
}
.deck-source-label svg {
width: 14px;
height: 14px;
}
.deck-query {
margin: var(--space-2xs) 0;
font-size: var(--text-xs);