3 ms·
This is a core design goal for Pax. https://www.pax-lang.org https://www.pax-lang.org Pax composites a layer of native text and form elements on top of a canva
by zackbrown 4y ago
This is a core design goal for Pax. https://www.pax-lang.org https://www.pax-lang.org
Pax composites a layer of native text and form elements on top of a canvas drawing layer. This solves accessibility across platforms, as well SEO on the Web.
This approach also enables a lean runtime footprint (<100Kb, particularly useful when targeting Web) because the runtime doesn't need to reinvent text rendering, selection, input, etc.
Still early days — have made very little noise thus far; it's pre-alpha — but you can see what's cooking at https://docs.pax-lang.org/ https://docs.pax-lang.org/ and https://www.github.com/pax-lang/pax https://www.github.com/pax-lang/pax
- jbk 4y agoIt does not answer the native styling though…
- zackbrown 4y agoPax does solve this, but we're now discussing a different problem than element-level look-and-feel or accessibility. Three ways you can slice this with Pax, ft. pseudocode: 1. Conditional templating, like: <SomeLayout> if $is_android { //Only render the back button for Android <BackButton /> } /* ... */ </SomeLayout> 2. Dynamic properties where Rust logic checks for the target platform, like: <SomeElement some_property={self.get_platform_specific_value()} /> 3. Maintain a separate codebase (or different specific components) for each target platform, in the spirit of React Native Or any mix of the above.
- zamadatix 4y agoDoes this actually render a native Android back button to the canvas or are you simply saying Pax solves this by not restricting the user from making their own solution to the problem?
- zackbrown 4y agoPax's Android chassis isn't built yet — but a Pax `<Button>` will render an actual native Android button to a layer on top of a separate canvas layer where vector drawing occurs. That native Android button will be affine-transformed, clipped, and occluded so that the two layers together act as a single coherent screen, and the developer can simply position / transform / layout that `<Button>` alongside, on top of, or underneath virtual / drawn elements as if they were on the same canvas. This "dual layer" approach is already implemented for Pax's `<Text>` element on macOS (native SwiftUI `Text`) and Web (native `<div>` + HTML text) — see: https://docs.pax-lang.org/intro-example.html https://docs.pax-lang.org/intro-example.html
- zamadatix 4y agoThis could be very interesting, I'll have to keep an eye on the development. Thanks!