diff --git a/Sources/OpenSwiftUICore/View/Input/ViewInputPredicate.swift b/Sources/OpenSwiftUICore/View/Input/ViewInputPredicate.swift
index f7c9083a5..ffeea2d4e 100644
--- a/Sources/OpenSwiftUICore/View/Input/ViewInputPredicate.swift
+++ b/Sources/OpenSwiftUICore/View/Input/ViewInputPredicate.swift
@@ -9,6 +9,18 @@
package protocol ViewInputPredicate {
static func evaluate(inputs: _GraphInputs) -> Bool
+
+ static func evaluate(listInputs: _ViewListInputs) -> Bool
+}
+
+extension ViewInputPredicate {
+ package static func evaluate(inputs: _ViewInputs) -> Bool {
+ evaluate(inputs: inputs.base)
+ }
+
+ package static func evaluate(listInputs: _ViewListInputs) -> Bool {
+ evaluate(inputs: listInputs.base)
+ }
}
// MARK: - ViewInputFlag
diff --git a/Sources/OpenSwiftUICore/View/Style/DefaultStyle.swift b/Sources/OpenSwiftUICore/View/Style/DefaultStyle.swift
new file mode 100644
index 000000000..46fb4cbb2
--- /dev/null
+++ b/Sources/OpenSwiftUICore/View/Style/DefaultStyle.swift
@@ -0,0 +1,64 @@
+//
+// DefaultStyle.swift
+// OpenSwiftUICore
+//
+// Audited for 6.5.4
+// Status: Complete
+
+// MARK: - AnyDefaultStyle
+
+package protocol AnyDefaultStyle {
+ init()
+}
+
+// MARK: - DefaultStyleModifier
+
+package protocol DefaultStyleModifier: StyleModifier where Style: AnyDefaultStyle {}
+
+// MARK: - StyleOverrideModifier
+
+package protocol StyleOverrideModifier: DefaultStyleModifier where Style == OverrideStyleModifier.Style {
+ associatedtype OriginalStyle
+
+ associatedtype OverrideStyleModifier: StyleModifier
+}
+
+// MARK: - StyleWriterOverrideModifier
+
+package protocol StyleWriterOverrideModifier: AnyDefaultStyle {
+ associatedtype OriginalStyle
+
+ associatedtype StyleOverride
+
+ static func injectStyleOverride(in inputs: inout _ViewInputs) -> ()
+}
+
+extension StyleWriterOverrideModifier {
+ package static func injectStyleOverride
(
+ in inputs: inout _ViewInputs,
+ requiring: P.Type
+ ) where P: ViewInputPredicate {
+ guard requiring.evaluate(inputs: inputs) else {
+ return
+ }
+ injectStyleOverride(in: &inputs)
+ }
+}
+
+// MARK: - DefaultStyleModifierTypeVisitor
+
+package protocol DefaultStyleModifierTypeVisitor {
+ func visit(type: T.Type) where T: DefaultStyleModifier
+}
+
+// MARK: - StyleOverrideModifierTypeVisitor
+
+package protocol StyleOverrideModifierTypeVisitor {
+ func visit(type: T.Type) where T: StyleOverrideModifier
+}
+
+// MARK: - StyleWriterOverrideModifierTypeVisitor
+
+package protocol StyleWriterOverrideModifierTypeVisitor {
+ func visit(type: T.Type) where T: StyleWriterOverrideModifier
+}
diff --git a/Sources/OpenSwiftUICore/View/Style/ViewStyle.swift b/Sources/OpenSwiftUICore/View/Style/ViewStyle.swift
new file mode 100644
index 000000000..6cf0f9c19
--- /dev/null
+++ b/Sources/OpenSwiftUICore/View/Style/ViewStyle.swift
@@ -0,0 +1,385 @@
+//
+// ViewStyle.swift
+// OpenSwiftUICore
+//
+// Audited for 6.5.4
+// Status: Complete
+// ID: AC03956538119E2820390436C305EBF1 (SwiftUI)
+// ID: AC59074524C298808AAD87A4737AEFFC (SwiftUICore)
+
+import OpenAttributeGraphShims
+
+// MARK: - StyleableView
+
+package protocol StyleableView: View where Configuration == DefaultStyleModifier.StyleConfiguration {
+ associatedtype Configuration
+
+ associatedtype DefaultStyleModifier: StyleModifier
+
+ var configuration: Configuration { get }
+
+ static var defaultStyleModifier: DefaultStyleModifier { get }
+}
+
+extension StyleableView {
+ package var body: some View { self }
+
+ nonisolated package static func _makeView(
+ view: _GraphValue,
+ inputs: _ViewInputs
+ ) -> _ViewOutputs {
+ var inputs = inputs
+ guard inputs.base.isCurrentStyleableView(Self.self) else {
+ inputs.base.setCurrentStyleableView(Self.self)
+ return Body._makeView(
+ view: _GraphValue(MakeResolvedRepresentation(view: view.value)),
+ inputs: inputs
+ )
+ }
+ guard let modifier = inputs.base.popLast(StyleInput.self) else {
+ return MakeDefaultRepresentation.Value.makeDebuggableView(
+ view: _GraphValue(MakeDefaultRepresentation(view: view.value)),
+ inputs: inputs
+ )
+ }
+ return modifier.type.makeView(
+ view: view,
+ modifier: modifier,
+ inputs: inputs
+ )
+ }
+
+ nonisolated package static func _makeViewList(
+ view: _GraphValue,
+ inputs: _ViewListInputs
+ ) -> _ViewListOutputs {
+ var inputs = inputs
+ guard inputs.base.isCurrentStyleableView(Self.self) else {
+ inputs.base.setCurrentStyleableView(Self.self)
+ return Body._makeViewList(
+ view: _GraphValue(MakeResolvedRepresentation(view: view.value)),
+ inputs: inputs
+ )
+ }
+ guard let modifier = inputs.base.popLast(StyleInput.self) else {
+ return MakeDefaultRepresentation.Value.makeDebuggableViewList(
+ view: _GraphValue(MakeDefaultRepresentation(view: view.value)),
+ inputs: inputs
+ )
+ }
+ return modifier.type.makeViewList(
+ view: view,
+ modifier: modifier,
+ inputs: inputs
+ )
+ }
+
+ nonisolated package static func _viewListCount(
+ inputs: _ViewListCountInputs
+ ) -> Int? {
+ var inputs = inputs
+ guard inputs.isCurrentStyleableView(Self.self) else {
+ inputs.setCurrentStyleableView(Self.self)
+ return Body._viewListCount(inputs: inputs)
+ }
+ guard let modifier = inputs.popLast(StyleInput.self) else {
+ return MakeDefaultRepresentation.Value._viewListCount(inputs: inputs)
+ }
+ return modifier.type.viewListCount(inputs: inputs)
+ }
+}
+
+// MARK: - StyleModifier
+
+package protocol StyleModifier: MultiViewModifier, PrimitiveViewModifier {
+ associatedtype Style
+
+ associatedtype StyleConfiguration
+
+ associatedtype StyleBody: View
+
+ init(style: Style)
+
+ var style: Style { get set }
+
+ func styleBody(configuration: StyleConfiguration) -> StyleBody
+}
+
+extension StyleModifier {
+ nonisolated package static func _makeView(
+ modifier: _GraphValue,
+ inputs: _ViewInputs,
+ body: @escaping (_Graph, _ViewInputs) -> _ViewOutputs
+ ) -> _ViewOutputs {
+ var inputs = inputs
+ let override = inputs[StyleOverrideInput