Skip to content

Commit bbca6e0

Browse files
committed
Add Image(systemName:) for SF Symbols
1 parent e2ea084 commit bbca6e0

1 file changed

Lines changed: 13 additions & 3 deletions

File tree

  • AndroidSwiftUICore/Sources/AndroidSwiftUICore/Primitives

AndroidSwiftUICore/Sources/AndroidSwiftUICore/Primitives/Views.swift

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,22 +43,32 @@ extension Color: PrimitiveView {
4343
}
4444
}
4545

46-
/// An image referenced by name. Rendering is placeholder-level until an asset
47-
/// pipeline exists.
46+
/// An image. `Image(systemName:)` maps a curated set of SF Symbol names to
47+
/// Material icons in the interpreter; a named asset stays placeholder-level
48+
/// until an asset pipeline exists.
4849
public struct Image: View {
4950

5051
internal let name: String
52+
internal let systemName: String?
5153

5254
public init(_ name: String) {
5355
self.name = name
56+
self.systemName = nil
57+
}
58+
59+
public init(systemName: String) {
60+
self.name = systemName
61+
self.systemName = systemName
5462
}
5563

5664
public typealias Body = Never
5765
}
5866

5967
extension Image: PrimitiveView {
6068
public func _render(in context: ResolveContext) -> RenderNode {
61-
RenderNode(type: "Image", id: context.path, props: ["name": .string(name)])
69+
var props: [String: PropValue] = ["name": .string(name)]
70+
if let systemName { props["systemName"] = .string(systemName) }
71+
return RenderNode(type: "Image", id: context.path, props: props)
6272
}
6373
}
6474

0 commit comments

Comments
 (0)