react-native-inapp-inspector 2.3.12 → 2.3.14

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 (232) hide show
  1. package/android/build/.transforms/6683d6eeaa3e1dfa689c3385111a0386/results.bin +1 -0
  2. package/android/build/.transforms/6683d6eeaa3e1dfa689c3385111a0386/transformed/classes/classes_dex/classes.dex +0 -0
  3. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/results.bin +1 -0
  4. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/BuildConfig.dex +0 -0
  5. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView$iconView$1.dex +0 -0
  6. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView.dex +0 -0
  7. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NativeNetworkInspectorSpec.dex +0 -0
  8. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$Companion.dex +0 -0
  9. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$frameCallback$1.dex +0 -0
  10. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$shakeListener$1.dex +0 -0
  11. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule.dex +0 -0
  12. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorPackage.dex +0 -0
  13. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
  14. package/android/build/generated/source/buildConfig/debug/com/inappinspector/BuildConfig.java +10 -0
  15. package/android/build/generated/source/codegen/java/com/inappinspector/NativeNetworkInspectorSpec.java +104 -0
  16. package/android/build/generated/source/codegen/jni/CMakeLists.txt +28 -0
  17. package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec-generated.cpp +128 -0
  18. package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec.h +31 -0
  19. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.cpp +22 -0
  20. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.h +24 -0
  21. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.cpp +16 -0
  22. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.h +17 -0
  23. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.cpp +19 -0
  24. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.h +18 -0
  25. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/RNInAppInspectorSpecJSI.h +177 -0
  26. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.cpp +17 -0
  27. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.h +23 -0
  28. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.cpp +16 -0
  29. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.h +20 -0
  30. package/android/build/generated/source/codegen/schema.json +1 -0
  31. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +7 -0
  32. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
  33. package/android/build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar +0 -0
  34. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
  35. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
  36. package/android/build/intermediates/annotations_typedef_file/debug/extractDebugAnnotations/typedefs.txt +0 -0
  37. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  38. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  39. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
  40. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -0
  41. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  42. package/android/build/intermediates/incremental/debug-mergeJavaRes/merge-state +0 -0
  43. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  44. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  45. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
  46. package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  47. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/BuildConfig.class +0 -0
  48. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
  49. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +2 -0
  50. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +7 -0
  51. package/android/build/intermediates/merged_java_res/debug/mergeDebugJavaResource/feature-react-native-inapp-inspector.jar +0 -0
  52. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +7 -0
  53. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
  54. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
  55. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  56. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/BuildConfig.class +0 -0
  57. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
  58. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
  59. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
  60. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
  61. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
  62. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
  63. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule.class +0 -0
  64. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorPackage.class +0 -0
  65. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  66. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +1 -0
  67. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  68. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  69. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  70. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  71. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  72. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  73. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  74. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  75. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  76. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  77. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  78. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  79. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  80. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  81. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  82. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  83. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  84. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  85. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  86. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  87. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  88. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  89. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  90. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  91. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  92. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  93. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  94. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  95. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  96. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  97. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  98. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  99. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  100. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  101. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  102. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  103. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  104. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  105. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  106. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  107. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  108. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  109. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  110. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  111. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  112. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  113. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  114. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  115. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  116. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  117. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  118. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  119. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  120. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  121. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  122. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  123. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  124. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  125. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  126. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  127. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  128. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  129. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  130. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +2 -0
  131. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  132. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  133. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  134. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  135. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  136. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  137. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  138. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  139. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  140. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  141. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  142. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  143. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  144. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  145. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  146. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  147. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  148. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  149. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  150. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  151. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  152. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  153. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  154. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  155. package/android/build/outputs/aar/react-native-inapp-inspector-debug.aar +0 -0
  156. package/android/build/outputs/logs/manifest-merger-debug-report.txt +17 -0
  157. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  158. package/android/build/tmp/kotlin-classes/debug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  159. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
  160. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
  161. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
  162. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
  163. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
  164. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule.class +0 -0
  165. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorPackage.class +0 -0
  166. package/bin/cli.js +6 -0
  167. package/dist/commonjs/components/HeadersSection.js +3 -2
  168. package/dist/commonjs/components/Inspector/BundleTab.js +4 -4
  169. package/dist/commonjs/components/Inspector/DebuggingTab.js +742 -427
  170. package/dist/commonjs/components/Inspector/MainScreen.js +4 -1
  171. package/dist/commonjs/components/Inspector/NetworkDetail.js +2 -2
  172. package/dist/commonjs/components/Inspector/NetworkFilterModal.js +18 -12
  173. package/dist/commonjs/components/Inspector/SettingsPanel.js +6 -4
  174. package/dist/commonjs/components/Inspector/StorageTab.js +10 -4
  175. package/dist/commonjs/components/Inspector/TabBar.js +6 -2
  176. package/dist/commonjs/components/JsonViewer.js +3 -2
  177. package/dist/commonjs/components/NetworkIcons.d.ts +4 -1
  178. package/dist/commonjs/components/NetworkIcons.js +26 -3
  179. package/dist/commonjs/components/QRCodeView.js +1 -1
  180. package/dist/commonjs/constants/version.d.ts +1 -1
  181. package/dist/commonjs/constants/version.js +1 -1
  182. package/dist/commonjs/helpers/index.d.ts +1 -0
  183. package/dist/commonjs/helpers/index.js +11 -1
  184. package/dist/commonjs/helpers/qrGenerator.d.ts +1 -0
  185. package/dist/commonjs/helpers/qrGenerator.js +356 -33
  186. package/dist/commonjs/index.d.ts +1 -0
  187. package/dist/commonjs/index.js +5 -3
  188. package/dist/commonjs/metro.d.ts +25 -0
  189. package/dist/commonjs/metro.js +478 -0
  190. package/dist/esm/components/HeadersSection.js +3 -2
  191. package/dist/esm/components/Inspector/BundleTab.js +5 -5
  192. package/dist/esm/components/Inspector/DebuggingTab.js +745 -430
  193. package/dist/esm/components/Inspector/MainScreen.js +4 -1
  194. package/dist/esm/components/Inspector/NetworkDetail.js +2 -2
  195. package/dist/esm/components/Inspector/NetworkFilterModal.js +19 -13
  196. package/dist/esm/components/Inspector/SettingsPanel.js +7 -5
  197. package/dist/esm/components/Inspector/StorageTab.js +11 -5
  198. package/dist/esm/components/Inspector/TabBar.js +7 -3
  199. package/dist/esm/components/JsonViewer.js +4 -3
  200. package/dist/esm/components/NetworkIcons.d.ts +4 -1
  201. package/dist/esm/components/NetworkIcons.js +22 -2
  202. package/dist/esm/components/QRCodeView.js +1 -1
  203. package/dist/esm/constants/version.d.ts +1 -1
  204. package/dist/esm/constants/version.js +1 -1
  205. package/dist/esm/helpers/index.d.ts +1 -0
  206. package/dist/esm/helpers/index.js +9 -0
  207. package/dist/esm/helpers/qrGenerator.d.ts +1 -0
  208. package/dist/esm/helpers/qrGenerator.js +356 -30
  209. package/dist/esm/index.d.ts +1 -0
  210. package/dist/esm/index.js +3 -2
  211. package/dist/esm/metro.d.ts +25 -0
  212. package/dist/esm/metro.js +469 -0
  213. package/metro.d.ts +1 -0
  214. package/metro.js +1 -0
  215. package/package.json +16 -5
  216. package/src/components/HeadersSection.tsx +7 -2
  217. package/src/components/Inspector/BundleTab.tsx +9 -4
  218. package/src/components/Inspector/DebuggingTab.tsx +845 -498
  219. package/src/components/Inspector/MainScreen.tsx +4 -1
  220. package/src/components/Inspector/NetworkDetail.tsx +2 -2
  221. package/src/components/Inspector/NetworkFilterModal.tsx +32 -12
  222. package/src/components/Inspector/SettingsPanel.tsx +85 -75
  223. package/src/components/Inspector/StorageTab.tsx +15 -4
  224. package/src/components/Inspector/TabBar.tsx +16 -2
  225. package/src/components/JsonViewer.tsx +8 -3
  226. package/src/components/NetworkIcons.tsx +71 -1
  227. package/src/components/QRCodeView.tsx +2 -2
  228. package/src/constants/version.ts +1 -1
  229. package/src/helpers/index.ts +15 -0
  230. package/src/helpers/qrGenerator.ts +418 -37
  231. package/src/index.tsx +5 -3
  232. package/src/metro.ts +598 -0
@@ -43,13 +43,14 @@ const AppColors_1 = require("../../styles/AppColors");
43
43
  const AppFonts_1 = require("../../styles/AppFonts");
44
44
  const QRCodeView_1 = __importDefault(require("../QRCodeView"));
45
45
  const TouchableScale_1 = __importDefault(require("../TouchableScale"));
46
- const helpers_1 = require("../../helpers");
47
46
  const toast_1 = require("../../helpers/toast");
48
- const i18n_1 = require("../../i18n");
47
+ const NativeInspector_1 = require("../../native/NativeInspector");
49
48
  const NetworkIcons_1 = require("../NetworkIcons");
