Refine the task review tab layout for clearer hierarchy and better mobile behavior. - group the review summary and decision badge into a stacked header layout - reorganize review items with dedicated selection, status, and metadata regions - restyle review cards, status badges, auto-merge controls, and body containers for improved spacing and overflow handling - extend TaskReviewTab coverage for populated layout hooks and mobile CSS regressions Files changed: packages/dashboard/app/components/TaskReviewTab.css | 220 +++++++++++++++------ packages/dashboard/app/components/TaskReviewTab.tsx | 24 ++- packages/dashboard/app/components/__tests__/TaskReviewTab.test.tsx | 32 ++- 3 files changed, 206 insertions(+), 70 deletions(-) Fusion-Task-Id: FN-5925 Fusion-Task-Lineage: fdb9d882-abda-48b0-aed0-a1ff4262af8f
319 lines
6.7 KiB
CSS
319 lines
6.7 KiB
CSS
.task-review-tab {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-lg);
|
|
min-width: 0;
|
|
}
|
|
|
|
.task-review-tab__header {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
gap: var(--space-lg);
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.task-review-tab__summary-wrap {
|
|
flex: 1 1 20rem;
|
|
min-width: 0;
|
|
}
|
|
|
|
.task-review-tab__summary-group {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
gap: var(--space-xs);
|
|
min-width: 0;
|
|
}
|
|
|
|
.task-review-tab__summary {
|
|
margin: 0;
|
|
color: var(--text);
|
|
font-family: var(--font-primary);
|
|
font-size: 0.9375rem;
|
|
font-weight: 600;
|
|
line-height: 1.5;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.task-review-tab__decision,
|
|
.task-review-tab__status {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
inline-size: fit-content;
|
|
min-width: 0;
|
|
padding: 0 var(--space-sm);
|
|
min-height: calc(var(--space-lg) + var(--space-xs));
|
|
border-radius: var(--radius-pill);
|
|
border: var(--btn-border-width) solid transparent;
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
letter-spacing: 0.02em;
|
|
line-height: 1.2;
|
|
text-transform: capitalize;
|
|
}
|
|
|
|
.task-review-tab__decision--APPROVED,
|
|
.task-review-tab__status--addressed {
|
|
color: var(--color-success);
|
|
background: color-mix(in srgb, var(--color-success) 14%, transparent);
|
|
border-color: color-mix(in srgb, var(--color-success) 28%, transparent);
|
|
}
|
|
|
|
.task-review-tab__decision--CHANGES_REQUESTED,
|
|
.task-review-tab__status--failed {
|
|
color: var(--color-error);
|
|
background: color-mix(in srgb, var(--color-error) 14%, transparent);
|
|
border-color: color-mix(in srgb, var(--color-error) 28%, transparent);
|
|
}
|
|
|
|
.task-review-tab__decision--COMMENTED,
|
|
.task-review-tab__decision--PENDING,
|
|
.task-review-tab__decision--REVIEW_REQUIRED,
|
|
.task-review-tab__status--queued,
|
|
.task-review-tab__status--in-progress {
|
|
color: var(--color-warning);
|
|
background: color-mix(in srgb, var(--color-warning) 16%, transparent);
|
|
border-color: color-mix(in srgb, var(--color-warning) 30%, transparent);
|
|
}
|
|
|
|
.task-review-tab__actions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: flex-start;
|
|
justify-content: flex-end;
|
|
gap: var(--space-sm);
|
|
flex: 0 1 auto;
|
|
}
|
|
|
|
.task-review-tab__actions .btn {
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.task-review-tab__auto-merge-control {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-xs);
|
|
min-inline-size: 14rem;
|
|
padding: var(--space-sm);
|
|
border: var(--btn-border-width) solid var(--border);
|
|
border-radius: var(--radius-md);
|
|
background: color-mix(in srgb, var(--surface) 72%, var(--card));
|
|
}
|
|
|
|
.task-review-tab__list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-md);
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
|
|
.task-review-tab__item {
|
|
padding: var(--card-padding);
|
|
}
|
|
|
|
.task-review-tab__item-inner {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-md);
|
|
min-width: 0;
|
|
}
|
|
|
|
.task-review-tab__direct-item {
|
|
display: block;
|
|
min-width: 0;
|
|
}
|
|
|
|
.task-review-tab__direct-item--selectable {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.task-review-tab__item-header {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
gap: var(--space-sm);
|
|
min-width: 0;
|
|
}
|
|
|
|
.task-review-tab__item-selection {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: var(--space-sm);
|
|
min-width: 0;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.task-review-tab__item-selection input {
|
|
margin: 0;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.task-review-tab__item-summary {
|
|
color: var(--text);
|
|
font-family: var(--font-primary);
|
|
font-size: 0.875rem;
|
|
font-weight: 600;
|
|
line-height: 1.5;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.task-review-tab__item-meta-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-xs);
|
|
}
|
|
|
|
.task-review-tab__body {
|
|
margin: 0;
|
|
min-width: 0;
|
|
max-width: 100%;
|
|
padding: var(--space-md);
|
|
border: var(--btn-border-width) solid var(--border);
|
|
border-radius: var(--radius-md);
|
|
background: var(--surface);
|
|
color: var(--text);
|
|
font-family: var(--font-primary);
|
|
font-size: 0.875rem;
|
|
line-height: 1.6;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
overflow-wrap: anywhere;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.task-review-tab__body.markdown-body {
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.task-review-tab__body.markdown-body > :first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.task-review-tab__body.markdown-body > :last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.task-review-tab__body.markdown-body pre,
|
|
.task-review-tab__body.markdown-body table {
|
|
max-width: 100%;
|
|
}
|
|
|
|
.task-review-tab__meta,
|
|
.task-review-tab__empty,
|
|
.task-review-tab__error {
|
|
font-family: var(--font-primary);
|
|
font-size: 0.75rem;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.task-review-tab__meta,
|
|
.task-review-tab__empty {
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.task-review-tab__refresh-meta,
|
|
.task-review-tab__empty,
|
|
.task-review-tab__error {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: var(--space-sm);
|
|
padding: var(--space-sm) var(--space-md);
|
|
border: var(--btn-border-width) solid var(--border);
|
|
border-radius: var(--radius-md);
|
|
background: color-mix(in srgb, var(--surface) 72%, var(--card));
|
|
}
|
|
|
|
.task-review-tab__refresh-meta {
|
|
min-width: 0;
|
|
}
|
|
|
|
.task-review-tab__refresh-meta .status-dot {
|
|
flex-shrink: 0;
|
|
margin-top: var(--space-xs);
|
|
}
|
|
|
|
.task-review-tab__empty {
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.task-review-tab__error {
|
|
color: var(--color-error);
|
|
border-color: color-mix(in srgb, var(--color-error) 26%, var(--border));
|
|
background: color-mix(in srgb, var(--color-error) 12%, var(--surface));
|
|
}
|
|
|
|
.task-review-tab__reviewers,
|
|
.task-review-tab__blockers {
|
|
margin: 0;
|
|
padding-left: var(--space-lg);
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.task-review-tab__reviewer {
|
|
color: var(--text);
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.task-review-tab {
|
|
gap: var(--space-md);
|
|
}
|
|
|
|
.task-review-tab__header {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
gap: var(--space-md);
|
|
}
|
|
|
|
.task-review-tab__summary-wrap,
|
|
.task-review-tab__actions,
|
|
.task-review-tab__auto-merge-control {
|
|
width: 100%;
|
|
}
|
|
|
|
.task-review-tab__actions {
|
|
justify-content: flex-start;
|
|
gap: var(--space-sm);
|
|
}
|
|
|
|
.task-review-tab__actions .btn {
|
|
width: 100%;
|
|
justify-content: center;
|
|
}
|
|
|
|
.task-review-tab__item,
|
|
.task-review-tab__body,
|
|
.task-review-tab__refresh-meta,
|
|
.task-review-tab__empty,
|
|
.task-review-tab__error {
|
|
min-width: 0;
|
|
}
|
|
|
|
.task-review-tab__item-header {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
}
|
|
|
|
.task-review-tab__status,
|
|
.task-review-tab__decision {
|
|
max-width: 100%;
|
|
}
|
|
|
|
.task-review-tab__body {
|
|
padding: var(--space-sm);
|
|
}
|
|
|
|
.task-review-tab__refresh-meta {
|
|
align-items: flex-start;
|
|
}
|
|
|
|
/* FN-4352: primary touch target per AGENTS.md convention (introduced by FN-4236). */
|
|
.task-review-tab__actions .btn {
|
|
min-width: calc(var(--space-lg) * 2 + var(--space-xs));
|
|
min-height: calc(var(--space-lg) * 2 + var(--space-xs));
|
|
}
|
|
}
|