peachsim 0.1.1641 → 0.1.1653

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 (618) hide show
  1. package/README.md +12 -0
  2. package/cli/app-bundle-resources.ts +57 -0
  3. package/cli/app-catalog.ts +1 -1
  4. package/cli/app-fonts.ts +11 -80
  5. package/cli/app-splash.ts +18 -12
  6. package/cli/bridge-flow-runner.ts +11 -7
  7. package/cli/cloud-client.ts +10 -13
  8. package/cli/command-registry.ts +13 -4
  9. package/cli/commands/box.ts +4 -4
  10. package/cli/commands/control.ts +105 -53
  11. package/cli/commands/coverage-parser.ts +67 -0
  12. package/cli/commands/coverage.ts +550 -0
  13. package/cli/commands/debug.ts +9 -18
  14. package/cli/commands/desktop.ts +19 -7
  15. package/cli/commands/device.ts +14 -9
  16. package/cli/commands/guest-host.ts +6 -10
  17. package/cli/commands/inspect/core.ts +81 -17
  18. package/cli/commands/inspect.ts +13 -8
  19. package/cli/commands/kotlin.ts +2 -2
  20. package/cli/commands/maestro-compare.ts +1 -1
  21. package/cli/commands/platform.ts +20 -11
  22. package/cli/commands/preview.ts +16 -18
  23. package/cli/commands/runtime.ts +3 -2
  24. package/cli/commands/screenshot-layers.ts +1 -1
  25. package/cli/commands/screenshot.ts +1 -1
  26. package/cli/commands/serve.ts +5 -1
  27. package/cli/commands/support.ts +4 -4
  28. package/cli/commands/three-mode.ts +22 -15
  29. package/cli/commands/upload.ts +44 -45
  30. package/cli/current-sim.ts +38 -0
  31. package/cli/desktop-companion.ts +36 -8
  32. package/cli/device-option.ts +1 -1
  33. package/cli/drivers/playwright.ts +40 -0
  34. package/cli/drivers/types.ts +4 -0
  35. package/cli/help-core.ts +1 -1
  36. package/cli/internal-child.ts +2 -1
  37. package/cli/main.ts +9 -3
  38. package/cli/outbound-endpoints.ts +15 -5
  39. package/cli/output-redaction.ts +39 -14
  40. package/cli/remote-simulators.ts +4 -1
  41. package/cli/scene-video.ts +5 -2
  42. package/cli/send-to-box.ts +7 -10
  43. package/cli/telemetry.ts +1 -1
  44. package/cli/ws-bridge.ts +8 -1
  45. package/detox/attempt-events.cjs +3 -1
  46. package/detox/attempt-events.d.cts +1 -1
  47. package/detox/expectations.ts +108 -99
  48. package/detox/frame-offset.d.mts +6 -0
  49. package/detox/frame-offset.mjs +35 -0
  50. package/detox/gestures.ts +6 -18
  51. package/detox/index.ts +169 -101
  52. package/detox/jest-preset.cjs +1 -3
  53. package/detox/jest-transform.cjs +4 -0
  54. package/detox/matchers.ts +3 -0
  55. package/detox/motion-change.cjs +52 -118
  56. package/detox/motion-change.d.cts +6 -27
  57. package/detox/motion-leg-starts.cjs +20 -0
  58. package/detox/motion-leg-starts.d.cts +8 -0
  59. package/dist-lib/agent-daemon-client.cjs +1 -1
  60. package/dist-lib/agent-events.cjs +1 -1
  61. package/dist-lib/attached-projects.cjs +1 -1
  62. package/dist-lib/auth/shared-session.cjs +1 -1
  63. package/dist-lib/backend-origin.cjs +3 -3
  64. package/dist-lib/beta.cjs +1 -1
  65. package/dist-lib/beta.mjs +1 -1
  66. package/dist-lib/bridge-constants.cjs +1 -1
  67. package/dist-lib/bridge-contract-input.cjs +65 -1
  68. package/dist-lib/bridge-contract-input.mjs +63 -1
  69. package/dist-lib/bridge-contract.cjs +19 -1
  70. package/dist-lib/bridge-contract.mjs +17 -1
  71. package/dist-lib/bundle-channel.cjs +38332 -14940
  72. package/dist-lib/capture-contract.cjs +1 -1
  73. package/dist-lib/capture-contract.mjs +1 -1
  74. package/dist-lib/cloud-contract.cjs +1 -1
  75. package/dist-lib/cloud-contract.mjs +1 -1
  76. package/dist-lib/cloud-test-args.cjs +1 -1
  77. package/dist-lib/cloud-test-args.mjs +1 -1
  78. package/dist-lib/cloud.cjs +1 -1
  79. package/dist-lib/cloud.mjs +1 -1
  80. package/dist-lib/config.cjs +1 -1
  81. package/dist-lib/config.mjs +5 -3
  82. package/dist-lib/detox/index.cjs +1247 -4511
  83. package/dist-lib/detox/jest-preset.cjs +1 -3
  84. package/dist-lib/detox/jest-transform.cjs +4 -0
  85. package/dist-lib/dev-bundle-resolution.cjs +28 -24
  86. package/dist-lib/expo-swift-bundle.cjs +35243 -13172
  87. package/dist-lib/expo-swift-metadata.cjs +1 -1
  88. package/dist-lib/expo-swift-metadata.mjs +1 -1
  89. package/dist-lib/home-paths.cjs +1 -1
  90. package/dist-lib/host/bridge-host.cjs +45285 -63163
  91. package/dist-lib/host/fetch-proxy-handler.cjs +3544 -11
  92. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  93. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  94. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  95. package/dist-lib/host/websocket-proxy.cjs +1 -1
  96. package/dist-lib/index.cjs +1997 -2069
  97. package/dist-lib/jump-to-source-babel.cjs +1 -1
  98. package/dist-lib/jump-to-source-native.cjs +1 -1
  99. package/dist-lib/kotlin-host.cjs +2 -2
  100. package/dist-lib/menu.cjs +14 -6
  101. package/dist-lib/menu.mjs +14 -6
  102. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  103. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  104. package/dist-lib/metro-production-bundle.cjs +1 -1
  105. package/dist-lib/metro-production-bundle.mjs +1 -1
  106. package/dist-lib/metro.cjs +468 -563
  107. package/dist-lib/native-app-identity-project.cjs +128 -292
  108. package/dist-lib/native-app-identity-project.mjs +1262 -51
  109. package/dist-lib/native-app-identity.cjs +8 -3
  110. package/dist-lib/native-app-identity.mjs +8 -3
  111. package/dist-lib/native-firebase-metadata.cjs +1 -1
  112. package/dist-lib/native-firebase-metadata.mjs +1 -1
  113. package/dist-lib/plist.cjs +2 -244
  114. package/dist-lib/plist.mjs +1 -1
  115. package/dist-lib/profiles.cjs +1 -1
  116. package/dist-lib/public-brand.cjs +1 -1
  117. package/dist-lib/public-origins-lib-esm.json +290 -0
  118. package/dist-lib/public-origins-lib-static.json +1 -0
  119. package/dist-lib/public-origins-lib.json +1852 -0
  120. package/dist-lib/react-native-host-modules.cjs +1 -1
  121. package/dist-lib/react-native-host-modules.mjs +1 -1
  122. package/dist-lib/scripts/dev-server-scanner.cjs +14 -253
  123. package/dist-lib/sdk.cjs +84 -16
  124. package/dist-lib/sdk.mjs +82 -15
  125. package/dist-lib/skills.cjs +51248 -75450
  126. package/dist-lib/swift-compile.cjs +26154 -1245
  127. package/dist-lib/swift-compile.mjs +26151 -1230
  128. package/dist-lib/swift-package.cjs +79 -1
  129. package/dist-lib/swift-package.mjs +75 -1
  130. package/dist-lib/swift-submit.cjs +1 -1
  131. package/dist-lib/swift-submit.mjs +1 -1
  132. package/dist-lib/swift-toolchain.cjs +1 -1
  133. package/dist-lib/swift.cjs +1 -1
  134. package/dist-lib/vite-swift.cjs +34394 -12323
  135. package/dist-lib/vite.cjs +373 -298
  136. package/dist-lib/worklet-executable.cjs +1 -1
  137. package/dist-lib/worklet-executable.mjs +1 -1
  138. package/dist-types/packages/peach-compat/src/engine-config.d.ts +2 -0
  139. package/dist-types/packages/peach-compat/src/stubs/form-sheet-spring.d.ts +9 -0
  140. package/dist-types/packages/peach-compat/src/stubs/native-evaluation-lease.d.ts +47 -0
  141. package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-cookies.d.ts +113 -0
  142. package/dist-types/packages/peach-compat/src/stubs/native-seams/react-native-gesture-handler.d.ts +154 -0
  143. package/dist-types/packages/peach-compat/src/stubs/screen-transition-math.d.ts +756 -0
  144. package/dist-types/packages/peach-compat/src/stubs/transition-scalar.d.ts +25 -0
  145. package/dist-types/packages/peach-engine/src/billing/plans.d.ts +64 -0
  146. package/dist-types/packages/peach-engine/src/browser-page-target.d.ts +2 -0
  147. package/dist-types/packages/peach-engine/src/bundle-platform-url.d.ts +3 -0
  148. package/dist-types/packages/peach-engine/src/capture/browser-accessibility-host.d.ts +3 -0
  149. package/dist-types/packages/peach-engine/src/capture/browser-composite.d.ts +55 -0
  150. package/dist-types/packages/peach-engine/src/capture/browserAccessibilityContract.d.ts +27 -0
  151. package/dist-types/packages/peach-engine/src/capture/nativeScreenCaptureContract.d.ts +22 -0
  152. package/dist-types/packages/peach-engine/src/cli-companion.d.ts +36 -0
  153. package/dist-types/packages/peach-engine/src/components/native-ui/webview-frame-bridge.d.ts +34 -0
  154. package/dist-types/packages/peach-engine/src/config.d.ts +5 -0
  155. package/dist-types/packages/peach-engine/src/engine/android-stretch-effect.d.ts +57 -0
  156. package/dist-types/packages/peach-engine/src/engine/animated-driven-style.d.ts +47 -0
  157. package/dist-types/packages/peach-engine/src/engine/animated-value.d.ts +5 -0
  158. package/dist-types/packages/peach-engine/src/engine/animated.d.ts +195 -0
  159. package/dist-types/packages/peach-engine/src/engine/animation-clockContract.d.ts +15 -0
  160. package/dist-types/packages/peach-engine/src/engine/animation-graph.d.ts +148 -0
  161. package/dist-types/packages/peach-engine/src/engine/app-catalog-wire.d.ts +10 -0
  162. package/dist-types/packages/peach-engine/src/engine/app-font-registry.d.ts +87 -0
  163. package/dist-types/packages/peach-engine/src/engine/attributed-paragraph-paint.d.ts +7 -0
  164. package/dist-types/packages/peach-engine/src/engine/attributed-paragraph.d.ts +123 -0
  165. package/dist-types/packages/peach-engine/src/engine/audioContract.d.ts +16 -0
  166. package/dist-types/packages/peach-engine/src/engine/canvaskit-api.d.ts +93 -0
  167. package/dist-types/packages/peach-engine/src/engine/canvaskit-renderer.d.ts +216 -0
  168. package/dist-types/packages/peach-engine/src/engine/config-plugin-fonts.d.ts +40 -0
  169. package/dist-types/packages/peach-engine/src/engine/config-plugin-splash.d.ts +25 -0
  170. package/dist-types/packages/peach-engine/src/engine/cull-visibility.d.ts +44 -0
  171. package/dist-types/packages/peach-engine/src/engine/damage-rect.d.ts +19 -0
  172. package/dist-types/packages/peach-engine/src/engine/engine-resource.d.ts +6 -0
  173. package/dist-types/packages/peach-engine/src/engine/expo-manifest.d.ts +5 -0
  174. package/dist-types/packages/peach-engine/src/engine/fiber-debug-metadata.d.ts +30 -0
  175. package/dist-types/packages/peach-engine/src/engine/font-config.d.ts +139 -0
  176. package/dist-types/packages/peach-engine/src/engine/generated/sf-pro-font.d.ts +1 -0
  177. package/dist-types/packages/peach-engine/src/engine/glass-material.d.ts +31 -0
  178. package/dist-types/packages/peach-engine/src/engine/host-composite.d.ts +100 -0
  179. package/dist-types/packages/peach-engine/src/engine/hosted-semantics.d.ts +49 -0
  180. package/dist-types/packages/peach-engine/src/engine/image-audit.d.ts +70 -0
  181. package/dist-types/packages/peach-engine/src/engine/image-loader.d.ts +350 -0
  182. package/dist-types/packages/peach-engine/src/engine/inspect-info.d.ts +27 -0
  183. package/dist-types/packages/peach-engine/src/engine/inspect-outline.d.ts +14 -0
  184. package/dist-types/packages/peach-engine/src/engine/inspect-visibility.d.ts +33 -0
  185. package/dist-types/packages/peach-engine/src/engine/ios-fast-scroll.d.ts +16 -0
  186. package/dist-types/packages/peach-engine/src/engine/layout-sab.d.ts +43 -0
  187. package/dist-types/packages/peach-engine/src/engine/liquid-glass-rect.d.ts +23 -0
  188. package/dist-types/packages/peach-engine/src/engine/liquid-glass-shaders.d.ts +9 -0
  189. package/dist-types/packages/peach-engine/src/engine/liquid-glass.d.ts +283 -0
  190. package/dist-types/packages/peach-engine/src/engine/live-object-counts.d.ts +6 -0
  191. package/dist-types/packages/peach-engine/src/engine/lottie-runtime.d.ts +32 -0
  192. package/dist-types/packages/peach-engine/src/engine/lottie-types.d.ts +138 -0
  193. package/dist-types/packages/peach-engine/src/engine/memory-counts.d.ts +27 -0
  194. package/dist-types/packages/peach-engine/src/engine/metalDirectContract.d.ts +108 -0
  195. package/dist-types/packages/peach-engine/src/engine/metalShaderContract.d.ts +217 -0
  196. package/dist-types/packages/peach-engine/src/engine/native-animation-driver.d.ts +112 -0
  197. package/dist-types/packages/peach-engine/src/engine/native-animation-graph.d.ts +62 -0
  198. package/dist-types/packages/peach-engine/src/engine/native-layout.d.ts +133 -0
  199. package/dist-types/packages/peach-engine/src/engine/native-resources.d.ts +26 -0
  200. package/dist-types/packages/peach-engine/src/engine/nativeReanimatedContract.d.ts +25 -0
  201. package/dist-types/packages/peach-engine/src/engine/nativeReplayContract.d.ts +64 -0
  202. package/dist-types/packages/peach-engine/src/engine/node.d.ts +589 -0
  203. package/dist-types/packages/peach-engine/src/engine/paint-boundary-types.d.ts +112 -0
  204. package/dist-types/packages/peach-engine/src/engine/paint-boundary.d.ts +57 -0
  205. package/dist-types/packages/peach-engine/src/engine/portalContract.d.ts +21 -0
  206. package/dist-types/packages/peach-engine/src/engine/portals.d.ts +20 -0
  207. package/dist-types/packages/peach-engine/src/engine/render-damage.d.ts +107 -0
  208. package/dist-types/packages/peach-engine/src/engine/riveContract.d.ts +420 -0
  209. package/dist-types/packages/peach-engine/src/engine/rn-spring.d.ts +51 -0
  210. package/dist-types/packages/peach-engine/src/engine/scene-table.d.ts +379 -0
  211. package/dist-types/packages/peach-engine/src/engine/scroll-momentum-math.d.ts +152 -0
  212. package/dist-types/packages/peach-engine/src/engine/scroll-pan-contacts.d.ts +10 -0
  213. package/dist-types/packages/peach-engine/src/engine/scroll-platform.d.ts +75 -0
  214. package/dist-types/packages/peach-engine/src/engine/scroll-range.d.ts +14 -0
  215. package/dist-types/packages/peach-engine/src/engine/scroll-velocity.d.ts +14 -0
  216. package/dist-types/packages/peach-engine/src/engine/scroll.d.ts +320 -0
  217. package/dist-types/packages/peach-engine/src/engine/signal.d.ts +7 -0
  218. package/dist-types/packages/peach-engine/src/engine/snapshot-cache-policy.d.ts +6 -0
  219. package/dist-types/packages/peach-engine/src/engine/svg-geometry.d.ts +41 -0
  220. package/dist-types/packages/peach-engine/src/engine/text-attachment-paragraphs.d.ts +10 -0
  221. package/dist-types/packages/peach-engine/src/engine/text-decoration.d.ts +11 -0
  222. package/dist-types/packages/peach-engine/src/engine/text-line-break.d.ts +22 -0
  223. package/dist-types/packages/peach-engine/src/engine/text-paint-receipt.d.ts +98 -0
  224. package/dist-types/packages/peach-engine/src/engine/text-paragraph.d.ts +11 -0
  225. package/dist-types/packages/peach-engine/src/engine/text-paragraphContract.d.ts +34 -0
  226. package/dist-types/packages/peach-engine/src/engine/text-transform.d.ts +1 -0
  227. package/dist-types/packages/peach-engine/src/engine/types.d.ts +657 -0
  228. package/dist-types/packages/peach-engine/src/engine/visible-frame.d.ts +54 -0
  229. package/dist-types/packages/peach-engine/src/engine/webrtcContract.d.ts +74 -0
  230. package/dist-types/packages/peach-engine/src/graphite-stats-fields.d.ts +184 -0
  231. package/dist-types/packages/peach-engine/src/guest-import-meta.d.ts +12 -0
  232. package/dist-types/packages/peach-engine/src/guest-module-overrides.d.ts +7 -0
  233. package/dist-types/packages/peach-engine/src/ios/app-card-types.d.ts +7 -0
  234. package/dist-types/packages/peach-engine/src/ios/apps/canvas-map-data.d.ts +177 -0
  235. package/dist-types/packages/peach-engine/src/ios/aux-home-scene.d.ts +54 -0
  236. package/dist-types/packages/peach-engine/src/ios/chrome-metrics.d.ts +47 -0
  237. package/dist-types/packages/peach-engine/src/ios/constants.d.ts +21 -0
  238. package/dist-types/packages/peach-engine/src/ios/duo-housing.d.ts +37 -0
  239. package/dist-types/packages/peach-engine/src/ios/home/types.d.ts +29 -0
  240. package/dist-types/packages/peach-engine/src/ios/home-app-catalog.d.ts +43 -0
  241. package/dist-types/packages/peach-engine/src/ios/photo-store.d.ts +73 -0
  242. package/dist-types/packages/peach-engine/src/ios/photoLibraryContract.d.ts +166 -0
  243. package/dist-types/packages/peach-engine/src/ios/shell-controller-types.d.ts +21 -0
  244. package/dist-types/packages/peach-engine/src/ios/shell-transition-debug.d.ts +18 -0
  245. package/dist-types/packages/peach-engine/src/metro-asset-path.d.ts +21 -0
  246. package/dist-types/packages/peach-engine/src/metro-fingerprint-registry-client.d.ts +11 -0
  247. package/dist-types/packages/peach-engine/src/metro-fingerprint.d.ts +38 -0
  248. package/dist-types/packages/peach-engine/src/native-preview-bundle.d.ts +44 -0
  249. package/dist-types/packages/peach-engine/src/observability/types.d.ts +74 -0
  250. package/dist-types/packages/peach-engine/src/peach-warm-manifest.d.ts +32 -0
  251. package/dist-types/packages/peach-engine/src/permissions/app-settings-client.d.ts +25 -0
  252. package/dist-types/packages/peach-engine/src/permissions/system-permission-types.d.ts +20 -0
  253. package/dist-types/packages/peach-engine/src/platform/android-back-panel.d.ts +131 -0
  254. package/dist-types/packages/peach-engine/src/platform/android-gesture-exclusion.d.ts +28 -0
  255. package/dist-types/packages/peach-engine/src/platform/android-predictive-back.d.ts +33 -0
  256. package/dist-types/packages/peach-engine/src/platform/system-bars-state.d.ts +14 -0
  257. package/dist-types/packages/peach-engine/src/playwright-sim-host.d.ts +1 -0
  258. package/dist-types/packages/peach-engine/src/preview/bundle-layout.d.ts +8 -0
  259. package/dist-types/packages/peach-engine/src/preview/bundle-variantContract.d.ts +24 -0
  260. package/dist-types/packages/peach-engine/src/preview/capture-bundle.d.ts +26 -0
  261. package/dist-types/packages/peach-engine/src/preview/compress-node.d.ts +2 -0
  262. package/dist-types/packages/peach-engine/src/preview/compress.d.ts +2 -0
  263. package/dist-types/packages/peach-engine/src/preview/presigned-upload.d.ts +60 -0
  264. package/dist-types/packages/peach-engine/src/preview/trace.d.ts +144 -0
  265. package/dist-types/packages/peach-engine/src/preview/upload-protocol.d.ts +152 -0
  266. package/dist-types/packages/peach-engine/src/profiler/animation-recording-loader.d.ts +1 -0
  267. package/dist-types/packages/peach-engine/src/profiler/profile-trace.d.ts +4 -0
  268. package/dist-types/packages/peach-engine/src/react-bridge.d.ts +3 -0
  269. package/dist-types/packages/peach-engine/src/react-native/AppState.d.ts +45 -0
  270. package/dist-types/packages/peach-engine/src/react-native/Appearance.d.ts +34 -0
  271. package/dist-types/packages/peach-engine/src/react-native/framework-colors-data.d.ts +2 -0
  272. package/dist-types/packages/peach-engine/src/react-native/host-services.d.ts +42 -0
  273. package/dist-types/packages/peach-engine/src/react-native/layout-animation.d.ts +22 -0
  274. package/dist-types/packages/peach-engine/src/react-native/platform-colors.d.ts +17 -0
  275. package/dist-types/packages/peach-engine/src/remote-stream/client-config.d.ts +10 -0
  276. package/dist-types/packages/peach-engine/src/remote-stream/cloud-display.d.ts +58 -0
  277. package/dist-types/packages/peach-engine/src/remote-stream/scene-recording.d.ts +45 -0
  278. package/dist-types/packages/peach-engine/src/render-worker/animated-drive-output.d.ts +35 -0
  279. package/dist-types/packages/peach-engine/src/render-worker/app-load.d.ts +16 -0
  280. package/dist-types/packages/peach-engine/src/render-worker/aux-surface-types.d.ts +2 -0
  281. package/dist-types/packages/peach-engine/src/render-worker/canvaskit-shared.d.ts +42 -0
  282. package/dist-types/packages/peach-engine/src/render-worker/canvaskit-webgpu.d.ts +434 -0
  283. package/dist-types/packages/peach-engine/src/render-worker/canvaskit-worker-init.d.ts +12 -0
  284. package/dist-types/packages/peach-engine/src/render-worker/compositor-backend.d.ts +31 -0
  285. package/dist-types/packages/peach-engine/src/render-worker/compositor-gpu.d.ts +202 -0
  286. package/dist-types/packages/peach-engine/src/render-worker/compositor-protocol.d.ts +1945 -0
  287. package/dist-types/packages/peach-engine/src/render-worker/compositor-runtime/scroll-drag-resample.d.ts +44 -0
  288. package/dist-types/packages/peach-engine/src/render-worker/css-keyframes-drive.d.ts +36 -0
  289. package/dist-types/packages/peach-engine/src/render-worker/edit-menu-geometry.d.ts +8 -0
  290. package/dist-types/packages/peach-engine/src/render-worker/engine-resource-relay.d.ts +21 -0
  291. package/dist-types/packages/peach-engine/src/render-worker/expo-widgetContract.d.ts +16 -0
  292. package/dist-types/packages/peach-engine/src/render-worker/gesture-seam-protocol.d.ts +152 -0
  293. package/dist-types/packages/peach-engine/src/render-worker/graph-linked-value.d.ts +29 -0
  294. package/dist-types/packages/peach-engine/src/render-worker/graphite-pipeline-compiler-contract.d.ts +49 -0
  295. package/dist-types/packages/peach-engine/src/render-worker/graphite-pipeline-compiler.d.ts +12 -0
  296. package/dist-types/packages/peach-engine/src/render-worker/host-service-protocol.d.ts +756 -0
  297. package/dist-types/packages/peach-engine/src/render-worker/image-lifecycle-event.d.ts +22 -0
  298. package/dist-types/packages/peach-engine/src/render-worker/image-pixel-contract.d.ts +48 -0
  299. package/dist-types/packages/peach-engine/src/render-worker/live-frame-mirror.d.ts +34 -0
  300. package/dist-types/packages/peach-engine/src/render-worker/map-command-channel.d.ts +189 -0
  301. package/dist-types/packages/peach-engine/src/render-worker/mapNativeContract.d.ts +101 -0
  302. package/dist-types/packages/peach-engine/src/render-worker/native-dynamic-synchronizable.d.ts +22 -0
  303. package/dist-types/packages/peach-engine/src/render-worker/native-menu-gesture.d.ts +9 -0
  304. package/dist-types/packages/peach-engine/src/render-worker/native-ui-commandContract.d.ts +23 -0
  305. package/dist-types/packages/peach-engine/src/render-worker/native-ui-protocol.d.ts +1087 -0
  306. package/dist-types/packages/peach-engine/src/render-worker/native-widgetContract.d.ts +100 -0
  307. package/dist-types/packages/peach-engine/src/render-worker/nativeAnimMirrorContract.d.ts +174 -0
  308. package/dist-types/packages/peach-engine/src/render-worker/nativeSyncReplyContract.d.ts +11 -0
  309. package/dist-types/packages/peach-engine/src/render-worker/one-native-contentContract.d.ts +54 -0
  310. package/dist-types/packages/peach-engine/src/render-worker/pointerSampleContract.d.ts +14 -0
  311. package/dist-types/packages/peach-engine/src/render-worker/protocol.d.ts +880 -0
  312. package/dist-types/packages/peach-engine/src/render-worker/reanimated-css-contract.d.ts +63 -0
  313. package/dist-types/packages/peach-engine/src/render-worker/reanimated-readiness.d.ts +29 -0
  314. package/dist-types/packages/peach-engine/src/render-worker/resilient-frame-clock.d.ts +22 -0
  315. package/dist-types/packages/peach-engine/src/render-worker/retained-app-load.d.ts +20 -0
  316. package/dist-types/packages/peach-engine/src/render-worker/screen-edge-swipe-commit-protocol.d.ts +1 -0
  317. package/dist-types/packages/peach-engine/src/render-worker/screen-form-sheet-commit-protocol.d.ts +26 -0
  318. package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror-tenant.d.ts +37 -0
  319. package/dist-types/packages/peach-engine/src/render-worker/scroll-mirror.d.ts +164 -0
  320. package/dist-types/packages/peach-engine/src/render-worker/shell-event-registry.d.ts +119 -0
  321. package/dist-types/packages/peach-engine/src/render-worker/shell-gesture-regions.d.ts +41 -0
  322. package/dist-types/packages/peach-engine/src/render-worker/shell-protocol.d.ts +603 -0
  323. package/dist-types/packages/peach-engine/src/render-worker/shell-scene-schema.d.ts +101 -0
  324. package/dist-types/packages/peach-engine/src/render-worker/shell-tree-inline-sources.d.ts +13 -0
  325. package/dist-types/packages/peach-engine/src/render-worker/shell-tree-wire.d.ts +87 -0
  326. package/dist-types/packages/peach-engine/src/render-worker/test-bridge-protocol.d.ts +47 -0
  327. package/dist-types/packages/peach-engine/src/render-worker/text-inputContract.d.ts +93 -0
  328. package/dist-types/packages/peach-engine/src/render-worker/tree-sync-port.d.ts +102 -0
  329. package/dist-types/packages/peach-engine/src/render-worker/webgpu-frame-transaction.d.ts +292 -0
  330. package/dist-types/packages/peach-engine/src/render-worker/webgpu-readback-scheduler.d.ts +107 -0
  331. package/dist-types/packages/peach-engine/src/render-worker/webview-capture-protocol.d.ts +16 -0
  332. package/dist-types/packages/peach-engine/src/render-worker/worker-input-runtime.d.ts +211 -0
  333. package/dist-types/packages/peach-engine/src/render-worker/worker-storage.d.ts +33 -0
  334. package/dist-types/packages/peach-engine/src/render-worker/worklet-runtime.d.ts +987 -0
  335. package/dist-types/packages/peach-engine/src/render-worker/worklet-sab.d.ts +24 -0
  336. package/dist-types/packages/peach-engine/src/rolldown-bundle-inventory.d.ts +84 -0
  337. package/dist-types/packages/peach-engine/src/rolldown-production-fingerprint.d.ts +31 -0
  338. package/dist-types/packages/peach-engine/src/screenshots/timeline-assets.d.ts +10 -0
  339. package/dist-types/packages/peach-engine/src/screenshots/tokens.d.ts +9 -0
  340. package/dist-types/packages/peach-engine/src/settings/devices.d.ts +70 -0
  341. package/dist-types/packages/peach-engine/src/settings/duo-fold-bus.d.ts +87 -0
  342. package/dist-types/packages/peach-engine/src/settings/interface-rotation.d.ts +30 -0
  343. package/dist-types/packages/peach-engine/src/settings/react-native-configuration.d.ts +12 -0
  344. package/dist-types/packages/peach-engine/src/settings/scene-geometryContract.d.ts +40 -0
  345. package/dist-types/packages/peach-engine/src/settings/store.d.ts +37 -0
  346. package/dist-types/packages/peach-engine/src/shell-events.d.ts +203 -0
  347. package/dist-types/packages/peach-engine/src/shell-intent.d.ts +68 -0
  348. package/dist-types/packages/peach-engine/src/sootsim-event.d.ts +35 -0
  349. package/dist-types/packages/peach-engine/src/top-overlay-state.d.ts +5 -0
  350. package/dist-types/packages/peach-engine/src/web-authentication-automation-host.d.ts +2 -0
  351. package/dist-types/packages/peach-engine/src/webAuthenticationContract.d.ts +34 -0
  352. package/dist-types/packages/peach-engine/src/webview-automation-host.d.ts +180 -0
  353. package/dist-types/packages/peach-engine/src/wireframe-mode.d.ts +16 -0
  354. package/dist-types/packages/peach-globals/src/frameBreakdownContract.d.ts +16 -0
  355. package/dist-types/packages/peach-globals/src/index.d.ts +3311 -0
  356. package/dist-types/packages/peach-globals/src/nativeSurfaceContract.d.ts +76 -0
  357. package/dist-types/packages/peach-globals/src/pointerSourceEventContract.d.ts +8 -0
  358. package/dist-types/packages/peach-globals/src/profileTrace.d.ts +11 -0
  359. package/dist-types/packages/peach-globals/src/profilerContract.d.ts +223 -0
  360. package/dist-types/packages/peach-kit/src/capabilities.d.ts +721 -0
  361. package/dist-types/packages/peach-kit/src/internal.d.ts +4 -0
  362. package/dist-types/packages/peach-kit/src/materials/types.d.ts +27 -0
  363. package/dist-types/packages/peach-kit/src/materials/uikit-blur-material.d.ts +14 -0
  364. package/dist-types/packages/peach-kit/src/navigation-types.d.ts +11 -0
  365. package/dist-types/packages/peach-kit/src/react-bridge.d.ts +53 -0
  366. package/dist-types/packages/peach-kit/src/runtime.d.ts +26 -0
  367. package/dist-types/packages/peach-kit/src/ui/hosting-safe-area.d.ts +24 -0
  368. package/dist-types/packages/peach-kit/src/ui/popover-placement.d.ts +53 -0
  369. package/dist-types/packages/peach-kit/src/ui/presentationContract.d.ts +17 -0
  370. package/kotlin/ComposeSources/PeachComposeHost.kt +1 -1
  371. package/kotlin/JniSources/com/facebook/jni/HybridData.kt +0 -2
  372. package/kotlin/JniSources/dev/peach/jni/NativeBindings.kt +0 -2
  373. package/kotlin/JniTransportSources/dev/peach/jni/integration/JniTransport.kt +0 -2
  374. package/kotlin/README.md +6 -0
  375. package/package.json +22 -2
  376. package/runtime-companion.json +1 -0
  377. package/skills/contrast/SKILL.md +1 -0
  378. package/src/appBundleResourcesContract.ts +51 -0
  379. package/src/assetCatalogContract.ts +21 -0
  380. package/src/backend-origin.ts +3 -1
  381. package/src/bridge-contract-input.ts +84 -0
  382. package/src/bridge-contract.ts +35 -3
  383. package/src/browser-launch-policy.ts +1 -0
  384. package/src/bundle-channel.mjs +4 -2
  385. package/src/cli-runtime.ts +55 -0
  386. package/src/crash-fingerprint.ts +26 -0
  387. package/src/dev-bundle-resolution.ts +50 -23
  388. package/src/device-catalog.ts +1159 -0
  389. package/src/host/bridge-host.ts +20 -37
  390. package/src/host/browser-pointer.ts +71 -0
  391. package/src/host/dev-server-package-versions.ts +23 -0
  392. package/src/host/fetch-proxy-handler.ts +17 -4
  393. package/src/host/staged-host-files.ts +28 -4
  394. package/src/installed-package-versions.ts +142 -38
  395. package/src/kotlin-host.ts +1 -1
  396. package/src/launchMetadataContract.ts +1 -0
  397. package/src/menu.ts +12 -4
  398. package/src/metro-plugin.ts +4 -4
  399. package/src/metro-project-root.ts +68 -0
  400. package/src/native-app-identity-project.ts +47 -38
  401. package/src/nitro-adapter.lock.json +26 -0
  402. package/src/nitro-adapter.ts +103 -0
  403. package/src/nitro-bundle.ts +24 -10
  404. package/src/nitro-compile.ts +33 -51
  405. package/src/nitro-source.ts +177 -96
  406. package/src/nitroAdapterContract.ts +217 -0
  407. package/src/nitroContract.ts +24 -11
  408. package/src/process-group.ts +41 -34
  409. package/src/react-bridge-importers.ts +28 -0
  410. package/src/reactNativeConfigurationContract.ts +36 -0
  411. package/src/runtime-assets.ts +7 -2
  412. package/src/runtime-delivery.ts +8 -7
  413. package/src/runtimePlatformContract.ts +70 -0
  414. package/src/screenshots/frame-compose.ts +42 -43
  415. package/src/screenshots/org-deck.ts +9 -4
  416. package/src/screenshots/preset-names.ts +29 -0
  417. package/src/screenshots/registry.ts +5 -5
  418. package/src/screenshots/schema.ts +1 -1
  419. package/src/screenshots/screenshotContract.ts +971 -0
  420. package/src/settings-flags.ts +107 -0
  421. package/src/settingsContract.ts +609 -0
  422. package/src/storageSnapshotContract.ts +344 -0
  423. package/src/stub-pattern-matcher.ts +550 -0
  424. package/src/swift-compile.ts +926 -47
  425. package/src/swift-compiler-digest.ts +17 -3
  426. package/src/swift-distribution.lock.json +49 -22
  427. package/src/swift-host.ts +167 -52
  428. package/src/swift-objc-compile.ts +86 -26
  429. package/src/swift-objc-export.ts +532 -0
  430. package/src/swift-objc-import.ts +769 -0
  431. package/src/swift-objc-metadata.ts +285 -10
  432. package/src/swift-objc-sdk.ts +13970 -158
  433. package/src/swift-objc-standin.ts +137 -1
  434. package/src/swift-package.ts +94 -0
  435. package/src/swift-packages.ts +5 -5
  436. package/src/swift-root-lock.ts +241 -92
  437. package/src/swift-submit.ts +6 -0
  438. package/src/swiftContract.ts +99 -0
  439. package/src/target-matcher.ts +6 -1
  440. package/src/vite-plugin.ts +14 -40
  441. package/src/worker-system-chunks.ts +1 -1
  442. package/src/workerChunkContract.ts +5 -0
  443. package/src/worklets-babel.ts +24 -5
  444. package/src/xcode-project.ts +103 -11
  445. package/src/xcode-target-members.ts +10 -3
  446. package/cli/drivers/playwright-sim-host.ts +0 -825
  447. package/kotlin/fixtures/counter/Counter.d.kt.ts +0 -17
  448. package/kotlin/fixtures/counter/Counter.kt +0 -51
  449. package/kotlin/fixtures/counter/CounterApp.native.tsx +0 -61
  450. package/kotlin/fixtures/counter/CounterApp.tsx +0 -3
  451. package/kotlin/fixtures/counter/CounterScreen.d.kt.ts +0 -8
  452. package/kotlin/fixtures/counter/CounterScreen.kt +0 -56
  453. package/kotlin/fixtures/counter/app/_layout.tsx +0 -4
  454. package/kotlin/fixtures/counter/app/index+spa.tsx +0 -1
  455. package/kotlin/fixtures/counter/app/routes.d.ts +0 -18
  456. package/kotlin/fixtures/counter/package.json +0 -20
  457. package/kotlin/fixtures/counter/tsconfig.json +0 -19
  458. package/kotlin/fixtures/counter/vite.config.ts +0 -20
  459. package/kotlin/fixtures/headless-counter/Headless.kt +0 -234
  460. package/kotlin/fixtures/import-animation/Animation.d.kt.ts +0 -7
  461. package/kotlin/fixtures/import-animation/Animation.kt +0 -80
  462. package/kotlin/fixtures/import-animation/ImportAnimation.native.tsx +0 -13
  463. package/kotlin/fixtures/import-animation/README.md +0 -24
  464. package/kotlin/fixtures/import-animation/app/_layout.tsx +0 -4
  465. package/kotlin/fixtures/import-animation/app/index+spa.tsx +0 -1
  466. package/kotlin/fixtures/import-animation/app/routes.d.ts +0 -18
  467. package/kotlin/fixtures/import-animation/package.json +0 -23
  468. package/kotlin/fixtures/import-animation/tsconfig.json +0 -20
  469. package/kotlin/fixtures/import-animation/vite.config.ts +0 -20
  470. package/kotlin/fixtures/import-drawing/Drawing.d.kt.ts +0 -7
  471. package/kotlin/fixtures/import-drawing/Drawing.kt +0 -101
  472. package/kotlin/fixtures/import-drawing/ImportDrawing.native.tsx +0 -18
  473. package/kotlin/fixtures/import-drawing/README.md +0 -34
  474. package/kotlin/fixtures/import-drawing/app/_layout.tsx +0 -4
  475. package/kotlin/fixtures/import-drawing/app/index+spa.tsx +0 -1
  476. package/kotlin/fixtures/import-drawing/package.json +0 -23
  477. package/kotlin/fixtures/import-drawing/tsconfig.json +0 -20
  478. package/kotlin/fixtures/import-drawing/vite.config.ts +0 -20
  479. package/kotlin/fixtures/import-editor/Editor.d.kt.ts +0 -7
  480. package/kotlin/fixtures/import-editor/Editor.kt +0 -59
  481. package/kotlin/fixtures/import-editor/ImportEditor.native.tsx +0 -23
  482. package/kotlin/fixtures/import-editor/README.md +0 -27
  483. package/kotlin/fixtures/import-editor/app/_layout.tsx +0 -4
  484. package/kotlin/fixtures/import-editor/app/index+spa.tsx +0 -1
  485. package/kotlin/fixtures/import-editor/package.json +0 -23
  486. package/kotlin/fixtures/import-editor/tsconfig.json +0 -20
  487. package/kotlin/fixtures/import-editor/vite.config.ts +0 -20
  488. package/kotlin/fixtures/import-effects/Effects.d.kt.ts +0 -7
  489. package/kotlin/fixtures/import-effects/Effects.kt +0 -87
  490. package/kotlin/fixtures/import-effects/ImportEffects.native.tsx +0 -13
  491. package/kotlin/fixtures/import-effects/README.md +0 -19
  492. package/kotlin/fixtures/import-effects/app/_layout.tsx +0 -4
  493. package/kotlin/fixtures/import-effects/app/index+spa.tsx +0 -1
  494. package/kotlin/fixtures/import-effects/package.json +0 -23
  495. package/kotlin/fixtures/import-effects/tsconfig.json +0 -20
  496. package/kotlin/fixtures/import-effects/vite.config.ts +0 -20
  497. package/kotlin/fixtures/import-layout/ImportLayout.native.tsx +0 -13
  498. package/kotlin/fixtures/import-layout/Layout.d.kt.ts +0 -7
  499. package/kotlin/fixtures/import-layout/Layout.kt +0 -72
  500. package/kotlin/fixtures/import-layout/README.md +0 -24
  501. package/kotlin/fixtures/import-layout/app/_layout.tsx +0 -4
  502. package/kotlin/fixtures/import-layout/app/index+spa.tsx +0 -1
  503. package/kotlin/fixtures/import-layout/package.json +0 -23
  504. package/kotlin/fixtures/import-layout/tsconfig.json +0 -20
  505. package/kotlin/fixtures/import-layout/vite.config.ts +0 -20
  506. package/kotlin/fixtures/import-navigation/ImportNavigation.native.tsx +0 -18
  507. package/kotlin/fixtures/import-navigation/Navigation.d.kt.ts +0 -7
  508. package/kotlin/fixtures/import-navigation/Navigation.kt +0 -104
  509. package/kotlin/fixtures/import-navigation/README.md +0 -31
  510. package/kotlin/fixtures/import-navigation/app/_layout.tsx +0 -4
  511. package/kotlin/fixtures/import-navigation/app/index+spa.tsx +0 -1
  512. package/kotlin/fixtures/import-navigation/package.json +0 -23
  513. package/kotlin/fixtures/import-navigation/tsconfig.json +0 -20
  514. package/kotlin/fixtures/import-navigation/vite.config.ts +0 -20
  515. package/kotlin/fixtures/import-overlays/ImportOverlays.native.tsx +0 -29
  516. package/kotlin/fixtures/import-overlays/Overlays.d.kt.ts +0 -7
  517. package/kotlin/fixtures/import-overlays/Overlays.kt +0 -93
  518. package/kotlin/fixtures/import-overlays/README.md +0 -34
  519. package/kotlin/fixtures/import-overlays/app/_layout.tsx +0 -4
  520. package/kotlin/fixtures/import-overlays/app/index+spa.tsx +0 -1
  521. package/kotlin/fixtures/import-overlays/package.json +0 -23
  522. package/kotlin/fixtures/import-overlays/tsconfig.json +0 -20
  523. package/kotlin/fixtures/import-overlays/vite.config.ts +0 -20
  524. package/kotlin/fixtures/import-resources/ImportResources.native.tsx +0 -18
  525. package/kotlin/fixtures/import-resources/README.md +0 -26
  526. package/kotlin/fixtures/import-resources/Resources.d.kt.ts +0 -6
  527. package/kotlin/fixtures/import-resources/Resources.kt +0 -72
  528. package/kotlin/fixtures/import-resources/app/_layout.tsx +0 -4
  529. package/kotlin/fixtures/import-resources/app/index+spa.tsx +0 -1
  530. package/kotlin/fixtures/import-resources/package.json +0 -23
  531. package/kotlin/fixtures/import-resources/tsconfig.json +0 -20
  532. package/kotlin/fixtures/import-resources/vite.config.ts +0 -20
  533. package/kotlin/fixtures/import-scroll/ImportNested.native.tsx +0 -10
  534. package/kotlin/fixtures/import-scroll/ImportScroll.native.tsx +0 -13
  535. package/kotlin/fixtures/import-scroll/Nested.d.kt.ts +0 -4
  536. package/kotlin/fixtures/import-scroll/Nested.kt +0 -64
  537. package/kotlin/fixtures/import-scroll/README.md +0 -38
  538. package/kotlin/fixtures/import-scroll/Scroll.d.kt.ts +0 -7
  539. package/kotlin/fixtures/import-scroll/Scroll.kt +0 -91
  540. package/kotlin/fixtures/import-scroll/app/_layout.tsx +0 -4
  541. package/kotlin/fixtures/import-scroll/app/index+spa.tsx +0 -1
  542. package/kotlin/fixtures/import-scroll/app/nested+spa.tsx +0 -1
  543. package/kotlin/fixtures/import-scroll/package.json +0 -23
  544. package/kotlin/fixtures/import-scroll/tsconfig.json +0 -20
  545. package/kotlin/fixtures/import-scroll/vite.config.ts +0 -20
  546. package/kotlin/fixtures/import-selection/ImportSelection.native.tsx +0 -44
  547. package/kotlin/fixtures/import-selection/README.md +0 -32
  548. package/kotlin/fixtures/import-selection/Selection.d.kt.ts +0 -8
  549. package/kotlin/fixtures/import-selection/Selection.kt +0 -78
  550. package/kotlin/fixtures/import-selection/app/_layout.tsx +0 -4
  551. package/kotlin/fixtures/import-selection/app/index+spa.tsx +0 -1
  552. package/kotlin/fixtures/import-selection/package.json +0 -23
  553. package/kotlin/fixtures/import-selection/tsconfig.json +0 -20
  554. package/kotlin/fixtures/import-selection/vite.config.ts +0 -20
  555. package/kotlin/fixtures/import-surfaces/ImportSurfaces.native.tsx +0 -13
  556. package/kotlin/fixtures/import-surfaces/README.md +0 -22
  557. package/kotlin/fixtures/import-surfaces/Surfaces.d.kt.ts +0 -7
  558. package/kotlin/fixtures/import-surfaces/Surfaces.kt +0 -64
  559. package/kotlin/fixtures/import-surfaces/app/_layout.tsx +0 -4
  560. package/kotlin/fixtures/import-surfaces/app/index+spa.tsx +0 -1
  561. package/kotlin/fixtures/import-surfaces/package.json +0 -23
  562. package/kotlin/fixtures/import-surfaces/tsconfig.json +0 -20
  563. package/kotlin/fixtures/import-surfaces/vite.config.ts +0 -20
  564. package/kotlin/fixtures/import-values/ImportValues.native.tsx +0 -61
  565. package/kotlin/fixtures/import-values/README.md +0 -28
  566. package/kotlin/fixtures/import-values/Values.d.kt.ts +0 -15
  567. package/kotlin/fixtures/import-values/Values.kt +0 -84
  568. package/kotlin/fixtures/import-values/app/_layout.tsx +0 -4
  569. package/kotlin/fixtures/import-values/app/index+spa.tsx +0 -1
  570. package/kotlin/fixtures/import-values/package.json +0 -23
  571. package/kotlin/fixtures/import-values/tsconfig.json +0 -20
  572. package/kotlin/fixtures/import-values/vite.config.ts +0 -20
  573. package/kotlin/fixtures/kotlin-app/app/build.gradle.kts +0 -30
  574. package/kotlin/fixtures/kotlin-app/app/src/main/AndroidManifest.xml +0 -13
  575. package/kotlin/fixtures/kotlin-app/app/src/main/java/dev/contrast/kotlinapp/MainActivity.kt +0 -60
  576. package/kotlin/fixtures/kotlin-app/app/src/main/java/dev/contrast/kotlinapp/ProbeApplication.kt +0 -18
  577. package/kotlin/fixtures/kotlin-app/build.gradle.kts +0 -5
  578. package/kotlin/fixtures/kotlin-app/gradle.properties +0 -4
  579. package/kotlin/fixtures/kotlin-app/settings.gradle.kts +0 -4
  580. package/kotlin/fixtures/kotlin-app-variants/Anim.kt +0 -62
  581. package/kotlin/fixtures/kotlin-app-variants/BarBehavior.kt +0 -38
  582. package/kotlin/fixtures/kotlin-app-variants/BarVisibility.kt +0 -36
  583. package/kotlin/fixtures/kotlin-app-variants/Bitmaps.kt +0 -50
  584. package/kotlin/fixtures/kotlin-app-variants/Browse.kt +0 -73
  585. package/kotlin/fixtures/kotlin-app-variants/Colors.kt +0 -41
  586. package/kotlin/fixtures/kotlin-app-variants/Controls.kt +0 -62
  587. package/kotlin/fixtures/kotlin-app-variants/Drag.kt +0 -56
  588. package/kotlin/fixtures/kotlin-app-variants/Draw.kt +0 -74
  589. package/kotlin/fixtures/kotlin-app-variants/Drawables.kt +0 -53
  590. package/kotlin/fixtures/kotlin-app-variants/Focus.kt +0 -62
  591. package/kotlin/fixtures/kotlin-app-variants/Form.kt +0 -47
  592. package/kotlin/fixtures/kotlin-app-variants/Icons.kt +0 -59
  593. package/kotlin/fixtures/kotlin-app-variants/Ime.kt +0 -53
  594. package/kotlin/fixtures/kotlin-app-variants/Lists.kt +0 -57
  595. package/kotlin/fixtures/kotlin-app-variants/Nav.kt +0 -47
  596. package/kotlin/fixtures/kotlin-app-variants/Note.kt +0 -40
  597. package/kotlin/fixtures/kotlin-app-variants/Overlays.kt +0 -56
  598. package/kotlin/fixtures/kotlin-app-variants/Pan.kt +0 -38
  599. package/kotlin/fixtures/kotlin-app-variants/Pickers.kt +0 -44
  600. package/kotlin/fixtures/kotlin-app-variants/Press.kt +0 -43
  601. package/kotlin/fixtures/kotlin-app-variants/Scroll.kt +0 -63
  602. package/kotlin/fixtures/kotlin-app-variants/Sheet.kt +0 -43
  603. package/kotlin/fixtures/kotlin-app-variants/Strings.kt +0 -49
  604. package/kotlin/fixtures/kotlin-app-variants/Tabs.kt +0 -47
  605. package/kotlin/fixtures/kotlin-app-variants/TextWidth.kt +0 -45
  606. package/kotlin/fixtures/kotlin-app-variants/TransientInsets.kt +0 -50
  607. package/kotlin/fixtures/kotlin-app-variants/Transition.kt +0 -69
  608. package/kotlin/fixtures/kotlin-app-variants/ViewConfig.kt +0 -22
  609. package/kotlin/fixtures/kotlin-app-variants/Widgets.kt +0 -67
  610. package/kotlin/fixtures/runtime-state/RuntimeState.kt +0 -200
  611. package/kotlin/fork/README.md +0 -97
  612. package/kotlin/fork/build.sh +0 -176
  613. package/kotlin/fork/compose-worker-globals.patch +0 -1247
  614. package/kotlin/fork/fork.json +0 -46
  615. package/kotlin/fork/publish.ts +0 -99
  616. package/kotlin/fork/skia-android-shaping.patch +0 -189
  617. package/kotlin/fork/skiko-local.init.gradle +0 -10
  618. package/kotlin/fork/skiko-worker-clock.patch +0 -122