50
- const COMMON_PORTS = [8081, 8082, 8083, 19000];
49
+ const react_native_svg_1 = __importStar(require("react-native-svg"));
50
+ const TerminalConsoleIcon = ({ color = AppColors_1.AppColors.purple, size = 13 }) => (<react_native_svg_1.default width={size} height={size} viewBox="0 0 24 24" fill="none">
51
+ <react_native_svg_1.Path d="M4 17l6-6-6-6M12 19h8" stroke={color} strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
52
+ </react_native_svg_1.default>);
51
53
  const DebuggingTab = () => {
52
- const { t } = (0, i18n_1.useTranslation)();
53
54
  const detectedConfig = (0, react_1.useMemo)(() => {
54
55
  const scriptURL = react_native_1.NativeModules.SourceCode?.scriptURL || '';
55
56
  let host = 'localhost';
@@ -74,610 +75,924 @@ const DebuggingTab = () => {
74
75
  return { host, port, scriptURL };
75
76
  }, []);
76
77
  const [hostIp, setHostIp] = (0, react_1.useState)(() => {
77
- if (detectedConfig.host === 'localhost' ||
78
- detectedConfig.host === '127.0.0.1' ||
79
- detectedConfig.host === '10.0.2.2') {
80
- return '192.168.1.15';
78
+ if (detectedConfig.host &&
79
+ detectedConfig.host !== 'localhost' &&
80
+ detectedConfig.host !== '127.0.0.1' &&
81
+ detectedConfig.host !== '10.0.2.2') {
82
+ return detectedConfig.host;
81
83
  }
82
- return detectedConfig.host;
84
+ return '192.168.1.2';
83
85
  });
84
- const [selectedPort, setSelectedPort] = (0, react_1.useState)(detectedConfig.port);
85
- const [apkPath, setApkPath] = (0, react_1.useState)('app-debug.apk');
86
- const [activeQrTab, setActiveQrTab] = (0, react_1.useState)('metro');
87
- const [isAutoDetecting, setIsAutoDetecting] = (0, react_1.useState)(false);
88
- const [portsStatus, setPortsStatus] = (0, react_1.useState)({});
89
- const probePorts = (0, react_1.useCallback)(async () => {
90
- setIsAutoDetecting(true);
91
- const results = {};
92
- for (const p of COMMON_PORTS) {
93
- results[p] = { port: p, status: 'checking' };
86
+ const [port, setPort] = (0, react_1.useState)(detectedConfig.port || 8083);
87
+ const [apkFileName, setApkFileName] = (0, react_1.useState)('app-debug.apk');
88
+ const [apkSizeMb, setApkSizeMb] = (0, react_1.useState)(null);
89
+ const [selectedScheme, setSelectedScheme] = (0, react_1.useState)('assembleRelease');
90
+ const [isCleanBuild, setIsCleanBuild] = (0, react_1.useState)(true);
91
+ const [buildStatus, setBuildStatus] = (0, react_1.useState)({
92
+ status: 'idle',
93
+ scheme: 'assembleRelease',
94
+ clean: true,
95
+ progress: 0,
96
+ currentTask: '',
97
+ error: null,
98
+ apkName: null,
99
+ apkSize: null,
100
+ });
101
+ const pollingRef = (0, react_1.useRef)(null);
102
+ const progressAnim = (0, react_1.useRef)(new react_native_1.Animated.Value(0)).current;
103
+ const [showVerboseLogs, setShowVerboseLogs] = (0, react_1.useState)(true);
104
+ const verboseScrollRef = (0, react_1.useRef)(null);
105
+ (0, react_1.useEffect)(() => {
106
+ react_native_1.Animated.timing(progressAnim, {
107
+ toValue: Math.max(0, Math.min(100, buildStatus.progress)),
108
+ duration: 350,
109
+ useNativeDriver: false,
110
+ }).start();
111
+ }, [buildStatus.progress, progressAnim]);
112
+ (0, react_1.useEffect)(() => {
113
+ if (buildStatus.logs && buildStatus.logs.length > 0) {
114
+ setTimeout(() => {
115
+ verboseScrollRef.current?.scrollToEnd({ animated: true });
116
+ }, 50);
94
117
  }
95
- setPortsStatus({ ...results });
96
- let foundActivePort = null;
97
- for (const p of COMMON_PORTS) {
98
- const startTime = Date.now();
99
- try {
100
- const controller = new AbortController();
101
- const timeoutId = setTimeout(() => controller.abort(), 1500);
102
- const res = await fetch(`http://localhost:${p}/status`, {
103
- signal: controller.signal,
104
- });
105
- clearTimeout(timeoutId);
106
- const text = await res.text();
107
- const latency = Date.now() - startTime;
108
- if (res.ok && text.includes('packager-status:running')) {
109
- results[p] = { port: p, status: 'active', latencyMs: latency };
110
- if (!foundActivePort)
111
- foundActivePort = p;
118
+ }, [buildStatus.logs]);
119
+ const fetchMetroTelemetry = (0, react_1.useCallback)(async () => {
120
+ const hostsToTry = Array.from(new Set([detectedConfig.host, '10.0.2.2', 'localhost', '127.0.0.1'].filter(Boolean)));
121
+ const portsToTry = Array.from(new Set([detectedConfig.port, 8083, 8081, 8082].filter(Boolean)));
122
+ for (const h of hostsToTry) {
123
+ for (const p of portsToTry) {
124
+ try {
125
+ const controller = new AbortController();
126
+ const timeoutId = setTimeout(() => controller.abort(), 1200);
127
+ const res = await fetch(`http://${h}:${p}/__inapp_inspector/apk-info`, {
128
+ signal: controller.signal,
129
+ });
130
+ clearTimeout(timeoutId);
131
+ if (res.ok) {
132
+ const data = await res.json();
133
+ if (data.hostIp &&
134
+ data.hostIp !== '127.0.0.1' &&
135
+ data.hostIp !== 'localhost' &&
136
+ data.hostIp !== '10.0.2.2') {
137
+ setHostIp(data.hostIp);
138
+ }
139
+ if (data.port) {
140
+ setPort(data.port);
141
+ }
142
+ if (data.apkName) {
143
+ setApkFileName(data.apkName);
144
+ }
145
+ if (data.apkSize) {
146
+ setApkSizeMb((data.apkSize / (1024 * 1024)).toFixed(1));
147
+ }
148
+ return;
149
+ }
112
150
  }
113
- else {
114
- results[p] = { port: p, status: 'inactive' };
151
+ catch { }
152
+ }
153
+ }
154
+ }, [detectedConfig.host, detectedConfig.port]);
155
+ (0, react_1.useEffect)(() => {
156
+ fetchMetroTelemetry();
157
+ }, [fetchMetroTelemetry]);
158
+ (0, react_1.useEffect)(() => {
159
+ return () => {
160
+ if (pollingRef.current) {
161
+ clearInterval(pollingRef.current);
162
+ }
163
+ };
164
+ }, []);
165
+ const pollBuildStatus = (0, react_1.useCallback)(() => {
166
+ if (pollingRef.current)
167
+ clearInterval(pollingRef.current);
168
+ const targetHost = detectedConfig.host || '10.0.2.2';
169
+ pollingRef.current = setInterval(async () => {
170
+ try {
171
+ const res = await fetch(`http://${targetHost}:${port}/__inapp_inspector/build-status`);
172
+ if (res.ok) {
173
+ const data = await res.json();
174
+ setBuildStatus(data);
175
+ if (data.status === 'completed') {
176
+ if (pollingRef.current)
177
+ clearInterval(pollingRef.current);
178
+ (0, NativeInspector_1.triggerNativeHaptic)('success');
179
+ (0, toast_1.showToast)('✓ APK Build Generated Successfully!');
180
+ if (data.apkSize) {
181
+ setApkSizeMb((data.apkSize / (1024 * 1024)).toFixed(1));
182
+ }
183
+ if (data.apkName) {
184
+ setApkFileName(data.apkName);
185
+ }
186
+ fetchMetroTelemetry();
187
+ }
188
+ else if (data.status === 'failed') {
189
+ if (pollingRef.current)
190
+ clearInterval(pollingRef.current);
191
+ (0, NativeInspector_1.triggerNativeHaptic)('error');
192
+ (0, toast_1.showToast)('✕ Build Failed: ' + (data.error || 'Gradle error'));
193
+ }
115
194
  }
116
195
  }
117
- catch {
118
- results[p] = { port: p, status: 'inactive' };
196
+ catch { }
197
+ }, 1000);
198
+ }, [detectedConfig.host, port, fetchMetroTelemetry]);
199
+ const handleStartBuild = async () => {
200
+ (0, NativeInspector_1.triggerNativeHaptic)('medium');
201
+ setBuildStatus({
202
+ status: 'running',
203
+ scheme: selectedScheme,
204
+ clean: isCleanBuild,
205
+ progress: 5,
206
+ currentTask: isCleanBuild ? 'Cleaning build cache...' : 'Initializing build...',
207
+ error: null,
208
+ apkName: null,
209
+ apkSize: null,
210
+ });
211
+ const hostsToTry = Array.from(new Set([detectedConfig.host, '10.0.2.2', 'localhost', '127.0.0.1'].filter(Boolean)));
212
+ const portsToTry = Array.from(new Set([port, 8083, 8081, 8082].filter(Boolean)));
213
+ let buildTriggered = false;
214
+ for (const h of hostsToTry) {
215
+ for (const p of portsToTry) {
216
+ try {
217
+ const controller = new AbortController();
218
+ const timeoutId = setTimeout(() => controller.abort(), 2000);
219
+ const res = await fetch(`http://${h}:${p}/__inapp_inspector/build-apk?scheme=${selectedScheme}&clean=${isCleanBuild}`, { signal: controller.signal });
220
+ clearTimeout(timeoutId);
221
+ if (res.ok) {
222
+ buildTriggered = true;
223
+ pollBuildStatus();
224
+ return;
225
+ }
226
+ }
227
+ catch { }
119
228
  }
120
- setPortsStatus({ ...results });
121
229
  }
122
- if (foundActivePort) {
123
- setSelectedPort(foundActivePort);
124
- (0, toast_1.showToast)(`Detected Metro running on Port ${foundActivePort}!`);
230
+ if (!buildTriggered) {
231
+ setBuildStatus(prev => ({
232
+ ...prev,
233
+ status: 'failed',
234
+ error: 'Cannot reach build server. Ensure npm start or npm run serve-apk is running on host.',
235
+ }));
125
236
  }
126
- setIsAutoDetecting(false);
127
- }, []);
128
- (0, react_1.useEffect)(() => {
129
- probePorts();
130
- }, [probePorts]);
131
- const metroBundleUrl = `http://${hostIp}:${selectedPort}/index.bundle?platform=android&dev=true`;
132
- const directServerUrl = `http://${hostIp}:${selectedPort}`;
133
- const apkDownloadUrl = `http://${hostIp}:${selectedPort}/${apkPath}`;
134
- const devSettingsHost = `${hostIp}:${selectedPort}`;
135
- const currentQrValue = (0, react_1.useMemo)(() => {
136
- if (activeQrTab === 'apk')
137
- return apkDownloadUrl;
138
- if (activeQrTab === 'host')
139
- return devSettingsHost;
140
- return directServerUrl;
141
- }, [activeQrTab, apkDownloadUrl, devSettingsHost, directServerUrl]);
142
- const activePortInfo = portsStatus[selectedPort];
143
- return (<react_native_1.ScrollView style={styles.container} contentContainerStyle={styles.content} showsVerticalScrollIndicator={false}>
237
+ };
238
+ const handleStopBuild = async () => {
239
+ (0, NativeInspector_1.triggerNativeHaptic)('warning');
240
+ if (pollingRef.current)
241
+ clearInterval(pollingRef.current);
242
+ const hostsToTry = Array.from(new Set([detectedConfig.host, '10.0.2.2', 'localhost', '127.0.0.1'].filter(Boolean)));
243
+ const portsToTry = Array.from(new Set([port, 8083, 8081, 8082].filter(Boolean)));
244
+ for (const h of hostsToTry) {
245
+ for (const p of portsToTry) {
246
+ try {
247
+ const controller = new AbortController();
248
+ const timeoutId = setTimeout(() => controller.abort(), 1500);
249
+ await fetch(`http://${h}:${p}/__inapp_inspector/stop-build`, {
250
+ signal: controller.signal,
251
+ });
252
+ clearTimeout(timeoutId);
253
+ }
254
+ catch { }
255
+ }
256
+ }
257
+ setBuildStatus(prev => ({
258
+ ...prev,
259
+ status: 'idle',
260
+ currentTask: 'Build cancelled by user',
261
+ logs: [...(prev.logs || []), '🛑 Build cancelled by user.'],
262
+ }));
263
+ (0, toast_1.showToast)('Build cancelled');
264
+ };
265
+ const apkDownloadUrl = `http://${hostIp}:${port}/${apkFileName.replace(/^\/+/, '')}`;
266
+ const handleShare = () => {
267
+ (0, NativeInspector_1.triggerNativeHaptic)('light');
268
+ react_native_1.Share.share({
269
+ message: apkDownloadUrl,
270
+ title: 'Install Android APK',
271
+ });
272
+ };
273
+ const isBuilding = buildStatus.status === 'running';
274
+ return (<react_native_1.ScrollView style={styles.scrollArea} contentContainerStyle={styles.scrollContent} showsVerticalScrollIndicator={false}>
144
275
 
145
- <react_native_1.View style={styles.serverCard}>
146
- <react_native_1.View style={styles.serverCardTop}>
147
- <react_native_1.View style={styles.serverStatusLeft}>
148
- <react_native_1.View style={[
149
- styles.statusDot,
150
- {
151
- backgroundColor: activePortInfo?.status === 'active'
152
- ? AppColors_1.AppColors.greenColor
153
- : activePortInfo?.status === 'checking'
154
- ? AppColors_1.AppColors.warningIconGold
155
- : AppColors_1.AppColors.errorColor,
156
- },
157
- ]}/>
158
- <react_native_1.View>
159
- <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
160
- <react_native_1.Text style={styles.serverTitle}>Metro Dev Server</react_native_1.Text>
161
- <react_native_1.View style={styles.portPill}>
162
- <react_native_1.Text style={styles.portPillText}>Port {selectedPort}</react_native_1.Text>
163
- </react_native_1.View>
164
- </react_native_1.View>
165
- <react_native_1.Text style={styles.serverSubtitle}>
166
- {activePortInfo?.status === 'active'
167
- ? `🟢 Active & Bundling (${activePortInfo.latencyMs}ms)`
168
- : activePortInfo?.status === 'checking'
169
- ? '🟡 Probing Metro Ports...'
170
- : '🔴 Standby / Select active port'}
171
- </react_native_1.Text>
172
- </react_native_1.View>
276
+ <react_native_1.View style={styles.heroCard}>
277
+ <react_native_1.View style={styles.heroHeader}>
278
+ <react_native_1.View style={styles.heroIconWrap}>
279
+ <NetworkIcons_1.AndroidIcon size={20} color={AppColors_1.AppColors.white}/>
280
+ </react_native_1.View>
281
+ <react_native_1.View style={{ flex: 1, minWidth: 0 }}>
282
+ <react_native_1.Text style={styles.heroTitle} numberOfLines={1}>
283
+ Multi-Device APK Installer
284
+ </react_native_1.Text>
285
+ <react_native_1.Text style={styles.heroSubtitle} numberOfLines={1}>
286
+ Scan QR code with another Android device to download
287
+ </react_native_1.Text>
288
+ </react_native_1.View>
289
+ <react_native_1.View style={styles.heroBadge}>
290
+ <react_native_1.View style={styles.pulseDot}/>
291
+ <react_native_1.Text style={styles.heroBadgeText}>Live Metro</react_native_1.Text>
173
292
  </react_native_1.View>
174
-
175
- <TouchableScale_1.default onPress={probePorts} style={styles.scanBtn} hitSlop={8}>
176
- <NetworkIcons_1.RepeatIcon size={12} color={AppColors_1.AppColors.purple}/>
177
- <react_native_1.Text style={styles.scanBtnText}>Re-scan</react_native_1.Text>
178
- </TouchableScale_1.default>
179
293
  </react_native_1.View>
180
294
 
181
295
 
182
- <react_native_1.View style={styles.portsRow}>
183
- {COMMON_PORTS.map(p => {
184
- const isSelected = selectedPort === p;
185
- const pInfo = portsStatus[p];
186
- const isActive = pInfo?.status === 'active';
187
- return (<react_native_1.TouchableOpacity key={p} activeOpacity={0.7} onPress={() => setSelectedPort(p)} style={[
188
- styles.portChip,
189
- isSelected && styles.portChipSelected,
190
- isActive && { borderColor: AppColors_1.AppColors.greenColor },
191
- ]}>
192
- <react_native_1.View style={[
193
- styles.portMiniDot,
194
- {
195
- backgroundColor: isActive
196
- ? AppColors_1.AppColors.greenColor
197
- : AppColors_1.AppColors.grayTextWeak,
198
- },
199
- ]}/>
200
- <react_native_1.Text style={[
201
- styles.portChipText,
202
- isSelected && styles.portChipTextSelected,
203
- ]}>
204
- {p}
205
- </react_native_1.Text>
206
- {isActive && (<react_native_1.View style={styles.liveBadge}>
207
- <react_native_1.Text style={styles.liveBadgeText}>LIVE</react_native_1.Text>
208
- </react_native_1.View>)}
209
- </react_native_1.TouchableOpacity>);
210
- })}
296
+ <react_native_1.View style={styles.heroMetricsStrip}>
297
+ <react_native_1.View style={styles.heroMetricItem}>
298
+ <react_native_1.Text style={styles.heroMetricLabel}>HOST IP</react_native_1.Text>
299
+ <react_native_1.Text style={styles.heroMetricValue} numberOfLines={1}>
300
+ {hostIp}
301
+ </react_native_1.Text>
302
+ </react_native_1.View>
303
+ <react_native_1.View style={styles.heroMetricDivider}/>
304
+ <react_native_1.View style={styles.heroMetricItem}>
305
+ <react_native_1.Text style={styles.heroMetricLabel}>PORT</react_native_1.Text>
306
+ <react_native_1.Text style={styles.heroMetricValue}>{port}</react_native_1.Text>
307
+ </react_native_1.View>
308
+ <react_native_1.View style={styles.heroMetricDivider}/>
309
+ <react_native_1.View style={styles.heroMetricItem}>
310
+ <react_native_1.Text style={styles.heroMetricLabel}>APK SIZE</react_native_1.Text>
311
+ <react_native_1.Text style={[
312
+ styles.heroMetricValue,
313
+ { color: apkSizeMb ? AppColors_1.AppColors.emerald500 : AppColors_1.AppColors.grayTextWeak },
314
+ ]}>
315
+ {apkSizeMb ? `${apkSizeMb} MB` : 'Detected'}
316
+ </react_native_1.Text>
317
+ </react_native_1.View>
318
+ <react_native_1.View style={styles.heroMetricDivider}/>
319
+ <react_native_1.View style={styles.heroMetricItem}>
320
+ <react_native_1.Text style={styles.heroMetricLabel}>STATUS</react_native_1.Text>
321
+ <react_native_1.Text style={[
322
+ styles.heroMetricValue,
323
+ { color: AppColors_1.AppColors.emerald500 },
324
+ ]}>
325
+ Ready
326
+ </react_native_1.Text>
327
+ </react_native_1.View>
211
328
  </react_native_1.View>
212
329
  </react_native_1.View>
213
330
 
214
331
 
215
- <react_native_1.View style={styles.card}>
216
- <react_native_1.View style={styles.cardHeader}>
217
- <react_native_1.Text style={styles.cardTitle}>HOST IP & BUNDLE LOCATION</react_native_1.Text>
218
- <react_native_1.TouchableOpacity onPress={() => {
219
- if (detectedConfig.host !== 'localhost' &&
220
- detectedConfig.host !== '127.0.0.1' &&
221
- detectedConfig.host !== '10.0.2.2') {
222
- setHostIp(detectedConfig.host);
223
- (0, toast_1.showToast)(`Reset to detected IP: ${detectedConfig.host}`);
224
- }
225
- }}>
226
- <react_native_1.Text style={styles.headerActionText}>Reset to Detected</react_native_1.Text>
332
+ <react_native_1.View style={styles.sectionCard}>
333
+ <react_native_1.View style={styles.sectionHeaderRow}>
334
+ <react_native_1.Text style={styles.sectionTitle}>QR CODE & DIRECT DOWNLOAD</react_native_1.Text>
335
+ <react_native_1.TouchableOpacity activeOpacity={0.7} onPress={fetchMetroTelemetry} style={styles.refreshBtn}>
336
+ <NetworkIcons_1.RepeatIcon size={12} color={AppColors_1.AppColors.purple}/>
337
+ <react_native_1.Text style={styles.refreshBtnText}>Refresh</react_native_1.Text>
227
338
  </react_native_1.TouchableOpacity>
228
339
  </react_native_1.View>
229
340
 
230
- <react_native_1.View style={styles.inputContainer}>
231
- <react_native_1.Text style={styles.inputPrefix}>http://</react_native_1.Text>
232
- <react_native_1.TextInput style={styles.input} value={hostIp} onChangeText={setHostIp} placeholder="192.168.1.15" placeholderTextColor={AppColors_1.AppColors.grayTextWeak} autoCapitalize="none" autoCorrect={false}/>
233
- <react_native_1.Text style={styles.inputSuffix}>:{selectedPort}</react_native_1.Text>
341
+
342
+ <react_native_1.View style={styles.qrCenteredWrapper}>
343
+ <react_native_1.View style={styles.qrInnerFrame}>
344
+ <QRCodeView_1.default value={apkDownloadUrl} size={235} color={AppColors_1.AppColors.primaryBlack} backgroundColor={AppColors_1.AppColors.white}/>
345
+ </react_native_1.View>
234
346
  </react_native_1.View>
235
- <react_native_1.Text style={styles.inputHint}>
236
- 💡 Ensure your physical Android device and Mac are connected to the same Wi-Fi network.
237
- </react_native_1.Text>
238
347
  </react_native_1.View>
239
348
 
240
349
 
241
- <react_native_1.View style={styles.qrCard}>
350
+ <react_native_1.View style={styles.sectionCard}>
351
+ <react_native_1.View style={styles.sectionHeaderRow}>
352
+ <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
353
+ <NetworkIcons_1.BoltIcon size={13} color={AppColors_1.AppColors.purple}/>
354
+ <react_native_1.Text style={styles.sectionTitle}>BUILD GENERATOR (GRADLE)</react_native_1.Text>
355
+ </react_native_1.View>
356
+ {buildStatus.status === 'completed' && (<react_native_1.View style={styles.completedBadge}>
357
+ <NetworkIcons_1.CheckIcon size={10} color={AppColors_1.AppColors.emerald500}/>
358
+ <react_native_1.Text style={styles.completedBadgeText}>100% Ready</react_native_1.Text>
359
+ </react_native_1.View>)}
360
+ </react_native_1.View>
361
+
242
362
 
243
- <react_native_1.View style={styles.qrTabsRow}>
244
- <react_native_1.TouchableOpacity activeOpacity={0.7} onPress={() => setActiveQrTab('metro')} style={[
245
- styles.qrTab,
246
- activeQrTab === 'metro' && styles.qrTabActive,
363
+ <react_native_1.View style={styles.subTabStrip}>
364
+ <react_native_1.TouchableOpacity disabled={isBuilding} activeOpacity={0.7} onPress={() => {
365
+ (0, NativeInspector_1.triggerNativeHaptic)('light');
366
+ setSelectedScheme('assembleRelease');
367
+ }} style={[
368
+ styles.subTabItem,
369
+ selectedScheme === 'assembleRelease' && styles.subTabItemActive,
247
370
  ]}>
248
- <NetworkIcons_1.BoltIcon size={13} color={activeQrTab === 'metro' ? AppColors_1.AppColors.white : AppColors_1.AppColors.grayText}/>
249
371
  <react_native_1.Text style={[
250
- styles.qrTabText,
251
- activeQrTab === 'metro' && styles.qrTabTextActive,
372
+ styles.subTabText,
373
+ selectedScheme === 'assembleRelease' && styles.subTabTextActive,
252
374
  ]}>
253
- Metro Live Reload
375
+ Release (assembleRelease)
254
376
  </react_native_1.Text>
255
377
  </react_native_1.TouchableOpacity>
256
378
 
257
- <react_native_1.TouchableOpacity activeOpacity={0.7} onPress={() => setActiveQrTab('apk')} style={[
258
- styles.qrTab,
259
- activeQrTab === 'apk' && styles.qrTabActive,
379
+ <react_native_1.TouchableOpacity disabled={isBuilding} activeOpacity={0.7} onPress={() => {
380
+ (0, NativeInspector_1.triggerNativeHaptic)('light');
381
+ setSelectedScheme('assembleDebug');
382
+ }} style={[
383
+ styles.subTabItem,
384
+ selectedScheme === 'assembleDebug' && styles.subTabItemActive,
260
385
  ]}>
261
- <NetworkIcons_1.PackageIcon size={13} color={activeQrTab === 'apk' ? AppColors_1.AppColors.white : AppColors_1.AppColors.grayText}/>
262
386
  <react_native_1.Text style={[
263
- styles.qrTabText,
264
- activeQrTab === 'apk' && styles.qrTabTextActive,
387
+ styles.subTabText,
388
+ selectedScheme === 'assembleDebug' && styles.subTabTextActive,
265
389
  ]}>
266
- Install Debug APK
390
+ 🛠 Debug (assembleDebug)
267
391
  </react_native_1.Text>
268
392
  </react_native_1.TouchableOpacity>
393
+ </react_native_1.View>
269
394
 
270
- <react_native_1.TouchableOpacity activeOpacity={0.7} onPress={() => setActiveQrTab('host')} style={[
271
- styles.qrTab,
272
- activeQrTab === 'host' && styles.qrTabActive,
273
- ]}>
274
- <NetworkIcons_1.SmartphoneIcon size={13} color={activeQrTab === 'host' ? AppColors_1.AppColors.white : AppColors_1.AppColors.grayText}/>
275
- <react_native_1.Text style={[
276
- styles.qrTabText,
277
- activeQrTab === 'host' && styles.qrTabTextActive,
395
+
396
+ <react_native_1.TouchableOpacity disabled={isBuilding} activeOpacity={0.7} onPress={() => {
397
+ (0, NativeInspector_1.triggerNativeHaptic)('light');
398
+ setIsCleanBuild(!isCleanBuild);
399
+ }} style={styles.cleanRow}>
400
+ <react_native_1.View style={[
401
+ styles.checkboxBox,
402
+ isCleanBuild && styles.checkboxBoxActive,
278
403
  ]}>
279
- Dev Host Info
280
- </react_native_1.Text>
281
- </react_native_1.TouchableOpacity>
282
- </react_native_1.View>
404
+ {isCleanBuild && <NetworkIcons_1.CheckIcon size={11} color={AppColors_1.AppColors.white}/>}
405
+ </react_native_1.View>
406
+ <react_native_1.Text style={styles.cleanLabel}>
407
+ Clean build cache <react_native_1.Text style={styles.cleanCode}>(./gradlew clean)</react_native_1.Text>
408
+ </react_native_1.Text>
409
+ </react_native_1.TouchableOpacity>
283
410
 
284
411
 
285
- <react_native_1.View style={styles.qrWrapper}>
286
- <QRCodeView_1.default value={currentQrValue} size={190} color={AppColors_1.AppColors.primaryBlack} backgroundColor={AppColors_1.AppColors.white}/>
412
+ {isBuilding && (<react_native_1.View style={styles.progressContainer}>
413
+ <react_native_1.View style={styles.progressTopRow}>
414
+ <react_native_1.View style={styles.progressTaskGroup}>
415
+ <react_native_1.ActivityIndicator size="small" color={AppColors_1.AppColors.purple}/>
416
+ <react_native_1.Text style={styles.progressTaskText} numberOfLines={1}>
417
+ {buildStatus.currentTask || 'Executing Gradle tasks...'}
418
+ </react_native_1.Text>
419
+ </react_native_1.View>
420
+ <react_native_1.Text style={styles.progressPercentageText}>
421
+ {buildStatus.progress}%
422
+ </react_native_1.Text>
423
+ </react_native_1.View>
287
424
 
288
- <react_native_1.View style={styles.qrInfoBox}>
289
- <react_native_1.Text style={styles.qrTargetTitle}>
290
- {activeQrTab === 'apk'
291
- ? '📦 Direct APK Download URL'
292
- : activeQrTab === 'host'
293
- ? '📱 Dev Settings Bundle Host'
294
- : '⚡ Live Metro Fast-Refresh Endpoint'}
295
- </react_native_1.Text>
296
- <react_native_1.Text style={styles.qrTargetUrl} numberOfLines={2} ellipsizeMode="middle">
297
- {currentQrValue}
298
- </react_native_1.Text>
299
- </react_native_1.View>
300
- </react_native_1.View>
425
+
426
+ <react_native_1.View style={styles.progressBarTrack}>
427
+ <react_native_1.Animated.View style={[
428
+ styles.progressBarFill,
429
+ {
430
+ width: progressAnim.interpolate({
431
+ inputRange: [0, 100],
432
+ outputRange: ['5%', '100%'],
433
+ }),
434
+ },
435
+ ]}/>
436
+ </react_native_1.View>
437
+ </react_native_1.View>)}
301
438
 
302
439
 
303
- <react_native_1.View style={styles.qrActionsRow}>
304
- <TouchableScale_1.default onPress={() => (0, helpers_1.copyToClipboard)(currentQrValue, 'QR Link')} style={styles.actionBtn}>
305
- <react_native_1.Text style={styles.actionBtnText}>Copy Link</react_native_1.Text>
306
- </TouchableScale_1.default>
440
+ {buildStatus.status === 'failed' && (<react_native_1.View style={styles.errorContainer}>
441
+ <NetworkIcons_1.CircleXIcon size={13} color={AppColors_1.AppColors.errorColor}/>
442
+ <react_native_1.Text style={styles.errorText} numberOfLines={2}>
443
+ {buildStatus.error || 'Build execution failed.'}
444
+ </react_native_1.Text>
445
+ </react_native_1.View>)}
307
446
 
308
- <TouchableScale_1.default onPress={() => {
309
- react_native_1.Share.share({
310
- message: currentQrValue,
311
- title: 'Metro Debug Link',
312
- });
313
- }} style={[styles.actionBtn, styles.actionBtnPrimary]}>
314
- <react_native_1.Text style={styles.actionBtnPrimaryText}>Share to Device</react_native_1.Text>
315
- </TouchableScale_1.default>
316
- </react_native_1.View>
317
- </react_native_1.View>
447
+
448
+ {((buildStatus.logs && buildStatus.logs.length > 0) || isBuilding) && (<react_native_1.View style={styles.consoleContainer}>
449
+ <react_native_1.View style={styles.consoleHeaderRow}>
450
+ <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
451
+ <TerminalConsoleIcon color="#38BDF8" size={12}/>
452
+ <react_native_1.Text style={styles.consoleHeaderTitle}>GRADLE VERBOSE OUTPUT</react_native_1.Text>
453
+ </react_native_1.View>
454
+ <react_native_1.TouchableOpacity activeOpacity={0.7} onPress={() => setShowVerboseLogs(!showVerboseLogs)} style={styles.consoleToggleBtn}>
455
+ <react_native_1.Text style={styles.consoleToggleText}>
456
+ {showVerboseLogs ? 'Hide Console' : 'Show Console'}
457
+ </react_native_1.Text>
458
+ </react_native_1.TouchableOpacity>
459
+ </react_native_1.View>
318
460
 
319
-
320
- <react_native_1.View style={styles.guideCard}>
321
- <react_native_1.Text style={styles.guideHeading}>📱 HOW TO CONNECT ANDROID DEVICE:</react_native_1.Text>
461
+ {showVerboseLogs && (<react_native_1.ScrollView ref={verboseScrollRef} style={styles.consoleLogBox} contentContainerStyle={styles.consoleLogContent} nestedScrollEnabled showsVerticalScrollIndicator>
462
+ {buildStatus.logs && buildStatus.logs.length > 0 ? (buildStatus.logs.map((logLine, idx) => {
463
+ let logColor = '#94A3B8';
464
+ if (logLine.startsWith('> Task :'))
465
+ logColor = '#38BDF8';
466
+ else if (logLine.includes('BUILD SUCCESSFUL'))
467
+ logColor = '#4ADE80';
468
+ else if (logLine.includes('FAILURE') || logLine.includes('error:'))
469
+ logColor = '#F87171';
470
+ else if (logLine.includes('UP-TO-DATE'))
471
+ logColor = '#A78BFA';
472
+ return (<react_native_1.Text key={idx} style={[styles.consoleLogLine, { color: logColor }]}>
473
+ {logLine}
474
+ </react_native_1.Text>);
475
+ })) : (<react_native_1.Text style={styles.consoleLogPlaceholder}>
476
+ Waiting for Gradle daemon output...
477
+ </react_native_1.Text>)}
478
+ </react_native_1.ScrollView>)}
479
+ </react_native_1.View>)}
322
480
 
323
- <react_native_1.View style={styles.stepRow}>
324
- <react_native_1.View style={styles.stepNumberBadge}>
325
- <react_native_1.Text style={styles.stepNumberText}>1</react_native_1.Text>
326
- </react_native_1.View>
327
- <react_native_1.View style={{ flex: 1 }}>
328
- <react_native_1.Text style={styles.stepTitle}>Connect to Same Wi-Fi</react_native_1.Text>
329
- <react_native_1.Text style={styles.stepDesc}>
330
- Make sure your Android phone is connected to the same Wi-Fi router or Mac Mobile Hotspot.
331
- </react_native_1.Text>
332
- </react_native_1.View>
333
- </react_native_1.View>
481
+
482
+ {isBuilding ? (<react_native_1.View style={styles.buildingActionsRow}>
483
+ <react_native_1.View style={styles.buildingStatusPill}>
484
+ <react_native_1.ActivityIndicator size="small" color={AppColors_1.AppColors.purple}/>
485
+ <react_native_1.Text style={styles.buildingStatusPillText} numberOfLines={1}>
486
+ Building ({buildStatus.progress}%)
487
+ </react_native_1.Text>
488
+ </react_native_1.View>
334
489
 
335
- <react_native_1.View style={styles.stepRow}>
336
- <react_native_1.View style={styles.stepNumberBadge}>
337
- <react_native_1.Text style={styles.stepNumberText}>2</react_native_1.Text>
338
- </react_native_1.View>
339
- <react_native_1.View style={{ flex: 1 }}>
340
- <react_native_1.Text style={styles.stepTitle}>Scan to Install / Connect</react_native_1.Text>
341
- <react_native_1.Text style={styles.stepDesc}>
342
- Open Android Camera or browser, scan the QR code above to download the APK or connect Metro.
343
- </react_native_1.Text>
344
- </react_native_1.View>
345
- </react_native_1.View>
490
+ <TouchableScale_1.default onPress={handleStopBuild} style={styles.stopBtn}>
491
+ <NetworkIcons_1.CircleXIcon size={13} color={AppColors_1.AppColors.white}/>
492
+ <react_native_1.Text style={styles.stopBtnText}>Stop Build</react_native_1.Text>
493
+ </TouchableScale_1.default>
494
+ </react_native_1.View>) : (<TouchableScale_1.default onPress={handleStartBuild} style={styles.generateBtn}>
495
+ <react_native_1.View style={styles.ctaContentRow}>
496
+ <NetworkIcons_1.SparkleIcon size={14} color={AppColors_1.AppColors.white}/>
497
+ <react_native_1.Text style={styles.generateBtnText}>
498
+ {isCleanBuild ? 'Clean & Generate Build' : 'Generate Build'}
499
+ </react_native_1.Text>
500
+ </react_native_1.View>
501
+ </TouchableScale_1.default>)}
502
+ </react_native_1.View>
346
503
 
347
- <react_native_1.View style={styles.stepRow}>
348
- <react_native_1.View style={styles.stepNumberBadge}>
349
- <react_native_1.Text style={styles.stepNumberText}>3</react_native_1.Text>
350
- </react_native_1.View>
351
- <react_native_1.View style={{ flex: 1 }}>
352
- <react_native_1.Text style={styles.stepTitle}>Simultaneous Live Fast-Refresh ⚡</react_native_1.Text>
353
- <react_native_1.Text style={styles.stepDesc}>
354
- Any changes saved in VS Code will immediately update <react_native_1.Text style={{ fontWeight: '700' }}>both the iOS Simulator and physical Android phone</react_native_1.Text> in real-time!
355
- </react_native_1.Text>
356
- </react_native_1.View>
357
- </react_native_1.View>
504
+
505
+ <react_native_1.View style={styles.footerNoteRow}>
506
+ <NetworkIcons_1.InfoCircleIcon size={13} color={AppColors_1.AppColors.grayTextWeak}/>
507
+ <react_native_1.Text style={styles.footerNoteText}>
508
+ Ensure both Android devices are connected to the same Wi-Fi network.
509
+ </react_native_1.Text>
358
510
  </react_native_1.View>
359
511
  </react_native_1.ScrollView>);
360
512
  };
361
513
  exports.DebuggingTab = DebuggingTab;
362
514
  const styles = react_native_1.StyleSheet.create({
363
- container: {
515
+ scrollArea: {
364
516
  flex: 1,
365
517
  backgroundColor: AppColors_1.AppColors.contentBg,
366
518
  },
367
- content: {
519
+ scrollContent: {
368
520
  padding: 12,
369
521
  gap: 12,
370
- paddingBottom: 40,
522
+ paddingBottom: 100,
371
523
  },
372
- serverCard: {
524
+ heroCard: {
373
525
  backgroundColor: AppColors_1.AppColors.primaryLight,
374
526
  borderRadius: 14,
375
- padding: 14,
376
527
  borderWidth: 1,
377
528
  borderColor: AppColors_1.AppColors.grayBorderSecondary,
529
+ padding: 14,
378
530
  shadowColor: AppColors_1.AppColors.black,
379
- shadowOffset: { width: 0, height: 2 },
380
- shadowOpacity: 0.05,
531
+ shadowOpacity: 0.04,
381
532
  shadowRadius: 4,
382
- elevation: 2,
533
+ shadowOffset: { width: 0, height: 2 },
534
+ elevation: 1,
383
535
  gap: 12,
384
536
  },
385
- serverCardTop: {
386
- flexDirection: 'row',
387
- alignItems: 'center',
388
- justifyContent: 'space-between',
389
- },
390
- serverStatusLeft: {
537
+ heroHeader: {
391
538
  flexDirection: 'row',
392
539
  alignItems: 'center',
393
540
  gap: 10,
394
- flex: 1,
395
541
  },
396
- statusDot: {
397
- width: 12,
398
- height: 12,
399
- borderRadius: 6,
542
+ heroIconWrap: {
543
+ width: 38,
544
+ height: 38,
545
+ borderRadius: 10,
546
+ backgroundColor: AppColors_1.AppColors.purple,
547
+ alignItems: 'center',
548
+ justifyContent: 'center',
549
+ shadowColor: AppColors_1.AppColors.purple,
550
+ shadowOpacity: 0.25,
551
+ shadowRadius: 4,
552
+ shadowOffset: { width: 0, height: 2 },
553
+ elevation: 2,
400
554
  },
401
- serverTitle: {
555
+ heroTitle: {
402
556
  fontFamily: AppFonts_1.AppFonts.interBold,
403
557
  fontSize: 15,
404
558
  color: AppColors_1.AppColors.primaryBlack,
559
+ letterSpacing: -0.2,
405
560
  },
406
- serverSubtitle: {
407
- fontFamily: AppFonts_1.AppFonts.interMedium,
408
- fontSize: 11,
561
+ heroSubtitle: {
562
+ fontFamily: AppFonts_1.AppFonts.interRegular,
563
+ fontSize: 11.5,
409
564
  color: AppColors_1.AppColors.grayText,
410
- marginTop: 2,
411
- },
412
- portPill: {
413
- backgroundColor: `${AppColors_1.AppColors.purple}18`,
414
- paddingHorizontal: 6,
415
- paddingVertical: 2,
416
- borderRadius: 6,
417
- },
418
- portPillText: {
419
- fontFamily: AppFonts_1.AppFonts.interBold,
420
- fontSize: 10,
421
- color: AppColors_1.AppColors.purple,
565
+ marginTop: 1,
422
566
  },
423
- scanBtn: {
567
+ heroBadge: {
424
568
  flexDirection: 'row',
425
569
  alignItems: 'center',
426
570
  gap: 4,
427
- paddingHorizontal: 8,
428
- paddingVertical: 4,
571
+ backgroundColor: `${AppColors_1.AppColors.emerald500}18`,
572
+ paddingHorizontal: 7,
573
+ paddingVertical: 3,
429
574
  borderRadius: 6,
430
- backgroundColor: `${AppColors_1.AppColors.purple}14`,
431
- borderWidth: 1,
432
- borderColor: `${AppColors_1.AppColors.purple}30`,
433
575
  },
434
- scanBtnText: {
435
- fontFamily: AppFonts_1.AppFonts.interBold,
436
- fontSize: 11,
437
- color: AppColors_1.AppColors.purple,
576
+ pulseDot: {
577
+ width: 6,
578
+ height: 6,
579
+ borderRadius: 3,
580
+ backgroundColor: AppColors_1.AppColors.emerald500,
438
581
  },
439
- portsRow: {
440
- flexDirection: 'row',
441
- gap: 8,
582
+ heroBadgeText: {
583
+ fontFamily: AppFonts_1.AppFonts.interBold,
584
+ fontSize: 9.5,
585
+ color: AppColors_1.AppColors.emerald500,
442
586
  },
443
- portChip: {
444
- flex: 1,
587
+ heroMetricsStrip: {
445
588
  flexDirection: 'row',
446
589
  alignItems: 'center',
447
- justifyContent: 'center',
448
- gap: 4,
449
- paddingVertical: 7,
450
- borderRadius: 8,
451
590
  backgroundColor: AppColors_1.AppColors.grayBackground,
452
- borderWidth: 1,
453
- borderColor: AppColors_1.AppColors.grayBorderSecondary,
591
+ borderRadius: 10,
592
+ paddingVertical: 8,
593
+ paddingHorizontal: 10,
454
594
  },
455
- portChipSelected: {
456
- backgroundColor: `${AppColors_1.AppColors.purple}18`,
457
- borderColor: AppColors_1.AppColors.purple,
595
+ heroMetricItem: {
596
+ flex: 1,
597
+ alignItems: 'center',
598
+ paddingHorizontal: 2,
599
+ minWidth: 0,
458
600
  },
459
- portMiniDot: {
460
- width: 5,
461
- height: 5,
462
- borderRadius: 2.5,
601
+ heroMetricLabel: {
602
+ fontFamily: AppFonts_1.AppFonts.interBold,
603
+ fontSize: 8.5,
604
+ color: AppColors_1.AppColors.grayTextWeak,
605
+ letterSpacing: 0.4,
463
606
  },
464
- portChipText: {
607
+ heroMetricValue: {
465
608
  fontFamily: AppFonts_1.AppFonts.interBold,
466
609
  fontSize: 11,
467
- color: AppColors_1.AppColors.grayTextStrong,
468
- },
469
- portChipTextSelected: {
470
- color: AppColors_1.AppColors.purple,
471
- },
472
- liveBadge: {
473
- backgroundColor: AppColors_1.AppColors.greenColor,
474
- paddingHorizontal: 3,
475
- paddingVertical: 0.5,
476
- borderRadius: 3,
610
+ color: AppColors_1.AppColors.primaryBlack,
611
+ marginTop: 2,
477
612
  },
478
- liveBadgeText: {
479
- fontFamily: AppFonts_1.AppFonts.interBold,
480
- fontSize: 7.5,
481
- color: AppColors_1.AppColors.white,
613
+ heroMetricDivider: {
614
+ width: 1,
615
+ height: 20,
616
+ backgroundColor: AppColors_1.AppColors.dividerColor,
482
617
  },
483
- card: {
618
+ sectionCard: {
484
619
  backgroundColor: AppColors_1.AppColors.primaryLight,
485
620
  borderRadius: 14,
486
- padding: 14,
487
621
  borderWidth: 1,
488
622
  borderColor: AppColors_1.AppColors.grayBorderSecondary,
623
+ padding: 14,
489
624
  shadowColor: AppColors_1.AppColors.black,
490
- shadowOffset: { width: 0, height: 2 },
491
- shadowOpacity: 0.05,
492
- shadowRadius: 4,
493
- elevation: 2,
494
- gap: 8,
625
+ shadowOpacity: 0.03,
626
+ shadowRadius: 3,
627
+ shadowOffset: { width: 0, height: 1 },
628
+ elevation: 1,
629
+ gap: 12,
495
630
  },
496
- cardHeader: {
631
+ sectionHeaderRow: {
497
632
  flexDirection: 'row',
498
633
  alignItems: 'center',
499
634
  justifyContent: 'space-between',
500
635
  },
501
- cardTitle: {
636
+ sectionTitle: {
502
637
  fontFamily: AppFonts_1.AppFonts.interBold,
503
- fontSize: 11,
638
+ fontSize: 10.5,
504
639
  color: AppColors_1.AppColors.grayTextWeak,
505
- letterSpacing: 0.6,
640
+ letterSpacing: 0.8,
641
+ textTransform: 'uppercase',
642
+ },
643
+ refreshBtn: {
644
+ flexDirection: 'row',
645
+ alignItems: 'center',
646
+ gap: 4,
647
+ paddingHorizontal: 7,
648
+ paddingVertical: 3,
649
+ borderRadius: 6,
650
+ backgroundColor: `${AppColors_1.AppColors.purple}12`,
506
651
  },
507
- headerActionText: {
652
+ refreshBtnText: {
508
653
  fontFamily: AppFonts_1.AppFonts.interBold,
509
- fontSize: 11,
654
+ fontSize: 10,
510
655
  color: AppColors_1.AppColors.purple,
511
656
  },
512
- inputContainer: {
657
+ qrCenteredWrapper: {
658
+ alignItems: 'center',
659
+ justifyContent: 'center',
660
+ backgroundColor: AppColors_1.AppColors.grayBackground,
661
+ padding: 12,
662
+ borderRadius: 12,
663
+ borderWidth: 1,
664
+ borderColor: AppColors_1.AppColors.grayBorderSecondary,
665
+ },
666
+ qrInnerFrame: {
667
+ backgroundColor: AppColors_1.AppColors.white,
668
+ padding: 6,
669
+ borderRadius: 8,
670
+ },
671
+ urlBox: {
513
672
  flexDirection: 'row',
514
673
  alignItems: 'center',
515
674
  backgroundColor: AppColors_1.AppColors.grayBackground,
516
675
  borderRadius: 10,
676
+ paddingLeft: 10,
677
+ paddingRight: 6,
678
+ paddingVertical: 6,
517
679
  borderWidth: 1,
518
680
  borderColor: AppColors_1.AppColors.grayBorderSecondary,
519
- paddingHorizontal: 10,
520
- height: 40,
681
+ gap: 8,
521
682
  },
522
- inputPrefix: {
683
+ urlText: {
684
+ flex: 1,
523
685
  fontFamily: AppFonts_1.AppFonts.interMedium,
524
- fontSize: 12.5,
525
- color: AppColors_1.AppColors.grayTextWeak,
686
+ fontSize: 11.5,
687
+ color: AppColors_1.AppColors.skyBlue,
526
688
  },
527
- input: {
689
+ actionsRow: {
690
+ flexDirection: 'row',
691
+ gap: 10,
692
+ },
693
+ actionBtnSecondary: {
528
694
  flex: 1,
529
- fontFamily: AppFonts_1.AppFonts.interBold,
530
- fontSize: 13,
531
- color: AppColors_1.AppColors.primaryBlack,
532
- paddingVertical: 0,
695
+ flexDirection: 'row',
696
+ alignItems: 'center',
697
+ justifyContent: 'center',
698
+ gap: 6,
699
+ paddingVertical: 9,
700
+ borderRadius: 10,
701
+ borderWidth: 1,
702
+ borderColor: AppColors_1.AppColors.grayBorderSecondary,
703
+ backgroundColor: AppColors_1.AppColors.grayBackground,
533
704
  },
534
- inputSuffix: {
705
+ actionBtnSecondaryText: {
535
706
  fontFamily: AppFonts_1.AppFonts.interBold,
536
- fontSize: 12.5,
537
- color: AppColors_1.AppColors.purple,
538
- },
539
- inputHint: {
540
- fontFamily: AppFonts_1.AppFonts.interRegular,
541
- fontSize: 11,
542
- color: AppColors_1.AppColors.grayTextWeak,
543
- lineHeight: 15,
707
+ fontSize: 12,
708
+ color: AppColors_1.AppColors.grayTextStrong,
544
709
  },
545
- qrCard: {
546
- backgroundColor: AppColors_1.AppColors.primaryLight,
547
- borderRadius: 14,
548
- padding: 14,
549
- borderWidth: 1,
550
- borderColor: AppColors_1.AppColors.grayBorderSecondary,
551
- shadowColor: AppColors_1.AppColors.black,
552
- shadowOffset: { width: 0, height: 2 },
553
- shadowOpacity: 0.05,
710
+ actionBtnPrimary: {
711
+ flex: 1,
712
+ flexDirection: 'row',
713
+ alignItems: 'center',
714
+ justifyContent: 'center',
715
+ gap: 6,
716
+ paddingVertical: 9,
717
+ borderRadius: 10,
718
+ backgroundColor: AppColors_1.AppColors.purple,
719
+ shadowColor: AppColors_1.AppColors.purple,
720
+ shadowOpacity: 0.25,
554
721
  shadowRadius: 4,
722
+ shadowOffset: { width: 0, height: 2 },
555
723
  elevation: 2,
724
+ },
725
+ actionBtnPrimaryText: {
726
+ fontFamily: AppFonts_1.AppFonts.interBold,
727
+ fontSize: 12,
728
+ color: AppColors_1.AppColors.white,
729
+ },
730
+ completedBadge: {
731
+ flexDirection: 'row',
556
732
  alignItems: 'center',
557
- gap: 14,
733
+ gap: 3,
734
+ backgroundColor: `${AppColors_1.AppColors.emerald500}18`,
735
+ paddingHorizontal: 6,
736
+ paddingVertical: 2,
737
+ borderRadius: 5,
738
+ },
739
+ completedBadgeText: {
740
+ fontFamily: AppFonts_1.AppFonts.interBold,
741
+ fontSize: 9.5,
742
+ color: AppColors_1.AppColors.emerald500,
558
743
  },
559
- qrTabsRow: {
744
+ subTabStrip: {
560
745
  flexDirection: 'row',
561
746
  backgroundColor: AppColors_1.AppColors.grayBackground,
562
- borderRadius: 10,
563
- padding: 3,
564
- width: '100%',
565
- gap: 4,
747
+ borderRadius: 8,
748
+ padding: 2,
749
+ borderWidth: 1,
750
+ borderColor: AppColors_1.AppColors.grayBorderSecondary,
566
751
  },
567
- qrTab: {
752
+ subTabItem: {
568
753
  flex: 1,
569
- flexDirection: 'row',
754
+ paddingVertical: 7,
755
+ borderRadius: 6,
570
756
  alignItems: 'center',
571
757
  justifyContent: 'center',
572
- gap: 4,
573
- paddingVertical: 7,
574
- borderRadius: 8,
575
758
  },
576
- qrTabActive: {
759
+ subTabItemActive: {
577
760
  backgroundColor: AppColors_1.AppColors.purple,
761
+ shadowColor: AppColors_1.AppColors.purple,
762
+ shadowOpacity: 0.2,
763
+ shadowRadius: 3,
764
+ shadowOffset: { width: 0, height: 1 },
765
+ elevation: 1,
578
766
  },
579
- qrTabText: {
767
+ subTabText: {
580
768
  fontFamily: AppFonts_1.AppFonts.interMedium,
581
769
  fontSize: 11,
582
770
  color: AppColors_1.AppColors.grayText,
583
771
  },
584
- qrTabTextActive: {
585
- color: AppColors_1.AppColors.white,
772
+ subTabTextActive: {
586
773
  fontFamily: AppFonts_1.AppFonts.interBold,
774
+ color: AppColors_1.AppColors.white,
587
775
  },
588
- qrWrapper: {
776
+ cleanRow: {
777
+ flexDirection: 'row',
589
778
  alignItems: 'center',
590
- gap: 12,
779
+ gap: 8,
780
+ paddingVertical: 2,
591
781
  },
592
- qrInfoBox: {
782
+ checkboxBox: {
783
+ width: 18,
784
+ height: 18,
785
+ borderRadius: 4,
786
+ borderWidth: 1.5,
787
+ borderColor: AppColors_1.AppColors.grayBorderSecondary,
788
+ backgroundColor: AppColors_1.AppColors.grayBackground,
593
789
  alignItems: 'center',
594
- maxWidth: 280,
595
- gap: 2,
790
+ justifyContent: 'center',
596
791
  },
597
- qrTargetTitle: {
598
- fontFamily: AppFonts_1.AppFonts.interBold,
792
+ checkboxBoxActive: {
793
+ backgroundColor: AppColors_1.AppColors.purple,
794
+ borderColor: AppColors_1.AppColors.purple,
795
+ },
796
+ cleanLabel: {
797
+ fontFamily: AppFonts_1.AppFonts.interMedium,
599
798
  fontSize: 11.5,
600
- color: AppColors_1.AppColors.primaryBlack,
799
+ color: AppColors_1.AppColors.grayTextStrong,
601
800
  },
602
- qrTargetUrl: {
801
+ cleanCode: {
603
802
  fontFamily: AppFonts_1.AppFonts.interRegular,
803
+ color: AppColors_1.AppColors.grayTextWeak,
604
804
  fontSize: 10.5,
605
- color: AppColors_1.AppColors.skyBlue,
606
- textAlign: 'center',
607
- },
608
- qrActionsRow: {
609
- flexDirection: 'row',
610
- gap: 10,
611
- width: '100%',
612
805
  },
613
- actionBtn: {
614
- flex: 1,
615
- paddingVertical: 10,
806
+ progressContainer: {
807
+ backgroundColor: AppColors_1.AppColors.grayBackground,
616
808
  borderRadius: 10,
809
+ padding: 10,
810
+ gap: 6,
617
811
  borderWidth: 1,
618
812
  borderColor: AppColors_1.AppColors.grayBorderSecondary,
619
- backgroundColor: AppColors_1.AppColors.grayBackground,
813
+ },
814
+ progressTopRow: {
815
+ flexDirection: 'row',
620
816
  alignItems: 'center',
621
- justifyContent: 'center',
817
+ justifyContent: 'space-between',
818
+ },
819
+ progressTaskGroup: {
820
+ flexDirection: 'row',
821
+ alignItems: 'center',
822
+ gap: 6,
823
+ flex: 1,
824
+ paddingRight: 8,
825
+ },
826
+ progressTaskText: {
827
+ fontFamily: AppFonts_1.AppFonts.interMedium,
828
+ fontSize: 11,
829
+ color: AppColors_1.AppColors.primaryBlack,
830
+ flex: 1,
622
831
  },
623
- actionBtnText: {
832
+ progressPercentageText: {
624
833
  fontFamily: AppFonts_1.AppFonts.interBold,
625
- fontSize: 12,
626
- color: AppColors_1.AppColors.grayTextStrong,
834
+ fontSize: 11.5,
835
+ color: AppColors_1.AppColors.purple,
627
836
  },
628
- actionBtnPrimary: {
837
+ progressBarTrack: {
838
+ width: '100%',
839
+ height: 6,
840
+ borderRadius: 3,
841
+ backgroundColor: AppColors_1.AppColors.grayBorderSecondary,
842
+ overflow: 'hidden',
843
+ },
844
+ progressBarFill: {
845
+ height: '100%',
629
846
  backgroundColor: AppColors_1.AppColors.purple,
630
- borderColor: AppColors_1.AppColors.purple,
847
+ borderRadius: 3,
631
848
  },
632
- actionBtnPrimaryText: {
633
- fontFamily: AppFonts_1.AppFonts.interBold,
634
- fontSize: 12,
635
- color: AppColors_1.AppColors.white,
849
+ errorContainer: {
850
+ flexDirection: 'row',
851
+ alignItems: 'center',
852
+ gap: 6,
853
+ backgroundColor: `${AppColors_1.AppColors.errorColor}12`,
854
+ padding: 8,
855
+ borderRadius: 8,
856
+ borderWidth: 1,
857
+ borderColor: `${AppColors_1.AppColors.errorColor}25`,
636
858
  },
637
- guideCard: {
638
- backgroundColor: AppColors_1.AppColors.primaryLight,
639
- borderRadius: 14,
640
- padding: 14,
859
+ errorText: {
860
+ fontFamily: AppFonts_1.AppFonts.interRegular,
861
+ fontSize: 11,
862
+ color: AppColors_1.AppColors.errorColor,
863
+ flex: 1,
864
+ },
865
+ consoleContainer: {
866
+ backgroundColor: '#0F172A',
867
+ borderRadius: 10,
641
868
  borderWidth: 1,
642
- borderColor: AppColors_1.AppColors.grayBorderSecondary,
643
- gap: 10,
869
+ borderColor: '#1E293B',
870
+ overflow: 'hidden',
871
+ marginTop: 4,
872
+ },
873
+ consoleHeaderRow: {
874
+ flexDirection: 'row',
875
+ alignItems: 'center',
876
+ justifyContent: 'space-between',
877
+ backgroundColor: '#1E293B',
878
+ paddingHorizontal: 10,
879
+ paddingVertical: 6,
644
880
  },
645
- guideHeading: {
881
+ consoleHeaderTitle: {
646
882
  fontFamily: AppFonts_1.AppFonts.interBold,
647
- fontSize: 11,
648
- color: AppColors_1.AppColors.grayTextWeak,
649
- letterSpacing: 0.6,
883
+ fontSize: 10,
884
+ color: '#38BDF8',
885
+ letterSpacing: 0.5,
886
+ },
887
+ consoleToggleBtn: {
888
+ paddingHorizontal: 6,
889
+ paddingVertical: 2,
890
+ borderRadius: 4,
891
+ backgroundColor: 'rgba(255,255,255,0.1)',
892
+ },
893
+ consoleToggleText: {
894
+ fontFamily: AppFonts_1.AppFonts.interMedium,
895
+ fontSize: 9.5,
896
+ color: '#94A3B8',
897
+ },
898
+ consoleLogBox: {
899
+ maxHeight: 140,
900
+ paddingHorizontal: 10,
901
+ paddingVertical: 8,
650
902
  },
651
- stepRow: {
903
+ consoleLogContent: {
904
+ gap: 3,
905
+ },
906
+ consoleLogLine: {
907
+ fontFamily: react_native_1.Platform.OS === 'ios' ? 'Menlo' : 'monospace',
908
+ fontSize: 10,
909
+ lineHeight: 14,
910
+ },
911
+ consoleLogPlaceholder: {
912
+ fontFamily: react_native_1.Platform.OS === 'ios' ? 'Menlo' : 'monospace',
913
+ fontSize: 10,
914
+ color: '#64748B',
915
+ fontStyle: 'italic',
916
+ },
917
+ generateBtn: {
918
+ backgroundColor: AppColors_1.AppColors.purple,
919
+ borderRadius: 10,
920
+ paddingVertical: 10,
921
+ alignItems: 'center',
922
+ justifyContent: 'center',
923
+ shadowColor: AppColors_1.AppColors.purple,
924
+ shadowOpacity: 0.25,
925
+ shadowRadius: 4,
926
+ shadowOffset: { width: 0, height: 2 },
927
+ elevation: 2,
928
+ },
929
+ generateBtnDisabled: {
930
+ opacity: 0.7,
931
+ },
932
+ buildingActionsRow: {
652
933
  flexDirection: 'row',
653
- alignItems: 'flex-start',
934
+ alignItems: 'center',
654
935
  gap: 10,
655
936
  },
656
- stepNumberBadge: {
657
- width: 22,
658
- height: 22,
659
- borderRadius: 11,
660
- backgroundColor: `${AppColors_1.AppColors.purple}18`,
937
+ buildingStatusPill: {
938
+ flex: 1,
939
+ flexDirection: 'row',
661
940
  alignItems: 'center',
662
941
  justifyContent: 'center',
663
- marginTop: 1,
942
+ gap: 8,
943
+ backgroundColor: `${AppColors_1.AppColors.purple}14`,
944
+ borderRadius: 10,
945
+ paddingVertical: 10,
946
+ borderWidth: 1,
947
+ borderColor: `${AppColors_1.AppColors.purple}30`,
664
948
  },
665
- stepNumberText: {
949
+ buildingStatusPillText: {
666
950
  fontFamily: AppFonts_1.AppFonts.interBold,
667
- fontSize: 11,
951
+ fontSize: 12,
668
952
  color: AppColors_1.AppColors.purple,
669
953
  },
670
- stepTitle: {
954
+ stopBtn: {
955
+ flexDirection: 'row',
956
+ alignItems: 'center',
957
+ justifyContent: 'center',
958
+ gap: 6,
959
+ backgroundColor: AppColors_1.AppColors.errorColor,
960
+ borderRadius: 10,
961
+ paddingHorizontal: 16,
962
+ paddingVertical: 10,
963
+ shadowColor: AppColors_1.AppColors.errorColor,
964
+ shadowOpacity: 0.25,
965
+ shadowRadius: 4,
966
+ shadowOffset: { width: 0, height: 2 },
967
+ elevation: 2,
968
+ },
969
+ stopBtnText: {
970
+ fontFamily: AppFonts_1.AppFonts.interBold,
971
+ fontSize: 12,
972
+ color: AppColors_1.AppColors.white,
973
+ },
974
+ ctaContentRow: {
975
+ flexDirection: 'row',
976
+ alignItems: 'center',
977
+ gap: 6,
978
+ },
979
+ generateBtnText: {
671
980
  fontFamily: AppFonts_1.AppFonts.interBold,
672
981
  fontSize: 12.5,
673
- color: AppColors_1.AppColors.primaryBlack,
982
+ color: AppColors_1.AppColors.white,
983
+ },
984
+ footerNoteRow: {
985
+ flexDirection: 'row',
986
+ alignItems: 'center',
987
+ gap: 6,
988
+ paddingHorizontal: 8,
674
989
  },
675
- stepDesc: {
990
+ footerNoteText: {
676
991
  fontFamily: AppFonts_1.AppFonts.interRegular,
677
992
  fontSize: 11,
678
- color: AppColors_1.AppColors.grayText,
679
- lineHeight: 16,
680
- marginTop: 1,
993
+ color: AppColors_1.AppColors.grayTextWeak,
994
+ textAlign: 'center',
995
+ flex: 1,
681
996
  },
682
997
  });
683
998
  exports.default = exports.DebuggingTab;