feat(ui): company monogram in user menu + mobile web touch polish (#1531)

* feat(ui): replace generic building icon with company monogram in user menu

The company row and switcher flyout in the sidebar user menu showed
lucide Building2 for every company. Render the company's initial in a
small rounded square instead (square = company, circle = person), so
each company gets a mark of its own.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(mobile): touch behavior polish for the mobile web experience

- kill -webkit-tap-highlight-color flash; touch-action: manipulation on
  interactive elements (no double-tap-to-zoom wait); user-select: none
  on buttons (long-press no longer enters text selection)
- overscroll-behavior-y: contain on html/body: pull-to-refresh no longer
  hijacks list scrolling, inner scrollers stop chaining to the document
  (contain, not none, so iOS rubber-banding survives)
- 16px font-size floor for form fields on coarse pointers: iOS Safari
  stops zooming into focused inputs; desktop keeps text-sm
- min-h-screen -> min-h-dvh everywhere: correct height under collapsing
  mobile browser chrome, identical on desktop
- active: variants mirror hover: on Button: Tailwind 4 gates hover:
  behind (hover: hover), so touch devices previously got zero pointer
  feedback
- theme-color now tracks the app: default was a leftover blue #304D83;
  SSR emits white and ThemeColorSync mirrors the computed --background
  into the meta tag across dark mode and palette switches

Hover-stuck-after-tap and viewport-fit/safe-area were already covered
(Tailwind 4 hover gating; existing viewportFit: cover + safe-area
utilities).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs: log monogram and overscroll decisions

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Jakob Wennberg <311770904+jakobwennberg-oss@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jakob Wennberg
2026-08-13 10:41:45 +02:00
committed by GitHub
co-authored by Claude Fable 5 Jakob Wennberg
parent 38a890c8d1
commit 8f1b1fb5cd
29 changed files with 147 additions and 48 deletions
+49
View File
@@ -364,6 +364,55 @@ body {
-moz-osx-font-smoothing: grayscale;
}
/* ── Touch / mobile-web behavior ──
Hover styling is already safe: Tailwind 4 gates every hover: variant
behind @media (hover: hover), so no stuck-hover rules are needed here. */
/* Kill the gray/blue tap flash (inherited property, one declaration covers all) */
html {
-webkit-tap-highlight-color: transparent;
}
/* Stop pull-to-refresh from hijacking list scrolling and stop inner scrollers
from chaining into the document. `contain`, not `none`: none would also kill
iOS rubber-banding, which should stay. */
html,
body {
overscroll-behavior-y: contain;
}
/* Remove the double-tap-to-zoom wait on interactive elements so taps commit
immediately; pinch zoom and panning are unaffected. */
a,
button,
label,
summary,
input,
select,
textarea,
[role="button"] {
touch-action: manipulation;
}
/* Long-press on a button must not enter text selection */
button,
summary,
[role="button"] {
-webkit-user-select: none;
user-select: none;
}
/* iOS Safari zooms into any focused field whose font-size is under 16px.
Touch-primary devices get a 16px floor; desktop keeps text-sm form fields.
Unlayered on purpose so it also beats layered text-[13px]-style utilities
on bespoke inputs. */
@media (pointer: coarse) {
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]),
select,
textarea {
font-size: max(16px, 1em);
}
}
/* Display typography - Fraunces */
.font-display {