+
{/* ── Left rail ── */}
{showLoading && (
-
- Loading…
-
- )}
+
+
+ Loading…
+
+
+ )}
{error && !showLoading && (
-
- {error}
-
- )}
+
+
+
+ )}
{anatomy && (
<>
@@ -90,11 +97,11 @@ export default function CodeTab() {
-
+
{cb.label}
@@ -130,14 +137,26 @@ export default function CodeTab() {
{/* ── Right pane ── */}
+
+ {selection?.type === "file" && (
+
+ )}
+ {!selection && (
+
+ Pick a codebase file on the left.
+
+ )}
+
+
+
);
@@ -208,9 +227,9 @@ function Inline({ children }: { children: React.ReactNode }) {
gap: 8,
padding: "12px 14px",
fontSize: "0.82rem",
- color: INK.mid,
- background: INK.cardBg,
- border: `1px solid ${INK.borderSoft}`,
+ color: THEME.mid,
+ background: THEME.cardBg,
+ border: `1px solid ${THEME.borderSoft}`,
borderRadius: 8,
}}
>
@@ -227,7 +246,7 @@ function Empty({ children }: { children: React.ReactNode }) {
display: "flex",
alignItems: "center",
justifyContent: "center",
- color: INK.mid,
+ color: THEME.mid,
fontSize: "0.85rem",
padding: "32px 16px",
textAlign: "center",
@@ -263,7 +282,7 @@ function statusColor(status: string) {
// Tokens
// ──────────────────────────────────────────────────
-const INK = {
+const THEME = {
ink: "#111827",
mid: "#4b5563",
muted: "#9ca3af",
@@ -275,8 +294,8 @@ const INK = {
const pageWrap: React.CSSProperties = {
padding: "28px 48px 48px",
- fontFamily: INK.fontSans,
- color: INK.ink,
+ fontFamily: THEME.fontSans,
+ color: THEME.ink,
};
const grid: React.CSSProperties = {
display: "grid",
@@ -321,7 +340,7 @@ const railGroupTitle: React.CSSProperties = {
const countPill: React.CSSProperties = {
fontSize: "0.7rem",
fontWeight: 600,
- color: INK.mid,
+ color: THEME.mid,
padding: "1px 7px",
borderRadius: 999,
background: "#f3eee4",
@@ -334,8 +353,8 @@ const railItems: React.CSSProperties = {
const railEmpty: React.CSSProperties = {
padding: "10px 12px",
fontSize: "0.74rem",
- color: INK.muted,
- border: `1px dashed ${INK.borderSoft}`,
+ color: THEME.muted,
+ border: `1px dashed ${THEME.borderSoft}`,
borderRadius: 8,
lineHeight: 1.6,
};
@@ -355,8 +374,8 @@ const flatTile: React.CSSProperties = {
gap: 10,
width: "100%",
padding: "12px 14px",
- background: INK.cardBg,
- border: `1px solid ${INK.borderSoft}`,
+ background: THEME.cardBg,
+ border: `1px solid ${THEME.borderSoft}`,
borderRadius: 10,
cursor: "pointer",
font: "inherit",
@@ -364,8 +383,8 @@ const flatTile: React.CSSProperties = {
transition: "border-color 0.12s, background 0.12s, box-shadow 0.12s",
};
const codebaseTile: React.CSSProperties = {
- background: INK.cardBg,
- border: `1px solid ${INK.borderSoft}`,
+ background: THEME.cardBg,
+ border: `1px solid ${THEME.borderSoft}`,
borderRadius: 10,
overflow: "hidden",
};
@@ -383,17 +402,17 @@ const tileHeader: React.CSSProperties = {
const tileLabel: React.CSSProperties = {
fontSize: "0.85rem",
fontWeight: 600,
- color: INK.ink,
+ color: THEME.ink,
marginBottom: 2,
};
const tileHint: React.CSSProperties = {
fontSize: "0.74rem",
- color: INK.mid,
+ color: THEME.mid,
lineHeight: 1.4,
};
const tileBody: React.CSSProperties = {
padding: "8px 10px 12px",
- borderTop: `1px solid ${INK.borderSoft}`,
+ borderTop: `1px solid ${THEME.borderSoft}`,
};
const chevronCell: React.CSSProperties = {
width: 14,
@@ -403,8 +422,8 @@ const chevronCell: React.CSSProperties = {
flexShrink: 0,
};
const panel: React.CSSProperties = {
- background: INK.cardBg,
- border: `1px solid ${INK.border}`,
+ background: THEME.cardBg,
+ border: `1px solid ${THEME.border}`,
borderRadius: 10,
padding: 16,
flex: 1,
@@ -417,22 +436,22 @@ const detailRow: React.CSSProperties = {
alignItems: "center",
justifyContent: "space-between",
padding: "12px 4px",
- borderBottom: `1px solid ${INK.borderSoft}`,
+ borderBottom: `1px solid ${THEME.borderSoft}`,
};
const detailLabel: React.CSSProperties = {
fontSize: "0.72rem",
fontWeight: 600,
letterSpacing: "0.06em",
textTransform: "uppercase",
- color: INK.muted,
+ color: THEME.muted,
};
const detailValue: React.CSSProperties = {
fontSize: "0.85rem",
- color: INK.ink,
+ color: THEME.ink,
display: "inline-flex",
alignItems: "center",
};
const detailLink: React.CSSProperties = {
- color: INK.ink,
+ color: THEME.ink,
textDecoration: "underline",
};