fabrica

hanna/fabrica

style(web): fix mobile dashboard/repo-nav overflow and truncate repo paths

e750afc · hanna committed on 2026-07-26

- Dashboard/profile/issue columns kept their side-by-side align-items
  (e.g. .dashboard's flex-start) when the mobile query stacked them to a
  column, so the main column shrank to its content and overflowed the
  viewport. Reset align-items: stretch and give the main columns
  width:100%/min-width:0 when stacked.
- Repo sub-nav stacked into a tall column with the branch/clone actions
  crowding it. On mobile the tab strip now scrolls horizontally
  (flex-wrap: nowrap) on its own row with the actions on the row below.
- Long repo/group paths in listing cards now truncate with an ellipsis
  instead of pushing past the card width; trailing visibility/archived
  badges stay put.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed by hannaSSH key fingerprint: SHA256:4g9cWhkAAw8gwqhJUcVbSnGEvdGwklW+1Aa/fMUu59k
1 files changed · +32 −2UnifiedSplit
assets/base.css +32 −2
@@ -1465,6 +1465,19 @@ label.checkbox input {
1465 align-items: center;1465 align-items: center;
1466 gap: 0.45rem;1466 gap: 0.45rem;
1467 font-weight: 600;1467 font-weight: 600;
1468 max-width: 100%;
1469}
1470/* Truncate a long repo/group path so it never pushes past the card width; the
1471 trailing visibility/archived badges stay put (they are not the name span). */
1472.repo-row-name > span:not(.badge) {
1473 overflow: hidden;
1474 text-overflow: ellipsis;
1475 white-space: nowrap;
1476 min-width: 0;
1477}
1478.repo-row-name > .icon,
1479.repo-row-name > .badge {
1480 flex: none;
1468}1481}
1469.repo-row-name .icon {1482.repo-row-name .icon {
1470 color: var(--fb-fg-muted);1483 color: var(--fb-fg-muted);
@@ -2531,24 +2544,41 @@ td.diff-empty {
2531 justify-content: center;2544 justify-content: center;
2532 min-width: 44px;2545 min-width: 44px;
2533 }2546 }
2547 /* Stack the repo sub-nav: the tab strip scrolls horizontally on its own row
2548 (rather than wrapping into a tall column), with the branch/clone actions
2549 on the row below instead of crowding the tabs. */
2550 .repo-nav {
2551 flex-direction: column;
2552 align-items: stretch;
2553 }
2534 .repo-tabs {2554 .repo-tabs {
2555 flex-wrap: nowrap;
2535 overflow-x: auto;2556 overflow-x: auto;
2536 -webkit-overflow-scrolling: touch;2557 -webkit-overflow-scrolling: touch;
2537 }2558 }
2559 .repo-tabs a {
2560 flex: 0 0 auto;
2561 }
2538 /* Diff tables scroll within their own box (the blob wrapper already does). */2562 /* Diff tables scroll within their own box (the blob wrapper already does). */
2539 table.diff {2563 table.diff {
2540 display: block;2564 display: block;
2541 overflow-x: auto;2565 overflow-x: auto;
2542 }2566 }
2543 /* Stack the profile, dashboard, and issue columns on narrow screens. */2567 /* Stack the profile, dashboard, and issue columns on narrow screens. The
2568 containers use align-items other than stretch when side-by-side, so reset
2569 it here or the main column shrinks to its content and overflows. */
2544 .profile-layout,2570 .profile-layout,
2545 .dashboard,2571 .dashboard,
2546 .issue-main {2572 .issue-main {
2547 flex-direction: column;2573 flex-direction: column;
2574 align-items: stretch;
2548 }2575 }
2549 .profile-sidebar,2576 .profile-sidebar,
2550 .dashboard-side,2577 .dashboard-side,
2551 .issue-side {2578 .issue-side,
2579 .profile-main,
2580 .dashboard-main {
2552 width: 100%;2581 width: 100%;
2582 min-width: 0;
2553 }2583 }
2554}2584}