Files
fusion/packages/dashboard/app/components/TerminalLauncher.css
gsxdsm b293525751 fix(dashboard): repair CSS token/contrast regressions and stale tests
Fixes ~19 deterministic dashboard test failures pre-existing on origin/main
(non-blocking full-suite lane). Mix of real product fixes and stale-test
reconciliation; no appeasement (no widened timeouts, skips, or weakened
assertions).

Product CSS fixes (real regressions the guards caught):
- Info toast contrast: shadcn-custom light theme had white-on-#0284c7 (4.10,
  below WCAG AA 4.5); enrolled it in the light-mode dark-text correction.
- 27 undefined CSS token references (typos/foreign tokens) renamed to canonical
  defined tokens; defined the genuinely-intended --border-strong and
  --right-dock-min/max-width.
- Raw rgba() box-shadow fallback tokenized to color-mix; dev-server mobile
  header split into its own responsive rule.

Stale tests reconciled with intentional product changes:
- workflowColumns graduated to always-on (board-workflows unit test).
- workflow optional-steps source re-pointed to v2 optional-group nodes.
- command-center pricing docs (one doc gap filled: openai-codex:* keying).
- SetupWizardModal added detectWorkspace + workspaceMode/taskPrefix payload.
- board-mobile listener-count assertion → unmount no-throw behavior.
- CommandCenterControls / ThemeSelector: default theme relabeled "Fusion Legacy".
- ProjectOverview / WorkflowNodeEditor: header divider intentionally removed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 14:37:52 -07:00

240 lines
5.8 KiB
CSS

:root {
--terminal-launcher-menu-min-width: calc(var(--space-xl) * 5);
--terminal-launcher-menu-width: calc(var(--space-xl) * 8.125);
--terminal-launcher-menu-height: calc(var(--space-xl) * 8.75);
}
.terminal-launcher {
position: relative;
display: inline-flex;
align-items: center;
gap: 0;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--bg);
}
.terminal-launcher--footer {
background: transparent;
border-color: transparent;
color: inherit;
font-family: var(--font-primary);
font-size: inherit;
font-weight: 500;
line-height: 1;
}
/*
FNXC:Terminal 2026-06-22-00:00:
In the footer status bar the Terminal launcher must read as plain clickable text, matching the executor "running" state-trigger: no border, no card background, no chunky button padding. The label underlines on hover like the state trigger. The scripts chevron is flattened to match and the split divider is hidden so the footer affordance is text-first. Only the footer variant is flattened; the header variant keeps its grouped split-button chrome.
FNXC:FooterLaunchers 2026-06-24-00:00:
Quick Chat and Terminal are peer footer launchers. Keep the Terminal footer variant on the same inherited footer font family, size, weight, color, hover color, and focus ring as .executor-status-bar__footer-launcher without changing header, mobile-nav, modal, or non-footer Terminal surfaces.
*/
.terminal-launcher--footer .terminal-launcher__main,
.terminal-launcher--footer .terminal-launcher__chevron {
padding: 0 var(--space-xs);
min-height: calc(var(--space-lg) + var(--space-xs));
border: none;
background: transparent;
box-shadow: none;
border-radius: var(--radius-sm);
color: inherit;
font-family: inherit;
font-size: inherit;
font-weight: inherit;
line-height: inherit;
}
.terminal-launcher--footer .terminal-launcher__chevron {
width: auto;
padding-inline: var(--space-xs);
}
.terminal-launcher--footer .terminal-launcher__label {
font-size: inherit;
font-weight: inherit;
line-height: inherit;
}
.terminal-launcher--footer .terminal-launcher__divider {
display: none;
}
.terminal-launcher--footer .terminal-launcher__main:hover,
.terminal-launcher--footer .terminal-launcher__chevron:hover {
color: var(--text);
}
.terminal-launcher--footer .terminal-launcher__main:hover .terminal-launcher__label {
text-decoration: underline;
text-underline-offset: calc(var(--space-xs) / 2);
}
.terminal-launcher--footer .terminal-launcher__main:focus-visible,
.terminal-launcher--footer .terminal-launcher__chevron:focus-visible {
outline: none;
box-shadow: var(--focus-ring-strong);
border-radius: var(--radius-sm);
}
.terminal-launcher__main {
min-height: 28px;
gap: var(--space-xs);
border-top-right-radius: 0;
border-bottom-right-radius: 0;
color: var(--text-muted);
}
.terminal-launcher__main:hover,
.terminal-launcher__chevron:hover {
color: var(--text);
}
.terminal-launcher__label {
font-size: var(--font-size-xs);
font-weight: 500;
}
.terminal-launcher__chevron {
min-height: 28px;
width: 28px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
color: var(--text-muted);
}
.terminal-launcher__divider {
width: 1px;
height: var(--space-md);
background: var(--border);
}
.quick-scripts-dropdown__trigger-chevron {
color: currentColor;
transition: transform var(--transition-fast);
}
.quick-scripts-dropdown__trigger-chevron.rotate {
transform: rotate(180deg);
}
.quick-scripts-dropdown__menu {
position: absolute;
top: calc(100% + var(--space-xs));
right: 0;
min-width: var(--terminal-launcher-menu-width);
max-height: min(70vh, calc(var(--space-xl) * 11.25));
overflow-y: auto;
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-lg);
z-index: 1000;
padding: var(--space-sm);
}
.quick-scripts-dropdown__loading,
.quick-scripts-dropdown__empty {
display: flex;
flex-direction: column;
align-items: center;
gap: var(--space-sm);
padding: var(--space-lg);
color: var(--text-muted);
text-align: center;
}
.quick-scripts-dropdown__empty-icon {
display: flex;
align-items: center;
justify-content: center;
color: var(--text-muted);
}
.quick-scripts-dropdown__empty p {
margin: 0;
color: var(--text);
font-size: var(--font-size-xs);
}
.quick-scripts-dropdown__empty-action {
min-height: 28px;
}
.quick-scripts-dropdown__list {
display: flex;
flex-direction: column;
gap: var(--space-xs);
}
.quick-scripts-dropdown__item,
.quick-scripts-dropdown__manage {
display: flex;
align-items: center;
gap: var(--space-sm);
width: 100%;
padding: var(--space-sm);
border: none;
border-radius: var(--radius-md);
background: transparent;
color: var(--text);
text-align: left;
cursor: pointer;
}
.quick-scripts-dropdown__item:hover,
.quick-scripts-dropdown__item.highlighted,
.quick-scripts-dropdown__manage:hover,
.quick-scripts-dropdown__manage.highlighted {
background: var(--card);
}
.quick-scripts-dropdown__item-icon,
.quick-scripts-dropdown__manage svg {
flex-shrink: 0;
color: var(--text-muted);
}
.quick-scripts-dropdown__item-info {
display: flex;
flex-direction: column;
gap: var(--space-xs);
min-width: 0;
}
.quick-scripts-dropdown__item-name {
color: var(--text);
font-size: var(--font-size-xs);
font-weight: 500;
}
.quick-scripts-dropdown__item-command {
color: var(--text-muted);
font-size: var(--font-size-xs);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.quick-scripts-dropdown__footer {
padding-top: var(--space-xs);
margin-top: var(--space-xs);
border-top: 1px solid var(--border);
}
.quick-scripts-dropdown__manage {
color: var(--text-muted);
font-size: var(--font-size-xs);
}
.quick-scripts-dropdown__manage span {
flex: 1;
}
@media (max-width: 768px) {
.terminal-launcher {
display: none;
}
}