Skip to content

Accessibility#5

Merged
shanerbaner82 merged 5 commits into
mainfrom
accessibility
Jul 9, 2026
Merged

Accessibility#5
shanerbaner82 merged 5 commits into
mainfrom
accessibility

Conversation

@shanerbaner82

Copy link
Copy Markdown
Contributor

No description provided.

shanerbaner82 and others added 5 commits July 9, 2026 15:07
A content-agnostic chrome hook: a layout implements floatingOverlay()
(via HasFloatingOverlay) to float any element or Blade view above the
content and tab bar, app-wide. Renders nothing when it returns null.

Rides the existing chrome seam — ChromeContributorRegistry (PHP) +
NativeRootHostRegistry (native) — so it ships entirely from the plugin
with no edits to nativephp/mobile core.

- FloatingOverlay builder (View|Element content, bottom/top, offset)
- floating_overlay sentinel element + blade component pairing
- HasFloatingOverlay / InteractsWithFloatingOverlay traits
- iOS + Android NativeFloatingOverlayHost, registered as root hosts
- registerFloatingOverlay() chrome contributor in the service provider
- manifest component entry + tests

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add keepFocusOnSubmit() (blade: keep-focus-on-submit / keep-focus). By
default SwiftUI resigns first responder on return, dismissing the
keyboard; opting in re-asserts focus so the keyboard stays up — the chat
"send and keep typing" pattern. iOS TextInputCore re-focuses when the
server value clears after submit.
Composed/inline text now inherits font size, weight and family from its
context instead of resetting to defaults, and preserves Dynamic Type
scaling (nuiScaledFont on iOS, includeFontPadding=false trim on Android)
with lineLimit/maxLines honored.
Chat-style bottom anchoring: opens pinned to the bottom and re-scrolls to
the latest content as it grows. iOS uses a ScrollViewReader + zero-height
bottom anchor (deterministic, avoids the iOS 17+ .defaultScrollAnchor
flakiness); Android re-triggers stick-to-bottom when subtree content
changes.
Bare/Filled/Outlined inputs now fillMaxWidth() by default, matching the
iOS renderer's maxWidth: .infinity. An explicit width in the modifier
(FIXED layout mode) still wins since it composes later in the chain.
@shanerbaner82 shanerbaner82 merged commit 8d3df68 into main Jul 9, 2026
2 checks passed
@shanerbaner82 shanerbaner82 deleted the accessibility branch July 9, 2026 21:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant