Add collapsible workflow selectors for board workflow controls and inline task creation. - add a collapsible board workflow toolbar with persisted per-project state - make the inline create workflow selector collapsible and store its expanded state per project - update workflow selector styling, storage key allowlist, and regression coverage for collapse behavior Files changed: packages/dashboard/app/components/Board.tsx | 104 +++++++++++++-------- .../dashboard/app/components/InlineCreateCard.css | 9 ++ .../dashboard/app/components/InlineCreateCard.tsx | 3 + packages/dashboard/app/components/Lane.css | 23 +++++ .../dashboard/app/components/WorkflowSelector.css | 20 +++- .../dashboard/app/components/WorkflowSelector.tsx | 81 ++++++++++++++-- .../app/components/__tests__/Board.test.tsx | 101 ++++++++++++++++++-- .../components/__tests__/InlineCreateCard.test.tsx | 57 ++++++++++- .../components/__tests__/WorkflowSelector.test.tsx | 73 ++++++++++++++- .../app/utils/__tests__/projectStorage.test.ts | 4 +- packages/dashboard/app/utils/projectStorage.ts | 2 + 11 files changed, 420 insertions(+), 57 deletions(-) Fusion-Task-Id: FN-6046 Fusion-Task-Lineage: 07cbe7a8-5740-479d-94a3-b178c72a5273
83 lines
1.5 KiB
CSS
83 lines
1.5 KiB
CSS
.workflow-selector {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
gap: var(--space-sm);
|
|
}
|
|
|
|
.workflow-selector-label {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-xs);
|
|
font-size: 0.8rem;
|
|
color: var(--text-muted);
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
|
|
.workflow-selector-label-text {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--space-xs);
|
|
}
|
|
|
|
.workflow-selector-title {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--space-xs);
|
|
}
|
|
|
|
.workflow-selector-toggle {
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.workflow-selector-collapsed-button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--space-xs);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.workflow-selector select {
|
|
padding: var(--space-xs) var(--space-sm);
|
|
background: var(--bg-secondary);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-sm);
|
|
color: var(--text);
|
|
font: inherit;
|
|
}
|
|
|
|
.workflow-selector select:focus {
|
|
outline: none;
|
|
box-shadow: var(--focus-ring);
|
|
}
|
|
|
|
.workflow-selector-manage {
|
|
padding: var(--space-xs) var(--space-sm);
|
|
background: var(--bg-secondary);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-sm);
|
|
color: var(--text);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.workflow-selector-manage:hover {
|
|
background: var(--bg-tertiary);
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.workflow-selector {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
}
|
|
|
|
.workflow-selector select,
|
|
.workflow-selector-manage,
|
|
.workflow-selector-collapsed-button {
|
|
width: 100%;
|
|
}
|
|
|
|
.workflow-selector-manage {
|
|
text-align: center;
|
|
}
|
|
}
|