diff --git a/frontend/src/constants/ui.ts b/frontend/src/constants/ui.ts index 60c7d12..08ffad5 100644 --- a/frontend/src/constants/ui.ts +++ b/frontend/src/constants/ui.ts @@ -3,5 +3,5 @@ export const DEFAULT_VIEWPORT_MARGIN = 8; export const ELLIPSIS = { id: '__breadcrumbs_ellipsis__', label: '…', onClick: null, raw: null } as const; export const WIDTH_TOLERANCE = 1; -export const WIDTH_BUFFER_RATIO = 0.95; -export const WIDTH_CHANGE_TOLERANCE = 0.25; +export const WIDTH_BUFFER_RATIO = 0.99; +export const WIDTH_CHANGE_TOLERANCE = 0.02; diff --git a/frontend/src/preview/DocumentViewerPanel.tsx b/frontend/src/preview/DocumentViewerPanel.tsx index 139dff7..d9cd2cd 100644 --- a/frontend/src/preview/DocumentViewerPanel.tsx +++ b/frontend/src/preview/DocumentViewerPanel.tsx @@ -437,12 +437,14 @@ const DocumentViewerPanel: React.FC = ({ ) : loadingSection; const headerTitle = breadcrumbTrailEntries.length ? ( - +
+ +
) : ( document?.title || 'Document preview' ); diff --git a/frontend/src/styles/documents/panel-sections.css b/frontend/src/styles/documents/panel-sections.css index 1a2cfb1..0c09807 100644 --- a/frontend/src/styles/documents/panel-sections.css +++ b/frontend/src/styles/documents/panel-sections.css @@ -71,7 +71,7 @@ } .breadcrumb-trail__link { - display: inline-flex; + display: block; align-items: center; max-width: 100%; white-space: nowrap; @@ -83,6 +83,7 @@ font: inherit; color: inherit; cursor: default; + min-width: 0; } .breadcrumb-trail--measure .breadcrumb-trail__link, @@ -138,6 +139,11 @@ button.breadcrumb-trail__link, max-width: 22rem; } +.panel-header__breadcrumbs-wrapper { + min-width: 0; + flex: 1 1 auto; +} + .panel-section__body { flex: 1; display: flex; @@ -148,4 +154,4 @@ button.breadcrumb-trail__link, .panel-section__body--scrollable, .panel-section__body.scrollable { overflow-y: auto; -} +} \ No newline at end of file diff --git a/frontend/src/ui/BreadcrumbTrail.tsx b/frontend/src/ui/BreadcrumbTrail.tsx index 0c83064..89f8379 100644 --- a/frontend/src/ui/BreadcrumbTrail.tsx +++ b/frontend/src/ui/BreadcrumbTrail.tsx @@ -194,7 +194,7 @@ const BreadcrumbTrail = ({ } // Reserve a tiny buffer so the live trail doesn't oscillate when the - // container width barely fits; shrink the measured allowance by 1%. + // container width barely fits; shrink the measured allowance a bit. const adjustedAvailable = available * WIDTH_BUFFER_RATIO; let nextStart = widths.length - 1; @@ -297,20 +297,20 @@ const BreadcrumbTrail = ({ const content = !entry.onClick || isLast ? ( - - {entry.label} - - ) + + {entry.label} + + ) : ( - - ); + + ); return ( @@ -371,33 +371,33 @@ const BreadcrumbTrail = ({ && hasHiddenEntries && ellipsisMenuStyle ? createPortal( -
-
- {hiddenEntries.map((hiddenEntry) => ( - - ))} -
-
, - document.body, - ) +
+
+ {hiddenEntries.map((hiddenEntry) => ( + + ))} +
+
, + document.body, + ) : null} );