diff --git a/src/session_info2/_repr.py b/src/session_info2/_repr.py index 389c813..e7e48c3 100644 --- a/src/session_info2/_repr.py +++ b/src/session_info2/_repr.py @@ -103,19 +103,40 @@ def _scrollable_table(inner: str) -> str: ).strip() +COLORS = dict( + fg1="var(--jp-ui-font-color1, var(--vscode-editor-foreground, #212529))", + bg0="var(--jp-layout-color0, var(--vscode-editor-background, #f8f9fa))", + bg1="var(--jp-layout-color1, var(--vscode-editor-background, #f8f9fa))", + bg2="var(--jp-layout-color2, var(--vscode-tree-tableOddRowsBackground, #f1f3f4))", +) + + +def row_bg(i: int) -> str: + return COLORS["bg1" if i % 2 == 0 else "bg2"] + + def _fmt_html(header: _TableHeader, rows: Iterable[tuple[str, str]]) -> str: def strengthen(k: str) -> str: return f"{k}" if header[0] == "Package" else k + rows_list = list(rows) + if not rows_list: + return "" + trs = "\n".join( - f" {strengthen(k)}{v}" for k, v in rows + f' ' + f"{strengthen(k)}{v}" + for i, (k, v) in enumerate(rows_list) ) - if not trs: - return "" + th = f" {header[0]}{header[1]}" - bg = "var(--jp-layout-color0, var(--vscode-editor-background, white))" - style = f' style="position: sticky; top: 0; background-color: {bg};"' - return f"\n{th}\n\n\n{trs}\n" + thead_style = ( + f'style="position: sticky; top: 0; background-color: {COLORS["bg0"]}; ' + f'color: {COLORS["fg1"]};"' + ) + thead = f"\n{th}\n" + + return f"{thead}\n\n{trs}\n" def repr_json(si: SessionInfo) -> str: