- Ya
- 7 Agosti 2026, 02:34 UTC
- Mwandishi
- kamo
- Ahadi ya
- 2ba8e60
Two regressions from 8ab88d59. The message list grew a gap that widened with every row. This project builds Tailwind with `important: true`, so every utility outranks inline styles — the exact opposite of the usual CSS intuition. The `relative` I put on each virtualized row therefore beat the `position: absolute` that @tanstack/react-virtual sets inline, dropping every row back into normal flow while it kept its `translateY(start)`. Each row was displaced by its own start offset on top of where flow had already placed it. The class was never needed: the only absolutely-positioned things in a row sit inside the avatar box, which carries its own `relative`. Row classes now come from an exported rowClassName() with a test that fails if any positioning utility reappears there. Folders would not drag because the drag was bound to a 12x16px grip that only appeared on hover — grabbing the folder itself, which is what anyone would do, reached nothing. SortableNavOption already had this right for the nav icons and says so in its header: the whole element is the handle, and the sensor's activation distance is what separates a click from a drag. The row now carries the listeners, with a slop check so the click that follows a drag does not also open the folder, touch-action so a touch drag is not claimed for scrolling, and stopPropagation on the overflow button so pressing it opens the menu instead of arming a drag. The grip stays as a hint that the row moves, marked aria-hidden since it is no longer a target.