e0fb34b2522fed79ff26ea88d14f034ae0e66e2e
- Implement isIOSSafariNonStandalone(): iOS UA + navigator.standalone detection - Implement useAndroidInstallPrompt(): captures beforeinstallprompt, exposes canInstall/triggerInstall - InstallPrompt renders nothing when display-mode:standalone or navigator.standalone (already installed) - iOS branch: dismissible banner with 'Install FamilySync' heading, 'How to install' link opens 5-step walkthrough sheet (exact UI-SPEC copy, orange #F5A623 step number annotation) - Android branch: banner with 'Install' button shown only when canInstall=true - localStorage.installPromptDismissed persists banner dismissal - role="banner", dismiss aria-label="Dismiss install prompt", 44px touch targets - Mount <InstallPrompt /> in CalendarShell (phone: below AppNav; desktop: top of content area) - InstallPrompt.test.tsx GREEN (5 behavior tests); full PWA suite 44 tests green; tsc clean
The file is empty.
Languages
TypeScript
97.3%
JavaScript
1.6%
CSS
0.9%
Dockerfile
0.1%