-
Notifications
You must be signed in to change notification settings - Fork 2
feat: AppKit renderer (A2UIAppKit) #25
Copy link
Copy link
Open
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is needed
Description
Background
A2UISwiftCore is completely UI-framework-agnostic. It has zero dependency on SwiftUI, UIKit, or AppKit — making it suitable for integration with any Apple UI framework, including SwiftUI, UIKit, AppKit, and server-side Swift.
Current State
The existing A2UISwiftUI target demonstrates a full renderer built on top of A2UISwiftCore. The data layer is already ready for AppKit:
DataContext.subscribeDynamicValue()provides reactive data subscriptions without any SwiftUI dependencyMessageProcessorandSurfaceViewModelhandle all protocol-level message processingComponentNodetree is framework-agnostic and can be walked by any renderer
What Needs to Be Done
- Add a new
A2UIAppKitSPM target inPackage.swiftwithA2UISwiftCoreas its only dependency - Implement a component set parallel to
A2UISwiftUI, using native AppKit controls (NSTextField,NSButton,NSStackView, etc.) - Use
DataContext.subscribeDynamicValue()to drive UI updates reactively - Handle component lifecycle (subscribe when view appears, unsubscribe when view deallocates)
Where to Start
- Read through
Sources/A2UISwiftUI/— the data layer calls are identical, only the rendering changes - If feat: UIKit renderer (A2UIUIKit) #24 (UIKit renderer) is already in progress, consider referencing its architecture — UIKit and AppKit renderers share the same data-layer patterns
- Start with the four core layout components:
Text,Button,Column,Row - Validate the architecture with those four before expanding to the full component set
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is needed