@@ -135,8 +135,10 @@ module App =
135 Profile = None
135 Profile = None
136 FlushingOutbox = false
136 FlushingOutbox = false
137 PollRetries = 0
137 PollRetries = 0
138− KeyboardHeight = 0. },
138+ KeyboardHeight = 0.
140+ SafeAreaBottom = 0. },
139− [ CmdLoadState; CmdSubscribeKeyboard ]
141+ [ CmdLoadState; CmdSubscribeKeyboard; CmdSubscribeSafeArea ]
141 // ── Update ──
143 // ── Update ──
@@ -367,6 +369,7 @@ module App =
367 | Search _ -> model, []
369 | Search _ -> model, []
369 | KeyboardHeightChanged h -> { model with KeyboardHeight = h }, []
371 | KeyboardHeightChanged h -> { model with KeyboardHeight = h }, []
372+ | SafeAreaChanged(top, bottom) -> { model with SafeAreaTop = top; SafeAreaBottom = bottom }, []
371 | DoScanQR -> model, [ CmdScanQR ]
374 | DoScanQR -> model, [ CmdScanQR ]
@@ -698,6 +701,9 @@ module App =
698 | CmdSubscribeKeyboard ->
701 | CmdSubscribeKeyboard ->
699 Cmd.ofEffect (fun dispatch -> Keyboard.heightChanged.Add(fun h -> dispatch (KeyboardHeightChanged h)))
702 Cmd.ofEffect (fun dispatch -> Keyboard.heightChanged.Add(fun h -> dispatch (KeyboardHeightChanged h)))
704+ | CmdSubscribeSafeArea ->
705+ Cmd.ofEffect (fun dispatch -> SafeArea.insetsChanged.Add(fun (t, b) -> dispatch (SafeAreaChanged(t, b))))
701 // ── View ──
707 // ── View ──
703 let private pageContent model =
709 let private pageContent model =
@@ -712,7 +718,7 @@ module App =
713 Border(page)
719 Border(page)
714 .background(SolidColorBrush(Colors.White))
720 .background(SolidColorBrush(Colors.White))
715− .padding (Avalonia.Thickness(0., 0., 0., model.KeyboardHeight))
721+ .padding (Avalonia.Thickness(0., model.SafeAreaTop, 0., model.KeyboardHeight))
717 let view model =
723 let view model =
718#if MOBILE
724#if MOBILE