+ // Escape the AppShell's desktop main padding (px-6 pt-3 pb-6) so the
+ // folder column sits flush against the global app sidebar — reads
+ // as an extension of navigation rather than a card-inside-a-page.
+ // Inner content keeps its own padding so the right pane doesn't
+ // run flush with the viewport edge.
+
{/* Mobile: stacked, with a Sheet drawer for folders. */}
- {crumbs.map((crumb, _index) => (
-
-
- {crumb.isLast ? (
-
- {crumb.label}
-
- ) : (
+ {crumbs.map((crumb) => (
+ // Each crumb + its trailing separator share a single
+ // inline-flex `
+
))}
diff --git a/src/components/layout/topbar.tsx b/src/components/layout/topbar.tsx
index 9ca5066a..dff2adaa 100644
--- a/src/components/layout/topbar.tsx
+++ b/src/components/layout/topbar.tsx
@@ -54,7 +54,7 @@ export function Topbar({ ports, user }: TopbarProps) {
// Three-column grid: breadcrumbs left, search center, actions right.
// The brand logo lives in the sidebar header (per design feedback) so the
// topbar center is dedicated to the global search bar.
-
+
{/* LEFT: optional back button + breadcrumbs / page title */}
{showBackButton && (
@@ -74,11 +74,14 @@ export function Topbar({ ports, user }: TopbarProps) {
- {/* CENTER: global search - capped width and horizontally centered
- inside its grid slot so it sits visually in the middle of the
- topbar regardless of breadcrumb / action-row width. */}
+ {/* CENTER: global search - capped width and visually centered
+ against the FULL viewport (not the post-sidebar area) via a
+ translate-X that shifts left by half the sidebar width.
+ Without the translate the topbar's grid centers inside the
+ area-after-the-sidebar, so the search visually drifts right
+ by half the sidebar width. */}