Files
paseo/packages/app/src/components/code-insets.ts
Mohamed Boudra f4fded1472 fix(app): size file preview gutter to fit 3-digit line numbers (#592)
The gutter width formula was calibrated for the diff pane's 12px font,
so 3-digit numbers wrapped to two lines in the file preview's 14px
gutter. Parameterize on font size and add numberOfLines={1} as a guard.
2026-04-28 13:28:02 +07:00

25 lines
921 B
TypeScript

import type { Theme } from "@/styles/theme";
/**
* Compute the pixel width for a line-number gutter based on the highest
* line number that will be displayed and the gutter font size. Minimum
* width accommodates 2 digits. The 0.62 factor approximates monospace
* digit width as a fraction of font size.
*/
export function lineNumberGutterWidth(maxLineNumber: number, fontSize: number): number {
const digits = Math.max(2, String(maxLineNumber).length);
const digitWidth = Math.ceil(fontSize * 0.62);
return digits * digitWidth + 12;
}
export function getCodeInsets(theme: Theme) {
let padding: number;
if (typeof theme.spacing?.[3] === "number") padding = theme.spacing[3];
else if (typeof theme.spacing?.[4] === "number") padding = theme.spacing[4];
else padding = 12;
const extraRight = theme.spacing[4];
const extraBottom = theme.spacing[3];
return { padding, extraRight, extraBottom };
}