feat: refine workbench chrome (#761)
* docs: define product and design direction * style: establish restrained workbench primitives * refactor: declutter board and task topbars * style: align dockview panel chrome * fix: align task topbar vcs control sizing * refactor: surface integrations navigation * fix: repair integrations and task creation workflow * refactor: include linear in integrations navigation * style: restore familiar workbench tones * fix: add dockview tab breathing room * fix: show configured integration shortcuts * fix: hover open integrations menu * fix: stabilize integrations hover menu * fix: align home and dockview topbars * fix: normalize home topbar controls * fix: compact home topbar height * fix: simplify home chrome and split buttons * fix: move integrations to left chrome * fix: restore home stats shortcut * fix: add dockview tab breathing room * fix: border home stats button * fix: streamline dockview topbar actions * fix: align task split button seam * fix: address review feedback * fix: restore topbar e2e affordances * fix: stabilize workflow e2e isolation * fix: add task topbar action overflow * fix: address PR review feedback
This commit is contained in:
@@ -1,30 +1,23 @@
|
||||
/* Dockview theme — Mux-inspired pill tabs */
|
||||
/* Dockview workbench chrome */
|
||||
|
||||
.dockview-theme-kandev {
|
||||
/* Overall dockview bg (visible in gaps between groups) — match card to eliminate visible gaps */
|
||||
--dv-background-color: var(--card);
|
||||
|
||||
/* Each group panel area */
|
||||
--dv-group-view-background-color: var(--background);
|
||||
|
||||
/* Separator / sash */
|
||||
--dv-separator-border: var(--border);
|
||||
--dv-active-sash-color: var(--primary);
|
||||
--dv-paneview-header-border-color: var(--border);
|
||||
|
||||
/* Tab bar — #171717 bg, matching panel content */
|
||||
--dv-tabs-and-actions-container-font-size: 12px;
|
||||
--dv-tabs-and-actions-container-height: 40px;
|
||||
--dv-tabs-and-actions-container-background-color: var(--background);
|
||||
|
||||
/* Active group, selected tab — #2a2a2a pill */
|
||||
--dv-activegroup-visiblepanel-tab-background-color: var(--muted);
|
||||
--dv-activegroup-visiblepanel-tab-color: var(--foreground);
|
||||
|
||||
/* Active group, unselected tab — transparent */
|
||||
--dv-activegroup-hiddenpanel-tab-background-color: transparent;
|
||||
--dv-activegroup-hiddenpanel-tab-color: var(--muted-foreground);
|
||||
|
||||
/* Inactive group tabs — more dimmed */
|
||||
--dv-inactivegroup-visiblepanel-tab-background-color: color-mix(
|
||||
in srgb,
|
||||
var(--muted) 100%,
|
||||
@@ -42,48 +35,38 @@
|
||||
transparent
|
||||
);
|
||||
|
||||
/* Close icon */
|
||||
--dv-tab-close-icon: var(--muted-foreground);
|
||||
|
||||
/* Misc */
|
||||
--dv-tabs-container-scrollbar-color: var(--scrollbar-thumb);
|
||||
--dv-drag-over-background-color: color-mix(in oklab, var(--primary) 10%, transparent);
|
||||
--dv-drag-over-border-color: var(--primary);
|
||||
}
|
||||
|
||||
/* ── Inactive group tab bar dimming ── */
|
||||
.dockview-theme-kandev .inactive-group .dv-tabs-and-actions-container {
|
||||
/* opacity: 0.6; */
|
||||
}
|
||||
|
||||
/* ── Tab bar container ── */
|
||||
.dockview-theme-kandev .dv-tabs-and-actions-container {
|
||||
background: var(--background);
|
||||
border-bottom: 1px solid var(--border);
|
||||
min-height: 34px;
|
||||
height: 34px;
|
||||
padding: 0 6px;
|
||||
min-height: 40px;
|
||||
height: 40px;
|
||||
padding: 7px 5px 5px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* Remove tab divider separators */
|
||||
.dockview-theme-kandev .dv-tabs-container.dv-horizontal .dv-tab::before {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* ── Individual tabs — pill style ── */
|
||||
.dockview-theme-kandev .dv-tab {
|
||||
padding: 0;
|
||||
margin: 0 2px;
|
||||
margin: 0 1px;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
min-width: auto;
|
||||
border-radius: 6px;
|
||||
border-radius: 5px;
|
||||
border-bottom: none !important;
|
||||
outline: none !important;
|
||||
outline: none;
|
||||
transition:
|
||||
background-color 0.15s ease,
|
||||
color 0.15s ease;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dockview-theme-kandev .dv-tab:hover {
|
||||
@@ -91,28 +74,38 @@
|
||||
color: var(--foreground);
|
||||
}
|
||||
|
||||
/* Active tab — filled pill, no underline */
|
||||
.dockview-theme-kandev .dv-active-tab {
|
||||
border-bottom: none !important;
|
||||
}
|
||||
|
||||
/* ── Default tab (built-in with close button) ── */
|
||||
.dockview-theme-kandev .dv-tab:focus-within,
|
||||
.dockview-theme-kandev .dv-tab:focus-visible {
|
||||
box-shadow:
|
||||
inset 0 0 0 1px var(--ring),
|
||||
0 0 0 1px color-mix(in oklab, var(--ring) 20%, transparent);
|
||||
}
|
||||
|
||||
.dockview-theme-kandev .dv-default-tab {
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
padding: 2px 6px;
|
||||
gap: 6px;
|
||||
padding: 0 7px;
|
||||
gap: 5px;
|
||||
height: 24px;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/* Close button — show on hover and active */
|
||||
.dockview-theme-kandev .dv-default-tab .dv-default-tab-action {
|
||||
opacity: 0;
|
||||
transition: opacity 0.15s ease;
|
||||
border-radius: 3px;
|
||||
transition:
|
||||
opacity 0.15s ease,
|
||||
background-color 0.15s ease,
|
||||
color 0.15s ease;
|
||||
border-radius: 4px;
|
||||
padding: 2px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dockview-theme-kandev .dv-default-tab .dv-default-tab-action .dv-svg {
|
||||
@@ -122,6 +115,12 @@
|
||||
|
||||
.dockview-theme-kandev .dv-default-tab .dv-default-tab-action:hover {
|
||||
background: color-mix(in srgb, var(--foreground) 12%, transparent);
|
||||
color: var(--foreground);
|
||||
}
|
||||
|
||||
.dockview-theme-kandev .dv-default-tab .dv-default-tab-action:focus-visible {
|
||||
outline: 1px solid var(--ring);
|
||||
outline-offset: 1px;
|
||||
}
|
||||
|
||||
.dockview-theme-kandev .dv-tab:hover .dv-default-tab .dv-default-tab-action,
|
||||
@@ -129,12 +128,10 @@
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* ── Panel content ── */
|
||||
.dockview-theme-kandev .dv-content-container {
|
||||
background: var(--card);
|
||||
}
|
||||
|
||||
/* Strip all chrome from session panel wrappers inside dockview */
|
||||
.dockview-theme-kandev .dv-content-container .session-panel-content-wrapper {
|
||||
border-radius: 0 !important;
|
||||
box-shadow: none !important;
|
||||
@@ -147,7 +144,6 @@
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
/* ── Sash (resize handle) ── */
|
||||
.dockview-theme-kandev .dv-resize-container > .sash-container .sash {
|
||||
background: transparent;
|
||||
transition: background-color 0.15s ease;
|
||||
@@ -158,43 +154,49 @@
|
||||
background: var(--primary);
|
||||
}
|
||||
|
||||
/* Hide close button on tabs in locked groups (sidebar) */
|
||||
.dockview-theme-kandev .dv-locked-groupview .dv-default-tab .dv-default-tab-action {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* ── Left header actions (after last tab — "+" button) ── */
|
||||
.dockview-theme-kandev .dv-left-actions-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-left: 4px;
|
||||
padding-left: 3px;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
.dv-tab:focus-within:after,
|
||||
.dv-tab:focus:after {
|
||||
.dockview-theme-kandev .dv-tab:focus-within::after,
|
||||
.dockview-theme-kandev .dv-tab:focus::after {
|
||||
outline: none !important;
|
||||
}
|
||||
|
||||
/* ── Right header actions ── */
|
||||
.dockview-theme-kandev .dv-right-actions-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-right: 4px;
|
||||
padding-right: 3px;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
/* ── Void container (spacer between left-actions and right-actions) ── */
|
||||
.dockview-theme-kandev .dv-left-actions-container button,
|
||||
.dockview-theme-kandev .dv-right-actions-container button {
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.dockview-theme-kandev .dv-left-actions-container button:focus-visible,
|
||||
.dockview-theme-kandev .dv-right-actions-container button:focus-visible {
|
||||
outline: 1px solid var(--ring);
|
||||
outline-offset: 1px;
|
||||
}
|
||||
|
||||
.dockview-theme-kandev .dv-void-container {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
/* ── Watermark (empty group) ── */
|
||||
.dockview-theme-kandev .dv-watermark {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* ── Drop target overlay ── */
|
||||
.dockview-theme-kandev .drop-target-dropzone > .drop-target-selection {
|
||||
border: 2px solid var(--primary);
|
||||
background: color-mix(in oklab, var(--primary) 8%, transparent);
|
||||
|
||||
Reference in New Issue
Block a user