| author | |
| committer | |
| log | ac3a331918b7b25271058ae7e12f1e15772fb3de |
| tree | 3abb9c2a8042692028aae45ae4b76c1a80cdc264 |
| parent | 8fc7f22941969d7a2c06929dc29aa86ae1b02f33 |
| signature | Signed by PGP key B5690EEEBB952194 |
4 files changed, 48 insertions(+), 729 deletions(-)
experiments/messages-glass-lab/MessagesGlassLab.xcodeproj/project.pbxproj deleted-285| ... | ... | @@ -1,285 +0,0 @@ |
| 1 | // !$*UTF8*$! | |
| 2 | { | |
| 3 | 	archiveVersion = 1; | |
| 4 | 	classes = { | |
| 5 | 	}; | |
| 6 | 	objectVersion = 77; | |
| 7 | 	objects = { | |
| 8 | ||
| 9 | /* Begin PBXBuildFile section */ | |
| 10 | 		8A01A0012D10000100A00001 /* MessagesGlassLabApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A01A0002D10000100A00001 /* MessagesGlassLabApp.swift */; }; | |
| 11 | 		8A01A0032D10000100A00001 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A01A0022D10000100A00001 /* ContentView.swift */; }; | |
| 12 | /* End PBXBuildFile section */ | |
| 13 | ||
| 14 | /* Begin PBXFileReference section */ | |
| 15 | 		8A01A0002D10000100A00001 /* MessagesGlassLabApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessagesGlassLabApp.swift; sourceTree = "<group>"; }; | |
| 16 | 		8A01A0022D10000100A00001 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; }; | |
| 17 | 		8A01A0102D10000100A00001 /* MessagesGlassLab.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MessagesGlassLab.app; sourceTree = BUILT_PRODUCTS_DIR; }; | |
| 18 | /* End PBXFileReference section */ | |
| 19 | ||
| 20 | 		8A01A0202D10000100A00001 /* MessagesGlassLab */ = { | |
| 21 | 			isa = PBXGroup; | |
| 22 | 			children = ( | |
| 23 | 				8A01A0002D10000100A00001 /* MessagesGlassLabApp.swift */, | |
| 24 | 				8A01A0022D10000100A00001 /* ContentView.swift */, | |
| 25 | 			); | |
| 26 | 			path = MessagesGlassLab; | |
| 27 | 			sourceTree = "<group>"; | |
| 28 | 		}; | |
| 29 | ||
| 30 | /* Begin PBXFrameworksBuildPhase section */ | |
| 31 | 		8A01A0112D10000100A00001 /* Frameworks */ = { | |
| 32 | 			isa = PBXFrameworksBuildPhase; | |
| 33 | 			buildActionMask = 2147483647; | |
| 34 | 			files = ( | |
| 35 | 			); | |
| 36 | 			runOnlyForDeploymentPostprocessing = 0; | |
| 37 | 		}; | |
| 38 | /* End PBXFrameworksBuildPhase section */ | |
| 39 | ||
| 40 | /* Begin PBXGroup section */ | |
| 41 | 		8A01A0302D10000100A00001 = { | |
| 42 | 			isa = PBXGroup; | |
| 43 | 			children = ( | |
| 44 | 				8A01A0202D10000100A00001 /* MessagesGlassLab */, | |
| 45 | 				8A01A0312D10000100A00001 /* Products */, | |
| 46 | 			); | |
| 47 | 			sourceTree = "<group>"; | |
| 48 | 		}; | |
| 49 | 		8A01A0312D10000100A00001 /* Products */ = { | |
| 50 | 			isa = PBXGroup; | |
| 51 | 			children = ( | |
| 52 | 				8A01A0102D10000100A00001 /* MessagesGlassLab.app */, | |
| 53 | 			); | |
| 54 | 			name = Products; | |
| 55 | 			sourceTree = "<group>"; | |
| 56 | 		}; | |
| 57 | /* End PBXGroup section */ | |
| 58 | ||
| 59 | /* Begin PBXNativeTarget section */ | |
| 60 | 		8A01A0402D10000100A00001 /* MessagesGlassLab */ = { | |
| 61 | 			isa = PBXNativeTarget; | |
| 62 | 			buildConfigurationList = 8A01A0502D10000100A00001 /* Build configuration list for PBXNativeTarget "MessagesGlassLab" */; | |
| 63 | 			buildPhases = ( | |
| 64 | 				8A01A0412D10000100A00001 /* Sources */, | |
| 65 | 				8A01A0112D10000100A00001 /* Frameworks */, | |
| 66 | 				8A01A0422D10000100A00001 /* Resources */, | |
| 67 | 			); | |
| 68 | 			buildRules = ( | |
| 69 | 			); | |
| 70 | 			dependencies = ( | |
| 71 | 			); | |
| 72 | 			name = MessagesGlassLab; | |
| 73 | 			packageProductDependencies = ( | |
| 74 | 			); | |
| 75 | 			productName = MessagesGlassLab; | |
| 76 | 			productReference = 8A01A0102D10000100A00001 /* MessagesGlassLab.app */; | |
| 77 | 			productType = "com.apple.product-type.application"; | |
| 78 | 		}; | |
| 79 | /* End PBXNativeTarget section */ | |
| 80 | ||
| 81 | /* Begin PBXProject section */ | |
| 82 | 		8A01A0602D10000100A00001 /* Project object */ = { | |
| 83 | 			isa = PBXProject; | |
| 84 | 			attributes = { | |
| 85 | 				BuildIndependentTargetsInParallel = 1; | |
| 86 | 				LastSwiftUpdateCheck = 2700; | |
| 87 | 				LastUpgradeCheck = 2700; | |
| 88 | 				TargetAttributes = { | |
| 89 | 					8A01A0402D10000100A00001 = { | |
| 90 | 						CreatedOnToolsVersion = 27.0; | |
| 91 | 					}; | |
| 92 | 				}; | |
| 93 | 			}; | |
| 94 | 			buildConfigurationList = 8A01A0612D10000100A00001 /* Build configuration list for PBXProject "MessagesGlassLab" */; | |
| 95 | 			compatibilityVersion = "Xcode 16.0"; | |
| 96 | 			developmentRegion = en; | |
| 97 | 			hasScannedForEncodings = 0; | |
| 98 | 			knownRegions = ( | |
| 99 | 				en, | |
| 100 | 				Base, | |
| 101 | 			); | |
| 102 | 			mainGroup = 8A01A0302D10000100A00001; | |
| 103 | 			minimizedProjectReferenceProxies = 1; | |
| 104 | 			preferredProjectObjectVersion = 77; | |
| 105 | 			productRefGroup = 8A01A0312D10000100A00001 /* Products */; | |
| 106 | 			projectDirPath = ""; | |
| 107 | 			projectRoot = ""; | |
| 108 | 			targets = ( | |
| 109 | 				8A01A0402D10000100A00001 /* MessagesGlassLab */, | |
| 110 | 			); | |
| 111 | 		}; | |
| 112 | /* End PBXProject section */ | |
| 113 | ||
| 114 | /* Begin PBXResourcesBuildPhase section */ | |
| 115 | 		8A01A0422D10000100A00001 /* Resources */ = { | |
| 116 | 			isa = PBXResourcesBuildPhase; | |
| 117 | 			buildActionMask = 2147483647; | |
| 118 | 			files = ( | |
| 119 | 			); | |
| 120 | 			runOnlyForDeploymentPostprocessing = 0; | |
| 121 | 		}; | |
| 122 | /* End PBXResourcesBuildPhase section */ | |
| 123 | ||
| 124 | /* Begin PBXSourcesBuildPhase section */ | |
| 125 | 		8A01A0412D10000100A00001 /* Sources */ = { | |
| 126 | 			isa = PBXSourcesBuildPhase; | |
| 127 | 			buildActionMask = 2147483647; | |
| 128 | 			files = ( | |
| 129 | 				8A01A0012D10000100A00001 /* MessagesGlassLabApp.swift in Sources */, | |
| 130 | 				8A01A0032D10000100A00001 /* ContentView.swift in Sources */, | |
| 131 | 			); | |
| 132 | 			runOnlyForDeploymentPostprocessing = 0; | |
| 133 | 		}; | |
| 134 | /* End PBXSourcesBuildPhase section */ | |
| 135 | ||
| 136 | /* Begin XCBuildConfiguration section */ | |
| 137 | 		8A01A0622D10000100A00001 /* Debug */ = { | |
| 138 | 			isa = XCBuildConfiguration; | |
| 139 | 			buildSettings = { | |
| 140 | 				ALWAYS_SEARCH_USER_PATHS = NO; | |
| 141 | 				CLANG_ENABLE_MODULES = YES; | |
| 142 | 				CLANG_ENABLE_OBJC_ARC = YES; | |
| 143 | 				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; | |
| 144 | 				CLANG_WARN_BOOL_CONVERSION = YES; | |
| 145 | 				CLANG_WARN_COMMA = YES; | |
| 146 | 				CLANG_WARN_CONSTANT_CONVERSION = YES; | |
| 147 | 				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; | |
| 148 | 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; | |
| 149 | 				CLANG_WARN_DOCUMENTATION_COMMENTS = YES; | |
| 150 | 				CLANG_WARN_EMPTY_BODY = YES; | |
| 151 | 				CLANG_WARN_ENUM_CONVERSION = YES; | |
| 152 | 				CLANG_WARN_INFINITE_RECURSION = YES; | |
| 153 | 				CLANG_WARN_INT_CONVERSION = YES; | |
| 154 | 				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; | |
| 155 | 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; | |
| 156 | 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; | |
| 157 | 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; | |
| 158 | 				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; | |
| 159 | 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; | |
| 160 | 				CLANG_WARN_STRICT_PROTOTYPES = YES; | |
| 161 | 				CLANG_WARN_SUSPICIOUS_MOVE = YES; | |
| 162 | 				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; | |
| 163 | 				CLANG_WARN_UNREACHABLE_CODE = YES; | |
| 164 | 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; | |
| 165 | 				COPY_PHASE_STRIP = NO; | |
| 166 | 				DEBUG_INFORMATION_FORMAT = dwarf; | |
| 167 | 				ENABLE_STRICT_OBJC_MSGSEND = YES; | |
| 168 | 				ENABLE_TESTABILITY = YES; | |
| 169 | 				GCC_C_LANGUAGE_STANDARD = gnu17; | |
| 170 | 				GCC_DYNAMIC_NO_PIC = NO; | |
| 171 | 				GCC_NO_COMMON_BLOCKS = YES; | |
| 172 | 				GCC_OPTIMIZATION_LEVEL = 0; | |
| 173 | 				GCC_PREPROCESSOR_DEFINITIONS = ( | |
| 174 | 					"DEBUG=1", | |
| 175 | 					"$(inherited)", | |
| 176 | 				); | |
| 177 | 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | |
| 178 | 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; | |
| 179 | 				GCC_WARN_UNDECLARED_SELECTOR = YES; | |
| 180 | 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | |
| 181 | 				GCC_WARN_UNUSED_FUNCTION = YES; | |
| 182 | 				GCC_WARN_UNUSED_VARIABLE = YES; | |
| 183 | 				IPHONEOS_DEPLOYMENT_TARGET = 27.0; | |
| 184 | 				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; | |
| 185 | 				MTL_FAST_MATH = YES; | |
| 186 | 				ONLY_ACTIVE_ARCH = YES; | |
| 187 | 				SDKROOT = iphoneos; | |
| 188 | 				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; | |
| 189 | 				SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | |
| 190 | 				SWIFT_VERSION = 6.0; | |
| 191 | 			}; | |
| 192 | 			name = Debug; | |
| 193 | 		}; | |
| 194 | 		8A01A0632D10000100A00001 /* Release */ = { | |
| 195 | 			isa = XCBuildConfiguration; | |
| 196 | 			buildSettings = { | |
| 197 | 				ALWAYS_SEARCH_USER_PATHS = NO; | |
| 198 | 				CLANG_ENABLE_MODULES = YES; | |
| 199 | 				CLANG_ENABLE_OBJC_ARC = YES; | |
| 200 | 				COPY_PHASE_STRIP = NO; | |
| 201 | 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; | |
| 202 | 				ENABLE_NS_ASSERTIONS = NO; | |
| 203 | 				GCC_C_LANGUAGE_STANDARD = gnu17; | |
| 204 | 				IPHONEOS_DEPLOYMENT_TARGET = 27.0; | |
| 205 | 				MTL_FAST_MATH = YES; | |
| 206 | 				SDKROOT = iphoneos; | |
| 207 | 				SWIFT_COMPILATION_MODE = wholemodule; | |
| 208 | 				SWIFT_VERSION = 6.0; | |
| 209 | 				VALIDATE_PRODUCT = YES; | |
| 210 | 			}; | |
| 211 | 			name = Release; | |
| 212 | 		}; | |
| 213 | 		8A01A0512D10000100A00001 /* Debug */ = { | |
| 214 | 			isa = XCBuildConfiguration; | |
| 215 | 			buildSettings = { | |
| 216 | 				ASSETCATALOG_COMPILER_APPICON_NAME = ""; | |
| 217 | 				CODE_SIGNING_ALLOWED = NO; | |
| 218 | 				CODE_SIGNING_REQUIRED = NO; | |
| 219 | 				CODE_SIGN_STYLE = Automatic; | |
| 220 | 				DEVELOPMENT_TEAM = ""; | |
| 221 | 				GENERATE_INFOPLIST_FILE = YES; | |
| 222 | 				INFOPLIST_KEY_CFBundleDisplayName = "Messages Glass Lab"; | |
| 223 | 				INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; | |
| 224 | 				INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; | |
| 225 | 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; | |
| 226 | 				INFOPLIST_KEY_UILaunchScreen_Generation = YES; | |
| 227 | 				INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; | |
| 228 | 				IPHONEOS_DEPLOYMENT_TARGET = 27.0; | |
| 229 | 				PRODUCT_BUNDLE_IDENTIFIER = com.t3tools.messagesglasslab; | |
| 230 | 				PRODUCT_NAME = "$(TARGET_NAME)"; | |
| 231 | 				SWIFT_EMIT_LOC_STRINGS = YES; | |
| 232 | 				SWIFT_VERSION = 6.0; | |
| 233 | 				TARGETED_DEVICE_FAMILY = "1,2"; | |
| 234 | 			}; | |
| 235 | 			name = Debug; | |
| 236 | 		}; | |
| 237 | 		8A01A0522D10000100A00001 /* Release */ = { | |
| 238 | 			isa = XCBuildConfiguration; | |
| 239 | 			buildSettings = { | |
| 240 | 				ASSETCATALOG_COMPILER_APPICON_NAME = ""; | |
| 241 | 				CODE_SIGNING_ALLOWED = NO; | |
| 242 | 				CODE_SIGNING_REQUIRED = NO; | |
| 243 | 				CODE_SIGN_STYLE = Automatic; | |
| 244 | 				DEVELOPMENT_TEAM = ""; | |
| 245 | 				GENERATE_INFOPLIST_FILE = YES; | |
| 246 | 				INFOPLIST_KEY_CFBundleDisplayName = "Messages Glass Lab"; | |
| 247 | 				INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; | |
| 248 | 				INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; | |
| 249 | 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; | |
| 250 | 				INFOPLIST_KEY_UILaunchScreen_Generation = YES; | |
| 251 | 				INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; | |
| 252 | 				IPHONEOS_DEPLOYMENT_TARGET = 27.0; | |
| 253 | 				PRODUCT_BUNDLE_IDENTIFIER = com.t3tools.messagesglasslab; | |
| 254 | 				PRODUCT_NAME = "$(TARGET_NAME)"; | |
| 255 | 				SWIFT_EMIT_LOC_STRINGS = YES; | |
| 256 | 				SWIFT_VERSION = 6.0; | |
| 257 | 				TARGETED_DEVICE_FAMILY = "1,2"; | |
| 258 | 			}; | |
| 259 | 			name = Release; | |
| 260 | 		}; | |
| 261 | /* End XCBuildConfiguration section */ | |
| 262 | ||
| 263 | /* Begin XCConfigurationList section */ | |
| 264 | 		8A01A0612D10000100A00001 /* Build configuration list for PBXProject "MessagesGlassLab" */ = { | |
| 265 | 			isa = XCConfigurationList; | |
| 266 | 			buildConfigurations = ( | |
| 267 | 				8A01A0622D10000100A00001 /* Debug */, | |
| 268 | 				8A01A0632D10000100A00001 /* Release */, | |
| 269 | 			); | |
| 270 | 			defaultConfigurationIsVisible = 0; | |
| 271 | 			defaultConfigurationName = Debug; | |
| 272 | 		}; | |
| 273 | 		8A01A0502D10000100A00001 /* Build configuration list for PBXNativeTarget "MessagesGlassLab" */ = { | |
| 274 | 			isa = XCConfigurationList; | |
| 275 | 			buildConfigurations = ( | |
| 276 | 				8A01A0512D10000100A00001 /* Debug */, | |
| 277 | 				8A01A0522D10000100A00001 /* Release */, | |
| 278 | 			); | |
| 279 | 			defaultConfigurationIsVisible = 0; | |
| 280 | 			defaultConfigurationName = Debug; | |
| 281 | 		}; | |
| 282 | /* End XCConfigurationList section */ | |
| 283 | 	}; | |
| 284 | 	rootObject = 8A01A0602D10000100A00001 /* Project object */; | |
| 285 | } |
experiments/messages-glass-lab/MessagesGlassLab/ContentView.swift deleted-386| ... | ... | @@ -1,386 +0,0 @@ |
| 1 | import SwiftUI | |
| 2 | ||
| 3 | struct LabThread: Identifiable, Hashable { | |
| 4 | let id = UUID() | |
| 5 | let title: String | |
| 6 | let subtitle: String | |
| 7 | let time: String | |
| 8 | let initials: String | |
| 9 | let tint: Color | |
| 10 | let preview: String | |
| 11 | } | |
| 12 | ||
| 13 | private let threads: [LabThread] = [ | |
| 14 | .init(title: "Markdown rendering test", subtitle: "t3code · Julius’s Mac mini", time: "14h", initials: "MD", tint: .blue, preview: "Renderer stress test, terminal snippets, code blocks, and a very long markdown transcript."), | |
| 15 | .init(title: "iPad rectly text correction", subtitle: "Julius’s Mac mini · main", time: "16h", initials: "IP", tint: .purple, preview: "Fix iPad layout, search behavior, hardware keyboard, and trackpad scrolling."), | |
| 16 | .init(title: "Preview Webview Persists Off Panel", subtitle: "codething-mvp · Julius’s MacBook Pro", time: "22m", initials: "PW", tint: .teal, preview: "The browser preview should not leak outside the active panel when switching threads."), | |
| 17 | .init(title: "Add file preview action buttons", subtitle: "codex/connection-preview", time: "10d", initials: "FP", tint: .orange, preview: "Open files at exact lines and expose copy/open actions in the renderer."), | |
| 18 | .init(title: "Investigate v2 pipeline slowdown", subtitle: "codex-turn-runner", time: "1d", initials: "V2", tint: .gray, preview: "Compare orchestration traces and find why streamed events are delayed under load."), | |
| 19 | .init(title: "Fix dark-mode header glass", subtitle: "t3code/ipad-responsive-mobile-layout", time: "2h", initials: "DG", tint: .indigo, preview: "Compare dark scroll-edge material against Messages and Mail, then map the behavior back to React Native Screens."), | |
| 20 | .init(title: "Magic Keyboard sidebar scroll", subtitle: "mobile/input-polish", time: "3h", initials: "MK", tint: .cyan, preview: "Trackpad scrolling should remain fluid while swipe actions still work for touch gestures."), | |
| 21 | .init(title: "Terminal tab key routing", subtitle: "terminal/native-pty", time: "5h", initials: "⌘", tint: .green, preview: "Hardware Tab should go to the terminal session instead of escaping to the thread search field."), | |
| 22 | .init(title: "Diff renderer split inspector", subtitle: "review-diff/native", time: "8h", initials: "Δ", tint: .red, preview: "Keep file navigation, sticky headers, and selected hunk state stable in a three-column iPad layout."), | |
| 23 | .init(title: "Composer glass affordance", subtitle: "composer/liquid-glass", time: "9h", initials: "CG", tint: .pink, preview: "Prototype a bottom composer that feels native without covering too much content while scrolling."), | |
| 24 | .init(title: "Search placement audit", subtitle: "navigation/native-search", time: "11h", initials: "SP", tint: .mint, preview: "Validate whether search belongs in the bottom toolbar on iPhone and the sidebar chrome on iPad."), | |
| 25 | .init(title: "Thread row density pass", subtitle: "home/messages-list", time: "12h", initials: "TR", tint: .brown, preview: "Tune row height, separators, preview text, chevrons, and status glyphs to match native list rhythm."), | |
| 26 | .init(title: "Files navigator polish", subtitle: "files/inspector", time: "1d", initials: "FN", tint: .yellow, preview: "Make the file explorer feel like an iPad side inspector instead of a cramped web sidebar."), | |
| 27 | .init(title: "Toolbar grouping experiment", subtitle: "native-toolbar-glass", time: "2d", initials: "TB", tint: .blue.opacity(0.7), preview: "Compare separate glass buttons with merged toolbar groups and spacing behavior."), | |
| 28 | .init(title: "Scroll-edge fade comparison", subtitle: "swiftui/messages-lab", time: "3d", initials: "SE", tint: .purple.opacity(0.8), preview: "Record scroll positions to see where native headers start becoming visible over content."), | |
| 29 | .init(title: "iPad sidebar selection state", subtitle: "split-view/sidebar", time: "4d", initials: "SS", tint: .teal.opacity(0.75), preview: "Find the right selected-row treatment for dark and light mode in a persistent sidebar."), | |
| 30 | .init(title: "Preview webview panel bug", subtitle: "preview/browser", time: "5d", initials: "WB", tint: .orange.opacity(0.8), preview: "Ensure preview browser surfaces stay clipped to the active detail pane during navigation."), | |
| 31 | .init(title: "Keyboard shortcuts overlay", subtitle: "hardware-keyboard", time: "6d", initials: "KS", tint: .gray.opacity(0.9), preview: "Expose discoverable commands and keep focus behavior aligned with iPadOS keyboard conventions."), | |
| 32 | .init(title: "Thread loading skeleton", subtitle: "mobile/perceived-performance", time: "1w", initials: "LS", tint: .green.opacity(0.75), preview: "Replace jarring empty states with native-feeling loading rows while snapshots hydrate."), | |
| 33 | .init(title: "Connection recovery UX", subtitle: "lan-pairing", time: "2w", initials: "CR", tint: .red.opacity(0.75), preview: "Make reconnect banners and retry affordances less intrusive during scroll and composition."), | |
| 34 | ] | |
| 35 | ||
| 36 | struct ContentView: View { | |
| 37 | @Environment(\.horizontalSizeClass) private var horizontalSizeClass | |
| 38 | @State private var searchText = "" | |
| 39 | @State private var selectedThread: LabThread? = threads[0] | |
| 40 | ||
| 41 | var body: some View { | |
| 42 | if horizontalSizeClass == .regular { | |
| 43 | NativeSplitLab(searchText: $searchText, selectedThread: $selectedThread) | |
| 44 | } else { | |
| 45 | NativePhoneLab(searchText: $searchText, selectedThread: $selectedThread) | |
| 46 | } | |
| 47 | } | |
| 48 | } | |
| 49 | ||
| 50 | private var filteredThreads: [LabThread] { | |
| 51 | threads | |
| 52 | } | |
| 53 | ||
| 54 | private let glassDebugCodeLines: [String] = [ | |
| 55 | "# Native RNS glass debug route", | |
| 56 | "", | |
| 57 | "This screen intentionally avoids Expo Router headers.", | |
| 58 | "The native header below is owned by react-native-screens.", | |
| 59 | "", | |
| 60 | "Expected iOS 26 behavior:", | |
| 61 | "- At rest: header should feel like app background", | |
| 62 | "- While scrolled: content should blur behind the header", | |
| 63 | "- No gray custom overlay", | |
| 64 | "- No JS blur view", | |
| 65 | "", | |
| 66 | "Scroll edge effect should sample actual content:", | |
| 67 | "const header = { translucent: true }", | |
| 68 | "const scrollEdgeEffects = { top: 'soft' }", | |
| 69 | "", | |
| 70 | "Bright rows below make sampling failures obvious.", | |
| 71 | "", | |
| 72 | "node_modules", | |
| 73 | "/.pnp", | |
| 74 | ".pnp.*", | |
| 75 | ".yarn/*", | |
| 76 | "!.yarn/patches", | |
| 77 | "!.yarn/plugins", | |
| 78 | "!.yarn/releases", | |
| 79 | "!.yarn/versions", | |
| 80 | "", | |
| 81 | "# testing", | |
| 82 | "/coverage", | |
| 83 | ".convex", | |
| 84 | "e2e/.local-dev.json", | |
| 85 | "e2e/playwright-report", | |
| 86 | "e2e/test-results", | |
| 87 | "", | |
| 88 | "# app surfaces", | |
| 89 | "threads", | |
| 90 | "terminal", | |
| 91 | "diff renderer", | |
| 92 | "file explorer", | |
| 93 | "composer", | |
| 94 | "native header", | |
| 95 | "scroll edge", | |
| 96 | "liquid glass", | |
| 97 | ] | |
| 98 | ||
| 99 | private let glassDebugSwatches: [Color] = [ | |
| 100 | .blue, | |
| 101 | .green, | |
| 102 | .orange, | |
| 103 | .purple, | |
| 104 | .cyan, | |
| 105 | .pink, | |
| 106 | ] | |
| 107 | ||
| 108 | struct NativePhoneLab: View { | |
| 109 | @Binding var searchText: String | |
| 110 | @Binding var selectedThread: LabThread? | |
| 111 | ||
| 112 | var body: some View { | |
| 113 | NavigationStack { | |
| 114 | NativeThreadLab(thread: selectedThread ?? threads[0]) | |
| 115 | } | |
| 116 | } | |
| 117 | } | |
| 118 | ||
| 119 | struct NativeSplitLab: View { | |
| 120 | @Binding var searchText: String | |
| 121 | @Binding var selectedThread: LabThread? | |
| 122 | ||
| 123 | var body: some View { | |
| 124 | NavigationSplitView { | |
| 125 | List(filteredThreads, selection: $selectedThread) { thread in | |
| 126 | MessageSidebarRow(thread: thread) | |
| 127 | .tag(thread) | |
| 128 | } | |
| 129 | .listStyle(.sidebar) | |
| 130 | .navigationTitle("Threads") | |
| 131 | .searchable(text: $searchText, placement: .sidebar, prompt: "Search") | |
| 132 | .toolbar { | |
| 133 | ToolbarItemGroup(placement: .topBarTrailing) { | |
| 134 | Menu { | |
| 135 | Button("All Threads", systemImage: "tray.full") {} | |
| 136 | Button("Ready", systemImage: "checkmark.circle") {} | |
| 137 | Button("Running", systemImage: "bolt.circle") {} | |
| 138 | } label: { | |
| 139 | Image(systemName: "line.3.horizontal.decrease") | |
| 140 | } | |
| 141 | .buttonStyle(.glass) | |
| 142 | ||
| 143 | Button {} label: { | |
| 144 | Image(systemName: "gearshape") | |
| 145 | } | |
| 146 | .buttonStyle(.glass) | |
| 147 | ||
| 148 | Button {} label: { | |
| 149 | Image(systemName: "square.and.pencil") | |
| 150 | } | |
| 151 | .buttonStyle(.glass) | |
| 152 | } | |
| 153 | } | |
| 154 | } detail: { | |
| 155 | if let selectedThread { | |
| 156 | NativeThreadLab(thread: selectedThread) | |
| 157 | } else { | |
| 158 | ContentUnavailableView("Select a thread", systemImage: "sidebar.left") | |
| 159 | } | |
| 160 | } | |
| 161 | } | |
| 162 | } | |
| 163 | ||
| 164 | struct MessageListRow: View { | |
| 165 | let thread: LabThread | |
| 166 | ||
| 167 | var body: some View { | |
| 168 | HStack(alignment: .top, spacing: 14) { | |
| 169 | Circle() | |
| 170 | .fill(thread.tint.gradient) | |
| 171 | .frame(width: 52, height: 52) | |
| 172 | .overlay { | |
| 173 | Text(thread.initials) | |
| 174 | .font(.headline.weight(.bold)) | |
| 175 | .foregroundStyle(.white) | |
| 176 | } | |
| 177 | ||
| 178 | VStack(alignment: .leading, spacing: 4) { | |
| 179 | HStack { | |
| 180 | Text(thread.title) | |
| 181 | .font(.headline.weight(.semibold)) | |
| 182 | .lineLimit(1) | |
| 183 | Spacer(minLength: 8) | |
| 184 | Text(thread.time) | |
| 185 | .foregroundStyle(.secondary) | |
| 186 | Image(systemName: "chevron.right") | |
| 187 | .font(.caption.weight(.semibold)) | |
| 188 | .foregroundStyle(.tertiary) | |
| 189 | } | |
| 190 | ||
| 191 | Text(thread.preview) | |
| 192 | .font(.subheadline) | |
| 193 | .foregroundStyle(.secondary) | |
| 194 | .lineLimit(2) | |
| 195 | } | |
| 196 | .padding(.vertical, 12) | |
| 197 | } | |
| 198 | } | |
| 199 | } | |
| 200 | ||
| 201 | struct MessageSidebarRow: View { | |
| 202 | let thread: LabThread | |
| 203 | ||
| 204 | var body: some View { | |
| 205 | VStack(alignment: .leading, spacing: 4) { | |
| 206 | HStack { | |
| 207 | Text(thread.title) | |
| 208 | .font(.headline.weight(.semibold)) | |
| 209 | .lineLimit(1) | |
| 210 | Spacer() | |
| 211 | Text(thread.time) | |
| 212 | .font(.subheadline) | |
| 213 | .foregroundStyle(.secondary) | |
| 214 | } | |
| 215 | Text(thread.subtitle) | |
| 216 | .font(.subheadline) | |
| 217 | .foregroundStyle(.secondary) | |
| 218 | .lineLimit(1) | |
| 219 | } | |
| 220 | .padding(.vertical, 6) | |
| 221 | } | |
| 222 | } | |
| 223 | ||
| 224 | struct NativeThreadLab: View { | |
| 225 | let thread: LabThread | |
| 226 | @State private var draft = "Ask the repo agent, or run a command..." | |
| 227 | @State private var scrollStep = 0 | |
| 228 | ||
| 229 | private let scrollTimer = Timer.publish(every: 2.8, on: .main, in: .common).autoconnect() | |
| 230 | private let scrollTargets = ["top", "swatches", "top", "code", "card"] | |
| 231 | ||
| 232 | var body: some View { | |
| 233 | ScrollViewReader { proxy in | |
| 234 | ScrollView { | |
| 235 | LazyVStack(alignment: .leading, spacing: 22) { | |
| 236 | Color.clear | |
| 237 | .frame(height: 0) | |
| 238 | .id("top") | |
| 239 | ||
| 240 | hero | |
| 241 | .padding(.top, 8) | |
| 242 | ||
| 243 | swatches | |
| 244 | .id("swatches") | |
| 245 | ||
| 246 | explanationCard | |
| 247 | .id("card") | |
| 248 | ||
| 249 | codeCard | |
| 250 | .id("code") | |
| 251 | } | |
| 252 | .padding(.horizontal, 18) | |
| 253 | .padding(.top, 8) | |
| 254 | .padding(.bottom, 96) | |
| 255 | } | |
| 256 | .background(Color(uiColor: .systemBackground)) | |
| 257 | .onReceive(scrollTimer) { _ in | |
| 258 | guard !scrollTargets.isEmpty else { return } | |
| 259 | ||
| 260 | let target = scrollTargets[scrollStep % scrollTargets.count] | |
| 261 | scrollStep += 1 | |
| 262 | ||
| 263 | withAnimation(.smooth(duration: 1.0)) { | |
| 264 | proxy.scrollTo(target, anchor: .top) | |
| 265 | } | |
| 266 | } | |
| 267 | } | |
| 268 | .navigationTitle("RNS Glass") | |
| 269 | .navigationSubtitle("plain react-native-screens") | |
| 270 | .toolbar { | |
| 271 | ToolbarItemGroup(placement: .topBarTrailing) { | |
| 272 | Button {} label: { Image(systemName: "plus") } | |
| 273 | .buttonStyle(.glass) | |
| 274 | Button {} label: { Image(systemName: "magnifyingglass") } | |
| 275 | .buttonStyle(.glass) | |
| 276 | } | |
| 277 | } | |
| 278 | .safeAreaInset(edge: .bottom) { | |
| 279 | composer | |
| 280 | } | |
| 281 | } | |
| 282 | ||
| 283 | private var hero: some View { | |
| 284 | VStack(alignment: .leading, spacing: 10) { | |
| 285 | Text("plain react-native-screens") | |
| 286 | .font(.subheadline.weight(.bold)) | |
| 287 | .textCase(.uppercase) | |
| 288 | .tracking(0.5) | |
| 289 | .foregroundStyle(.secondary) | |
| 290 | ||
| 291 | Text("Native scroll-edge glass") | |
| 292 | .font(.system(size: 48, weight: .heavy, design: .default)) | |
| 293 | .lineLimit(nil) | |
| 294 | .minimumScaleFactor(0.72) | |
| 295 | ||
| 296 | Text("This route uses RNS directly. The script scrolls automatically so the native header is captured both at rest and with bright content behind it.") | |
| 297 | .font(.title3) | |
| 298 | .foregroundStyle(.secondary) | |
| 299 | } | |
| 300 | } | |
| 301 | ||
| 302 | private var swatches: some View { | |
| 303 | LazyVGrid( | |
| 304 | columns: [GridItem(.adaptive(minimum: 60), spacing: 12)], | |
| 305 | alignment: .leading, | |
| 306 | spacing: 12 | |
| 307 | ) { | |
| 308 | ForEach(Array(glassDebugSwatches.enumerated()), id: \.offset) { index, color in | |
| 309 | Circle() | |
| 310 | .fill(color.gradient) | |
| 311 | .frame(width: 60, height: 60) | |
| 312 | .overlay { | |
| 313 | Text("\(index + 1)") | |
| 314 | .font(.title2.weight(.heavy)) | |
| 315 | .foregroundStyle(.white) | |
| 316 | } | |
| 317 | } | |
| 318 | } | |
| 319 | } | |
| 320 | ||
| 321 | private var explanationCard: some View { | |
| 322 | VStack(alignment: .leading, spacing: 10) { | |
| 323 | Text("What this isolates") | |
| 324 | .font(.title2.weight(.bold)) | |
| 325 | ||
| 326 | Text("Native transparent header + iOS 26 scroll edge effect. No Expo Router header config, no custom blur overlay, no large title requirement.") | |
| 327 | .font(.title3) | |
| 328 | .foregroundStyle(.secondary) | |
| 329 | } | |
| 330 | .padding(22) | |
| 331 | .frame(maxWidth: .infinity, alignment: .leading) | |
| 332 | .background(.thinMaterial, in: RoundedRectangle(cornerRadius: 28, style: .continuous)) | |
| 333 | .overlay { | |
| 334 | RoundedRectangle(cornerRadius: 28, style: .continuous) | |
| 335 | .stroke(.separator.opacity(0.35), lineWidth: 0.5) | |
| 336 | } | |
| 337 | } | |
| 338 | ||
| 339 | private var codeCard: some View { | |
| 340 | VStack(alignment: .leading, spacing: 0) { | |
| 341 | ForEach(Array((glassDebugCodeLines + glassDebugCodeLines).enumerated()), id: \.offset) { index, line in | |
| 342 | HStack(alignment: .top, spacing: 16) { | |
| 343 | Text("\(index + 1)") | |
| 344 | .foregroundStyle(.secondary) | |
| 345 | .frame(width: 34, alignment: .trailing) | |
| 346 | ||
| 347 | Text(line.isEmpty ? " " : line) | |
| 348 | .frame(maxWidth: .infinity, alignment: .leading) | |
| 349 | } | |
| 350 | .font(.system(size: 16, design: .monospaced)) | |
| 351 | .lineSpacing(4) | |
| 352 | .padding(.horizontal, 16) | |
| 353 | .padding(.vertical, 3) | |
| 354 | } | |
| 355 | } | |
| 356 | .padding(.vertical, 14) | |
| 357 | .background(.thinMaterial, in: RoundedRectangle(cornerRadius: 24, style: .continuous)) | |
| 358 | .overlay { | |
| 359 | RoundedRectangle(cornerRadius: 24, style: .continuous) | |
| 360 | .stroke(.separator.opacity(0.35), lineWidth: 0.5) | |
| 361 | } | |
| 362 | } | |
| 363 | ||
| 364 | private var composer: some View { | |
| 365 | HStack(spacing: 10) { | |
| 366 | Text(draft) | |
| 367 | .foregroundStyle(.secondary) | |
| 368 | .lineLimit(1) | |
| 369 | Spacer() | |
| 370 | Image(systemName: "arrow.up") | |
| 371 | .font(.headline.weight(.bold)) | |
| 372 | .frame(width: 44, height: 44) | |
| 373 | .glassEffect(.regular.interactive(), in: Circle()) | |
| 374 | } | |
| 375 | .padding(.leading, 18) | |
| 376 | .padding(.trailing, 6) | |
| 377 | .frame(height: 56) | |
| 378 | .glassEffect(.clear.interactive(), in: Capsule()) | |
| 379 | .padding(.horizontal) | |
| 380 | .padding(.vertical, 8) | |
| 381 | } | |
| 382 | } | |
| 383 | ||
| 384 | #Preview { | |
| 385 | ContentView() | |
| 386 | } |
experiments/messages-glass-lab/MessagesGlassLab/MessagesGlassLabApp.swift deleted-10| ... | ... | @@ -1,10 +0,0 @@ |
| 1 | import SwiftUI | |
| 2 | ||
| 3 | @main | |
| 4 | struct MessagesGlassLabApp: App { | |
| 5 | var body: some Scene { | |
| 6 | WindowGroup { | |
| 7 | ContentView() | |
| 8 | } | |
| 9 | } | |
| 10 | } |
pnpm-lock.yaml+48-48| ... | ... | @@ -248,7 +248,7 @@ importers: |
| 248 | 248 | version: 7.3.4(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 249 | 249 | '@react-navigation/native-stack': |
| 250 | 250 | specifier: 7.17.6 |
| 251 | version: 7.17.6(patch_hash=0365b727005b3a830af80ccbd0b637666cc0338d33ddcb7a25b6de51a21ea027)(7ffd26361d0ffb9781446d1519df37be) | |
| 251 | version: 7.17.6(patch_hash=0365b727005b3a830af80ccbd0b637666cc0338d33ddcb7a25b6de51a21ea027)(e49ba4adb65ddb2cde0c8b8b274b705b) | |
| 252 | 252 | '@shikijs/core': |
| 253 | 253 | specifier: 4.2.0 |
| 254 | 254 | version: 4.2.0 |
| ... | ... | @@ -12252,7 +12252,7 @@ snapshots: |
| 12252 | 12252 | ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) |
| 12253 | 12253 | zod: 3.25.76 |
| 12254 | 12254 | optionalDependencies: |
| 12255 | expo-router: 56.2.11(e1497a99e5bc5be76c1cdb733671f865) | |
| 12255 | expo-router: 56.2.11(b91ff5333bc046aa08fb7484e4e065d6) | |
| 12256 | 12256 | react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) |
| 12257 | 12257 | transitivePeerDependencies: |
| 12258 | 12258 | - '@expo/dom-webview' |
| ... | ... | @@ -12328,7 +12328,7 @@ snapshots: |
| 12328 | 12328 | ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) |
| 12329 | 12329 | zod: 3.25.76 |
| 12330 | 12330 | optionalDependencies: |
| 12331 | expo-router: 56.2.11(80beea6a31a5d2003a696c1401258797) | |
| 12331 | expo-router: 56.2.11(f8b3939b2a15129a8b59814542a58c1b) | |
| 12332 | 12332 | react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) |
| 12333 | 12333 | transitivePeerDependencies: |
| 12334 | 12334 | - '@expo/dom-webview' |
| ... | ... | @@ -12668,7 +12668,7 @@ snapshots: |
| 12668 | 12668 | react: 19.2.3 |
| 12669 | 12669 | optionalDependencies: |
| 12670 | 12670 | '@expo/metro-runtime': 56.0.15(@expo/log-box@56.0.13)(expo@56.0.12)(react-dom@19.2.3(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 12671 | expo-router: 56.2.11(e1497a99e5bc5be76c1cdb733671f865) | |
| 12671 | expo-router: 56.2.11(b91ff5333bc046aa08fb7484e4e065d6) | |
| 12672 | 12672 | react-dom: 19.2.3(react@19.2.3) |
| 12673 | 12673 | transitivePeerDependencies: |
| 12674 | 12674 | - supports-color |
| ... | ... | @@ -12683,7 +12683,7 @@ snapshots: |
| 12683 | 12683 | react: 19.2.6 |
| 12684 | 12684 | optionalDependencies: |
| 12685 | 12685 | '@expo/metro-runtime': 56.0.15(@expo/log-box@56.0.13)(expo@56.0.12)(react-dom@19.2.6(react@19.2.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) |
| 12686 | expo-router: 56.2.11(80beea6a31a5d2003a696c1401258797) | |
| 12686 | expo-router: 56.2.11(f8b3939b2a15129a8b59814542a58c1b) | |
| 12687 | 12687 | react-dom: 19.2.6(react@19.2.6) |
| 12688 | 12688 | transitivePeerDependencies: |
| 12689 | 12689 | - supports-color |
| ... | ... | @@ -14268,7 +14268,7 @@ snapshots: |
| 14268 | 14268 | optionalDependencies: |
| 14269 | 14269 | '@react-native-masked-view/masked-view': 0.3.2(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| 14270 | 14270 | |
| 14271 | '@react-navigation/native-stack@7.17.6(patch_hash=0365b727005b3a830af80ccbd0b637666cc0338d33ddcb7a25b6de51a21ea027)(7ffd26361d0ffb9781446d1519df37be)': | |
| 14271 | '@react-navigation/native-stack@7.17.6(patch_hash=0365b727005b3a830af80ccbd0b637666cc0338d33ddcb7a25b6de51a21ea027)(e49ba4adb65ddb2cde0c8b8b274b705b)': | |
| 14272 | 14272 | dependencies: |
| 14273 | 14273 | '@react-navigation/elements': 2.9.26(c6a2ad0e2c930f8e3896e77c3ba11bc4) |
| 14274 | 14274 | '@react-navigation/native': 7.3.4(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) |
| ... | ... | @@ -17062,47 +17062,47 @@ snapshots: |
| 17062 | 17062 | - supports-color |
| 17063 | 17063 | - typescript |
| 17064 | 17064 | |
| 17065 | expo-router@56.2.11(80beea6a31a5d2003a696c1401258797): | |
| 17065 | expo-router@56.2.11(b91ff5333bc046aa08fb7484e4e065d6): | |
| 17066 | 17066 | dependencies: |
| 17067 | '@expo/log-box': 56.0.13(@expo/dom-webview@56.0.5)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17068 | '@expo/metro-runtime': 56.0.15(@expo/log-box@56.0.13)(expo@56.0.12)(react-dom@19.2.6(react@19.2.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17067 | '@expo/log-box': 56.0.13(@expo/dom-webview@56.0.5)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17068 | '@expo/metro-runtime': 56.0.15(@expo/log-box@56.0.13)(expo@56.0.12)(react-dom@19.2.3(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17069 | 17069 | '@expo/schema-utils': 56.0.1 |
| 17070 | '@expo/ui': 56.0.18(32843e0c0883df8bccfa0b8323659df5) | |
| 17071 | '@radix-ui/react-slot': 1.2.4(@types/react@19.2.16)(react@19.2.6) | |
| 17072 | '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) | |
| 17073 | '@react-native-masked-view/masked-view': 0.3.2(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17070 | '@expo/ui': 56.0.18(3cdc0dde9f93166d952f1e1bd0cb25c0) | |
| 17071 | '@radix-ui/react-slot': 1.2.4(@types/react@19.2.16)(react@19.2.3) | |
| 17072 | '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) | |
| 17073 | '@react-native-masked-view/masked-view': 0.3.2(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17074 | 17074 | '@testing-library/jest-dom': 6.9.1 |
| 17075 | 17075 | '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) |
| 17076 | 17076 | client-only: 0.0.1 |
| 17077 | 17077 | color: 4.2.3 |
| 17078 | 17078 | debug: 4.4.3 |
| 17079 | 17079 | escape-string-regexp: 4.0.0 |
| 17080 | expo: 56.0.12(deb8cbf3e0f411b34ba85a995c9982ba) | |
| 17081 | expo-constants: 56.0.18(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)) | |
| 17082 | expo-glass-effect: 56.0.4(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17083 | expo-linking: 56.0.14(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17080 | expo: 56.0.12(8895228379997a2a064f9644cda56ed0) | |
| 17081 | expo-constants: 56.0.18(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)) | |
| 17082 | expo-glass-effect: 56.0.4(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17083 | expo-linking: 56.0.14(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17084 | 17084 | expo-server: 56.0.5 |
| 17085 | expo-symbols: 56.0.6(expo-font@56.0.7)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17085 | expo-symbols: 56.0.6(expo-font@56.0.7)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17086 | 17086 | fast-deep-equal: 3.1.3 |
| 17087 | 17087 | invariant: 2.2.4 |
| 17088 | 17088 | nanoid: 3.3.12 |
| 17089 | 17089 | query-string: 7.1.3 |
| 17090 | react: 19.2.6 | |
| 17090 | react: 19.2.3 | |
| 17091 | 17091 | react-fast-compare: 3.2.2 |
| 17092 | 17092 | react-is: 19.2.7 |
| 17093 | react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) | |
| 17094 | react-native-drawer-layout: 4.2.4(de9b2f2dc96a3557fdc0df187a8417ee) | |
| 17095 | react-native-safe-area-context: 5.7.0(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17096 | react-native-screens: 4.25.2(patch_hash=b3d86ac8bf77b40f4112672f92225853bce6faca485a4aeb609a07a70162a5cc)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17093 | react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) | |
| 17094 | react-native-drawer-layout: 4.2.4(05364bd849de538917a7364cc7dee3f5) | |
| 17095 | react-native-safe-area-context: 5.7.0(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17096 | react-native-screens: 4.25.2(patch_hash=b3d86ac8bf77b40f4112672f92225853bce6faca485a4aeb609a07a70162a5cc)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17097 | 17097 | server-only: 0.0.1 |
| 17098 | 17098 | sf-symbols-typescript: 2.2.0 |
| 17099 | 17099 | shallowequal: 1.1.0 |
| 17100 | 17100 | standard-navigation: 0.0.5 |
| 17101 | vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) | |
| 17101 | vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) | |
| 17102 | 17102 | optionalDependencies: |
| 17103 | react-dom: 19.2.6(react@19.2.6) | |
| 17104 | react-native-gesture-handler: 2.31.2(patch_hash=808eb26f9e57cf4945efd3985af4d9c764da6f91f4c9764433cc868602bbf4d3)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17105 | react-native-reanimated: 4.3.1(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17103 | react-dom: 19.2.3(react@19.2.3) | |
| 17104 | react-native-gesture-handler: 2.31.2(patch_hash=808eb26f9e57cf4945efd3985af4d9c764da6f91f4c9764433cc868602bbf4d3)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17105 | react-native-reanimated: 4.3.1(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17106 | 17106 | transitivePeerDependencies: |
| 17107 | 17107 | - '@babel/core' |
| 17108 | 17108 | - '@testing-library/dom' |
| ... | ... | @@ -17113,47 +17113,47 @@ snapshots: |
| 17113 | 17113 | - supports-color |
| 17114 | 17114 | optional: true |
| 17115 | 17115 | |
| 17116 | expo-router@56.2.11(e1497a99e5bc5be76c1cdb733671f865): | |
| 17116 | expo-router@56.2.11(f8b3939b2a15129a8b59814542a58c1b): | |
| 17117 | 17117 | dependencies: |
| 17118 | '@expo/log-box': 56.0.13(@expo/dom-webview@56.0.5)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17119 | '@expo/metro-runtime': 56.0.15(@expo/log-box@56.0.13)(expo@56.0.12)(react-dom@19.2.3(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17118 | '@expo/log-box': 56.0.13(@expo/dom-webview@56.0.5)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17119 | '@expo/metro-runtime': 56.0.15(@expo/log-box@56.0.13)(expo@56.0.12)(react-dom@19.2.6(react@19.2.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17120 | 17120 | '@expo/schema-utils': 56.0.1 |
| 17121 | '@expo/ui': 56.0.18(3cdc0dde9f93166d952f1e1bd0cb25c0) | |
| 17122 | '@radix-ui/react-slot': 1.2.4(@types/react@19.2.16)(react@19.2.3) | |
| 17123 | '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) | |
| 17124 | '@react-native-masked-view/masked-view': 0.3.2(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17121 | '@expo/ui': 56.0.18(32843e0c0883df8bccfa0b8323659df5) | |
| 17122 | '@radix-ui/react-slot': 1.2.4(@types/react@19.2.16)(react@19.2.6) | |
| 17123 | '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) | |
| 17124 | '@react-native-masked-view/masked-view': 0.3.2(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17125 | 17125 | '@testing-library/jest-dom': 6.9.1 |
| 17126 | 17126 | '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) |
| 17127 | 17127 | client-only: 0.0.1 |
| 17128 | 17128 | color: 4.2.3 |
| 17129 | 17129 | debug: 4.4.3 |
| 17130 | 17130 | escape-string-regexp: 4.0.0 |
| 17131 | expo: 56.0.12(8895228379997a2a064f9644cda56ed0) | |
| 17132 | expo-constants: 56.0.18(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)) | |
| 17133 | expo-glass-effect: 56.0.4(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17134 | expo-linking: 56.0.14(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17131 | expo: 56.0.12(deb8cbf3e0f411b34ba85a995c9982ba) | |
| 17132 | expo-constants: 56.0.18(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)) | |
| 17133 | expo-glass-effect: 56.0.4(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17134 | expo-linking: 56.0.14(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17135 | 17135 | expo-server: 56.0.5 |
| 17136 | expo-symbols: 56.0.6(expo-font@56.0.7)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17136 | expo-symbols: 56.0.6(expo-font@56.0.7)(expo@56.0.12)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17137 | 17137 | fast-deep-equal: 3.1.3 |
| 17138 | 17138 | invariant: 2.2.4 |
| 17139 | 17139 | nanoid: 3.3.12 |
| 17140 | 17140 | query-string: 7.1.3 |
| 17141 | react: 19.2.3 | |
| 17141 | react: 19.2.6 | |
| 17142 | 17142 | react-fast-compare: 3.2.2 |
| 17143 | 17143 | react-is: 19.2.7 |
| 17144 | react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) | |
| 17145 | react-native-drawer-layout: 4.2.4(05364bd849de538917a7364cc7dee3f5) | |
| 17146 | react-native-safe-area-context: 5.7.0(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17147 | react-native-screens: 4.25.2(patch_hash=b3d86ac8bf77b40f4112672f92225853bce6faca485a4aeb609a07a70162a5cc)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17144 | react-native: 0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) | |
| 17145 | react-native-drawer-layout: 4.2.4(de9b2f2dc96a3557fdc0df187a8417ee) | |
| 17146 | react-native-safe-area-context: 5.7.0(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17147 | react-native-screens: 4.25.2(patch_hash=b3d86ac8bf77b40f4112672f92225853bce6faca485a4aeb609a07a70162a5cc)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17148 | 17148 | server-only: 0.0.1 |
| 17149 | 17149 | sf-symbols-typescript: 2.2.0 |
| 17150 | 17150 | shallowequal: 1.1.0 |
| 17151 | 17151 | standard-navigation: 0.0.5 |
| 17152 | vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) | |
| 17152 | vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.16))(@types/react@19.2.16)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) | |
| 17153 | 17153 | optionalDependencies: |
| 17154 | react-dom: 19.2.3(react@19.2.3) | |
| 17155 | react-native-gesture-handler: 2.31.2(patch_hash=808eb26f9e57cf4945efd3985af4d9c764da6f91f4c9764433cc868602bbf4d3)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17156 | react-native-reanimated: 4.3.1(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) | |
| 17154 | react-dom: 19.2.6(react@19.2.6) | |
| 17155 | react-native-gesture-handler: 2.31.2(patch_hash=808eb26f9e57cf4945efd3985af4d9c764da6f91f4c9764433cc868602bbf4d3)(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17156 | react-native-reanimated: 4.3.1(react-native-worklets@0.8.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(react-native@0.85.3(@babel/core@7.29.7)(@react-native/metro-config@0.85.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) | |
| 17157 | 17157 | transitivePeerDependencies: |
| 17158 | 17158 | - '@babel/core' |
| 17159 | 17159 | - '@testing-library/dom' |