refactor: improve tab layout sizing and always show close buttons

This commit is contained in:
Mohamed Boudra
2026-03-04 21:32:57 +07:00
parent 26ea214d64
commit ee8e2ab691
7 changed files with 99 additions and 51 deletions
@@ -7,6 +7,7 @@ import {
type UseWorkspaceTabLayoutInput = {
tabLabels: string[];
viewportWidthOverride?: number | null;
metrics: {
rowHorizontalInset: number;
actionsReservedWidth: number;
@@ -29,15 +30,19 @@ type UseWorkspaceTabLayoutResult = {
export function useWorkspaceTabLayout(input: UseWorkspaceTabLayoutInput): UseWorkspaceTabLayoutResult {
const { width: viewportWidth } = useWindowDimensions();
const resolvedViewportWidth =
typeof input.viewportWidthOverride === "number" && input.viewportWidthOverride > 0
? input.viewportWidthOverride
: viewportWidth;
const layout = useMemo(
() =>
computeWorkspaceTabLayout({
viewportWidth,
viewportWidth: resolvedViewportWidth,
tabLabelLengths: input.tabLabels.map((label) => label.length),
metrics: input.metrics,
}),
[input.metrics, input.tabLabels, viewportWidth]
[input.metrics, input.tabLabels, resolvedViewportWidth]
);
return {