@swiftbrowser/swift 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/Package.swift +214 -0
  2. package/README.md +10 -2
  3. package/Sources/AVFoundation/AVFoundation.swift +131 -0
  4. package/Sources/AVFoundation/Asset.swift +487 -0
  5. package/Sources/AVFoundation/AudioSession.swift +144 -0
  6. package/Sources/AVFoundation/CMTime.swift +303 -0
  7. package/Sources/AVFoundation/Capture.swift +688 -0
  8. package/Sources/AVFoundation/Player.swift +749 -0
  9. package/Sources/AVFoundation/PlayerView.swift +117 -0
  10. package/Sources/AVKit/AVKit.swift +132 -0
  11. package/Sources/Accelerate/Accelerate.swift +122 -0
  12. package/Sources/AppIntents/AppIntents.swift +144 -0
  13. package/Sources/AppIntents/Parameters.swift +220 -0
  14. package/Sources/AppIntents/Shortcuts.swift +159 -0
  15. package/Sources/AudioToolbox/AudioToolbox.swift +55 -0
  16. package/Sources/AuthenticationServices/AuthenticationServices.swift +257 -0
  17. package/Sources/AuthenticationServices/Authorization.swift +251 -0
  18. package/Sources/Charts/Charts.swift +61 -0
  19. package/Sources/Combine/AnyCancellable.swift +65 -0
  20. package/Sources/Combine/AnyPublisher.swift +148 -0
  21. package/Sources/Combine/AnySubscriber.swift +230 -0
  22. package/Sources/Combine/Cancellable.swift +35 -0
  23. package/Sources/Combine/Codable.swift +29 -0
  24. package/Sources/Combine/CombineIdentifier.swift +45 -0
  25. package/Sources/Combine/Concurrency/ConcurrencyHelpers.swift +24 -0
  26. package/Sources/Combine/Concurrency/Future+Concurrency.swift +136 -0
  27. package/Sources/Combine/Concurrency/GENERATED-Publisher+Concurrency.swift +397 -0
  28. package/Sources/Combine/CurrentValueSubject.swift +252 -0
  29. package/Sources/Combine/CustomCombineIdentifierConvertible.swift +28 -0
  30. package/Sources/Combine/Future.swift +228 -0
  31. package/Sources/Combine/GENERATED-RootProtocols.swift +426 -0
  32. package/Sources/Combine/Helpers/ConduitBase.swift +40 -0
  33. package/Sources/Combine/Helpers/ConduitList.swift +59 -0
  34. package/Sources/Combine/Helpers/DebugHook.swift +177 -0
  35. package/Sources/Combine/Helpers/FilterProducer.swift +174 -0
  36. package/Sources/Combine/Helpers/Locking.swift +30 -0
  37. package/Sources/Combine/Helpers/PartialCompletion.swift +26 -0
  38. package/Sources/Combine/Helpers/ReduceProducer.swift +249 -0
  39. package/Sources/Combine/Helpers/SubjectSubscriber.swift +96 -0
  40. package/Sources/Combine/Helpers/SubscriberTap.swift +69 -0
  41. package/Sources/Combine/Helpers/SubscriptionStatus.swift +33 -0
  42. package/Sources/Combine/Helpers/SubscriptionTap.swift +33 -0
  43. package/Sources/Combine/Helpers/Utils.swift +30 -0
  44. package/Sources/Combine/Helpers/Violations.swift +33 -0
  45. package/Sources/Combine/ImmediateScheduler.swift +178 -0
  46. package/Sources/Combine/LICENSE +21 -0
  47. package/Sources/Combine/NotificationPublisher.swift +48 -0
  48. package/Sources/Combine/ObjectWillChange.swift +46 -0
  49. package/Sources/Combine/PassthroughSubject.swift +222 -0
  50. package/Sources/Combine/Publisher+Subscribe.swift +53 -0
  51. package/Sources/Combine/Publishers/Deferred.swift +48 -0
  52. package/Sources/Combine/Publishers/Empty.swift +54 -0
  53. package/Sources/Combine/Publishers/Fail.swift +42 -0
  54. package/Sources/Combine/Publishers/GENERATED-Publishers.Catch.swift +673 -0
  55. package/Sources/Combine/Publishers/GENERATED-Publishers.Encode.swift +388 -0
  56. package/Sources/Combine/Publishers/GENERATED-Publishers.MapKeyPath.swift +384 -0
  57. package/Sources/Combine/Publishers/Just.swift +313 -0
  58. package/Sources/Combine/Publishers/Optional.Publisher.swift +315 -0
  59. package/Sources/Combine/Publishers/Publishers.AllSatisfy.swift +217 -0
  60. package/Sources/Combine/Publishers/Publishers.AssertNoFailure.swift +158 -0
  61. package/Sources/Combine/Publishers/Publishers.Autoconnect.swift +193 -0
  62. package/Sources/Combine/Publishers/Publishers.Breakpoint.swift +231 -0
  63. package/Sources/Combine/Publishers/Publishers.Buffer.swift +356 -0
  64. package/Sources/Combine/Publishers/Publishers.Collect.swift +102 -0
  65. package/Sources/Combine/Publishers/Publishers.CollectByCount.swift +195 -0
  66. package/Sources/Combine/Publishers/Publishers.CompactMap.swift +241 -0
  67. package/Sources/Combine/Publishers/Publishers.Comparison.swift +371 -0
  68. package/Sources/Combine/Publishers/Publishers.Concatenate.swift +474 -0
  69. package/Sources/Combine/Publishers/Publishers.Contains.swift +293 -0
  70. package/Sources/Combine/Publishers/Publishers.Count.swift +87 -0
  71. package/Sources/Combine/Publishers/Publishers.Debounce.swift +332 -0
  72. package/Sources/Combine/Publishers/Publishers.Delay.swift +269 -0
  73. package/Sources/Combine/Publishers/Publishers.Drop.swift +155 -0
  74. package/Sources/Combine/Publishers/Publishers.DropUntilOutput.swift +283 -0
  75. package/Sources/Combine/Publishers/Publishers.DropWhile.swift +378 -0
  76. package/Sources/Combine/Publishers/Publishers.Filter.swift +248 -0
  77. package/Sources/Combine/Publishers/Publishers.First.swift +261 -0
  78. package/Sources/Combine/Publishers/Publishers.FlatMap.swift +533 -0
  79. package/Sources/Combine/Publishers/Publishers.HandleEvents.swift +260 -0
  80. package/Sources/Combine/Publishers/Publishers.IgnoreOutput.swift +109 -0
  81. package/Sources/Combine/Publishers/Publishers.Last.swift +252 -0
  82. package/Sources/Combine/Publishers/Publishers.MakeConnectable.swift +82 -0
  83. package/Sources/Combine/Publishers/Publishers.Map.swift +351 -0
  84. package/Sources/Combine/Publishers/Publishers.MapError.swift +140 -0
  85. package/Sources/Combine/Publishers/Publishers.MeasureInterval.swift +187 -0
  86. package/Sources/Combine/Publishers/Publishers.Multicast.swift +284 -0
  87. package/Sources/Combine/Publishers/Publishers.Output.swift +241 -0
  88. package/Sources/Combine/Publishers/Publishers.PrefixUntilOutput.swift +197 -0
  89. package/Sources/Combine/Publishers/Publishers.PrefixWhile.swift +176 -0
  90. package/Sources/Combine/Publishers/Publishers.Print.swift +206 -0
  91. package/Sources/Combine/Publishers/Publishers.ReceiveOn.swift +227 -0
  92. package/Sources/Combine/Publishers/Publishers.Reduce.swift +204 -0
  93. package/Sources/Combine/Publishers/Publishers.RemoveDuplicates.swift +264 -0
  94. package/Sources/Combine/Publishers/Publishers.ReplaceEmpty.swift +201 -0
  95. package/Sources/Combine/Publishers/Publishers.ReplaceError.swift +211 -0
  96. package/Sources/Combine/Publishers/Publishers.Retry.swift +274 -0
  97. package/Sources/Combine/Publishers/Publishers.Scan.swift +331 -0
  98. package/Sources/Combine/Publishers/Publishers.Sequence.swift +437 -0
  99. package/Sources/Combine/Publishers/Publishers.SetFailureType.swift +120 -0
  100. package/Sources/Combine/Publishers/Publishers.Share.swift +104 -0
  101. package/Sources/Combine/Publishers/Publishers.SubscribeOn.swift +197 -0
  102. package/Sources/Combine/Publishers/Publishers.SwitchToLatest.swift +444 -0
  103. package/Sources/Combine/Publishers/Publishers.Throttle.swift +359 -0
  104. package/Sources/Combine/Publishers/Publishers.Timeout.swift +301 -0
  105. package/Sources/Combine/Publishers/Publishers.Zip.swift +720 -0
  106. package/Sources/Combine/Publishers/Publishers.swift +13 -0
  107. package/Sources/Combine/Publishers/Record.swift +237 -0
  108. package/Sources/Combine/Publishers/Result.Publisher.swift +337 -0
  109. package/Sources/Combine/Result.swift +46 -0
  110. package/Sources/Combine/Scheduler.swift +89 -0
  111. package/Sources/Combine/Schedulers.swift +211 -0
  112. package/Sources/Combine/Subject+Void.swift +17 -0
  113. package/Sources/Combine/Subscriber+Void.swift +20 -0
  114. package/Sources/Combine/Subscribers/Subscribers.Assign.swift +175 -0
  115. package/Sources/Combine/Subscribers/Subscribers.Completion.swift +90 -0
  116. package/Sources/Combine/Subscribers/Subscribers.Demand.swift +476 -0
  117. package/Sources/Combine/Subscribers/Subscribers.Sink.swift +206 -0
  118. package/Sources/Combine/Subscribers/Subscribers.swift +9 -0
  119. package/Sources/Combine/Subscription.swift +22 -0
  120. package/Sources/Combine/Subscriptions.swift +42 -0
  121. package/Sources/Combine/SwiftUIObservation.swift +10 -0
  122. package/Sources/Combine/_Introspection.swift +107 -0
  123. package/Sources/CommonCrypto/CommonCrypto.swift +80 -0
  124. package/Sources/Compression/Compression.swift +365 -0
  125. package/Sources/Compression/Deflate.swift +407 -0
  126. package/Sources/Compression/Zlib.swift +179 -0
  127. package/Sources/CoreFoundationTypes/CoreFoundationTypes.swift +101 -0
  128. package/Sources/CoreGraphics/CoreGraphics.swift +411 -0
  129. package/Sources/CoreGraphics/ProjectionTransforms.swift +28 -0
  130. package/Sources/CoreHaptics/CoreHaptics.swift +399 -0
  131. package/Sources/CoreImage/CIColor.swift +41 -0
  132. package/Sources/CoreImage/CIContext.swift +31 -0
  133. package/Sources/CoreImage/CIDetector.swift +57 -0
  134. package/Sources/CoreImage/CIFilter.swift +243 -0
  135. package/Sources/CoreImage/CIFilterBuiltins.swift +136 -0
  136. package/Sources/CoreImage/CIImage.swift +162 -0
  137. package/Sources/CoreImage/QRCode.swift +393 -0
  138. package/Sources/CoreLocation/Coordinate.swift +30 -0
  139. package/Sources/CoreLocation/Location.swift +65 -0
  140. package/Sources/CoreML/Evaluation.swift +414 -0
  141. package/Sources/CoreML/FeatureValue.swift +266 -0
  142. package/Sources/CoreML/Model.swift +269 -0
  143. package/Sources/CoreML/MultiArray.swift +92 -0
  144. package/Sources/CoreML/Specification.swift +233 -0
  145. package/Sources/CoreText/CoreText.swift +64 -0
  146. package/Sources/CoreTransferable/CoreTransferable.swift +606 -0
  147. package/Sources/CryptoKit/ChaChaPoly.swift +258 -0
  148. package/Sources/CryptoKit/CryptoKit.swift +375 -0
  149. package/Sources/CryptoKit/Curve25519.swift +317 -0
  150. package/Sources/CryptoKit/P256.swift +321 -0
  151. package/Sources/FoundationBridge/AppStorage.swift +165 -0
  152. package/Sources/FoundationBridge/AssetResources.swift +90 -0
  153. package/Sources/FoundationBridge/AsyncBytes.swift +128 -0
  154. package/Sources/FoundationBridge/AsyncImage.swift +116 -0
  155. package/Sources/FoundationBridge/AttributedStrings.swift +16 -0
  156. package/Sources/FoundationBridge/Bundle.swift +119 -0
  157. package/Sources/FoundationBridge/CombineExports.swift +8 -0
  158. package/Sources/FoundationBridge/CoreFoundation.swift +77 -0
  159. package/Sources/FoundationBridge/Dispatch.swift +458 -0
  160. package/Sources/FoundationBridge/EnvironmentFoundation.swift +41 -0
  161. package/Sources/FoundationBridge/FileImporter.swift +128 -0
  162. package/Sources/FoundationBridge/FileSystem.swift +68 -0
  163. package/Sources/FoundationBridge/FoundationBridge.swift +29 -0
  164. package/Sources/FoundationBridge/HostResolution.swift +31 -0
  165. package/Sources/FoundationBridge/ItemProvider.swift +655 -0
  166. package/Sources/FoundationBridge/KeyValueObserving.swift +138 -0
  167. package/Sources/FoundationBridge/Links.swift +127 -0
  168. package/Sources/FoundationBridge/ListFormatter.swift +32 -0
  169. package/Sources/FoundationBridge/Locale.swift +86 -0
  170. package/Sources/FoundationBridge/Localization.swift +149 -0
  171. package/Sources/FoundationBridge/Locks.swift +50 -0
  172. package/Sources/FoundationBridge/Markdown.swift +527 -0
  173. package/Sources/FoundationBridge/MeasurementFormat.swift +95 -0
  174. package/Sources/FoundationBridge/NotificationCenter.swift +154 -0
  175. package/Sources/FoundationBridge/OpenURLHandlers.swift +60 -0
  176. package/Sources/FoundationBridge/Operation.swift +195 -0
  177. package/Sources/FoundationBridge/ProcessInfo.swift +32 -0
  178. package/Sources/FoundationBridge/RelativeDateTimeFormatter.swift +136 -0
  179. package/Sources/FoundationBridge/SceneStorage.swift +78 -0
  180. package/Sources/FoundationBridge/SecurityExports.swift +8 -0
  181. package/Sources/FoundationBridge/Selector.swift +226 -0
  182. package/Sources/FoundationBridge/StringComparators.swift +17 -0
  183. package/Sources/FoundationBridge/Table.swift +211 -0
  184. package/Sources/FoundationBridge/TextAttributes.swift +42 -0
  185. package/Sources/FoundationBridge/Timer.swift +53 -0
  186. package/Sources/FoundationBridge/UITextChecker.swift +30 -0
  187. package/Sources/FoundationBridge/URLSession.swift +718 -0
  188. package/Sources/FoundationBridge/UserDefaults.swift +183 -0
  189. package/Sources/FoundationBridge/WebAuthRedirects.swift +227 -0
  190. package/Sources/FoundationBridge/WebSocket.swift +187 -0
  191. package/Sources/FoundationModels/FoundationModels.swift +1098 -0
  192. package/Sources/ImageIO/GIF.swift +72 -0
  193. package/Sources/ImageIO/ImageIO.swift +248 -0
  194. package/Sources/ImageIO/ImageTypes.swift +28 -0
  195. package/Sources/LinkPresentation/LinkPresentation.swift +249 -0
  196. package/Sources/LocalAuthentication/LAContext.swift +86 -0
  197. package/Sources/MapKit/Geometry.swift +223 -0
  198. package/Sources/MapKit/Map.swift +638 -0
  199. package/Sources/MapKit/MapView.swift +229 -0
  200. package/Sources/MobileCoreServices/MobileCoreServices.swift +28 -0
  201. package/Sources/NaturalLanguage/LanguageIdentifier.swift +317 -0
  202. package/Sources/NaturalLanguage/NaturalLanguage.swift +135 -0
  203. package/Sources/OSLog/OSLog.swift +6 -0
  204. package/Sources/Photos/Photos.swift +572 -0
  205. package/Sources/PhotosUI/PhotosPicker.swift +248 -0
  206. package/Sources/PhotosUI/PhotosPickerItem.swift +261 -0
  207. package/Sources/QuickLook/QuickLook.swift +168 -0
  208. package/Sources/SafariServices/SafariServices.swift +106 -0
  209. package/Sources/Security/Security.swift +332 -0
  210. package/Sources/StoreKit/AppStore.swift +207 -0
  211. package/Sources/StoreKit/Products.swift +280 -0
  212. package/Sources/StoreKit/RequestReview.swift +28 -0
  213. package/Sources/StoreKit/StoreKit1.swift +486 -0
  214. package/Sources/StoreKit/StoreViews.swift +428 -0
  215. package/Sources/StoreKit/Transactions.swift +197 -0
  216. package/Sources/SwiftData/Macros.swift +58 -0
  217. package/Sources/SwiftData/ModelActor.swift +38 -0
  218. package/Sources/SwiftData/ModelContainer.swift +129 -0
  219. package/Sources/SwiftData/ModelContext.swift +451 -0
  220. package/Sources/SwiftData/PersistentModel.swift +238 -0
  221. package/Sources/SwiftData/Properties.swift +261 -0
  222. package/Sources/SwiftData/Query.swift +256 -0
  223. package/Sources/SwiftData/Schema.swift +192 -0
  224. package/Sources/SwiftData/Store.swift +146 -0
  225. package/Sources/SwiftData/StringPredicates.swift +125 -0
  226. package/Sources/SwiftDataMacros/EntryMacro.swift +82 -0
  227. package/Sources/SwiftDataMacros/GenerableMacro.swift +183 -0
  228. package/Sources/SwiftDataMacros/ModelActorMacro.swift +46 -0
  229. package/Sources/SwiftDataMacros/ModelMacro.swift +260 -0
  230. package/Sources/SwiftDataMacros/Plugin.swift +18 -0
  231. package/Sources/SwiftDataMacros/PredicateMacro.swift +1244 -0
  232. package/Sources/SwiftUI/API/Accessibility.swift +181 -0
  233. package/Sources/SwiftUI/API/AccessibilityExtras.swift +33 -0
  234. package/Sources/SwiftUI/API/AccessibilityFocus.swift +63 -0
  235. package/Sources/SwiftUI/API/Alert.swift +221 -0
  236. package/Sources/SwiftUI/API/AlignmentGuides.swift +65 -0
  237. package/Sources/SwiftUI/API/Animation.swift +285 -0
  238. package/Sources/SwiftUI/API/App.swift +87 -0
  239. package/Sources/SwiftUI/API/BindingCollections.swift +35 -0
  240. package/Sources/SwiftUI/API/BindingForEach.swift +27 -0
  241. package/Sources/SwiftUI/API/Bitmaps.swift +254 -0
  242. package/Sources/SwiftUI/API/ButtonStyles.swift +96 -0
  243. package/Sources/SwiftUI/API/Canvas.swift +337 -0
  244. package/Sources/SwiftUI/API/Color.swift +237 -0
  245. package/Sources/SwiftUI/API/ColorEffects.swift +52 -0
  246. package/Sources/SwiftUI/API/ColorPickerAndLabeledContent.swift +138 -0
  247. package/Sources/SwiftUI/API/ColorSpaces.swift +161 -0
  248. package/Sources/SwiftUI/API/Commands.swift +106 -0
  249. package/Sources/SwiftUI/API/ContainerBackground.swift +28 -0
  250. package/Sources/SwiftUI/API/ContentShape.swift +33 -0
  251. package/Sources/SwiftUI/API/ContentSizeCategory.swift +35 -0
  252. package/Sources/SwiftUI/API/ContentUnavailable.swift +101 -0
  253. package/Sources/SwiftUI/API/Controls.swift +300 -0
  254. package/Sources/SwiftUI/API/CustomLayout.swift +442 -0
  255. package/Sources/SwiftUI/API/CustomToolbarContent.swift +46 -0
  256. package/Sources/SwiftUI/API/Decorations.swift +92 -0
  257. package/Sources/SwiftUI/API/EditMode.swift +212 -0
  258. package/Sources/SwiftUI/API/Effects.swift +388 -0
  259. package/Sources/SwiftUI/API/Entry.swift +8 -0
  260. package/Sources/SwiftUI/API/Environment.swift +439 -0
  261. package/Sources/SwiftUI/API/EnvironmentSendable.swift +6 -0
  262. package/Sources/SwiftUI/API/Focus.swift +137 -0
  263. package/Sources/SwiftUI/API/Font.swift +131 -0
  264. package/Sources/SwiftUI/API/Gauge.swift +290 -0
  265. package/Sources/SwiftUI/API/Geometry.swift +89 -0
  266. package/Sources/SwiftUI/API/GeometryEffects.swift +232 -0
  267. package/Sources/SwiftUI/API/GeometryReader.swift +135 -0
  268. package/Sources/SwiftUI/API/GestureState.swift +65 -0
  269. package/Sources/SwiftUI/API/Gestures.swift +342 -0
  270. package/Sources/SwiftUI/API/Glass.swift +127 -0
  271. package/Sources/SwiftUI/API/Grid.swift +188 -0
  272. package/Sources/SwiftUI/API/GroupBoxAndControlGroup.swift +130 -0
  273. package/Sources/SwiftUI/API/KeyPress.swift +54 -0
  274. package/Sources/SwiftUI/API/LabelStyle.swift +124 -0
  275. package/Sources/SwiftUI/API/Layout.swift +220 -0
  276. package/Sources/SwiftUI/API/LazyStacks.swift +49 -0
  277. package/Sources/SwiftUI/API/LegacyAlert.swift +97 -0
  278. package/Sources/SwiftUI/API/Lists.swift +331 -0
  279. package/Sources/SwiftUI/API/Menu.swift +58 -0
  280. package/Sources/SwiftUI/API/Modifiers.swift +313 -0
  281. package/Sources/SwiftUI/API/MoreModifiers.swift +100 -0
  282. package/Sources/SwiftUI/API/Namespace.swift +44 -0
  283. package/Sources/SwiftUI/API/Navigation.swift +386 -0
  284. package/Sources/SwiftUI/API/NavigationDestinationBindings.swift +55 -0
  285. package/Sources/SwiftUI/API/ObservableObject.swift +293 -0
  286. package/Sources/SwiftUI/API/OnChange.swift +48 -0
  287. package/Sources/SwiftUI/API/Path.swift +543 -0
  288. package/Sources/SwiftUI/API/Phase8Controls.swift +411 -0
  289. package/Sources/SwiftUI/API/PhaseAnimator.swift +130 -0
  290. package/Sources/SwiftUI/API/Picker.swift +185 -0
  291. package/Sources/SwiftUI/API/PointerAndKeyboard.swift +77 -0
  292. package/Sources/SwiftUI/API/Popover.swift +41 -0
  293. package/Sources/SwiftUI/API/Preferences.swift +262 -0
  294. package/Sources/SwiftUI/API/Presentation.swift +122 -0
  295. package/Sources/SwiftUI/API/PresentationExtras.swift +60 -0
  296. package/Sources/SwiftUI/API/Primitives.swift +517 -0
  297. package/Sources/SwiftUI/API/Publishers.swift +107 -0
  298. package/Sources/SwiftUI/API/Redaction.swift +75 -0
  299. package/Sources/SwiftUI/API/RowActions.swift +84 -0
  300. package/Sources/SwiftUI/API/Scenes.swift +131 -0
  301. package/Sources/SwiftUI/API/ScrollModifiers.swift +132 -0
  302. package/Sources/SwiftUI/API/ScrollTargets.swift +104 -0
  303. package/Sources/SwiftUI/API/ScrollViewReader.swift +144 -0
  304. package/Sources/SwiftUI/API/SectionSupplements.swift +96 -0
  305. package/Sources/SwiftUI/API/Shape.swift +214 -0
  306. package/Sources/SwiftUI/API/ShapeStyle.swift +409 -0
  307. package/Sources/SwiftUI/API/ShapeTrim.swift +78 -0
  308. package/Sources/SwiftUI/API/Sharing.swift +193 -0
  309. package/Sources/SwiftUI/API/StackLayouts.swift +199 -0
  310. package/Sources/SwiftUI/API/State.swift +144 -0
  311. package/Sources/SwiftUI/API/StatusGaps.swift +121 -0
  312. package/Sources/SwiftUI/API/StrokeStyle.swift +30 -0
  313. package/Sources/SwiftUI/API/SymbolEffects.swift +203 -0
  314. package/Sources/SwiftUI/API/TabContent.swift +841 -0
  315. package/Sources/SwiftUI/API/Table.swift +382 -0
  316. package/Sources/SwiftUI/API/Tabs.swift +263 -0
  317. package/Sources/SwiftUI/API/Tasks.swift +35 -0
  318. package/Sources/SwiftUI/API/Text.swift +386 -0
  319. package/Sources/SwiftUI/API/TextDates.swift +61 -0
  320. package/Sources/SwiftUI/API/TextDecorations.swift +52 -0
  321. package/Sources/SwiftUI/API/TextFieldAxis.swift +103 -0
  322. package/Sources/SwiftUI/API/TextFieldCommit.swift +52 -0
  323. package/Sources/SwiftUI/API/Timeline.swift +212 -0
  324. package/Sources/SwiftUI/API/Toolbar.swift +251 -0
  325. package/Sources/SwiftUI/API/Transfer.swift +145 -0
  326. package/Sources/SwiftUI/API/UnevenRoundedRectangle.swift +66 -0
  327. package/Sources/SwiftUI/API/Video.swift +64 -0
  328. package/Sources/SwiftUI/API/View.swift +215 -0
  329. package/Sources/SwiftUI/API/ViewModifier.swift +43 -0
  330. package/Sources/SwiftUI/API/VisualEffect.swift +155 -0
  331. package/Sources/SwiftUI/API/Windows.swift +25 -0
  332. package/Sources/SwiftUI/Charts/Axis.swift +325 -0
  333. package/Sources/SwiftUI/Charts/AxisFormatsAndRanges.swift +68 -0
  334. package/Sources/SwiftUI/Charts/Chart.swift +660 -0
  335. package/Sources/SwiftUI/Charts/ChartContent.swift +376 -0
  336. package/Sources/SwiftUI/Charts/ChartProxy.swift +57 -0
  337. package/Sources/SwiftUI/Charts/Marks.swift +204 -0
  338. package/Sources/SwiftUI/Charts/Plottable.swift +99 -0
  339. package/Sources/SwiftUI/Charts/Scales.swift +326 -0
  340. package/Sources/SwiftUI/Localization/Localization.swift +498 -0
  341. package/Sources/SwiftUI/Localization/PluralRules.swift +127 -0
  342. package/Sources/SwiftUI/Runtime/Executor.swift +85 -0
  343. package/Sources/SwiftUI/Runtime/Exports.swift +101 -0
  344. package/Sources/SwiftUI/Runtime/ImageSource.swift +310 -0
  345. package/Sources/SwiftUI/Runtime/JSON.swift +143 -0
  346. package/Sources/SwiftUI/Runtime/JSONParser.swift +443 -0
  347. package/Sources/SwiftUI/Runtime/LazyRows.swift +99 -0
  348. package/Sources/SwiftUI/Runtime/Measurements.swift +140 -0
  349. package/Sources/SwiftUI/Runtime/Ops.swift +152 -0
  350. package/Sources/SwiftUI/Runtime/Reconciler.swift +219 -0
  351. package/Sources/SwiftUI/Runtime/Replay.swift +382 -0
  352. package/Sources/SwiftUI/Runtime/Runtime.swift +2146 -0
  353. package/Sources/SwiftUI/Runtime/Sameness.swift +152 -0
  354. package/Sources/SwiftUI/Runtime/ViewPath.swift +89 -0
  355. package/Sources/SwiftUI/Runtime/ViewTraits.swift +175 -0
  356. package/Sources/SwiftUI/Runtime/WebAuthHeadless.swift +49 -0
  357. package/Sources/Symbols/Symbols.swift +25 -0
  358. package/Sources/Translation/Translation.swift +423 -0
  359. package/Sources/UIKit/Activity.swift +213 -0
  360. package/Sources/UIKit/Alerts.swift +69 -0
  361. package/Sources/UIKit/AppDelegate.swift +222 -0
  362. package/Sources/UIKit/Appearance.swift +84 -0
  363. package/Sources/UIKit/ColorConversions.swift +70 -0
  364. package/Sources/UIKit/Controls.swift +225 -0
  365. package/Sources/UIKit/Device.swift +200 -0
  366. package/Sources/UIKit/Feedback.swift +65 -0
  367. package/Sources/UIKit/Font.swift +307 -0
  368. package/Sources/UIKit/Graphics.swift +204 -0
  369. package/Sources/UIKit/HostingController.swift +185 -0
  370. package/Sources/UIKit/Identity.swift +24 -0
  371. package/Sources/UIKit/Introspectable.swift +510 -0
  372. package/Sources/UIKit/Pasteboard.swift +363 -0
  373. package/Sources/UIKit/PhotoAlbum.swift +81 -0
  374. package/Sources/UIKit/RemoteNotifications.swift +15 -0
  375. package/Sources/UIKit/Representable.swift +288 -0
  376. package/Sources/UIKit/SafeArea.swift +12 -0
  377. package/Sources/UIKit/SceneDelegates.swift +132 -0
  378. package/Sources/UIKit/Scenes.swift +40 -0
  379. package/Sources/UIKit/ScrollView.swift +157 -0
  380. package/Sources/UIKit/ShortcutItems.swift +67 -0
  381. package/Sources/UIKit/SymbolConfiguration.swift +124 -0
  382. package/Sources/UIKit/TargetAction.swift +123 -0
  383. package/Sources/UIKit/TextPaste.swift +161 -0
  384. package/Sources/UIKit/TextView.swift +538 -0
  385. package/Sources/UIKit/UIKit.swift +292 -0
  386. package/Sources/UIKit/UIView.swift +855 -0
  387. package/Sources/UIKit/ViewTranslation.swift +311 -0
  388. package/Sources/UniformTypeIdentifiers/UTType.swift +196 -0
  389. package/Sources/UserNotifications/Content.swift +370 -0
  390. package/Sources/UserNotifications/NotificationCenter.swift +309 -0
  391. package/Sources/WeatherKit/WeatherKit.swift +228 -0
  392. package/Sources/WebKit/WebKit.swift +245 -0
  393. package/Sources/os/os.swift +376 -0
  394. package/Sources/zlib/zlib.swift +6 -0
  395. package/index.d.ts +2 -0
  396. package/index.mjs +16 -0
  397. package/manifest.d.mts +2 -0
  398. package/manifest.mjs +39 -0
  399. package/package.json +30 -4
  400. package/sync-sources.mjs +33 -0
