Update UserSettingsLive to properly handle browser back/forward buttons
by syncing all modal state to URL parameters.
Changes:
- Update handle_params/3 to read modal param and set modal states
- Add build_settings_path/2 helper to construct URLs with preserved params
- Update all modal show/close handlers to use push_patch instead of assign:
- add_token modal
- token_created modal (shown after creating token)
- revoke_all modal
- add_device modal (TOTP)
- device_qr modal (shown after creating device)
- recovery_codes modal
Behavior:
- Browser back button now closes modals without navigating away
- URL reflects current modal state (?modal=add_token, etc.)
- Tab and page params preserved when opening/closing modals
- Bookmarkable URLs restore exact modal state
Follows idiomatic Phoenix LiveView pattern using push_patch/2 and
handle_params/3 as documented in CLAUDE.md.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>