@@ -1,20 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "paths": {
4
- "~/*": ["./*"]
5
- },
6
- "strict": true,
7
- "allowArbitraryExtensions": true,
8
- "rootDir": ".",
9
- "module": "Preserve",
10
- // allows react-native style imports without path extensions, for compat with platform-specific files
11
- "moduleResolution": "Bundler",
12
- "preserveSymlinks": true,
13
- "skipLibCheck": true,
14
- "jsx": "react-jsx",
15
- "noImplicitAny": false,
16
- "types": ["node", "react", "vite/client"],
17
- "lib": ["dom", "esnext"]
18
- },
19
- "exclude": ["node_modules", "**/test", "**/dist", "**/types", "**/__tests__"]
20
- }
@@ -1,20 +0,0 @@
1
- import { one } from 'one/vite'
2
- import { peachPlugin } from 'peachsim/vite'
3
- export default {
4
- root: import.meta.dirname,
5
- plugins: [
6
- one({
7
- web: { defaultRenderMode: 'spa' },
8
- native: {
9
- bundler: 'vite',
10
- app: {
11
- name: 'KotlinImports',
12
- scheme: 'kotlinimports',
13
- android: { applicationId: 'dev.contrast.kotlinimports' },
14
- },
15
- },
16
- }),
17
- peachPlugin(),
18
- ],
19
- server: { host: '0.0.0.0' },
20
- }
@@ -1,30 +0,0 @@
1
- plugins {
2
- id("com.android.application")
3
- id("org.jetbrains.kotlin.android")
4
- id("org.jetbrains.kotlin.plugin.compose")
5
- }
6
-
7
- android {
8
- namespace = "dev.contrast.kotlinapp"
9
- compileSdk = 37
10
- defaultConfig {
11
- applicationId = "dev.contrast.kotlinapp"
12
- minSdk = 24
13
- targetSdk = 37
14
- versionCode = 1
15
- versionName = "1"
16
- }
17
- buildFeatures { compose = true }
18
- compileOptions {
19
- sourceCompatibility = JavaVersion.VERSION_17
20
- targetCompatibility = JavaVersion.VERSION_17
21
- }
22
- kotlinOptions { jvmTarget = "17" }
23
- }
24
-
25
- dependencies {
26
- implementation("androidx.activity:activity-compose:1.13.0")
27
- implementation("androidx.compose.ui:ui:1.13.0-alpha02")
28
- implementation("androidx.compose.foundation:foundation:1.13.0-alpha02")
29
- implementation("androidx.compose.material3:material3:1.5.0-alpha27")
30
- }
@@ -1,13 +0,0 @@
1
- <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
- <application
3
- android:name=".ProbeApplication"
4
- android:label="Kotlin app"
5
- android:theme="@android:style/Theme.Material.Light.NoActionBar">
6
- <activity android:name=".MainActivity" android:exported="true">
7
- <intent-filter>
8
- <action android:name="android.intent.action.MAIN" />
9
- <category android:name="android.intent.category.LAUNCHER" />
10
- </intent-filter>
11
- </activity>
12
- </application>
13
- </manifest>
@@ -1,60 +0,0 @@
1
- package dev.contrast.kotlinapp
2
-
3
- import android.os.Bundle
4
- import androidx.activity.ComponentActivity
5
- import androidx.activity.compose.setContent
6
- import androidx.compose.foundation.background
7
- import androidx.compose.foundation.layout.Arrangement
8
- import androidx.compose.foundation.layout.Column
9
- import androidx.compose.foundation.layout.fillMaxSize
10
- import androidx.compose.foundation.layout.padding
11
- import androidx.compose.foundation.layout.safeDrawingPadding
12
- import androidx.compose.material3.Button
13
- import androidx.compose.material3.Text
14
- import androidx.compose.runtime.Composable
15
- import androidx.compose.runtime.LaunchedEffect
16
- import androidx.compose.runtime.SideEffect
17
- import androidx.compose.runtime.getValue
18
- import androidx.compose.runtime.mutableIntStateOf
19
- import androidx.compose.runtime.remember
20
- import androidx.compose.runtime.setValue
21
- import androidx.compose.ui.Modifier
22
- import androidx.compose.ui.graphics.Color
23
- import androidx.compose.ui.platform.testTag
24
- import androidx.compose.ui.unit.dp
25
-
26
- class MainActivity : ComponentActivity() {
27
- override fun onCreate(savedInstanceState: Bundle?) {
28
- super.onCreate(savedInstanceState)
29
- Probe.log += "activity.onCreate ${intent.action}"
30
- setContent { ProbeScreen(content = "first", replace = { replaceContent() }) }
31
- }
32
-
33
- // a second setContent on the same activity: android reuses its ComposeView
34
- private fun replaceContent() {
35
- Probe.log += "activity.setContent"
36
- setContent { ProbeScreen(content = "second", replace = { replaceContent() }) }
37
- }
38
-
39
- override fun onStart() { super.onStart(); Probe.log += "activity.onStart" }
40
- override fun onPostCreate(savedInstanceState: Bundle?) { super.onPostCreate(savedInstanceState); Probe.log += "activity.onPostCreate" }
41
- override fun onResume() { super.onResume(); Probe.log += "activity.onResume" }
42
- override fun onPostResume() { super.onPostResume(); Probe.log += "activity.onPostResume" }
43
- }
44
-
45
- @Composable
46
- fun ProbeScreen(content: String, replace: () -> Unit) {
47
- var count by remember { mutableIntStateOf(0) }
48
- SideEffect { if ("compose" !in Probe.log) Probe.log += "compose" }
49
- LaunchedEffect(Unit) { Probe.log += "effect" }
50
- Column(
51
- Modifier.fillMaxSize().background(Color(0xFFE8EEF8)).safeDrawingPadding().padding(16.dp),
52
- verticalArrangement = Arrangement.spacedBy(12.dp),
53
- ) {
54
- Text("Content: $content", Modifier.testTag("content"))
55
- Text("Greeting: ${Probe.greeting}", Modifier.testTag("greeting"))
56
- Button(onClick = { count += 1 }, Modifier.testTag("count")) { Text("Count: $count") }
57
- Button(onClick = replace, Modifier.testTag("replace")) { Text("Replace content") }
58
- Text(Probe.log.joinToString("\n"), Modifier.testTag("log"))
59
- }
60
- }
@@ -1,18 +0,0 @@
1
- package dev.contrast.kotlinapp
2
-
3
- import android.app.Application
4
-
5
- // process globals the probe reads back: the cold-start order and a value only
6
- // the application sets before any activity exists.
7
- object Probe {
8
- val log = mutableListOf<String>()
9
- var greeting = "unset"
10
- }
11
-
12
- class ProbeApplication : Application() {
13
- override fun onCreate() {
14
- super.onCreate()
15
- Probe.log += "app.onCreate"
16
- Probe.greeting = "set by application"
17
- }
18
- }
@@ -1,5 +0,0 @@
1
- plugins {
2
- id("com.android.application") version "9.2.1" apply false
3
- id("org.jetbrains.kotlin.android") version "2.2.0" apply false
4
- id("org.jetbrains.kotlin.plugin.compose") version "2.2.0" apply false
5
- }
@@ -1,4 +0,0 @@
1
- android.useAndroidX=true
2
- android.builtInKotlin=false
3
- android.newDsl=false
4
- org.gradle.jvmargs=-Xmx2g
@@ -1,4 +0,0 @@
1
- pluginManagement { repositories { google(); mavenCentral(); gradlePluginPortal() } }
2
- dependencyResolutionManagement { repositories { google(); mavenCentral() } }
3
- rootProject.name = "KotlinApp"
4
- include(":app")
@@ -1,62 +0,0 @@
1
- package dev.contrast.kotlinapp
2
-
3
- import androidx.compose.animation.AnimatedVisibility
4
- import androidx.compose.animation.animateColorAsState
5
- import androidx.compose.animation.core.animateDpAsState
6
- import androidx.compose.foundation.background
7
- import androidx.compose.foundation.layout.Arrangement
8
- import androidx.compose.foundation.layout.Box
9
- import androidx.compose.foundation.layout.Column
10
- import androidx.compose.foundation.layout.fillMaxSize
11
- import androidx.compose.foundation.layout.fillMaxWidth
12
- import androidx.compose.foundation.layout.height
13
- import androidx.compose.foundation.layout.padding
14
- import androidx.compose.foundation.layout.safeDrawingPadding
15
- import androidx.compose.foundation.layout.width
16
- import androidx.compose.material3.Button
17
- import androidx.compose.material3.Text
18
- import androidx.compose.runtime.Composable
19
- import androidx.compose.runtime.LaunchedEffect
20
- import androidx.compose.runtime.withFrameNanos
21
- import androidx.compose.runtime.getValue
22
- import androidx.compose.runtime.mutableStateOf
23
- import androidx.compose.runtime.remember
24
- import androidx.compose.runtime.setValue
25
- import androidx.compose.ui.Modifier
26
- import androidx.compose.ui.graphics.Color
27
- import androidx.compose.ui.unit.dp
28
- import kotlin.math.roundToInt
29
-
30
- // a tap flips one state that AnimatedVisibility, animateDpAsState and
31
- // animateColorAsState each animate on the frame clock; the label reads the
32
- // animated width, so it settles only when the animation has finished. took
33
- // is the frame clock time and frame count from the flip to the width's arrival
34
- @Composable
35
- fun Anim() {
36
- var on by remember { mutableStateOf(false) }
37
- var flips by remember { mutableStateOf(0) }
38
- var took by remember { mutableStateOf("none") }
39
- val target = if (on) 240.dp else 80.dp
40
- val width by animateDpAsState(target, label = "width")
41
- LaunchedEffect(flips) {
42
- if (flips == 0) return@LaunchedEffect
43
- val start = withFrameNanos { it }
44
- var count = 0
45
- var end = start
46
- while (width != target) end = withFrameNanos { count += 1; it }
47
- took = "${(end - start) / 1_000_000}ms $count frames"
48
- }
49
- val color by animateColorAsState(if (on) Color(0xFF3F51B5) else Color(0xFFE91E63), label = "color")
50
- Column(
51
- Modifier.fillMaxSize().background(Color(0xFFE8EEF8)).safeDrawingPadding().padding(16.dp),
52
- verticalArrangement = Arrangement.spacedBy(12.dp),
53
- ) {
54
- Text("Anim: $on width ${if (width == target) "${target.value.roundToInt()}" else "moving"}")
55
- Button(onClick = { on = !on; flips += 1 }) { Text("Animate") }
56
- Text("Took: $took")
57
- Box(Modifier.width(width).height(48.dp).background(color))
58
- AnimatedVisibility(on) {
59
- Text("Panel", Modifier.fillMaxWidth().background(Color(0xFF009688)).padding(24.dp), color = Color.White)
60
- }
61
- }
62
- }
@@ -1,38 +0,0 @@
1
- package dev.contrast.kotlinapp
2
-
3
- import android.view.WindowInsetsController
4
- import androidx.compose.foundation.background
5
- import androidx.compose.foundation.layout.Arrangement
6
- import androidx.compose.foundation.layout.Column
7
- import androidx.compose.foundation.layout.fillMaxSize
8
- import androidx.compose.foundation.layout.padding
9
- import androidx.compose.foundation.layout.safeDrawingPadding
10
- import androidx.compose.material3.Button
11
- import androidx.compose.material3.Text
12
- import androidx.compose.runtime.Composable
13
- import androidx.compose.runtime.getValue
14
- import androidx.compose.runtime.mutableIntStateOf
15
- import androidx.compose.runtime.remember
16
- import androidx.compose.runtime.setValue
17
- import androidx.compose.ui.Modifier
18
- import androidx.compose.ui.graphics.Color
19
- import androidx.compose.ui.unit.dp
20
-
21
- @Composable
22
- internal fun BarBehavior(controller: WindowInsetsController) {
23
- var behavior by remember { mutableIntStateOf(controller.systemBarsBehavior) }
24
- Column(
25
- Modifier.fillMaxSize().background(Color(0xFFE8EEF8)).safeDrawingPadding().padding(16.dp),
26
- verticalArrangement = Arrangement.spacedBy(12.dp),
27
- ) {
28
- Text("Behavior: $behavior")
29
- Button(onClick = {
30
- controller.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
31
- behavior = controller.systemBarsBehavior
32
- }) { Text("Transient bars") }
33
- Button(onClick = {
34
- controller.systemBarsBehavior = WindowInsetsController.BEHAVIOR_DEFAULT
35
- behavior = controller.systemBarsBehavior
36
- }) { Text("Default bars") }
37
- }
38
- }
@@ -1,36 +0,0 @@
1
- package dev.contrast.kotlinapp
2
-
3
- import android.view.WindowInsetsController
4
- import androidx.compose.foundation.background
5
- import androidx.compose.foundation.layout.Arrangement
6
- import androidx.compose.foundation.layout.Column
7
- import androidx.compose.foundation.layout.WindowInsets
8
- import androidx.compose.foundation.layout.fillMaxSize
9
- import androidx.compose.foundation.layout.navigationBars
10
- import androidx.compose.foundation.layout.padding
11
- import androidx.compose.foundation.layout.safeDrawingPadding
12
- import androidx.compose.foundation.layout.statusBars
13
- import androidx.compose.material3.Button
14
- import androidx.compose.material3.Text
15
- import androidx.compose.runtime.Composable
16
- import androidx.compose.ui.Modifier
17
- import androidx.compose.ui.graphics.Color
18
- import androidx.compose.ui.platform.LocalDensity
19
- import androidx.compose.ui.unit.dp
20
-
21
- @Composable
22
- internal fun BarVisibility(controller: WindowInsetsController) {
23
- val density = LocalDensity.current
24
- val status = WindowInsets.statusBars.getTop(density)
25
- val navigation = WindowInsets.navigationBars.getBottom(density)
26
- Column(
27
- Modifier.fillMaxSize().background(Color(0xFFE8EEF8)).safeDrawingPadding().padding(16.dp),
28
- verticalArrangement = Arrangement.spacedBy(12.dp),
29
- ) {
30
- Text("Bars: status $status navigation $navigation")
31
- Button(onClick = { controller.hide(android.view.WindowInsets.Type.statusBars()) }) { Text("Hide status") }
32
- Button(onClick = { controller.hide(android.view.WindowInsets.Type.navigationBars()) }) { Text("Hide navigation") }
33
- Button(onClick = { controller.show(android.view.WindowInsets.Type.statusBars()) }) { Text("Show status") }
34
- Button(onClick = { controller.show(android.view.WindowInsets.Type.navigationBars()) }) { Text("Show navigation") }
35
- }
36
- }
@@ -1,50 +0,0 @@
1
- package dev.contrast.kotlinapp
2
-
3
- import androidx.compose.foundation.Image
4
- import androidx.compose.foundation.background
5
- import androidx.compose.foundation.layout.Arrangement
6
- import androidx.compose.foundation.layout.Column
7
- import androidx.compose.foundation.layout.Row
8
- import androidx.compose.foundation.layout.fillMaxSize
9
- import androidx.compose.foundation.layout.padding
10
- import androidx.compose.foundation.layout.safeDrawingPadding
11
- import androidx.compose.foundation.layout.size
12
- import androidx.compose.material3.Text
13
- import androidx.compose.runtime.Composable
14
- import androidx.compose.ui.Modifier
15
- import androidx.compose.ui.graphics.Color
16
- import androidx.compose.ui.graphics.ImageBitmap
17
- import androidx.compose.ui.graphics.painter.Painter
18
- import androidx.compose.ui.res.imageResource
19
- import androidx.compose.ui.res.painterResource
20
- import androidx.compose.ui.unit.dp
21
-
22
- // bitmap drawables: each one's size after the decoder scales it from its
23
- // density bucket to the display's, drawn at that size and stretched
24
- @Composable
25
- fun BitmapsScreen() {
26
- val photo = painterResource(R.drawable.photo)
27
- val plain = ImageBitmap.imageResource(R.drawable.plain)
28
- val raw = painterResource(R.drawable.raw)
29
- val near = painterResource(R.drawable.near)
30
- val far = painterResource(R.drawable.far)
31
- fun size(painter: Painter) = "${painter.intrinsicSize.width.toInt()}x${painter.intrinsicSize.height.toInt()}"
32
- Column(
33
- Modifier.fillMaxSize().background(Color(0xFFE8EEF8)).safeDrawingPadding().padding(16.dp),
34
- verticalArrangement = Arrangement.spacedBy(16.dp),
35
- ) {
36
- Text("Bitmaps: ${size(photo)} ${plain.width}x${plain.height} ${size(raw)} ${size(near)} ${size(far)}")
37
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
38
- Image(photo, "photo")
39
- Image(plain, "plain")
40
- Image(raw, "raw")
41
- Image(near, "near")
42
- Image(far, "far")
43
- }
44
- Row(horizontalArrangement = Arrangement.spacedBy(16.dp)) {
45
- Image(photo, "photo large", Modifier.size(120.dp, 90.dp))
46
- Image(plain, "plain large", Modifier.size(120.dp, 90.dp))
47
- Image(raw, "raw large", Modifier.size(120.dp, 90.dp))
48
- }
49
- }
50
- }
@@ -1,73 +0,0 @@
1
- package dev.contrast.kotlinapp
2
-
3
- import androidx.compose.foundation.background
4
- import androidx.compose.foundation.layout.Arrangement
5
- import androidx.compose.foundation.layout.Box
6
- import androidx.compose.foundation.layout.Column
7
- import androidx.compose.foundation.layout.fillMaxSize
8
- import androidx.compose.foundation.layout.fillMaxWidth
9
- import androidx.compose.foundation.layout.height
10
- import androidx.compose.foundation.layout.padding
11
- import androidx.compose.foundation.layout.safeDrawingPadding
12
- import androidx.compose.foundation.text.input.rememberTextFieldState
13
- import androidx.compose.material3.ExpandedFullScreenSearchBar
14
- import androidx.compose.material3.ExperimentalMaterial3Api
15
- import androidx.compose.material3.SearchBar
16
- import androidx.compose.material3.SearchBarDefaults
17
- import androidx.compose.material3.Text
18
- import androidx.compose.material3.carousel.HorizontalMultiBrowseCarousel
19
- import androidx.compose.material3.carousel.rememberCarouselState
20
- import androidx.compose.material3.rememberSearchBarState
21
- import androidx.compose.runtime.Composable
22
- import androidx.compose.runtime.getValue
23
- import androidx.compose.runtime.mutableStateOf
24
- import androidx.compose.runtime.remember
25
- import androidx.compose.runtime.rememberCoroutineScope
26
- import androidx.compose.runtime.setValue
27
- import androidx.compose.ui.Alignment
28
- import androidx.compose.ui.Modifier
29
- import androidx.compose.ui.graphics.Color
30
- import androidx.compose.ui.unit.dp
31
- import kotlinx.coroutines.launch
32
-
33
- // a search bar that expands over the screen and a multi browse carousel a
34
- // swipe advances, reported in one line
35
- @OptIn(ExperimentalMaterial3Api::class)
36
- @Composable
37
- fun Browse() {
38
- val search = rememberSearchBarState()
39
- val field = rememberTextFieldState()
40
- val scope = rememberCoroutineScope()
41
- var searched by remember { mutableStateOf("") }
42
- val carousel = rememberCarouselState { 8 }
43
- val colors = listOf(0xFF6750A4, 0xFF7D5260, 0xFF625B71, 0xFF386A20, 0xFF00639B, 0xFF8C4A00, 0xFF984061, 0xFF006A6A)
44
- Column(
45
- Modifier.fillMaxSize().background(Color(0xFFE8EEF8)).safeDrawingPadding().padding(16.dp),
46
- verticalArrangement = Arrangement.spacedBy(12.dp),
47
- ) {
48
- Text("Browse: ${carousel.currentItem} searched $searched ${search.currentValue}")
49
- val input = @Composable {
50
- SearchBarDefaults.InputField(
51
- searchBarState = search,
52
- textFieldState = field,
53
- onSearch = { searched = it; scope.launch { search.animateToCollapsed() } },
54
- placeholder = { Text("Find") },
55
- )
56
- }
57
- SearchBar(state = search, inputField = input)
58
- ExpandedFullScreenSearchBar(state = search, inputField = input) {
59
- Text("Suggestion", Modifier.padding(16.dp))
60
- }
61
- HorizontalMultiBrowseCarousel(
62
- state = carousel,
63
- preferredItemWidth = 186.dp,
64
- modifier = Modifier.fillMaxWidth().height(200.dp),
65
- itemSpacing = 8.dp,
66
- ) { index ->
67
- Box(
68
- Modifier.fillMaxSize().maskClip(SearchBarDefaults.inputFieldShape).background(Color(colors[index])),
69
- contentAlignment = Alignment.Center,
70
- ) { Text("Item $index", color = Color.White) }
71
- }
72
- }
73
- }
@@ -1,41 +0,0 @@
1
- package dev.contrast.kotlinapp
2
-
3
- import androidx.compose.foundation.background
4
- import androidx.compose.foundation.layout.Arrangement
5
- import androidx.compose.foundation.layout.Box
6
- import androidx.compose.foundation.layout.Column
7
- import androidx.compose.foundation.layout.Row
8
- import androidx.compose.foundation.layout.fillMaxSize
9
- import androidx.compose.foundation.layout.padding
10
- import androidx.compose.foundation.layout.safeDrawingPadding
11
- import androidx.compose.foundation.layout.size
12
- import androidx.compose.material3.Text
13
- import androidx.compose.runtime.Composable
14
- import androidx.compose.ui.Modifier
15
- import androidx.compose.ui.graphics.Color
16
- import androidx.compose.ui.platform.LocalContext
17
- import androidx.compose.ui.res.colorResource
18
- import androidx.compose.ui.unit.dp
19
-
20
- // color resources through colorResource and the context: each swatch and its
21
- // ARGB, in the day values and after a night relaunch in values-night
22
- @Composable
23
- fun ColorsScreen() {
24
- val context = LocalContext.current
25
- val ids = listOf(R.color.brand, R.color.short_rgb, R.color.alpha, R.color.short_argb, R.color.alias, R.color.framework)
26
- Column(
27
- Modifier.fillMaxSize().background(Color(0xFFE8EEF8)).safeDrawingPadding().padding(16.dp),
28
- verticalArrangement = Arrangement.spacedBy(8.dp),
29
- ) {
30
- Text("Colors: " + context.getColor(R.color.brand).toUInt().toString(16))
31
- Text(ids.joinToString(" ") { context.getColor(it).toUInt().toString(16) })
32
- Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) {
33
- Box(Modifier.size(48.dp).background(colorResource(R.color.brand)))
34
- Box(Modifier.size(48.dp).background(colorResource(R.color.short_rgb)))
35
- Box(Modifier.size(48.dp).background(colorResource(R.color.alpha)))
36
- Box(Modifier.size(48.dp).background(colorResource(R.color.short_argb)))
37
- Box(Modifier.size(48.dp).background(colorResource(R.color.alias)))
38
- Box(Modifier.size(48.dp).background(colorResource(R.color.framework)))
39
- }
40
- }
41
- }
@@ -1,62 +0,0 @@
1
- package dev.contrast.kotlinapp
2
-
3
- import androidx.compose.foundation.background
4
- import androidx.compose.foundation.layout.Arrangement
5
- import androidx.compose.foundation.layout.Column
6
- import androidx.compose.foundation.layout.Row
7
- import androidx.compose.foundation.layout.fillMaxSize
8
- import androidx.compose.foundation.layout.padding
9
- import androidx.compose.foundation.layout.safeDrawingPadding
10
- import androidx.compose.material3.AssistChip
11
- import androidx.compose.material3.Badge
12
- import androidx.compose.material3.BadgedBox
13
- import androidx.compose.material3.DatePicker
14
- import androidx.compose.material3.ExperimentalMaterial3Api
15
- import androidx.compose.material3.ExtendedFloatingActionButton
16
- import androidx.compose.material3.SegmentedButton
17
- import androidx.compose.material3.SegmentedButtonDefaults
18
- import androidx.compose.material3.SingleChoiceSegmentedButtonRow
19
- import androidx.compose.material3.SuggestionChip
20
- import androidx.compose.material3.Text
21
- import androidx.compose.material3.rememberDatePickerState
22
- import androidx.compose.runtime.Composable
23
- import androidx.compose.runtime.getValue
24
- import androidx.compose.runtime.mutableStateOf
25
- import androidx.compose.runtime.remember
26
- import androidx.compose.runtime.setValue
27
- import androidx.compose.ui.Modifier
28
- import androidx.compose.ui.graphics.Color
29
- import androidx.compose.ui.unit.dp
30
-
31
- // segmented buttons a tap selects, chips, a badge, an extended FAB and a date
32
- // picker showing a fixed past month, so no today marker depends on the clock
33
- @OptIn(ExperimentalMaterial3Api::class)
34
- @Composable
35
- fun Controls() {
36
- val options = listOf("Day", "Week", "Month")
37
- var picked by remember { mutableStateOf(0) }
38
- // march 2020, utc
39
- val dates = rememberDatePickerState(initialSelectedDateMillis = 1584230400000L, initialDisplayedMonthMillis = 1583020800000L)
40
- Column(
41
- Modifier.fillMaxSize().background(Color(0xFFE8EEF8)).safeDrawingPadding().padding(16.dp),
42
- verticalArrangement = Arrangement.spacedBy(12.dp),
43
- ) {
44
- Text("Range: ${options[picked]}")
45
- SingleChoiceSegmentedButtonRow {
46
- options.forEachIndexed { index, label ->
47
- SegmentedButton(
48
- selected = picked == index,
49
- onClick = { picked = index },
50
- shape = SegmentedButtonDefaults.itemShape(index, options.size),
51
- ) { Text(label) }
52
- }
53
- }
54
- Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) {
55
- AssistChip(onClick = {}, label = { Text("Assist") })
56
- SuggestionChip(onClick = {}, label = { Text("Suggest") })
57
- BadgedBox(badge = { Badge { Text("8") } }, Modifier.padding(top = 12.dp, start = 8.dp)) { Text("Inbox") }
58
- }
59
- ExtendedFloatingActionButton(onClick = {}) { Text("Compose") }
60
- DatePicker(dates, showModeToggle = false)
61
- }
62
- }
@@ -1,56 +0,0 @@
1
- package dev.contrast.kotlinapp
2
-
3
- import androidx.compose.foundation.background
4
- import androidx.compose.foundation.gestures.detectDragGestures
5
- import androidx.compose.foundation.layout.Arrangement
6
- import androidx.compose.foundation.layout.Box
7
- import androidx.compose.foundation.layout.Column
8
- import androidx.compose.foundation.layout.fillMaxSize
9
- import androidx.compose.foundation.layout.fillMaxWidth
10
- import androidx.compose.foundation.layout.height
11
- import androidx.compose.foundation.layout.offset
12
- import androidx.compose.foundation.layout.padding
13
- import androidx.compose.foundation.layout.safeDrawingPadding
14
- import androidx.compose.foundation.layout.size
15
- import androidx.compose.foundation.shape.CircleShape
16
- import androidx.compose.material3.Slider
17
- import androidx.compose.material3.Text
18
- import androidx.compose.runtime.Composable
19
- import androidx.compose.runtime.getValue
20
- import androidx.compose.runtime.mutableFloatStateOf
21
- import androidx.compose.runtime.mutableStateOf
22
- import androidx.compose.runtime.remember
23
- import androidx.compose.runtime.setValue
24
- import androidx.compose.ui.Modifier
25
- import androidx.compose.ui.geometry.Offset
26
- import androidx.compose.ui.graphics.Color
27
- import androidx.compose.ui.input.pointer.pointerInput
28
- import androidx.compose.ui.platform.LocalDensity
29
- import androidx.compose.ui.platform.testTag
30
- import androidx.compose.ui.unit.IntOffset
31
- import androidx.compose.ui.unit.dp
32
- import kotlin.math.roundToInt
33
-
34
- // a puck detectDragGestures moves, reporting the drag it received after the
35
- // touch slop in dp, and a slider a drag sets
36
- @Composable
37
- fun Drag() {
38
- var puck by remember { mutableStateOf(Offset.Zero) }
39
- var drags by remember { mutableStateOf(0) }
40
- var slider by remember { mutableFloatStateOf(0f) }
41
- val density = LocalDensity.current.density
42
- Column(
43
- Modifier.fillMaxSize().background(Color(0xFFE8EEF8)).safeDrawingPadding().padding(16.dp),
44
- verticalArrangement = Arrangement.spacedBy(12.dp),
45
- ) {
46
- Text("Drag: ${(puck.x / density).roundToInt()},${(puck.y / density).roundToInt()} ends $drags slider ${(slider * 100).roundToInt()}")
47
- Box(
48
- Modifier.fillMaxWidth().height(300.dp).background(Color(0xFFCFD8DC)).testTag("pad").pointerInput(Unit) {
49
- detectDragGestures(onDragEnd = { drags += 1 }) { change, amount -> change.consume(); puck += amount }
50
- },
51
- ) {
52
- Box(Modifier.offset { IntOffset(puck.x.roundToInt(), puck.y.roundToInt()) }.size(48.dp).background(Color(0xFF3F51B5), CircleShape))
53
- }
54
- Slider(slider, { slider = it }, Modifier.testTag("slider"))
55
- }
56
- }