Files
fusion/packages/dashboard/app/components/ResearchView.css
Fusion c5de7e183b feat(FN-2991): merge fusion/fn-2991
Commits merged:
- fix(FN-2991): align failed research status badge semantics
- feat(FN-2991): add research dashboard view and navigation entry
- fix(FN-2991): complete Step 8 — resolve lint and typecheck gates
- test(FN-2991): address review feedback for Step 7
- test(FN-2991): complete Step 7 — add research store and route tests
- feat(FN-2991): complete Step 6 — add research client API helpers
- feat(FN-2991): complete Step 5 — add research REST routes
- feat(FN-2991): complete Step 4 — wire research store into core exports
- feat(FN-2991): complete Step 3 — implement research store
- feat(FN-2991): complete Step 2 — add research schema and migration
- feat(FN-2991): complete Step 1 — add research domain types

Files changed:
packages/core/src/__tests__/db.test.ts             |  26 +-
 packages/core/src/__tests__/insight-store.test.ts  |   8 +-
 packages/core/src/__tests__/mission-store.test.ts  |   2 +-
 packages/core/src/__tests__/research-store.test.ts | 118 +++++++
 packages/core/src/__tests__/roadmap-store.test.ts  |   2 +-
 packages/core/src/__tests__/run-audit.test.ts      |   2 +-
 packages/core/src/__tests__/task-documents.test.ts |   2 +-
 packages/core/src/db.ts                            |  82 ++++-
 packages/core/src/index.ts                         |  30 ++
 packages/core/src/research-store.ts                | 377 +++++++++++++++++++++
 packages/core/src/research-types.ts                | 162 +++++++++
 packages/core/src/store.ts                         |  14 +
 packages/dashboard/app/App.tsx                     |  12 +
 .../app/api/__tests__/research-api.test.ts         | 120 +++++++
 packages/dashboard/app/api/legacy.ts               | 132 +++++++-
 packages/dashboard/app/components/Header.tsx       |  23 +-
 packages/dashboard/app/components/MobileNavBar.tsx |  16 +-
 packages/dashboard/app/components/ResearchView.css | 110 ++++++
 packages/dashboard/app/components/ResearchView.tsx | 145 ++++++++
 .../app/components/__tests__/Header.test.tsx       |   4 +-
 .../app/components/__tests__/ResearchView.test.tsx | 170 ++++++++++
 packages/dashboard/app/hooks/useViewState.ts       |   3 +-
 packages/dashboard/src/research-routes.ts          | 223 ++++++++++++
 .../src/routes/register-integrated-routers.ts      |   2 +
 24 files changed, 1751 insertions(+), 34 deletions(-)

Fusion-Task-Id: FN-2991
2026-04-29 22:21:27 -07:00

111 lines
1.9 KiB
CSS

.research-view {
display: flex;
flex-direction: column;
gap: var(--space-lg);
padding: var(--space-lg);
}
.research-view__header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: var(--space-md);
}
.research-view__title {
margin: 0;
color: var(--text);
}
.research-view__subtitle {
margin: var(--space-xs) 0 0;
color: var(--text-muted);
}
.research-view__state {
display: flex;
flex-direction: column;
gap: var(--space-md);
padding: var(--space-lg);
}
.research-view__state--error {
border-color: var(--color-error);
background: color-mix(in srgb, var(--color-error) 12%, var(--card));
}
.research-view__stats {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: var(--space-md);
}
.research-view__stat-card {
padding: var(--space-lg);
}
.research-view__stat-label {
color: var(--text-muted);
}
.research-view__stat-value {
margin-top: var(--space-xs);
color: var(--text);
font-family: var(--font-mono);
}
.research-view__list {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: var(--space-md);
}
.research-view__run-card {
display: flex;
flex-direction: column;
gap: var(--space-sm);
}
.research-view__run-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-sm);
}
.research-view__status-badge--failed {
border-color: var(--color-error);
background: color-mix(in srgb, var(--color-error) 18%, transparent);
color: var(--color-error);
}
.research-view__run-title {
margin: 0;
color: var(--text);
}
.research-view__run-query {
margin: 0;
color: var(--text-muted);
}
.research-view__hint {
margin: 0;
color: var(--text-muted);
}
@media (max-width: 768px) {
.research-view {
padding: var(--space-md);
}
.research-view__header {
flex-direction: column;
}
.research-view__stats,
.research-view__list {
grid-template-columns: minmax(0, 1fr);
}
}