fix: onboarding gamepad — autofocus, click sounds, focus styles

All screens:
- playNavSound('action') on every button click
- path-action-button orange focus glow (removed from suppression list)

Per-screen autofocus:
- Intro: CTA button (after animation)
- Path: Continue button
- Identity: name input
- Backup: passphrase input, Continue after download
- Verify: Sign Challenge, then Finish after verification
- Done: Set Password button

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-30 09:52:09 +01:00
co-authored by Claude Opus 4.6
parent 1c82b8285e
commit 9ea8877d20
7 changed files with 38 additions and 3 deletions
+16 -1
View File
@@ -18,6 +18,7 @@
<p v-else-if="errorMessage" class="text-red-400 text-sm">{{ errorMessage }}</p>
<!-- Sign Button (if not verified yet) -->
<button
ref="signButton"
v-if="!verified"
@click="signChallenge"
:disabled="isSigning"
@@ -65,6 +66,7 @@
<!-- Action Buttons -->
<div class="flex justify-center max-w-[600px] mx-auto flex-shrink-0 px-3 sm:px-4 pb-4 sm:pb-6">
<button
ref="finishButton"
v-if="verified"
@click="proceed"
class="path-action-button path-action-button--continue"
@@ -77,13 +79,22 @@
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { ref, onMounted, nextTick } from 'vue'
import { useRouter } from 'vue-router'
import { completeOnboarding } from '@/composables/useOnboarding'
import { rpcClient } from '@/api/rpc-client'
import { playNavSound } from '@/composables/useNavSounds'
const router = useRouter()
const signButton = ref<HTMLButtonElement | null>(null)
const finishButton = ref<HTMLButtonElement | null>(null)
const verified = ref(false)
onMounted(() => {
setTimeout(() => {
signButton.value?.focus({ preventScroll: true })
}, 500)
})
const isSigning = ref(false)
const signature = ref('')
const currentChallenge = ref('')
@@ -119,6 +130,9 @@ async function signChallenge() {
} else {
verified.value = true
}
nextTick(() => {
setTimeout(() => finishButton.value?.focus({ preventScroll: true }), 100)
})
return
} catch (err) {
const msg = err instanceof Error ? err.message : ''
@@ -138,6 +152,7 @@ async function signChallenge() {
}
async function proceed() {
playNavSound('action')
try {
await completeOnboarding()
} catch {