Restore Fusion dashboard loading indicators by preventing spinner keyframe collisions. - Move shared spinner utilities onto the collision-proof fusion-spinner-spin keyframe. - Rename component-local spin keyframes and scoped spinner utility overrides so lazy CSS chunks cannot override global loaders. - Extend spinner CSS contract coverage across shared utilities, CSS-only loaders, and renamed loading affordances. - Add a patch changeset for the published CLI package. Files changed: .changeset/fn-6961-spinner-animation.md | 7 + .../app/__tests__/spinner-animation.css.test.ts | 149 +++++++++++++++++---- .../dashboard/app/components/AgentMentionPopup.css | 6 - .../app/components/CustomProvidersSection.css | 2 +- .../app/components/CustomProvidersSection.tsx | 6 +- .../dashboard/app/components/FileMentionPopup.css | 8 +- .../dashboard/app/components/GitHubImportModal.css | 2 +- packages/dashboard/app/components/Header.css | 4 +- .../dashboard/app/components/IssueMentionPopup.css | 8 +- packages/dashboard/app/components/NodesView.css | 8 +- packages/dashboard/app/components/ScriptsModal.css | 8 +- packages/dashboard/app/components/TaskCard.css | 15 ++- .../dashboard/app/components/TaskDetailModal.css | 4 +- .../dashboard/app/components/TerminalModal.css | 6 - packages/dashboard/app/components/TodoView.css | 4 +- .../app/components/WorkflowResultsTab.css | 4 +- packages/dashboard/app/styles.css | 13 +- 17 files changed, 178 insertions(+), 76 deletions(-) Fusion-Task-Id: FN-6961 Fusion-Task-Lineage: 464e0a50-52c3-4b89-ac72-2f0227d97ce2
104 lines
2.1 KiB
CSS
104 lines
2.1 KiB
CSS
.issue-mention-popup {
|
|
position: absolute;
|
|
z-index: 250;
|
|
background: var(--surface);
|
|
border: var(--space-xs) solid var(--border);
|
|
border-radius: var(--radius-md);
|
|
box-shadow: var(--shadow-lg);
|
|
min-width: calc(var(--space-xl) * 9);
|
|
max-width: calc(var(--space-xl) * 14);
|
|
max-height: calc(var(--space-xl) * 10);
|
|
overflow-y: auto;
|
|
padding: var(--space-xs) 0;
|
|
}
|
|
|
|
.issue-mention-popup-list {
|
|
list-style: none;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.issue-mention-popup-item {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--space-xs);
|
|
padding: var(--space-sm) var(--space-md);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.issue-mention-popup-item:hover {
|
|
background: var(--card-hover);
|
|
}
|
|
|
|
.issue-mention-popup-item--selected {
|
|
background: color-mix(in srgb, var(--todo) 15%, transparent);
|
|
}
|
|
|
|
.issue-mention-popup-item-main {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-sm);
|
|
}
|
|
|
|
.issue-mention-popup-number {
|
|
font-family: var(--font-mono);
|
|
color: var(--text);
|
|
}
|
|
|
|
.issue-mention-popup-title {
|
|
color: var(--text);
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.issue-mention-popup-meta {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-xs);
|
|
}
|
|
|
|
.issue-mention-popup-repository {
|
|
color: var(--text-muted);
|
|
font-size: var(--space-md);
|
|
}
|
|
|
|
.issue-mention-popup-empty,
|
|
.issue-mention-popup-loading {
|
|
padding: var(--space-lg) var(--space-md);
|
|
color: var(--text-muted);
|
|
text-align: center;
|
|
}
|
|
|
|
.issue-mention-popup-loading {
|
|
display: flex;
|
|
justify-content: center;
|
|
}
|
|
|
|
.issue-mention-popup-loading .spinner {
|
|
width: var(--space-lg);
|
|
height: var(--space-lg);
|
|
border: calc(var(--space-xs) / 2) solid var(--border);
|
|
border-top-color: var(--text-muted);
|
|
border-radius: 50%;
|
|
animation: issue-mention-popup-spinner-spin var(--duration-slow) linear infinite;
|
|
}
|
|
|
|
@keyframes issue-mention-popup-spinner-spin {
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.issue-mention-popup {
|
|
left: var(--space-md) !important;
|
|
right: var(--space-md);
|
|
top: auto !important;
|
|
bottom: calc(var(--space-xl) * 3);
|
|
max-width: none;
|
|
width: auto;
|
|
max-height: calc(var(--space-xl) * 12);
|
|
}
|
|
}
|