diff --git a/web/src/components/layout/MultiView.test.tsx b/web/src/components/layout/MultiView.test.tsx
index 239fdd6..ae4b707 100644
--- a/web/src/components/layout/MultiView.test.tsx
+++ b/web/src/components/layout/MultiView.test.tsx
@@ -105,7 +105,7 @@ describe("MultiView", () => {
expect(screen.getByText("Tab 1 · 1")).toBeTruthy();
const pane = document.querySelector('[data-session-id="s9"]');
expect(pane).toBeTruthy();
- expect(pane!.querySelector(".bg-preview-tint")).toBeTruthy();
+ expect(pane!.classList.contains("is-preview")).toBe(true);
expect(screen.getByText("preview")).toBeTruthy();
});
diff --git a/web/src/components/layout/MultiView.tsx b/web/src/components/layout/MultiView.tsx
index 167a47f..54f5635 100644
--- a/web/src/components/layout/MultiView.tsx
+++ b/web/src/components/layout/MultiView.tsx
@@ -188,8 +188,9 @@ function Pane({
return (
{leaf.sessionId ? (
diff --git a/web/src/components/layout/PaneTitle.tsx b/web/src/components/layout/PaneTitle.tsx
index ba7fcb9..9366019 100644
--- a/web/src/components/layout/PaneTitle.tsx
+++ b/web/src/components/layout/PaneTitle.tsx
@@ -15,7 +15,7 @@ export interface PaneTitleProps {
export function PaneTitle({ sessionId, session, className }: PaneTitleProps) {
if (!session) {
return (
-
+
session {sessionId.slice(0, 8)}
);
@@ -27,7 +27,7 @@ export function PaneTitle({ sessionId, session, className }: PaneTitleProps) {
const icon = tool ? toolIconSvg(tool) : null;
return (
-
+
{name}
{showCommand && (
diff --git a/web/src/components/sidebar/SessionCard.tsx b/web/src/components/sidebar/SessionCard.tsx
index 0411c18..cecb6b3 100644
--- a/web/src/components/sidebar/SessionCard.tsx
+++ b/web/src/components/sidebar/SessionCard.tsx
@@ -44,14 +44,17 @@ export interface SessionCardProps {
onRenameCancel(): void;
}
-/** The fill ladder from docs/SIDEBAR.md "Which row is filled", furthest down
- * wins. Written as one ordered run so the precedence is the order it reads in. */
-function rowFill(p: SessionCardProps): string {
- if (p.active) return "bg-accent-fill";
- if (p.previewing) return "bg-preview-tint";
- if (p.open) return "bg-accent/[0.06]";
- if (p.highlighted) return "bg-preview-tint";
- return "";
+/** The fill ladder from docs/SIDEBAR.md "Which row is filled" — the CSS
+ * cascade in styles.css carries the actual fills via `.is-active`, `.is-open`,
+ * `.is-previewing` (all inside `:where()` so source order is the precedence).
+ * We just apply the right class names here. */
+function rowClasses(p: SessionCardProps): string {
+ const cls: string[] = [];
+ if (p.active) cls.push("is-active");
+ if (p.open) cls.push("is-open");
+ if (p.previewing) cls.push("is-previewing");
+ if (p.highlighted) cls.push("is-highlighted");
+ return cls.join(" ");
}
export function SessionCard(props: SessionCardProps) {
@@ -62,7 +65,7 @@ export function SessionCard(props: SessionCardProps) {
return (