Refactor the focus synchronization logic to include pointer events and
ensure test stability when manipulating browser history.
- Add `pointerdown` event listener to `useQuestionInputFocusSync` to
improve input activation on touch/pointer devices
- Extract input activation logic into a dedicated `activateFocusedQuestionInput`
function for better readability
- Update `QuestionSheet` tests to reset window history state and use
asynchronous waiting for `pushState` calls to prevent race conditions
Enhance the user experience by allowing the browser's back button to
close active question sheets instead of navigating away from the page.
- Update `useSheetScrollLock` to manage history state using `pushState`
- Implement `popstate` event listener to trigger `onBack` callback
- Add support for an optional `onBack` option in the scroll lock hook
- Clean up redundant CSS rules related to `question-sheet-open`
- Add integration tests to verify sheet closure on `popstate` events
Update `use-sheet-scroll-lock` to improve how the keyboard shift property
and body classes are applied during input focus events.
- Change `syncKeyboardShift` to accept a boolean state instead of height
- Add check to ensure focus synchronization only triggers for active
question snap items
- Improve cleanup logic in `handleFocusOut` and `useEffect` to
correctly reset the `--question-keyboard-shift` CSS variable