- Create useReducedMotion composable for motion preferences - Create useTypewriter composable with accelerate/skip support - Add DialoguePNJ component with Zelda-style dialogue system - Add personality-based styling (sage, sarcastique, enthousiaste, professionnel) - Implement keyboard navigation (arrows, space) - Add toggle between dialogue and list view modes - Add i18n translations for dialogue UI Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
21 lines
498 B
TypeScript
21 lines
498 B
TypeScript
export function useReducedMotion() {
|
|
const reducedMotion = ref(false)
|
|
|
|
if (import.meta.client) {
|
|
const mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)')
|
|
reducedMotion.value = mediaQuery.matches
|
|
|
|
const handler = (e: MediaQueryListEvent) => {
|
|
reducedMotion.value = e.matches
|
|
}
|
|
|
|
mediaQuery.addEventListener('change', handler)
|
|
|
|
onUnmounted(() => {
|
|
mediaQuery.removeEventListener('change', handler)
|
|
})
|
|
}
|
|
|
|
return readonly(reducedMotion)
|
|
}
|