Refactor the question answer storage mechanism to support multiple pending
fields simultaneously and improve data isolation.
- Update `QuestionAnswersProvider` to process all dirty fields in a single
payload instead of just the first one found.
- Ensure all processed dirty keys are cleared from the tracking set.
- Update `TestQuestionsFlow` props to allow null `draftStorageKey`.
- Add comprehensive unit tests for `user-scoped-storage` to ensure
account isolation and correct key generation.
- Update `slider-page` mocks to include marriage config query keys.
Update `AdvisorActionsCard` to fetch real advisor data using `useMarriageAdvisorsQuery`.
The component now:
- Fetches live advisor data and handles loading states with a shimmer effect.
- Derives real avatars from the API response, falling back to provided props if no data is available.
- Dynamically calculates the extra advisor count based on the API results.
- Implements a fallback avatar for missing user profile images.
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