Files
fusion/packages/dashboard/app/components/ResearchView.css
gsxdsm 1ab2d4161a FN-6789: make dashboard utility views fill flex rows
Goals, Research, and Stash Recovery now keep full-width layouts inside the project-content flex row.

- Add flex growth, zero min-width, and full-width root sizing to Goals, Research, and Stash Recovery views.
- Document the view-level flex sizing requirement with FNXC comments.
- Add CSS contract tests for both bundled and base CSS fixtures.

Files changed:
 packages/dashboard/app/components/GoalsView.css      |  7 +++++++
 packages/dashboard/app/components/ResearchView.css   |  7 +++++++
 .../dashboard/app/components/StashRecoveryView.css   |  7 +++++++
 .../app/components/__tests__/GoalsView.test.tsx      | 20 ++++++++++++++++++++
 .../app/components/__tests__/ResearchView.test.tsx   | 19 +++++++++++++++++++
 .../components/__tests__/StashRecoveryView.test.tsx  | 20 ++++++++++++++++++++
 6 files changed, 80 insertions(+)

Fusion-Task-Id: FN-6789

Fusion-Task-Lineage: f650d95b-583b-48c8-a2e4-fe63317b4576
2026-06-20 01:52:26 -07:00

350 lines
6.8 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
FNXC:ResearchViewStyling 2026-06-20-01:33:
FN-6789 mounts Research as a flex child of .project-content; grow, zero min-width, and use 100% width so the view fills the viewport instead of collapsing to intrinsic content width, mirroring the FN-6446 SecretsView fix.
*/
.research-view {
display: flex;
flex: 1 1 auto;
flex-direction: column;
gap: var(--space-md);
height: 100%;
min-height: 0;
min-width: 0;
width: 100%;
overflow: hidden;
padding: var(--space-lg);
padding-bottom: var(--space-lg);
}
.research-view__header {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: var(--space-md);
min-width: 0;
}
.research-view__header-actions {
flex-shrink: 0;
}
.research-view__title {
margin: 0;
}
.research-view__subtitle {
margin: var(--space-xs) 0 0;
color: var(--text-muted);
}
.research-view__layout {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
gap: var(--space-md);
min-height: 0;
flex: 1;
overflow: hidden;
}
.research-view__sidebar,
.research-view__reader {
padding: var(--space-md);
display: flex;
flex-direction: column;
gap: var(--space-md);
min-height: 0;
min-width: 0;
overflow: hidden;
}
.research-view__sidebar-content {
display: flex;
flex: 1;
flex-direction: column;
gap: var(--space-md);
min-height: 0;
}
.research-view__reader {
overflow: auto;
}
.research-view__reader-content {
display: flex;
flex-direction: column;
gap: var(--space-md);
min-height: 0;
}
.research-view__run-detail {
display: flex;
flex-direction: column;
gap: var(--space-md);
min-height: 0;
}
.research-view__form {
display: flex;
flex-direction: column;
gap: var(--space-sm);
flex-shrink: 0;
}
.research-view__form .form-group,
.research-view__history-header.form-group,
.research-view__actions .form-group {
margin: 0;
padding: 0;
}
.research-view__textarea {
min-height: calc(var(--space-2xl) * 3);
resize: vertical;
}
.research-view__providers {
display: grid;
gap: var(--space-xs);
}
.research-view__provider-lock {
margin-left: var(--space-xs);
color: var(--text-muted);
}
.research-view__history-header {
display: flex;
flex-direction: column;
align-items: stretch;
gap: var(--space-xs);
flex-shrink: 0;
}
.research-view__history-search-row {
display: flex;
align-items: center;
gap: var(--space-xs);
min-width: 0;
}
.research-view__history-search-row .input {
flex: 1;
min-width: 0;
}
.research-view__history {
display: flex;
flex-direction: column;
gap: var(--space-xs);
flex: 1;
min-height: 0;
overflow: auto;
}
.research-view__history-item {
text-align: left;
padding: var(--space-sm);
min-height: calc(var(--space-lg) * 2 + var(--space-xs));
display: flex;
flex-direction: column;
justify-content: center;
gap: var(--space-xs);
cursor: pointer;
}
.research-view__history-item--active {
border-color: var(--todo);
box-shadow: var(--focus-ring);
}
.research-view__status-row {
display: flex;
align-items: center;
gap: var(--space-xs);
text-transform: capitalize;
}
.research-view__run-title,
.research-view__run-query,
.research-view__run-summary {
margin: 0;
}
.research-view__run-query {
color: var(--text-muted);
}
.research-view__actions {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--space-xs);
margin-top: var(--space-sm);
}
.research-view__citations {
margin: var(--space-sm) 0 0;
padding-left: var(--space-lg);
display: flex;
flex-direction: column;
gap: var(--space-xs);
}
.research-view__citations a {
color: var(--text);
}
.research-view__error {
color: var(--color-error);
}
.research-view__findings {
display: flex;
flex-direction: column;
gap: var(--space-sm);
}
.research-view__finding {
padding: var(--space-sm);
}
.research-view__finding h4,
.research-view__finding p {
margin: 0;
}
.research-view__finding-actions {
margin-top: var(--space-sm);
}
.research-view__events {
margin: var(--space-sm) 0 0;
padding-left: var(--space-lg);
}
.research-view__stats {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: var(--space-sm);
margin-top: var(--space-sm);
padding-top: var(--space-sm);
border-top: var(--btn-border-width) solid var(--border);
}
.research-view__stat-card {
border: var(--btn-border-width) solid var(--border);
border-radius: var(--radius-sm);
padding: var(--space-sm);
background: var(--surface);
}
.research-view__stat-label {
color: var(--text-muted);
text-transform: uppercase;
}
.research-view__stat-value {
font-family: var(--font-mono);
}
.research-view__state--error {
border-color: var(--color-error);
}
@media (max-width: 768px) {
.research-view {
overflow-y: auto;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
padding: var(--space-md);
padding-bottom: calc(var(--space-md) + var(--mobile-nav-height) + env(safe-area-inset-bottom, 0px) + var(--standalone-bottom-gap));
}
.research-view__layout {
display: flex;
flex-direction: column;
grid-template-columns: minmax(0, 1fr);
gap: var(--space-md);
flex: initial;
min-height: auto;
overflow: visible;
}
.research-view__sidebar,
.research-view__reader,
.research-view__sidebar-content,
.research-view__reader-content {
min-height: auto;
overflow: visible;
}
.research-view__history {
flex: initial;
min-height: auto;
overflow: visible;
}
.research-view__header {
flex-direction: column;
}
.research-view__header-actions {
align-self: flex-start;
}
.research-view__stats {
grid-template-columns: minmax(0, 1fr);
}
.research-view__history-item {
min-height: calc(var(--space-lg) * 2 + var(--space-sm));
}
}
/*
FNXC:ResearchView 2026-06-20-00:33:
Research tablets at 769px–1024px were inheriting the desktop two-column grid, leaving the reader cramped inside the .project-content flex chain. Reflow to one full-width column while preserving internal history and reader scroll containers so the document itself does not overflow horizontally.
*/
@media (min-width: 769px) and (max-width: 1024px) {
.research-view {
flex: 1;
inline-size: 100%;
min-inline-size: 0;
min-block-size: 0;
overflow: hidden;
}
.research-view__layout {
display: flex;
flex-direction: column;
grid-template-columns: minmax(0, 1fr);
inline-size: 100%;
min-width: 0;
min-inline-size: 0;
min-block-size: 0;
overflow: hidden;
}
.research-view__sidebar,
.research-view__reader,
.research-view__sidebar-content,
.research-view__reader-content {
min-width: 0;
min-inline-size: 0;
min-block-size: 0;
}
.research-view__sidebar {
flex: 0 1 auto;
}
.research-view__reader {
flex: 1 1 0;
overflow: auto;
}
.research-view__history {
overflow: auto;
}
}