Files
fusion/packages/dashboard/app/components/WorkflowSelector.css
gsxdsm 4366a933da FN-6046: add collapsible workflow selectors
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
2026-06-09 02:09:31 -07:00

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;
}
}