@@ -0,0 +1,386 @@
1
+ /// A screen pushed onto a `NavigationStack`.
2
+ struct _PushedScreen {
3
+ let view: any View
4
+ }
5
+
6
+ /// A type-erased list of values pushed onto a navigation stack.
7
+ public struct NavigationPath: Equatable {
8
+ var values: [AnyHashable] = []
9
+
10
+ public init() {}
11
+
12
+ public init<S: Sequence>(_ elements: S) where S.Element: Hashable {
13
+ values = elements.map { AnyHashable($0) }
14
+ }
15
+
16
+ public var count: Int { values.count }
17
+ public var isEmpty: Bool { values.isEmpty }
18
+
19
+ public mutating func append<V: Hashable>(_ value: V) { values.append(AnyHashable(value)) }
20
+
21
+ public mutating func removeLast(_ k: Int = 1) {
22
+ values.removeLast(min(k, values.count))
23
+ }
24
+ }
25
+
26
+ protocol _NavigationStackView: _TraitBearing {
27
+ var _root: any View { get }
28
+ var _pushedBox: _StateBox<[_PushedScreen]> { get }
29
+ /// Value-based path, when the stack was created with one.
30
+ var _path: _PathBinding? { get }
31
+ }
32
+
33
+ /// Reads and writes a navigation path of any element type as `AnyHashable`s.
34
+ struct _PathBinding {
35
+ let get: () -> [AnyHashable]
36
+ let set: ([AnyHashable]) -> Void
37
+ }
38
+
39
+ /// A view that displays a root view and lets you push views onto it.
40
+ public struct NavigationStack<Data, Content: View> {
41
+ let root: Content
42
+ let path: _PathBinding?
43
+ @State var pushed: [_PushedScreen] = []
44
+
45
+ public init(@ViewBuilder root: () -> Content) where Data == NavigationPath {
46
+ self.root = root()
47
+ self.path = nil
48
+ }
49
+
50
+ public init(path: Binding<NavigationPath>, @ViewBuilder root: () -> Content) where Data == NavigationPath {
51
+ self.root = root()
52
+ self.path = _PathBinding(
53
+ get: { path.wrappedValue.values },
54
+ set: { path.wrappedValue.values = $0 }
55
+ )
56
+ }
57
+
58
+ public init<Element: Hashable>(path: Binding<[Element]>, @ViewBuilder root: () -> Content)
59
+ where Data == [Element] {
60
+ self.root = root()
61
+ self.path = _PathBinding(
62
+ get: { path.wrappedValue.map { AnyHashable($0) } },
63
+ set: { path.wrappedValue = $0.compactMap { $0.base as? Element } }
64
+ )
65
+ }
66
+ }
67
+ extension NavigationStack: _PrimitiveView {}
68
+ extension NavigationStack: _HostView {
69
+ var _kind: String { "navstack" }
70
+ func _props(in environment: EnvironmentValues) -> _JSON { .object([:]) }
71
+ // Children are produced by the runtime from `pushed`.
72
+ }
73
+ extension NavigationStack: _NavigationStackView {
74
+ var _root: any View { root }
75
+ var _pushedBox: _StateBox<[_PushedScreen]> { _pushed.box }
76
+ var _path: _PathBinding? { path }
77
+ }
78
+
79
+ /// A pushed screen whose view is resolved from a value through the enclosing
80
+ /// stack's `navigationDestination(for:)` registrations.
81
+ struct _PathScreenValue {
82
+ let value: AnyHashable
83
+ }
84
+ extension _PathScreenValue: _PrimitiveView {}
85
+ extension _PathScreenValue: _GroupView {
86
+ // Resolved by the runtime through the stack's registrations.
87
+ var _children: [any View] { [] }
88
+ }
89
+
90
+ protocol _DestinationRegistering: _TraitBearing {
91
+ var _destinationType: ObjectIdentifier { get }
92
+ var _destinationTypeName: String { get }
93
+ func _destination(for value: Any) -> (any View)?
94
+ }
95
+
96
+ struct _DestinationView<Content: View, Value: Hashable, Destination: View> {
97
+ let content: Content
98
+ let builder: (Value) -> Destination
99
+ }
100
+ extension _DestinationView: _PrimitiveView {}
101
+ extension _DestinationView: _GroupView {
102
+ var _children: [any View] { [content] }
103
+ }
104
+ extension _DestinationView: _DestinationRegistering {
105
+ var _destinationType: ObjectIdentifier { ObjectIdentifier(Value.self) }
106
+ var _destinationTypeName: String { String(describing: Value.self) }
107
+ func _destination(for value: Any) -> (any View)? {
108
+ guard let value = value as? Value else { return nil }
109
+ return builder(value)
110
+ }
111
+ }
112
+
113
+ nonisolated extension View {
114
+ /// Associates a destination view with values of `data`'s type pushed by
115
+ /// `NavigationLink(value:)` or appended to the stack's path.
116
+ public func navigationDestination<D: Hashable, C: View>(for data: D.Type,
117
+ @ViewBuilder destination: @escaping (D) -> C) -> some View {
118
+ _DestinationView(content: self, builder: destination)
119
+ }
120
+ }
121
+
122
+ protocol _NavigationValueLinkView: _TraitBearing {
123
+ var _value: AnyHashable? { get }
124
+ }
125
+
126
+ extension NavigationLink where Destination == Never {
127
+ /// A link that pushes `value` onto the enclosing stack's path.
128
+ public init<P: Hashable>(value: P?, @ViewBuilder label: () -> Label) {
129
+ self.destination = nil
130
+ self.value = value.map { AnyHashable($0) }
131
+ self.label = label()
132
+ }
133
+ }
134
+
135
+ extension NavigationLink where Label == Text, Destination == Never {
136
+ public init<S: StringProtocol, P: Hashable>(_ title: S, value: P?) {
137
+ self.destination = nil
138
+ self.value = value.map { AnyHashable($0) }
139
+ self.label = Text(title)
140
+ }
141
+ }
142
+
143
+ extension NavigationLink: _NavigationValueLinkView {
144
+ var _value: AnyHashable? { value }
145
+ }
146
+
147
+ /// One screen of a navigation stack. Created by the runtime, never by apps.
148
+ struct _NavScreenView {
149
+ let content: any View
150
+ let depth: Int
151
+ }
152
+ extension _NavScreenView: _PrimitiveView {}
153
+ extension _NavScreenView: _HostView {
154
+ var _kind: String { "navscreen" }
155
+ func _props(in environment: EnvironmentValues) -> _JSON { .object(["depth": .number(Double(depth))]) }
156
+ var _content: [any View] { [content] }
157
+ }
158
+
159
+ protocol _NavigationLinkView: _TraitBearing {
160
+ var _destination: any View { get }
161
+ }
162
+
163
+ /// A control that pushes its destination onto the enclosing navigation stack.
164
+ public struct NavigationLink<Label: View, Destination: View> {
165
+ let destination: Destination?
166
+ let value: AnyHashable?
167
+ let label: Label
168
+
169
+ public init(@ViewBuilder destination: () -> Destination, @ViewBuilder label: () -> Label) {
170
+ self.destination = destination()
171
+ self.value = nil
172
+ self.label = label()
173
+ }
174
+
175
+ public init(destination: Destination, @ViewBuilder label: () -> Label) {
176
+ self.destination = destination
177
+ self.value = nil
178
+ self.label = label()
179
+ }
180
+ }
181
+
182
+ extension NavigationLink where Label == Text {
183
+ public init(_ titleKey: LocalizedStringKey, @ViewBuilder destination: () -> Destination) {
184
+ self.destination = destination()
185
+ self.value = nil
186
+ self.label = Text(titleKey)
187
+ }
188
+
189
+ public init(_ titleKey: LocalizedStringKey, destination: Destination) {
190
+ self.destination = destination
191
+ self.value = nil
192
+ self.label = Text(titleKey)
193
+ }
194
+
195
+ @_disfavoredOverload
196
+ public init<S: StringProtocol>(_ title: S, @ViewBuilder destination: () -> Destination) {
197
+ self.destination = destination()
198
+ self.value = nil
199
+ self.label = Text(title)
200
+ }
201
+
202
+ @_disfavoredOverload
203
+ public init<S: StringProtocol>(_ title: S, destination: Destination) {
204
+ self.destination = destination
205
+ self.value = nil
206
+ self.label = Text(title)
207
+ }
208
+ }
209
+ extension NavigationLink: _PrimitiveView {}
210
+ extension NavigationLink: _HostView {
211
+ var _kind: String { "navlink" }
212
+ /// `selected` marks the row of a `List(selection:)` whose value is the
213
+ /// current selection (see docs/ops-protocol.md, Phase 7); omitted otherwise.
214
+ func _props(in environment: EnvironmentValues) -> _JSON {
215
+ if let value, let selection = environment._listSelection, selection.get() == value {
216
+ return .object(["selected": .bool(true)])
217
+ }
218
+ return .object([:])
219
+ }
220
+ var _content: [any View] { [label] }
221
+ // The handler is supplied by the runtime, which knows the enclosing stack.
222
+ }
223
+ extension NavigationLink: _NavigationLinkView {
224
+ var _destination: any View { destination ?? EmptyView() }
225
+ }
226
+
227
+ // MARK: - NavigationSplitView
228
+
229
+ /// Which columns of a `NavigationSplitView` are shown. Accepted for source
230
+ /// compatibility; the shim shows the sidebar and the detail (see below).
231
+ public struct NavigationSplitViewVisibility: Hashable, Sendable {
232
+ let name: String
233
+ public static let automatic = NavigationSplitViewVisibility(name: "automatic")
234
+ public static let all = NavigationSplitViewVisibility(name: "all")
235
+ public static let doubleColumn = NavigationSplitViewVisibility(name: "doubleColumn")
236
+ public static let detailOnly = NavigationSplitViewVisibility(name: "detailOnly")
237
+ }
238
+
239
+ /// `.navigationSplitViewStyle`: accepted for source compatibility.
240
+ public protocol NavigationSplitViewStyle {}
241
+ public struct AutomaticNavigationSplitViewStyle: NavigationSplitViewStyle { public init() {} }
242
+ public struct BalancedNavigationSplitViewStyle: NavigationSplitViewStyle { public init() {} }
243
+ public struct ProminentDetailNavigationSplitViewStyle: NavigationSplitViewStyle { public init() {} }
244
+ extension NavigationSplitViewStyle where Self == AutomaticNavigationSplitViewStyle {
245
+ public static var automatic: AutomaticNavigationSplitViewStyle { AutomaticNavigationSplitViewStyle() }
246
+ }
247
+ extension NavigationSplitViewStyle where Self == BalancedNavigationSplitViewStyle {
248
+ public static var balanced: BalancedNavigationSplitViewStyle { BalancedNavigationSplitViewStyle() }
249
+ }
250
+ extension NavigationSplitViewStyle where Self == ProminentDetailNavigationSplitViewStyle {
251
+ public static var prominentDetail: ProminentDetailNavigationSplitViewStyle { ProminentDetailNavigationSplitViewStyle() }
252
+ }
253
+
254
+ nonisolated extension View {
255
+ public func navigationSplitViewColumnWidth(_ width: CGFloat) -> some View { self }
256
+ public func navigationSplitViewColumnWidth(min: CGFloat? = nil, ideal: CGFloat, max: CGFloat? = nil) -> some View { self }
257
+ public func navigationSplitViewStyle<S: NavigationSplitViewStyle>(_ style: S) -> some View { self }
258
+ }
259
+
260
+ /// The runtime's view of a split view (see Runtime.swift): by size class it
261
+ /// renders a `navsplit` of two stacks (regular) or one stack rooted at the
262
+ /// sidebar that pushes the detail while the sidebar's list selection is set
263
+ /// (compact). The sidebar's `List(selection:)` is found as it is reconciled.
264
+ protocol _NavigationSplitHost: _TraitBearing {
265
+ var _sidebar: any View { get }
266
+ var _detail: any View { get }
267
+ /// Screens pushed from the compact detail (links inside it).
268
+ var _pushedBox: _StateBox<[_PushedScreen]> { get }
269
+ }
270
+
271
+ /// A two-column navigation interface: a sidebar whose list selection drives
272
+ /// the detail column. The optional middle `content` column is treated as part
273
+ /// of the detail and not shown.
274
+ public struct NavigationSplitView<Sidebar: View, Content: View, Detail: View> {
275
+ let sidebar: Sidebar
276
+ let detail: Detail
277
+ @State var pushed: [_PushedScreen] = []
278
+
279
+ public init(@ViewBuilder sidebar: () -> Sidebar, @ViewBuilder detail: () -> Detail) where Content == EmptyView {
280
+ self.sidebar = sidebar()
281
+ self.detail = detail()
282
+ }
283
+
284
+ public init(@ViewBuilder sidebar: () -> Sidebar, @ViewBuilder content: () -> Content,
285
+ @ViewBuilder detail: () -> Detail) {
286
+ self.sidebar = sidebar()
287
+ _ = content()
288
+ self.detail = detail()
289
+ }
290
+
291
+ /// The visibility binding is accepted and ignored.
292
+ public init(columnVisibility: Binding<NavigationSplitViewVisibility>,
293
+ @ViewBuilder sidebar: () -> Sidebar, @ViewBuilder detail: () -> Detail) where Content == EmptyView {
294
+ self.sidebar = sidebar()
295
+ self.detail = detail()
296
+ }
297
+
298
+ public init(columnVisibility: Binding<NavigationSplitViewVisibility>,
299
+ @ViewBuilder sidebar: () -> Sidebar, @ViewBuilder content: () -> Content,
300
+ @ViewBuilder detail: () -> Detail) {
301
+ self.sidebar = sidebar()
302
+ _ = content()
303
+ self.detail = detail()
304
+ }
305
+ }
306
+ extension NavigationSplitView: _PrimitiveView {}
307
+ extension NavigationSplitView: _HostView {
308
+ var _kind: String { "navsplit" }
309
+ func _props(in environment: EnvironmentValues) -> _JSON { .object([:]) }
310
+ // Children are produced by the runtime from the size class.
311
+ }
312
+ extension NavigationSplitView: _NavigationSplitHost {
313
+ var _sidebar: any View { sidebar }
314
+ var _detail: any View { detail }
315
+ var _pushedBox: _StateBox<[_PushedScreen]> { _pushed.box }
316
+ }
317
+
318
+ /// Marks the sidebar subtree of a split view: value links there select
319
+ /// instead of pushing, and the sidebar's `List(selection:)` registers its
320
+ /// binding with the split view's node (`split`) as it is reconciled.
321
+ struct _SplitSidebarView {
322
+ let content: any View
323
+ unowned let split: _MountedNode
324
+ }
325
+ extension _SplitSidebarView: _PrimitiveView {}
326
+ extension _SplitSidebarView: _GroupView {
327
+ var _children: [any View] { [content] }
328
+ }
329
+ extension _SplitSidebarView: _EnvironmentModifying {
330
+ func _apply(to environment: inout EnvironmentValues) { environment._splitSidebar = true }
331
+ }
332
+
333
+ // MARK: - Titles
334
+
335
+ public enum NavigationBarItem {
336
+ public enum TitleDisplayMode: Hashable, Sendable {
337
+ case automatic, inline, large
338
+
339
+ var name: String {
340
+ switch self {
341
+ case .automatic: "automatic"
342
+ case .inline: "inline"
343
+ case .large: "large"
344
+ }
345
+ }
346
+ }
347
+ }
348
+
349
+ protocol _NavigationTitleModifying: _TraitBearing {
350
+ var _title: String? { get }
351
+ var _displayMode: String? { get }
352
+ }
353
+
354
+ struct _NavigationTitleView<Content: View> {
355
+ let content: Content
356
+ let title: String?
357
+ let displayMode: String?
358
+ }
359
+ extension _NavigationTitleView: _PrimitiveView {}
360
+ extension _NavigationTitleView: _GroupView {
361
+ var _children: [any View] { [content] }
362
+ }
363
+ extension _NavigationTitleView: _NavigationTitleModifying {
364
+ var _title: String? { title }
365
+ var _displayMode: String? { displayMode }
366
+ }
367
+
368
+ nonisolated extension View {
369
+ @_disfavoredOverload
370
+ public func navigationTitle<S: StringProtocol>(_ title: S) -> some View {
371
+ _NavigationTitleView(content: self, title: String(title), displayMode: nil)
372
+ }
373
+
374
+ public func navigationTitle(_ title: Text) -> some View {
375
+ _NavigationTitleView(content: self, title: title._content, displayMode: nil)
376
+ }
377
+
378
+ /// An editable title (iOS 16): the browser shows the bound value and does not edit it.
379
+ public func navigationTitle(_ title: Binding<String>) -> some View {
380
+ _NavigationTitleView(content: self, title: title.wrappedValue, displayMode: nil)
381
+ }
382
+
383
+ public func navigationBarTitleDisplayMode(_ mode: NavigationBarItem.TitleDisplayMode) -> some View {
384
+ _NavigationTitleView(content: self, title: nil, displayMode: mode.name)
385
+ }
386
+ }
@@ -0,0 +1,55 @@
1
+ /// `navigationDestination(isPresented:destination:)` (iOS 16) and
2
+ /// `navigationDestination(item:destination:)` (iOS 17): a destination shown
3
+ /// while a binding says so. The runtime pushes only screens a link or a path
4
+ /// names, so here the destination is presented as a sheet, in a navigation
5
+ /// stack of its own (an approximation: it slides up instead of in, and is
6
+ /// dismissed by swiping it down or with a Back button in its bar). Dismissing
7
+ /// it sets `isPresented` to false, or `item` to nil, as popping does on iOS.
8
+ nonisolated extension View {
9
+ @MainActor
10
+ public func navigationDestination<V: View>(isPresented: Binding<Bool>, @ViewBuilder destination: () -> V) -> some View {
11
+ sheet(isPresented: isPresented) {
12
+ _PresentedDestination(isPresented: isPresented) { destination() }
13
+ }
14
+ }
15
+
16
+ @MainActor
17
+ public func navigationDestination<D: Hashable, C: View>(item: Binding<D?>,
18
+ @ViewBuilder destination: @escaping (D) -> C) -> some View {
19
+ let isPresented = Binding<Bool>(
20
+ get: { item.wrappedValue != nil },
21
+ set: { if !$0 { item.wrappedValue = nil } }
22
+ )
23
+ return sheet(isPresented: isPresented) {
24
+ _PresentedDestination(isPresented: isPresented) {
25
+ if let value = item.wrappedValue { destination(value) }
26
+ }
27
+ }
28
+ }
29
+ }
30
+
31
+ /// A presented destination: its own stack with a Back button.
32
+ struct _PresentedDestination<Content: View>: View {
33
+ let isPresented: Binding<Bool>
34
+ let content: Content
35
+
36
+ init(isPresented: Binding<Bool>, @ViewBuilder content: () -> Content) {
37
+ self.isPresented = isPresented
38
+ self.content = content()
39
+ }
40
+
41
+ var body: some View {
42
+ NavigationStack {
43
+ content
44
+ .toolbar {
45
+ ToolbarItem(placement: .topBarLeading) {
46
+ Button {
47
+ isPresented.wrappedValue = false
48
+ } label: {
49
+ Label("Back", systemImage: "chevron.backward")
50
+ }
51
+ }
52
+ }
53
+ }
54
+ }
55
+ }