fix(ui): mesh/web5/apps layout, modal, and search UX fixes

- Mesh: fix 920-1280px bottom margin (phantom mobile-nav reservation
  leaking into the desktop-sidebar range), let the mesh view scale to
  full width on wide screens instead of capping at 1600px, and make the
  Device panel collapsible on desktop (previously mobile-only)
- Search/controller-nav: a global gamepad/keyboard-nav feature was
  auto-clicking "the next button in the DOM" on Enter in any text input,
  which cleared the mesh peer search and popped the sideload modal from
  the App Store/My Apps search boxes. Opt out via data-controller-no-submit
  on all filter inputs; bump the mesh clear button's touch target
- Modals: several (sideload, credential, Lightning channel open, identity
  create) used ad-hoc blue buttons and non-fullscreen backdrops that only
  covered the main content area, not the sidebar. Teleport them to body,
  unify backdrop/button theming to the dark+orange convention, fix the
  sideload modal's square bottom corners on desktop, and standardize
  close buttons to the ghost-icon style
- Web5: remove the redundant/dead "Messages" tab from Connected Nodes
  (its deep-link was unreachable dead code); fix the "view message" toast
  to actually open the Archipelago channel instead of silently failing to
  match a LoRa peer; make identity rows responsive via a container query
  (viewport-based breakpoints don't work in the page's 2-column grid) and
  right-justify their action icons; collapse DID/DHT/Wallet/Nostr/Connected
  Nodes by default on mobile
- Apps/App Store: match the search bar and sideload button's height,
  padding, and background to the mode-switcher tabs beside them
- Mesh chat: keep the compose input focused after sending

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
archipelago
2026-07-01 18:04:31 -04:00
co-authored by Claude Sonnet 5
parent 469b0203b7
commit 8256fde1a6
18 changed files with 242 additions and 169 deletions
+40
View File
@@ -420,6 +420,46 @@ input[type="radio"]:active + * {
max-width: none;
}
/* Give the search bar the same pill-container look as .mode-switcher (the
My Apps/App Store/Services and category tabs it sits next to), instead
of its own brighter ad-hoc background/border. */
.app-header-search {
padding: 0.5rem 1rem;
border-radius: 0.5rem;
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.08);
outline: none;
transition: border-color 0.2s ease, background-color 0.2s ease;
}
.app-header-search:focus {
border-color: rgba(251, 146, 60, 0.35);
background-color: rgba(251, 146, 60, 0.08);
}
/* Match the search bar to the tabs it sits beside — not just the inner
button, but the full .mode-switcher pill container (button + its 3px
padding + border): 40px on desktop. On mobile, the visible tab row is
the floating top tab bar (DashboardMobileNav), measured at 52px. */
@media (min-width: 921px) {
.app-header-search {
height: 40px;
padding-top: 0;
padding-bottom: 0;
font-size: 0.8rem;
box-sizing: border-box;
}
}
@media (max-width: 920px) {
.app-header-search {
height: 52px;
padding-top: 0;
padding-bottom: 0;
box-sizing: border-box;
}
}
.segmented-select .mode-switcher-btn {
flex: 0 0 auto;
}