whisper-money/resources/js/components
Víctor Falcón abc71daa7e
feat: Show PWA install button on mobile landing page (#99)
## Summary

- Detects Android and iOS visitors on the landing page hero section
- Replaces the **Get Started** and **Check Demo** buttons with a single
**Install App** button on mobile
- **Android**: Captures the `beforeinstallprompt` event and triggers the
native PWA installation prompt when tapped
- **iOS**: Opens a dialog with step-by-step instructions (tap Share icon
→ Add to Home Screen)
- Desktop visitors see the original buttons unchanged

## New files

- `resources/js/hooks/use-pwa-install.ts` — Hook that detects platform
(Android/iOS), captures the `beforeinstallprompt` event, and exposes
`promptInstall()`
- `resources/js/components/landing/install-app-button.tsx` — Install
button component with iOS instructions dialog

## Screenshots
| Android & iOS | iOS Instructions |
|--------|--------|
| <img width="1082" height="2402" alt="localhost_8000_(Pixel 7)"
src="https://github.com/user-attachments/assets/bd42c24a-8a82-4f42-9f5f-c13bd5505836"
/> | <img width="1170" height="2532" alt="localhost_8000_(iPhone 12
Pro)"
src="https://github.com/user-attachments/assets/c4ec136f-46f1-44a5-a96a-d7afd41c6015"
/> |
2026-02-07 09:33:12 +01:00
..
accounts feat: Add PostHog (#70) 2026-01-20 10:47:59 +01:00
automation-rules chore: Simplify IndexedDB sync by moving to Inertia shared props (#63) 2026-01-19 19:15:26 +01:00
budgets feat: Add previous period comparison to budget chart (#93) 2026-02-01 14:21:13 +01:00
cashflow cashflow: use user currency_code 2026-01-06 08:36:30 +01:00
categories chore: Simplify IndexedDB sync by moving to Inertia shared props (#63) 2026-01-19 19:15:26 +01:00
charts feat: Group small expending categories on the Sankey chart 2026-01-11 19:04:20 +01:00
dashboard fix: Top spending categories on mobile 2026-02-02 13:34:01 +01:00
icons Subscriptions (#15) 2025-12-06 19:09:56 +01:00
labels chore: Simplify IndexedDB sync by moving to Inertia shared props (#63) 2026-01-19 19:15:26 +01:00
landing feat: Show PWA install button on mobile landing page (#99) 2026-02-07 09:33:12 +01:00
onboarding chore: Simplify IndexedDB sync by moving to Inertia shared props (#63) 2026-01-19 19:15:26 +01:00
partials fix: Welcome page mobile display for iOS (#94) 2026-02-01 16:39:38 +01:00
shared chore: Simplify IndexedDB sync by moving to Inertia shared props (#63) 2026-01-19 19:15:26 +01:00
transactions feat: Reload transactions table on import proccess complete 2026-01-27 11:12:04 +01:00
ui Fix chart hover background visibility in dark mode (#82) 2026-01-27 19:08:35 +01:00
alert-error.tsx Set up a fresh Laravel app 2025-11-07 12:01:36 +00:00
app-content.tsx Set up a fresh Laravel app 2025-11-07 12:01:36 +00:00
app-logo-icon.tsx Automated rules labels (#30) 2025-12-15 12:11:55 +01:00
app-logo.tsx Add animated logo icon that transitions based on encryption key state 2025-12-12 11:24:42 +01:00
app-mobile-nav.tsx Mobile design (#17) 2025-12-08 15:43:09 +01:00
app-shell.tsx Set up a fresh Laravel app 2025-11-07 12:01:36 +00:00
app-sidebar-header.tsx fix: Header on iOS 2026-02-02 09:00:03 +01:00
app-sidebar.tsx Fix mobile bottom nav alignment for 5 items (#81) 2026-01-27 19:02:38 +01:00
appearance-dropdown.tsx Set up a fresh Laravel app 2025-11-07 12:01:36 +00:00
appearance-tabs.tsx Set up a fresh Laravel app 2025-11-07 12:01:36 +00:00
breadcrumbs.tsx Set up a fresh Laravel app 2025-11-07 12:01:36 +00:00
delete-user.tsx Demo Account Experience (#51) 2026-01-07 10:58:14 +01:00
encrypted-text.tsx fix: make encryption key storage SSR-safe to prevent 502 errors 2025-12-08 17:13:45 +01:00
encryption-key-button.tsx chore: Simplify IndexedDB sync by moving to Inertia shared props (#63) 2026-01-19 19:15:26 +01:00
heading-small.tsx Add Budgeting Feature to Track and Manage Spending (#36) 2026-01-21 15:25:50 +01:00
heading.tsx Set up a fresh Laravel app 2025-11-07 12:01:36 +00:00
icon.tsx Set up a fresh Laravel app 2025-11-07 12:01:36 +00:00
input-error.tsx Set up a fresh Laravel app 2025-11-07 12:01:36 +00:00
nav-footer.tsx Subscriptions (#15) 2025-12-06 19:09:56 +01:00
nav-main.tsx Set up a fresh Laravel app 2025-11-07 12:01:36 +00:00
nav-user.tsx Format + Open transactions on row click 2025-12-08 15:58:50 +01:00
sync-status-button.tsx chore: Simplify IndexedDB sync by moving to Inertia shared props (#63) 2026-01-19 19:15:26 +01:00
text-link.tsx Set up a fresh Laravel app 2025-11-07 12:01:36 +00:00
two-factor-recovery-codes.tsx Set up a fresh Laravel app 2025-11-07 12:01:36 +00:00
two-factor-setup-modal.tsx Set up a fresh Laravel app 2025-11-07 12:01:36 +00:00
unlock-message-dialog.tsx Demo Account Experience (#51) 2026-01-07 10:58:14 +01:00
user-info.tsx feat: Replace user avatar with Facehash faces (#86) 2026-02-01 11:33:09 +01:00
user-menu-content.tsx feat: New discord offer 2026-01-10 10:27:32 +01:00