189 lines
4.9 KiB
CSS
189 lines
4.9 KiB
CSS
/* Primary tab strip */
|
|
.tab-bar {
|
|
@apply border-b;
|
|
border-color: var(--border-base);
|
|
}
|
|
|
|
.tab-bar-instance {
|
|
background-color: var(--surface-secondary);
|
|
}
|
|
|
|
.tab-bar-session {
|
|
background-color: var(--surface-base);
|
|
}
|
|
|
|
.tab-container {
|
|
@apply flex items-center justify-between gap-1 px-2 py-1;
|
|
}
|
|
|
|
.tab-scroll {
|
|
@apply w-full;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.tab-strip {
|
|
@apply flex items-center gap-2 px-1;
|
|
min-width: 100%;
|
|
}
|
|
|
|
.tab-strip-tabs {
|
|
@apply flex items-center gap-1 flex-shrink-0;
|
|
}
|
|
|
|
.tab-strip-spacer {
|
|
@apply flex-1;
|
|
min-width: 1px;
|
|
}
|
|
|
|
.tab-shortcuts {
|
|
@apply flex items-center gap-2 flex-shrink-0;
|
|
}
|
|
|
|
.tab-remote-button {
|
|
@apply flex-shrink-0;
|
|
}
|
|
|
|
.tab-base {
|
|
@apply inline-flex items-center gap-2 px-3 py-2 rounded-t-md max-w-[200px] transition-colors text-sm font-medium;
|
|
font-family: var(--font-family-sans);
|
|
outline: none;
|
|
}
|
|
|
|
.tab-base:focus-visible {
|
|
@apply ring-2 ring-offset-1;
|
|
ring-color: var(--accent-primary);
|
|
ring-offset-color: var(--surface-base);
|
|
}
|
|
|
|
.tab-active {
|
|
background-color: var(--tab-active-bg);
|
|
color: var(--tab-active-text);
|
|
border-bottom: 2px solid var(--accent-primary);
|
|
}
|
|
|
|
.tab-inactive {
|
|
background-color: var(--tab-inactive-bg);
|
|
color: var(--tab-inactive-text);
|
|
border-bottom: 2px solid var(--tab-active-bg);
|
|
}
|
|
|
|
.tab-inactive:hover {
|
|
background-color: var(--tab-inactive-hover-bg);
|
|
}
|
|
|
|
.tab-active:hover {
|
|
background-color: var(--tab-active-hover-bg);
|
|
}
|
|
|
|
.tab-label {
|
|
@apply truncate;
|
|
}
|
|
|
|
.tab-close {
|
|
@apply opacity-100 hover:bg-red-500 hover:text-white rounded p-0.5 transition-all cursor-pointer;
|
|
}
|
|
|
|
.tab-close:focus-visible {
|
|
@apply ring-2 ring-offset-1;
|
|
ring-color: var(--accent-primary);
|
|
ring-offset-color: inherit;
|
|
}
|
|
|
|
/* Instance tabs: session-status dots should be lighter/softer than list/status pills. */
|
|
.tab-base .status-indicator.session-status.session-working {
|
|
--session-status-dot: color-mix(in oklab, var(--session-status-working-fg) 55%, var(--surface-base));
|
|
}
|
|
|
|
.tab-base .status-indicator.session-status.session-compacting {
|
|
--session-status-dot: color-mix(in oklab, var(--session-status-compacting-fg) 55%, var(--surface-base));
|
|
}
|
|
|
|
.tab-base .status-indicator.session-status.session-idle {
|
|
--session-status-dot: color-mix(in oklab, var(--session-status-idle-fg) 55%, var(--surface-base));
|
|
}
|
|
|
|
.tab-base .status-indicator.session-status.session-permission {
|
|
--session-status-dot: color-mix(in oklab, var(--session-status-permission-fg) 55%, var(--surface-base));
|
|
}
|
|
|
|
/* Dark mode: keep dots vivid (avoid muddy mixes). */
|
|
@media (prefers-color-scheme: dark) {
|
|
:root:not([data-theme]) .tab-base .status-indicator.session-status.session-working {
|
|
--session-status-dot: var(--session-status-working-fg);
|
|
}
|
|
:root:not([data-theme]) .tab-base .status-indicator.session-status.session-compacting {
|
|
--session-status-dot: var(--session-status-compacting-fg);
|
|
}
|
|
:root:not([data-theme]) .tab-base .status-indicator.session-status.session-idle {
|
|
--session-status-dot: var(--session-status-idle-fg);
|
|
}
|
|
:root:not([data-theme]) .tab-base .status-indicator.session-status.session-permission {
|
|
--session-status-dot: var(--session-status-permission-fg);
|
|
}
|
|
}
|
|
|
|
[data-theme="dark"] .tab-base .status-indicator.session-status.session-working {
|
|
--session-status-dot: var(--session-status-working-fg);
|
|
}
|
|
|
|
[data-theme="dark"] .tab-base .status-indicator.session-status.session-compacting {
|
|
--session-status-dot: var(--session-status-compacting-fg);
|
|
}
|
|
|
|
[data-theme="dark"] .tab-base .status-indicator.session-status.session-idle {
|
|
--session-status-dot: var(--session-status-idle-fg);
|
|
}
|
|
|
|
[data-theme="dark"] .tab-base .status-indicator.session-status.session-permission {
|
|
--session-status-dot: var(--session-status-permission-fg);
|
|
}
|
|
|
|
.new-tab-button {
|
|
@apply inline-flex items-center justify-center w-8 h-8 rounded-md transition-colors;
|
|
background-color: var(--new-tab-bg);
|
|
color: var(--new-tab-text);
|
|
}
|
|
|
|
.new-tab-button:hover {
|
|
background-color: var(--new-tab-hover-bg);
|
|
}
|
|
|
|
.new-tab-button:focus-visible {
|
|
@apply ring-2 ring-offset-1;
|
|
ring-color: var(--accent-primary);
|
|
ring-offset-color: var(--surface-base);
|
|
}
|
|
|
|
/* Session tabs */
|
|
.session-tab-base {
|
|
@apply inline-flex items-center gap-2 px-3 py-1.5 rounded-t-md max-w-[150px] transition-colors text-sm;
|
|
font-family: var(--font-family-sans);
|
|
outline: none;
|
|
border-bottom: 2px solid transparent;
|
|
}
|
|
|
|
.session-tab-base:focus-visible {
|
|
@apply ring-2 ring-offset-1;
|
|
ring-color: var(--accent-primary);
|
|
ring-offset-color: var(--surface-base);
|
|
}
|
|
|
|
.session-tab-active {
|
|
background-color: var(--session-tab-active-bg);
|
|
border-bottom-color: var(--accent-primary);
|
|
color: var(--session-tab-active-text);
|
|
font-weight: var(--font-weight-medium);
|
|
}
|
|
|
|
.session-tab-inactive {
|
|
color: var(--session-tab-inactive-text);
|
|
}
|
|
|
|
.session-tab-inactive:hover {
|
|
background-color: var(--session-tab-hover-bg);
|
|
}
|
|
|
|
.session-tab-special {
|
|
color: var(--session-tab-inactive-text);
|
|
}
|