react-native-inapp-inspector 2.3.19 → 2.3.21

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 (353) hide show
  1. package/README.md +14 -14
  2. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +67 -0
  3. package/dist/commonjs/analytics.js +1 -24
  4. package/dist/commonjs/bundle.js +1 -16
  5. package/dist/commonjs/capture.js +1 -35
  6. package/dist/commonjs/components/AnalyticsDetail.js +92 -623
  7. package/dist/commonjs/components/AnalyticsEventCard.js +54 -350
  8. package/dist/commonjs/components/AnalyticsGraph.js +70 -370
  9. package/dist/commonjs/components/AnimatedEntrance.js +1 -11
  10. package/dist/commonjs/components/AppHeaderLogo.js +7 -134
  11. package/dist/commonjs/components/BrandCircleIcon.js +73 -118
  12. package/dist/commonjs/components/BrandSquareIcon.js +63 -108
  13. package/dist/commonjs/components/CodeSnippet.js +48 -623
  14. package/dist/commonjs/components/ConsoleLogCard.js +63 -537
  15. package/dist/commonjs/components/CopyButton.js +3 -89
  16. package/dist/commonjs/components/DiffViewer.js +19 -83
  17. package/dist/commonjs/components/DomainHeader.js +27 -127
  18. package/dist/commonjs/components/EmptyState.js +10 -87
  19. package/dist/commonjs/components/EndOfListFooter.js +7 -81
  20. package/dist/commonjs/components/ErrorBoundary.js +72 -566
  21. package/dist/commonjs/components/HeadersSection.js +31 -110
  22. package/dist/commonjs/components/HighlightText.js +17 -58
  23. package/dist/commonjs/components/Inspector/AboutModal.d.ts +6 -0
  24. package/dist/commonjs/components/Inspector/AboutModal.js +243 -0
  25. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +98 -797
  26. package/dist/commonjs/components/Inspector/AnalyticsTab.js +284 -930
  27. package/dist/commonjs/components/Inspector/BundleTab.js +551 -2918
  28. package/dist/commonjs/components/Inspector/ConsoleTab.js +79 -492
  29. package/dist/commonjs/components/Inspector/CrashDetail.js +123 -672
  30. package/dist/commonjs/components/Inspector/CrashFilterModal.js +66 -498
  31. package/dist/commonjs/components/Inspector/CrashTab.js +98 -670
  32. package/dist/commonjs/components/Inspector/DebuggingTab.js +74 -875
  33. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +143 -907
  34. package/dist/commonjs/components/Inspector/FabLauncher.js +42 -466
  35. package/dist/commonjs/components/Inspector/FeatureUnderDevNotice.js +6 -99
  36. package/dist/commonjs/components/Inspector/InspectorContext.js +1 -21
  37. package/dist/commonjs/components/Inspector/InspectorHeader.js +191 -1110
  38. package/dist/commonjs/components/Inspector/LogDetail.js +168 -994
  39. package/dist/commonjs/components/Inspector/MainScreen.js +52 -335
  40. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +97 -644
  41. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +90 -605
  42. package/dist/commonjs/components/Inspector/NavigationTracker.js +1 -12
  43. package/dist/commonjs/components/Inspector/NetworkDetail.js +89 -411
  44. package/dist/commonjs/components/Inspector/NetworkFilterModal.js +60 -576
  45. package/dist/commonjs/components/Inspector/NetworkTab.js +84 -514
  46. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +18 -434
  47. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +25 -298
  48. package/dist/commonjs/components/Inspector/PerformanceTab.js +182 -1397
  49. package/dist/commonjs/components/Inspector/ReduxDetail.js +188 -1089
  50. package/dist/commonjs/components/Inspector/ReduxTab.js +85 -701
  51. package/dist/commonjs/components/Inspector/SettingsPanel.js +427 -3807
  52. package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +11 -180
  53. package/dist/commonjs/components/Inspector/StorageTab.js +93 -826
  54. package/dist/commonjs/components/Inspector/TabBar.js +36 -334
  55. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +37 -412
  56. package/dist/commonjs/components/JsonViewer.js +168 -381
  57. package/dist/commonjs/components/LogCard.js +57 -567
  58. package/dist/commonjs/components/LogSyntaxHighlighter.js +11 -130
  59. package/dist/commonjs/components/MetaAccordion.js +69 -238
  60. package/dist/commonjs/components/MiniBarChart.js +3 -56
  61. package/dist/commonjs/components/MiniLineChart.js +3 -58
  62. package/dist/commonjs/components/NetworkIcons.d.ts +13 -0
  63. package/dist/commonjs/components/NetworkIcons.js +521 -1022
  64. package/dist/commonjs/components/QRCodeView.js +5 -79
  65. package/dist/commonjs/components/SectionHeader.js +15 -37
  66. package/dist/commonjs/components/SegmentedTabs.js +7 -62
  67. package/dist/commonjs/components/SkeletonPlaceholder.js +11 -180
  68. package/dist/commonjs/components/Slider.js +15 -243
  69. package/dist/commonjs/components/SourcePageCard.js +30 -89
  70. package/dist/commonjs/components/Toast.js +5 -147
  71. package/dist/commonjs/components/TouchableScale.js +3 -24
  72. package/dist/commonjs/components/TreeNode.js +55 -130
  73. package/dist/commonjs/console.js +1 -16
  74. package/dist/commonjs/constants/index.js +1 -32
  75. package/dist/commonjs/constants/telemetryConfig.js +1 -6
  76. package/dist/commonjs/constants/version.d.ts +1 -1
  77. package/dist/commonjs/constants/version.js +1 -4
  78. package/dist/commonjs/crash.js +1 -23
  79. package/dist/commonjs/customHooks/analyticsLogger.js +1 -250
  80. package/dist/commonjs/customHooks/bundleAnalyzer.js +1 -957
  81. package/dist/commonjs/customHooks/consoleLogger.js +6 -445
  82. package/dist/commonjs/customHooks/crashHandler.js +7 -656
  83. package/dist/commonjs/customHooks/logFilters.js +1 -23
  84. package/dist/commonjs/customHooks/networkLogger.js +2 -536
  85. package/dist/commonjs/customHooks/performanceTracker.js +63 -750
  86. package/dist/commonjs/customHooks/reduxLogger.js +2 -313
  87. package/dist/commonjs/customHooks/storageInspector.js +1 -435
  88. package/dist/commonjs/customHooks/useAccordion.js +1 -18
  89. package/dist/commonjs/decorators/index.js +1 -100
  90. package/dist/commonjs/helpers/gaAnalyticsRegistry.js +1 -148
  91. package/dist/commonjs/helpers/index.d.ts +1 -0
  92. package/dist/commonjs/helpers/index.js +8 -921
  93. package/dist/commonjs/helpers/memoryManager.js +1 -99
  94. package/dist/commonjs/helpers/qrGenerator.js +1 -367
  95. package/dist/commonjs/helpers/remoteConfig.js +1 -165
  96. package/dist/commonjs/helpers/searchQueryParser.js +1 -62
  97. package/dist/commonjs/helpers/settingsStore.js +1 -144
  98. package/dist/commonjs/helpers/telemetry.js +1 -501
  99. package/dist/commonjs/helpers/toast.js +1 -20
  100. package/dist/commonjs/i18n/index.js +1 -90
  101. package/dist/commonjs/i18n/locales/en.json +1 -1140
  102. package/dist/commonjs/index.js +5 -2168
  103. package/dist/commonjs/metro.js +6 -468
  104. package/dist/commonjs/native/NativeInspector.d.ts +1 -0
  105. package/dist/commonjs/native/NativeInspector.js +1 -415
  106. package/dist/commonjs/native/NativeNetworkInspector.js +1 -4
  107. package/dist/commonjs/network.js +1 -13
  108. package/dist/commonjs/performance.js +1 -29
  109. package/dist/commonjs/redux.js +1 -20
  110. package/dist/commonjs/storage.js +1 -14
  111. package/dist/commonjs/styles/AppColors.js +1 -423
  112. package/dist/commonjs/styles/AppFonts.js +1 -17
  113. package/dist/commonjs/styles/common.js +1 -190
  114. package/dist/commonjs/styles/index.d.ts +6 -0
  115. package/dist/commonjs/styles/index.js +1 -1589
  116. package/dist/commonjs/types/enums.d.ts +0 -1
  117. package/dist/commonjs/types/enums.js +1 -152
  118. package/dist/commonjs/types/index.js +1 -18
  119. package/dist/commonjs/types/interfaces.d.ts +2 -2
  120. package/dist/commonjs/types/interfaces.js +1 -2
  121. package/dist/esm/analytics.js +1 -2
  122. package/dist/esm/bundle.js +1 -2
  123. package/dist/esm/capture.js +1 -32
  124. package/dist/esm/components/AnalyticsDetail.js +171 -664
  125. package/dist/esm/components/AnalyticsEventCard.js +77 -335
  126. package/dist/esm/components/AnalyticsGraph.js +95 -357
  127. package/dist/esm/components/AnimatedEntrance.js +1 -6
  128. package/dist/esm/components/AppHeaderLogo.js +7 -94
  129. package/dist/esm/components/BrandCircleIcon.js +114 -119
  130. package/dist/esm/components/BrandSquareIcon.js +73 -78
  131. package/dist/esm/components/CodeSnippet.js +58 -595
  132. package/dist/esm/components/ConsoleLogCard.js +91 -526
  133. package/dist/esm/components/CopyButton.js +3 -51
  134. package/dist/esm/components/DiffViewer.js +22 -48
  135. package/dist/esm/components/DomainHeader.js +43 -138
  136. package/dist/esm/components/EmptyState.js +17 -56
  137. package/dist/esm/components/EndOfListFooter.js +15 -83
  138. package/dist/esm/components/ErrorBoundary.js +125 -582
  139. package/dist/esm/components/HeadersSection.js +52 -93
  140. package/dist/esm/components/HighlightText.js +17 -53
  141. package/dist/esm/components/Inspector/AboutModal.d.ts +6 -0
  142. package/dist/esm/components/Inspector/AboutModal.js +243 -0
  143. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +225 -886
  144. package/dist/esm/components/Inspector/AnalyticsTab.js +296 -904
  145. package/dist/esm/components/Inspector/BundleTab.js +1175 -3502
  146. package/dist/esm/components/Inspector/ConsoleTab.js +113 -488
  147. package/dist/esm/components/Inspector/CrashDetail.js +236 -747
  148. package/dist/esm/components/Inspector/CrashFilterModal.js +149 -541
  149. package/dist/esm/components/Inspector/CrashTab.js +177 -711
  150. package/dist/esm/components/Inspector/DebuggingTab.js +164 -925
  151. package/dist/esm/components/Inspector/DeviceInfoTab.js +199 -924
  152. package/dist/esm/components/Inspector/FabLauncher.js +68 -454
  153. package/dist/esm/components/Inspector/FeatureUnderDevNotice.js +14 -70
  154. package/dist/esm/components/Inspector/InspectorContext.js +1 -12
  155. package/dist/esm/components/Inspector/InspectorHeader.js +282 -1163
  156. package/dist/esm/components/Inspector/LogDetail.js +235 -1023
  157. package/dist/esm/components/Inspector/MainScreen.js +78 -323
  158. package/dist/esm/components/Inspector/MediaGalleryTab.js +143 -650
  159. package/dist/esm/components/Inspector/MediaPreviewModal.js +138 -613
  160. package/dist/esm/components/Inspector/NavigationTracker.js +1 -10
  161. package/dist/esm/components/Inspector/NetworkDetail.js +138 -455
  162. package/dist/esm/components/Inspector/NetworkFilterModal.js +122 -597
  163. package/dist/esm/components/Inspector/NetworkTab.js +125 -517
  164. package/dist/esm/components/Inspector/NpmStarPrompt.js +58 -434
  165. package/dist/esm/components/Inspector/NpmUpdateToast.js +45 -281
  166. package/dist/esm/components/Inspector/PerformanceTab.js +393 -1570
  167. package/dist/esm/components/Inspector/ReduxDetail.js +307 -1170
  168. package/dist/esm/components/Inspector/ReduxTab.js +144 -722
  169. package/dist/esm/components/Inspector/SettingsPanel.js +643 -3985
  170. package/dist/esm/components/Inspector/SkeletonPlaceholder.js +30 -163
  171. package/dist/esm/components/Inspector/StorageTab.js +172 -866
  172. package/dist/esm/components/Inspector/TabBar.js +45 -305
  173. package/dist/esm/components/Inspector/UpdateAvailableModal.js +80 -418
  174. package/dist/esm/components/JsonViewer.js +179 -354
  175. package/dist/esm/components/LogCard.js +93 -565
  176. package/dist/esm/components/LogSyntaxHighlighter.js +11 -123
  177. package/dist/esm/components/MetaAccordion.js +136 -267
  178. package/dist/esm/components/MiniBarChart.js +3 -18
  179. package/dist/esm/components/MiniLineChart.js +3 -20
  180. package/dist/esm/components/NetworkIcons.d.ts +13 -0
  181. package/dist/esm/components/NetworkIcons.js +523 -838
  182. package/dist/esm/components/QRCodeView.js +8 -45
  183. package/dist/esm/components/SectionHeader.js +22 -39
  184. package/dist/esm/components/SegmentedTabs.js +8 -58
  185. package/dist/esm/components/SkeletonPlaceholder.js +30 -163
  186. package/dist/esm/components/Slider.js +24 -213
  187. package/dist/esm/components/SourcePageCard.js +65 -86
  188. package/dist/esm/components/Toast.js +10 -117
  189. package/dist/esm/components/TouchableScale.js +3 -19
  190. package/dist/esm/components/TreeNode.js +58 -95
  191. package/dist/esm/console.js +1 -2
  192. package/dist/esm/constants/index.js +1 -28
  193. package/dist/esm/constants/telemetryConfig.js +1 -3
  194. package/dist/esm/constants/version.d.ts +1 -1
  195. package/dist/esm/constants/version.js +1 -1
  196. package/dist/esm/crash.js +1 -2
  197. package/dist/esm/customHooks/analyticsLogger.js +1 -230
  198. package/dist/esm/customHooks/bundleAnalyzer.js +1 -944
  199. package/dist/esm/customHooks/consoleLogger.js +6 -432
  200. package/dist/esm/customHooks/crashHandler.js +7 -630
  201. package/dist/esm/customHooks/logFilters.js +1 -20
  202. package/dist/esm/customHooks/networkLogger.js +2 -519
  203. package/dist/esm/customHooks/performanceTracker.js +63 -723
  204. package/dist/esm/customHooks/reduxLogger.js +2 -293
  205. package/dist/esm/customHooks/storageInspector.js +1 -418
  206. package/dist/esm/customHooks/useAccordion.js +1 -16
  207. package/dist/esm/decorators/index.js +1 -95
  208. package/dist/esm/helpers/gaAnalyticsRegistry.js +1 -143
  209. package/dist/esm/helpers/index.d.ts +1 -0
  210. package/dist/esm/helpers/index.js +8 -861
  211. package/dist/esm/helpers/memoryManager.js +1 -91
  212. package/dist/esm/helpers/qrGenerator.js +1 -364
  213. package/dist/esm/helpers/remoteConfig.js +1 -160
  214. package/dist/esm/helpers/searchQueryParser.js +1 -59
  215. package/dist/esm/helpers/settingsStore.js +1 -134
  216. package/dist/esm/helpers/telemetry.js +1 -489
  217. package/dist/esm/helpers/toast.js +1 -15
  218. package/dist/esm/i18n/index.js +1 -78
  219. package/dist/esm/i18n/locales/en.json +1 -1140
  220. package/dist/esm/index.js +7 -1982
  221. package/dist/esm/metro.js +6 -459
  222. package/dist/esm/native/NativeInspector.d.ts +1 -0
  223. package/dist/esm/native/NativeInspector.js +1 -382
  224. package/dist/esm/native/NativeNetworkInspector.js +1 -2
  225. package/dist/esm/network.js +1 -1
  226. package/dist/esm/performance.js +1 -2
  227. package/dist/esm/redux.js +1 -1
  228. package/dist/esm/storage.js +1 -1
  229. package/dist/esm/styles/AppColors.js +1 -417
  230. package/dist/esm/styles/AppFonts.js +1 -13
  231. package/dist/esm/styles/common.js +1 -186
  232. package/dist/esm/styles/index.d.ts +6 -0
  233. package/dist/esm/styles/index.js +1 -1551
  234. package/dist/esm/types/enums.d.ts +0 -1
  235. package/dist/esm/types/enums.js +1 -149
  236. package/dist/esm/types/index.js +1 -2
  237. package/dist/esm/types/interfaces.d.ts +2 -2
  238. package/dist/esm/types/interfaces.js +1 -1
  239. package/ios/NetworkInspectorModule.mm +60 -12
  240. package/package.json +5 -3
  241. package/src/native/NativeInspector.ts +18 -0
  242. package/dist/commonjs/components/Inspector/FeedbackModal.d.ts +0 -7
  243. package/dist/commonjs/components/Inspector/FeedbackModal.js +0 -552
  244. package/dist/esm/components/Inspector/FeedbackModal.d.ts +0 -7
  245. package/dist/esm/components/Inspector/FeedbackModal.js +0 -515
  246. package/src/analytics.ts +0 -35
  247. package/src/bundle.ts +0 -25
  248. package/src/capture.ts +0 -109
  249. package/src/components/AnalyticsDetail.tsx +0 -870
  250. package/src/components/AnalyticsEventCard.tsx +0 -444
  251. package/src/components/AnalyticsGraph.tsx +0 -583
  252. package/src/components/AnimatedEntrance.tsx +0 -20
  253. package/src/components/AppHeaderLogo.tsx +0 -143
  254. package/src/components/BrandCircleIcon.tsx +0 -144
  255. package/src/components/BrandSquareIcon.tsx +0 -184
  256. package/src/components/CodeSnippet.tsx +0 -725
  257. package/src/components/ConsoleLogCard.tsx +0 -679
  258. package/src/components/CopyButton.tsx +0 -87
  259. package/src/components/DiffViewer.tsx +0 -82
  260. package/src/components/DomainHeader.tsx +0 -224
  261. package/src/components/EmptyState.tsx +0 -97
  262. package/src/components/EndOfListFooter.tsx +0 -100
  263. package/src/components/ErrorBoundary.tsx +0 -688
  264. package/src/components/HeadersSection.tsx +0 -172
  265. package/src/components/HighlightText.tsx +0 -100
  266. package/src/components/Inspector/AnalyticsFilterModal.tsx +0 -1250
  267. package/src/components/Inspector/AnalyticsTab.tsx +0 -1362
  268. package/src/components/Inspector/BundleTab.tsx +0 -4768
  269. package/src/components/Inspector/ConsoleTab.tsx +0 -726
  270. package/src/components/Inspector/CrashDetail.tsx +0 -997
  271. package/src/components/Inspector/CrashFilterModal.tsx +0 -721
  272. package/src/components/Inspector/CrashTab.tsx +0 -933
  273. package/src/components/Inspector/DebuggingTab.tsx +0 -1103
  274. package/src/components/Inspector/DeviceInfoTab.tsx +0 -1397
  275. package/src/components/Inspector/FabLauncher.tsx +0 -590
  276. package/src/components/Inspector/FeatureUnderDevNotice.tsx +0 -94
  277. package/src/components/Inspector/FeedbackModal.tsx +0 -626
  278. package/src/components/Inspector/InspectorContext.tsx +0 -28
  279. package/src/components/Inspector/InspectorHeader.tsx +0 -1583
  280. package/src/components/Inspector/LogDetail.tsx +0 -1431
  281. package/src/components/Inspector/MainScreen.tsx +0 -460
  282. package/src/components/Inspector/MediaGalleryTab.tsx +0 -829
  283. package/src/components/Inspector/MediaPreviewModal.tsx +0 -783
  284. package/src/components/Inspector/NavigationTracker.tsx +0 -13
  285. package/src/components/Inspector/NetworkDetail.tsx +0 -778
  286. package/src/components/Inspector/NetworkFilterModal.tsx +0 -730
  287. package/src/components/Inspector/NetworkTab.tsx +0 -820
  288. package/src/components/Inspector/NpmStarPrompt.tsx +0 -532
  289. package/src/components/Inspector/NpmUpdateToast.tsx +0 -387
  290. package/src/components/Inspector/PerformanceTab.tsx +0 -1967
  291. package/src/components/Inspector/ReduxDetail.tsx +0 -1651
  292. package/src/components/Inspector/ReduxTab.tsx +0 -987
  293. package/src/components/Inspector/SettingsPanel.tsx +0 -5136
  294. package/src/components/Inspector/SkeletonPlaceholder.tsx +0 -206
  295. package/src/components/Inspector/StorageTab.tsx +0 -1159
  296. package/src/components/Inspector/TabBar.tsx +0 -431
  297. package/src/components/Inspector/UpdateAvailableModal.tsx +0 -555
  298. package/src/components/JsonViewer.tsx +0 -549
  299. package/src/components/LogCard.tsx +0 -694
  300. package/src/components/LogSyntaxHighlighter.tsx +0 -178
  301. package/src/components/MetaAccordion.tsx +0 -355
  302. package/src/components/MiniBarChart.tsx +0 -42
  303. package/src/components/MiniLineChart.tsx +0 -33
  304. package/src/components/NetworkIcons.tsx +0 -2655
  305. package/src/components/QRCodeView.tsx +0 -75
  306. package/src/components/SectionHeader.tsx +0 -101
  307. package/src/components/SegmentedTabs.tsx +0 -84
  308. package/src/components/SkeletonPlaceholder.tsx +0 -206
  309. package/src/components/Slider.tsx +0 -300
  310. package/src/components/SourcePageCard.tsx +0 -150
  311. package/src/components/Toast.tsx +0 -131
  312. package/src/components/TouchableScale.tsx +0 -61
  313. package/src/components/TreeNode.tsx +0 -171
  314. package/src/console.ts +0 -24
  315. package/src/constants/index.ts +0 -41
  316. package/src/constants/telemetryConfig.ts +0 -4
  317. package/src/constants/version.ts +0 -3
  318. package/src/crash.ts +0 -32
  319. package/src/customHooks/analyticsLogger.ts +0 -336
  320. package/src/customHooks/bundleAnalyzer.ts +0 -1256
  321. package/src/customHooks/consoleLogger.ts +0 -530
  322. package/src/customHooks/crashHandler.ts +0 -944
  323. package/src/customHooks/logFilters.ts +0 -32
  324. package/src/customHooks/networkLogger.ts +0 -624
  325. package/src/customHooks/performanceTracker.ts +0 -1014
  326. package/src/customHooks/reduxLogger.ts +0 -406
  327. package/src/customHooks/storageInspector.ts +0 -513
  328. package/src/customHooks/useAccordion.tsx +0 -27
  329. package/src/decorators/index.ts +0 -184
  330. package/src/helpers/gaAnalyticsRegistry.ts +0 -204
  331. package/src/helpers/index.ts +0 -1092
  332. package/src/helpers/memoryManager.ts +0 -138
  333. package/src/helpers/qrGenerator.ts +0 -430
  334. package/src/helpers/remoteConfig.ts +0 -212
  335. package/src/helpers/searchQueryParser.ts +0 -84
  336. package/src/helpers/settingsStore.ts +0 -171
  337. package/src/helpers/telemetry.ts +0 -568
  338. package/src/helpers/toast.ts +0 -17
  339. package/src/i18n/index.ts +0 -104
  340. package/src/i18n/locales/en.json +0 -1141
  341. package/src/index.tsx +0 -2650
  342. package/src/metro.ts +0 -598
  343. package/src/network.ts +0 -22
  344. package/src/performance.ts +0 -38
  345. package/src/redux.ts +0 -23
  346. package/src/storage.ts +0 -18
  347. package/src/styles/AppColors.ts +0 -455
  348. package/src/styles/AppFonts.ts +0 -26
  349. package/src/styles/common.ts +0 -209
  350. package/src/styles/index.ts +0 -1606
  351. package/src/types/enums.ts +0 -210
  352. package/src/types/index.ts +0 -34
  353. package/src/types/interfaces.ts +0 -535
@@ -1,831 +1,208 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.downloadBundleFile = void 0;
40
- const react_1 = __importStar(require("react"));
41
- const react_native_1 = require("react-native");
42
- const i18n_1 = require("../../i18n");
43
- const TouchableScale_1 = __importDefault(require("../TouchableScale"));
44
- const CopyButton_1 = __importDefault(require("../CopyButton"));
45
- const HighlightText_1 = __importDefault(require("../HighlightText"));
46
- const FeatureUnderDevNotice_1 = __importDefault(require("./FeatureUnderDevNotice"));
47
- const AppColors_1 = require("../../styles/AppColors");
48
- const AppFonts_1 = require("../../styles/AppFonts");
49
- const helpers_1 = require("../../helpers");
50
- const NetworkIcons_1 = require("../NetworkIcons");
51
- const react_native_svg_1 = __importStar(require("react-native-svg"));
52
- const bundleAnalyzer_1 = require("../../customHooks/bundleAnalyzer");
53
- const PackageLogoRenderer = ({ name, size = 28 }) => {
54
- const lowerName = name.toLowerCase();
55
- if (lowerName === 'react' ||
56
- (lowerName.includes('react-native') &&
57
- !lowerName.includes('svg') &&
58
- !lowerName.includes('screens') &&
59
- !lowerName.includes('gradient'))) {
60
- return (<react_native_1.View style={[
61
- bundleStyles.pkgLogoWrap,
62
- { width: size, height: size, backgroundColor: AppColors_1.AppColors.npmDark },
63
- ]}>
64
- <react_native_svg_1.default width={size - 6} height={size - 6} viewBox="0 0 100 100" fill="none">
65
- <react_native_svg_1.Circle cx="50" cy="50" r="9" fill={AppColors_1.AppColors.reactCyan}/>
66
- <react_native_svg_1.Ellipse cx="50" cy="50" rx="42" ry="16" stroke={AppColors_1.AppColors.reactCyan} strokeWidth="6"/>
67
- <react_native_svg_1.Ellipse cx="50" cy="50" rx="42" ry="16" stroke={AppColors_1.AppColors.reactCyan} strokeWidth="6" transform="rotate(60 50 50)"/>
68
- <react_native_svg_1.Ellipse cx="50" cy="50" rx="42" ry="16" stroke={AppColors_1.AppColors.reactCyan} strokeWidth="6" transform="rotate(120 50 50)"/>
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,r,n,o){o===void 0&&(o=n);var c=Object.getOwnPropertyDescriptor(r,n);(!c||("get"in c?!r.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return r[n]}}),Object.defineProperty(t,o,c)}):(function(t,r,n,o){o===void 0&&(o=n),t[o]=r[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,r){Object.defineProperty(t,"default",{enumerable:!0,value:r})}):function(t,r){t.default=r}),__importStar=this&&this.__importStar||(function(){var t=function(r){return t=Object.getOwnPropertyNames||function(n){var o=[];for(var c in n)Object.prototype.hasOwnProperty.call(n,c)&&(o[o.length]=c);return o},t(r)};return function(r){if(r&&r.__esModule)return r;var n={};if(r!=null)for(var o=t(r),c=0;c<o.length;c++)o[c]!=="default"&&__createBinding(n,r,o[c]);return __setModuleDefault(n,r),n}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.downloadBundleFile=void 0;const react_1=__importStar(require("react")),react_native_1=require("react-native"),i18n_1=require("../../i18n"),TouchableScale_1=__importDefault(require("../TouchableScale")),CopyButton_1=__importDefault(require("../CopyButton")),HighlightText_1=__importDefault(require("../HighlightText")),FeatureUnderDevNotice_1=__importDefault(require("./FeatureUnderDevNotice")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),helpers_1=require("../../helpers"),NetworkIcons_1=require("../NetworkIcons"),react_native_svg_1=__importStar(require("react-native-svg")),bundleAnalyzer_1=require("../../customHooks/bundleAnalyzer"),PackageLogoRenderer=({name:t,size:r=28})=>{const n=t.toLowerCase();return n==="react"||n.includes("react-native")&&!n.includes("svg")&&!n.includes("screens")&&!n.includes("gradient")?<react_native_1.View style={[bundleStyles.pkgLogoWrap,{width:r,height:r,backgroundColor:AppColors_1.AppColors.npmDark}]}>
2
+ <react_native_svg_1.default width={r-6}height={r-6}viewBox="0 0 100 100"fill="none">
3
+ <react_native_svg_1.Circle cx="50"cy="50"r="9"fill={AppColors_1.AppColors.reactCyan}/>
4
+ <react_native_svg_1.Ellipse cx="50"cy="50"rx="42"ry="16"stroke={AppColors_1.AppColors.reactCyan}strokeWidth="6"/>
5
+ <react_native_svg_1.Ellipse cx="50"cy="50"rx="42"ry="16"stroke={AppColors_1.AppColors.reactCyan}strokeWidth="6"transform="rotate(60 50 50)"/>
6
+ <react_native_svg_1.Ellipse cx="50"cy="50"rx="42"ry="16"stroke={AppColors_1.AppColors.reactCyan}strokeWidth="6"transform="rotate(120 50 50)"/>
69
7
  </react_native_svg_1.default>
70
- </react_native_1.View>);
71
- }
72
- if (lowerName.includes('navigation')) {
73
- return (<react_native_1.View style={[
74
- bundleStyles.pkgLogoWrap,
75
- { width: size, height: size, backgroundColor: AppColors_1.AppColors.hermesPurple },
76
- ]}>
77
- <react_native_svg_1.default width={size - 8} height={size - 8} viewBox="0 0 100 100" fill="none">
78
- <react_native_svg_1.Circle cx="50" cy="50" r="38" stroke={AppColors_1.AppColors.white} strokeWidth="8"/>
79
- <react_native_svg_1.Path d="M50 20 L68 50 L50 80 L32 50 Z" fill={AppColors_1.AppColors.reactCyan}/>
80
- <react_native_svg_1.Circle cx="50" cy="50" r="6" fill={AppColors_1.AppColors.white}/>
8
+ </react_native_1.View>:n.includes("navigation")?<react_native_1.View style={[bundleStyles.pkgLogoWrap,{width:r,height:r,backgroundColor:AppColors_1.AppColors.hermesPurple}]}>
9
+ <react_native_svg_1.default width={r-8}height={r-8}viewBox="0 0 100 100"fill="none">
10
+ <react_native_svg_1.Circle cx="50"cy="50"r="38"stroke={AppColors_1.AppColors.white}strokeWidth="8"/>
11
+ <react_native_svg_1.Path d="M50 20 L68 50 L50 80 L32 50 Z"fill={AppColors_1.AppColors.reactCyan}/>
12
+ <react_native_svg_1.Circle cx="50"cy="50"r="6"fill={AppColors_1.AppColors.white}/>
81
13
  </react_native_svg_1.default>
82
- </react_native_1.View>);
83
- }
84
- if (lowerName.includes('svg')) {
85
- return (<react_native_1.View style={[
86
- bundleStyles.pkgLogoWrap,
87
- { width: size, height: size, backgroundColor: AppColors_1.AppColors.pink400 },
88
- ]}>
89
- <react_native_svg_1.default width={size - 8} height={size - 8} viewBox="0 0 100 100" fill="none">
90
- <react_native_svg_1.Path d="M20 75 C35 25, 65 25, 80 75" stroke={AppColors_1.AppColors.white} strokeWidth="10" strokeLinecap="round"/>
91
- <react_native_svg_1.Circle cx="20" cy="75" r="8" fill={AppColors_1.AppColors.white}/>
92
- <react_native_svg_1.Circle cx="80" cy="75" r="8" fill={AppColors_1.AppColors.white}/>
93
- <react_native_svg_1.Circle cx="50" cy="38" r="7" fill="#FCE7F3" stroke={AppColors_1.AppColors.white} strokeWidth="3"/>
14
+ </react_native_1.View>:n.includes("svg")?<react_native_1.View style={[bundleStyles.pkgLogoWrap,{width:r,height:r,backgroundColor:AppColors_1.AppColors.pink400}]}>
15
+ <react_native_svg_1.default width={r-8}height={r-8}viewBox="0 0 100 100"fill="none">
16
+ <react_native_svg_1.Path d="M20 75 C35 25, 65 25, 80 75"stroke={AppColors_1.AppColors.white}strokeWidth="10"strokeLinecap="round"/>
17
+ <react_native_svg_1.Circle cx="20"cy="75"r="8"fill={AppColors_1.AppColors.white}/>
18
+ <react_native_svg_1.Circle cx="80"cy="75"r="8"fill={AppColors_1.AppColors.white}/>
19
+ <react_native_svg_1.Circle cx="50"cy="38"r="7"fill="#FCE7F3"stroke={AppColors_1.AppColors.white}strokeWidth="3"/>
94
20
  </react_native_svg_1.default>
95
- </react_native_1.View>);
96
- }
97
- if (lowerName.includes('axios')) {
98
- return (<react_native_1.View style={[
99
- bundleStyles.pkgLogoWrap,
100
- { width: size, height: size, backgroundColor: AppColors_1.AppColors.expoViolet },
101
- ]}>
102
- <react_native_svg_1.default width={size - 6} height={size - 6} viewBox="0 0 100 100" fill="none">
103
- <react_native_svg_1.Path d="M22 75 L50 20 L78 75 M33 58 L67 58" stroke={AppColors_1.AppColors.white} strokeWidth="12" strokeLinecap="round" strokeLinejoin="round"/>
104
- <react_native_svg_1.Circle cx="50" cy="20" r="7" fill={AppColors_1.AppColors.reactCyan}/>
21
+ </react_native_1.View>:n.includes("axios")?<react_native_1.View style={[bundleStyles.pkgLogoWrap,{width:r,height:r,backgroundColor:AppColors_1.AppColors.expoViolet}]}>
22
+ <react_native_svg_1.default width={r-6}height={r-6}viewBox="0 0 100 100"fill="none">
23
+ <react_native_svg_1.Path d="M22 75 L50 20 L78 75 M33 58 L67 58"stroke={AppColors_1.AppColors.white}strokeWidth="12"strokeLinecap="round"strokeLinejoin="round"/>
24
+ <react_native_svg_1.Circle cx="50"cy="20"r="7"fill={AppColors_1.AppColors.reactCyan}/>
105
25
  </react_native_svg_1.default>
106
- </react_native_1.View>);
107
- }
108
- if (lowerName.includes('screens') || lowerName.includes('software-mansion')) {
109
- return (<react_native_1.View style={[
110
- bundleStyles.pkgLogoWrap,
111
- {
112
- width: size,
113
- height: size,
114
- backgroundColor: AppColors_1.AppColors.reanimatedNavy,
115
- },
116
- ]}>
117
- <react_native_svg_1.default width={size - 8} height={size - 8} viewBox="0 0 100 100" fill="none">
118
- <react_native_svg_1.Path d="M50 15 L88 35 L50 55 L12 35 Z" fill={AppColors_1.AppColors.sky400}/>
119
- <react_native_svg_1.Path d="M12 50 L50 70 L88 50" stroke={AppColors_1.AppColors.white} strokeWidth="8" strokeLinecap="round"/>
120
- <react_native_svg_1.Path d="M12 65 L50 85 L88 65" stroke="#93C5FD" strokeWidth="8" strokeLinecap="round"/>
26
+ </react_native_1.View>:n.includes("screens")||n.includes("software-mansion")?<react_native_1.View style={[bundleStyles.pkgLogoWrap,{width:r,height:r,backgroundColor:AppColors_1.AppColors.reanimatedNavy}]}>
27
+ <react_native_svg_1.default width={r-8}height={r-8}viewBox="0 0 100 100"fill="none">
28
+ <react_native_svg_1.Path d="M50 15 L88 35 L50 55 L12 35 Z"fill={AppColors_1.AppColors.sky400}/>
29
+ <react_native_svg_1.Path d="M12 50 L50 70 L88 50"stroke={AppColors_1.AppColors.white}strokeWidth="8"strokeLinecap="round"/>
30
+ <react_native_svg_1.Path d="M12 65 L50 85 L88 65"stroke="#93C5FD"strokeWidth="8"strokeLinecap="round"/>
121
31
  </react_native_svg_1.default>
122
- </react_native_1.View>);
123
- }
124
- if (lowerName.includes('gradient')) {
125
- return (<react_native_1.View style={[
126
- bundleStyles.pkgLogoWrap,
127
- { width: size, height: size, backgroundColor: AppColors_1.AppColors.rose600 },
128
- ]}>
129
- <react_native_svg_1.default width={size - 4} height={size - 4} viewBox="0 0 100 100" fill="none">
32
+ </react_native_1.View>:n.includes("gradient")?<react_native_1.View style={[bundleStyles.pkgLogoWrap,{width:r,height:r,backgroundColor:AppColors_1.AppColors.rose600}]}>
33
+ <react_native_svg_1.default width={r-4}height={r-4}viewBox="0 0 100 100"fill="none">
130
34
  <react_native_svg_1.Defs>
131
- <react_native_svg_1.LinearGradient id="pkgGrad" x1="0" y1="0" x2="100" y2="100" gradientUnits="userSpaceOnUse">
132
- <react_native_svg_1.Stop offset="0" stopColor="#FF0080"/>
133
- <react_native_svg_1.Stop offset="0.5" stopColor="#7928CA"/>
134
- <react_native_svg_1.Stop offset="1" stopColor="#0070F3"/>
35
+ <react_native_svg_1.LinearGradient id="pkgGrad"x1="0"y1="0"x2="100"y2="100"gradientUnits="userSpaceOnUse">
36
+ <react_native_svg_1.Stop offset="0"stopColor="#FF0080"/>
37
+ <react_native_svg_1.Stop offset="0.5"stopColor="#7928CA"/>
38
+ <react_native_svg_1.Stop offset="1"stopColor="#0070F3"/>
135
39
  </react_native_svg_1.LinearGradient>
136
40
  </react_native_svg_1.Defs>
137
- <react_native_svg_1.Rect width="100" height="100" rx="18" fill="url(#pkgGrad)"/>
41
+ <react_native_svg_1.Rect width="100"height="100"rx="18"fill="url(#pkgGrad)"/>
138
42
  </react_native_svg_1.default>
139
- </react_native_1.View>);
140
- }
141
- if (lowerName.includes('i18n')) {
142
- return (<react_native_1.View style={[
143
- bundleStyles.pkgLogoWrap,
144
- { width: size, height: size, backgroundColor: AppColors_1.AppColors.emerald600 },
145
- ]}>
146
- <react_native_svg_1.default width={size - 8} height={size - 8} viewBox="0 0 100 100" fill="none">
147
- <react_native_svg_1.Circle cx="50" cy="50" r="38" stroke={AppColors_1.AppColors.white} strokeWidth="8"/>
148
- <react_native_svg_1.Ellipse cx="50" cy="50" rx="18" ry="38" stroke={AppColors_1.AppColors.white} strokeWidth="6"/>
149
- <react_native_svg_1.Path d="M14 50 L86 50" stroke={AppColors_1.AppColors.white} strokeWidth="7"/>
43
+ </react_native_1.View>:n.includes("i18n")?<react_native_1.View style={[bundleStyles.pkgLogoWrap,{width:r,height:r,backgroundColor:AppColors_1.AppColors.emerald600}]}>
44
+ <react_native_svg_1.default width={r-8}height={r-8}viewBox="0 0 100 100"fill="none">
45
+ <react_native_svg_1.Circle cx="50"cy="50"r="38"stroke={AppColors_1.AppColors.white}strokeWidth="8"/>
46
+ <react_native_svg_1.Ellipse cx="50"cy="50"rx="18"ry="38"stroke={AppColors_1.AppColors.white}strokeWidth="6"/>
47
+ <react_native_svg_1.Path d="M14 50 L86 50"stroke={AppColors_1.AppColors.white}strokeWidth="7"/>
150
48
  </react_native_svg_1.default>
151
- </react_native_1.View>);
152
- }
153
- return (<react_native_1.View style={[
154
- bundleStyles.pkgLogoWrap,
155
- { width: size, height: size, backgroundColor: AppColors_1.AppColors.npmRed },
156
- ]}>
157
- <react_native_svg_1.default width={size - 4} height={size - 4} viewBox="0 0 100 100" fill="none">
158
- <react_native_svg_1.Rect width="100" height="100" rx="14" fill={AppColors_1.AppColors.npmRed}/>
159
- <react_native_svg_1.Path d="M18 24 H82 V76 H50 V40 H38 V76 H18 Z" fill={AppColors_1.AppColors.white}/>
49
+ </react_native_1.View>:<react_native_1.View style={[bundleStyles.pkgLogoWrap,{width:r,height:r,backgroundColor:AppColors_1.AppColors.npmRed}]}>
50
+ <react_native_svg_1.default width={r-4}height={r-4}viewBox="0 0 100 100"fill="none">
51
+ <react_native_svg_1.Rect width="100"height="100"rx="14"fill={AppColors_1.AppColors.npmRed}/>
52
+ <react_native_svg_1.Path d="M18 24 H82 V76 H50 V40 H38 V76 H18 Z"fill={AppColors_1.AppColors.white}/>
160
53
  </react_native_svg_1.default>
161
- </react_native_1.View>);
162
- };
163
- const BundleCategoryIcon = ({ type, size = 16, color = AppColors_1.AppColors.purple }) => {
164
- const stroke = {
165
- stroke: color,
166
- strokeWidth: 1.7,
167
- strokeLinecap: 'round',
168
- strokeLinejoin: 'round',
169
- };
170
- const renderGlyph = () => {
171
- switch (type) {
172
- case 'folder':
173
- return (<react_native_svg_1.G>
174
- <react_native_svg_1.Path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" {...stroke}/>
175
- </react_native_svg_1.G>);
176
- case 'ban':
177
- return (<react_native_svg_1.G>
178
- <react_native_svg_1.Circle cx="12" cy="12" r="8.5" {...stroke}/>
179
- <react_native_svg_1.Path d="M5.5 5.5 18.5 18.5" {...stroke}/>
180
- </react_native_svg_1.G>);
181
- case 'bolt':
182
- return (<react_native_svg_1.G>
183
- <react_native_svg_1.Path d="M13 2 4.5 13.5 H10.5 L9 22 19.5 9.5 H13.5 Z" {...stroke}/>
184
- </react_native_svg_1.G>);
185
- case 'source':
186
- return (<react_native_svg_1.G>
187
- <react_native_svg_1.Path d="M8.5 7 L4 12 L8.5 17" {...stroke}/>
188
- <react_native_svg_1.Path d="M15.5 7 L20 12 L15.5 17" {...stroke}/>
189
- <react_native_svg_1.Path d="M13.5 4.5 L10.5 19.5" {...stroke}/>
190
- </react_native_svg_1.G>);
191
- case 'deps':
192
- return (<react_native_svg_1.G>
193
- <react_native_svg_1.Rect x="4" y="4" width="16" height="16" rx="2.5" {...stroke}/>
194
- <react_native_svg_1.Path d="M4 9.5 H20" {...stroke}/>
195
- <react_native_svg_1.Path d="M9.5 9.5 V20" {...stroke}/>
196
- </react_native_svg_1.G>);
197
- case 'media':
198
- case 'image':
199
- return (<react_native_svg_1.G>
200
- <react_native_svg_1.Rect x="3.5" y="4.5" width="17" height="15" rx="2" {...stroke}/>
201
- <react_native_svg_1.Circle cx="9" cy="10" r="1.5" {...stroke}/>
202
- <react_native_svg_1.Path d="M3.5 17.5 L9.5 12.5 L14 16.5 L17 13.5 L20.5 17.5" {...stroke}/>
203
- </react_native_svg_1.G>);
204
- case 'overhead':
205
- return (<react_native_svg_1.G>
206
- <react_native_svg_1.Circle cx="12" cy="12" r="3.2" {...stroke}/>
207
- <react_native_svg_1.Path d="M12 2.5 V5.5 M12 18.5 V21.5 M2.5 12 H5.5 M18.5 12 H21.5 M5.3 5.3 L7.4 7.4 M16.6 16.6 L18.7 18.7 M18.7 5.3 L16.6 7.4 M7.4 16.6 L5.3 18.7" {...stroke}/>
208
- </react_native_svg_1.G>);
209
- case 'typescript':
210
- return (<react_native_svg_1.G>
211
- <react_native_svg_1.Path d="M6.5 3.5 H14 L18.5 8 V20.5 H6.5 Z" {...stroke}/>
212
- <react_native_svg_1.Path d="M14 3.5 V8 H18.5" {...stroke}/>
213
- <react_native_svg_1.Path d="M9.5 13.5 H15 M12 13.5 V16.5 M9.5 16.5 H13" {...stroke}/>
214
- </react_native_svg_1.G>);
215
- case 'javascript':
216
- return (<react_native_svg_1.G>
217
- <react_native_svg_1.Path d="M9.5 3.5 C7.5 3.5 7.5 6.5 7.5 9 C7.5 11 6.5 12 5 12 C6.5 12 7.5 13 7.5 15 C7.5 17.5 7.5 20.5 9.5 20.5" {...stroke}/>
218
- <react_native_svg_1.Path d="M14.5 3.5 C16.5 3.5 16.5 6.5 16.5 9 C16.5 11 17.5 12 19 12 C17.5 12 16.5 13 16.5 15 C16.5 17.5 16.5 20.5 14.5 20.5" {...stroke}/>
219
- </react_native_svg_1.G>);
220
- case 'font':
221
- return (<react_native_svg_1.G>
222
- <react_native_svg_1.Path d="M8 19 L12 5.5 L16 19" {...stroke}/>
223
- <react_native_svg_1.Path d="M9.4 14.5 H14.6" {...stroke}/>
224
- </react_native_svg_1.G>);
225
- case 'json':
226
- return (<react_native_svg_1.G>
227
- <react_native_svg_1.Path d="M9 3.5 C7 3.5 7 6 7 8.5 C7 10.5 6 11.5 5 12 C6 12.5 7 13.5 7 15.5 C7 18 7 20.5 9 20.5" {...stroke}/>
228
- <react_native_svg_1.Circle cx="12" cy="12" r="1.1" fill={color}/>
229
- <react_native_svg_1.Path d="M15 3.5 C17 3.5 17 6 17 8.5 C17 10.5 18 11.5 19 12 C18 12.5 17 13.5 17 15.5 C17 18 17 20.5 15 20.5" {...stroke}/>
230
- </react_native_svg_1.G>);
231
- default:
232
- return null;
233
- }
234
- };
235
- return (<react_native_svg_1.default width={size} height={size} viewBox="0 0 24 24" fill="none">
236
- {renderGlyph()}
237
- </react_native_svg_1.default>);
238
- };
239
- const MediaPreviewThumbnail = ({ file }) => {
240
- const [loadError, setLoadError] = (0, react_1.useState)(false);
241
- if (file.ext === 'SVG' || file.name.toLowerCase().endsWith('.svg')) {
242
- return (<react_native_1.View style={[
243
- bundleStyles.mediaThumbWrap,
244
- {
245
- backgroundColor: AppColors_1.AppColors.errorCardBg,
246
- alignItems: 'center',
247
- justifyContent: 'center',
248
- borderColor: AppColors_1.AppColors.errorBorder,
249
- },
250
- ]}>
251
- <react_native_svg_1.default width={22} height={22} viewBox="0 0 100 100" fill="none">
54
+ </react_native_1.View>},BundleCategoryIcon=({type:t,size:r=16,color:n=AppColors_1.AppColors.purple})=>{const o={stroke:n,strokeWidth:1.7,strokeLinecap:"round",strokeLinejoin:"round"},c=()=>{switch(t){case"folder":return<react_native_svg_1.G>
55
+ <react_native_svg_1.Path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"{...o}/>
56
+ </react_native_svg_1.G>;case"ban":return<react_native_svg_1.G>
57
+ <react_native_svg_1.Circle cx="12"cy="12"r="8.5"{...o}/>
58
+ <react_native_svg_1.Path d="M5.5 5.5 18.5 18.5"{...o}/>
59
+ </react_native_svg_1.G>;case"bolt":return<react_native_svg_1.G>
60
+ <react_native_svg_1.Path d="M13 2 4.5 13.5 H10.5 L9 22 19.5 9.5 H13.5 Z"{...o}/>
61
+ </react_native_svg_1.G>;case"source":return<react_native_svg_1.G>
62
+ <react_native_svg_1.Path d="M8.5 7 L4 12 L8.5 17"{...o}/>
63
+ <react_native_svg_1.Path d="M15.5 7 L20 12 L15.5 17"{...o}/>
64
+ <react_native_svg_1.Path d="M13.5 4.5 L10.5 19.5"{...o}/>
65
+ </react_native_svg_1.G>;case"deps":return<react_native_svg_1.G>
66
+ <react_native_svg_1.Rect x="4"y="4"width="16"height="16"rx="2.5"{...o}/>
67
+ <react_native_svg_1.Path d="M4 9.5 H20"{...o}/>
68
+ <react_native_svg_1.Path d="M9.5 9.5 V20"{...o}/>
69
+ </react_native_svg_1.G>;case"media":case"image":return<react_native_svg_1.G>
70
+ <react_native_svg_1.Rect x="3.5"y="4.5"width="17"height="15"rx="2"{...o}/>
71
+ <react_native_svg_1.Circle cx="9"cy="10"r="1.5"{...o}/>
72
+ <react_native_svg_1.Path d="M3.5 17.5 L9.5 12.5 L14 16.5 L17 13.5 L20.5 17.5"{...o}/>
73
+ </react_native_svg_1.G>;case"overhead":return<react_native_svg_1.G>
74
+ <react_native_svg_1.Circle cx="12"cy="12"r="3.2"{...o}/>
75
+ <react_native_svg_1.Path d="M12 2.5 V5.5 M12 18.5 V21.5 M2.5 12 H5.5 M18.5 12 H21.5 M5.3 5.3 L7.4 7.4 M16.6 16.6 L18.7 18.7 M18.7 5.3 L16.6 7.4 M7.4 16.6 L5.3 18.7"{...o}/>
76
+ </react_native_svg_1.G>;case"typescript":return<react_native_svg_1.G>
77
+ <react_native_svg_1.Path d="M6.5 3.5 H14 L18.5 8 V20.5 H6.5 Z"{...o}/>
78
+ <react_native_svg_1.Path d="M14 3.5 V8 H18.5"{...o}/>
79
+ <react_native_svg_1.Path d="M9.5 13.5 H15 M12 13.5 V16.5 M9.5 16.5 H13"{...o}/>
80
+ </react_native_svg_1.G>;case"javascript":return<react_native_svg_1.G>
81
+ <react_native_svg_1.Path d="M9.5 3.5 C7.5 3.5 7.5 6.5 7.5 9 C7.5 11 6.5 12 5 12 C6.5 12 7.5 13 7.5 15 C7.5 17.5 7.5 20.5 9.5 20.5"{...o}/>
82
+ <react_native_svg_1.Path d="M14.5 3.5 C16.5 3.5 16.5 6.5 16.5 9 C16.5 11 17.5 12 19 12 C17.5 12 16.5 13 16.5 15 C16.5 17.5 16.5 20.5 14.5 20.5"{...o}/>
83
+ </react_native_svg_1.G>;case"font":return<react_native_svg_1.G>
84
+ <react_native_svg_1.Path d="M8 19 L12 5.5 L16 19"{...o}/>
85
+ <react_native_svg_1.Path d="M9.4 14.5 H14.6"{...o}/>
86
+ </react_native_svg_1.G>;case"json":return<react_native_svg_1.G>
87
+ <react_native_svg_1.Path d="M9 3.5 C7 3.5 7 6 7 8.5 C7 10.5 6 11.5 5 12 C6 12.5 7 13.5 7 15.5 C7 18 7 20.5 9 20.5"{...o}/>
88
+ <react_native_svg_1.Circle cx="12"cy="12"r="1.1"fill={n}/>
89
+ <react_native_svg_1.Path d="M15 3.5 C17 3.5 17 6 17 8.5 C17 10.5 18 11.5 19 12 C18 12.5 17 13.5 17 15.5 C17 18 17 20.5 15 20.5"{...o}/>
90
+ </react_native_svg_1.G>;default:return null}};return<react_native_svg_1.default width={r}height={r}viewBox="0 0 24 24"fill="none">
91
+ {c()}
92
+ </react_native_svg_1.default>},MediaPreviewThumbnail=({file:t})=>{const[r,n]=(0,react_1.useState)(!1);if(t.ext==="SVG"||t.name.toLowerCase().endsWith(".svg"))return<react_native_1.View style={[bundleStyles.mediaThumbWrap,{backgroundColor:AppColors_1.AppColors.errorCardBg,alignItems:"center",justifyContent:"center",borderColor:AppColors_1.AppColors.errorBorder}]}>
93
+ <react_native_svg_1.default width={22}height={22}viewBox="0 0 100 100"fill="none">
252
94
  <react_native_svg_1.Defs>
253
- <react_native_svg_1.LinearGradient id="svgGradThumb" x1="0" y1="0" x2="100" y2="100" gradientUnits="userSpaceOnUse">
254
- <react_native_svg_1.Stop offset="0" stopColor={AppColors_1.AppColors.rose500}/>
255
- <react_native_svg_1.Stop offset="1" stopColor={AppColors_1.AppColors.rose600}/>
95
+ <react_native_svg_1.LinearGradient id="svgGradThumb"x1="0"y1="0"x2="100"y2="100"gradientUnits="userSpaceOnUse">
96
+ <react_native_svg_1.Stop offset="0"stopColor={AppColors_1.AppColors.rose500}/>
97
+ <react_native_svg_1.Stop offset="1"stopColor={AppColors_1.AppColors.rose600}/>
256
98
  </react_native_svg_1.LinearGradient>
257
99
  </react_native_svg_1.Defs>
258
- <react_native_svg_1.Circle cx="50" cy="50" r="44" fill="url(#svgGradThumb)"/>
100
+ <react_native_svg_1.Circle cx="50"cy="50"r="44"fill="url(#svgGradThumb)"/>
259
101
 
260
- <react_native_svg_1.Path d="M25 70 C35 30, 65 30, 75 70" stroke={AppColors_1.AppColors.white} strokeWidth="8" strokeLinecap="round"/>
261
- <react_native_svg_1.Circle cx="25" cy="70" r="7" fill={AppColors_1.AppColors.white}/>
262
- <react_native_svg_1.Circle cx="75" cy="70" r="7" fill={AppColors_1.AppColors.white}/>
263
- <react_native_svg_1.Circle cx="50" cy="40" r="6" fill="#FFE4E6" stroke={AppColors_1.AppColors.white} strokeWidth="2"/>
102
+ <react_native_svg_1.Path d="M25 70 C35 30, 65 30, 75 70"stroke={AppColors_1.AppColors.white}strokeWidth="8"strokeLinecap="round"/>
103
+ <react_native_svg_1.Circle cx="25"cy="70"r="7"fill={AppColors_1.AppColors.white}/>
104
+ <react_native_svg_1.Circle cx="75"cy="70"r="7"fill={AppColors_1.AppColors.white}/>
105
+ <react_native_svg_1.Circle cx="50"cy="40"r="6"fill="#FFE4E6"stroke={AppColors_1.AppColors.white}strokeWidth="2"/>
264
106
  </react_native_svg_1.default>
265
- </react_native_1.View>);
266
- }
267
- if (file.category === 'image' && file.previewUri && !loadError) {
268
- return (<react_native_1.View style={bundleStyles.mediaThumbWrap}>
269
- <react_native_1.Image source={{ uri: file.previewUri }} style={bundleStyles.mediaThumbImg} resizeMode="cover" onError={() => setLoadError(true)}/>
270
- </react_native_1.View>);
271
- }
272
- const categoryMeta = CATEGORY_COLORS[file.category] || CATEGORY_COLORS.typescript;
273
- return (<react_native_1.View style={[
274
- bundleStyles.extChip,
275
- {
276
- backgroundColor: categoryMeta.bg,
277
- borderColor: `${categoryMeta.color}40`,
278
- },
279
- ]}>
280
- <react_native_1.Text style={[bundleStyles.extChipText, { color: categoryMeta.color }]}>
281
- {file.ext}
107
+ </react_native_1.View>;if(t.category==="image"&&t.previewUri&&!r)return<react_native_1.View style={bundleStyles.mediaThumbWrap}>
108
+ <react_native_1.Image source={{uri:t.previewUri}}style={bundleStyles.mediaThumbImg}resizeMode="cover"onError={()=>n(!0)}/>
109
+ </react_native_1.View>;const o=CATEGORY_COLORS[t.category]||CATEGORY_COLORS.typescript;return<react_native_1.View style={[bundleStyles.extChip,{backgroundColor:o.bg,borderColor:`${o.color}40`}]}>
110
+ <react_native_1.Text style={[bundleStyles.extChipText,{color:o.color}]}>
111
+ {t.ext}
282
112
  </react_native_1.Text>
283
- </react_native_1.View>);
284
- };
285
- function buildBundleFileTree(files) {
286
- const rootMap = new Map();
287
- for (const file of files) {
288
- const cleanPath = file.path.replace(/^\/+/, '');
289
- const parts = cleanPath.split('/').filter(Boolean);
290
- if (parts.length === 0)
291
- continue;
292
- let currentLevel = rootMap;
293
- for (let i = 0; i < parts.length; i++) {
294
- const part = parts[i];
295
- const isFile = i === parts.length - 1;
296
- if (!currentLevel.has(part)) {
297
- currentLevel.set(part, {
298
- name: part,
299
- fullPath: parts.slice(0, i + 1).join('/'),
300
- isFile,
301
- fileItem: isFile ? file : undefined,
302
- children: new Map(),
303
- });
304
- }
305
- if (!isFile) {
306
- currentLevel = currentLevel.get(part).children;
307
- }
308
- }
309
- }
310
- function convertMapToNodes(map) {
311
- const nodes = [];
312
- for (const [, val] of map.entries()) {
313
- const children = convertMapToNodes(val.children);
314
- const isFolder = !val.isFile;
315
- const fileCount = isFolder
316
- ? children.reduce((acc, c) => acc + (c.isFolder ? c.fileCount : 1), 0)
317
- : 1;
318
- const sizeKb = isFolder
319
- ? children.reduce((acc, c) => acc + c.sizeKb, 0)
320
- : val.fileItem
321
- ? val.fileItem.sizeKb
322
- : 0;
323
- nodes.push({
324
- id: val.fullPath,
325
- name: val.name,
326
- fullPath: val.fullPath,
327
- isFolder,
328
- fileItem: val.fileItem,
329
- sizeKb,
330
- fileCount,
331
- children,
332
- });
333
- }
334
- return nodes.sort((a, b) => {
335
- if (a.isFolder && !b.isFolder)
336
- return -1;
337
- if (!a.isFolder && b.isFolder)
338
- return 1;
339
- return a.name.localeCompare(b.name);
340
- });
341
- }
342
- return convertMapToNodes(rootMap);
343
- }
344
- const downloadBundleFile = async (file, scriptURL) => {
345
- let content = '';
346
- try {
347
- let devServerOrigin = '';
348
- const activeUrl = scriptURL || (0, bundleAnalyzer_1.getHostScriptURL)();
349
- if (activeUrl && activeUrl.startsWith('http')) {
350
- const match = activeUrl.match(/^(https?:\/\/[^/]+)/);
351
- if (match) {
352
- devServerOrigin = match[1];
353
- }
354
- }
355
- if (devServerOrigin) {
356
- const cleanPath = file.path.replace(/^\/+/, '');
357
- const url = `${devServerOrigin}/${cleanPath}`;
358
- const res = await fetch(url);
359
- if (res.ok) {
360
- const text = await res.text();
361
- if (text && text.length > 0) {
362
- content = text;
363
- }
364
- }
365
- }
366
- }
367
- catch { }
368
- if (!content) {
369
- content = `// ─────────────────────────────────────────────────────────────
370
- // File: ${file.name}
371
- // Path: ${file.path}
372
- // Category: ${file.category.toUpperCase()}
373
- // Size: ${file.sizeKb} KB
374
- // Status: ${file.status === 'optimal'
375
- ? 'Active in Dependency Graph'
376
- : 'Not consumed / Static'}
377
- // Meta: ${file.meta}
378
- // ─────────────────────────────────────────────────────────────
113
+ </react_native_1.View>};function buildBundleFileTree(t){const r=new Map;for(const o of t){const s=o.path.replace(/^\/+/,"").split("/").filter(Boolean);if(s.length===0)continue;let y=r;for(let u=0;u<s.length;u++){const _=s[u],a=u===s.length-1;y.has(_)||y.set(_,{name:_,fullPath:s.slice(0,u+1).join("/"),isFile:a,fileItem:a?o:void 0,children:new Map}),a||(y=y.get(_).children)}}function n(o){const c=[];for(const[,s]of o.entries()){const y=n(s.children),u=!s.isFile,_=u?y.reduce((v,b)=>v+(b.isFolder?b.fileCount:1),0):1,a=u?y.reduce((v,b)=>v+b.sizeKb,0):s.fileItem?s.fileItem.sizeKb:0;c.push({id:s.fullPath,name:s.name,fullPath:s.fullPath,isFolder:u,fileItem:s.fileItem,sizeKb:a,fileCount:_,children:y})}return c.sort((s,y)=>s.isFolder&&!y.isFolder?-1:!s.isFolder&&y.isFolder?1:s.name.localeCompare(y.name))}return n(r)}const downloadBundleFile=async(t,r)=>{let n="";try{let o="";const c=r||(0,bundleAnalyzer_1.getHostScriptURL)();if(c&&c.startsWith("http")){const s=c.match(/^(https?:\/\/[^/]+)/);s&&(o=s[1])}if(o){const s=t.path.replace(/^\/+/,""),y=`${o}/${s}`,u=await fetch(y);if(u.ok){const _=await u.text();_&&_.length>0&&(n=_)}}}catch{}n||(n=`// \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
114
+ // File: ${t.name}
115
+ // Path: ${t.path}
116
+ // Category: ${t.category.toUpperCase()}
117
+ // Size: ${t.sizeKb} KB
118
+ // Status: ${t.status==="optimal"?"Active in Dependency Graph":"Not consumed / Static"}
119
+ // Meta: ${t.meta}
120
+ // \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
379
121
 
380
122
  export default {
381
- id: ${JSON.stringify(file.id)},
382
- name: ${JSON.stringify(file.name)},
383
- path: ${JSON.stringify(file.path)},
384
- category: ${JSON.stringify(file.category)},
385
- sizeKb: ${file.sizeKb},
386
- meta: ${JSON.stringify(file.meta)},
387
- status: ${JSON.stringify(file.status || 'optimal')},
388
- };
389
- `;
390
- }
391
- try {
392
- await react_native_1.Share.share(react_native_1.Platform.OS === 'ios'
393
- ? {
394
- title: file.name,
395
- message: content,
396
- }
397
- : {
398
- title: `Download ${file.name}`,
399
- message: content,
400
- }, {
401
- dialogTitle: `Download / Save ${file.name}`,
402
- });
403
- }
404
- catch { }
405
- try {
406
- (0, helpers_1.copyToClipboard)(content, file.name);
407
- }
408
- catch { }
123
+ id: ${JSON.stringify(t.id)},
124
+ name: ${JSON.stringify(t.name)},
125
+ path: ${JSON.stringify(t.path)},
126
+ category: ${JSON.stringify(t.category)},
127
+ sizeKb: ${t.sizeKb},
128
+ meta: ${JSON.stringify(t.meta)},
129
+ status: ${JSON.stringify(t.status||"optimal")},
409
130
  };
410
- exports.downloadBundleFile = downloadBundleFile;
411
- const BundleTreeNodeView = ({ node, level, search, totalBundleKb, expandedFolders, toggleFolder, isLastChild, onDownload, }) => {
412
- const isExpanded = search ? true : !!expandedFolders[node.fullPath];
413
- const isCollapsed = !isExpanded;
414
- const indentLeft = level * 16 + 10;
415
- if (node.isFolder) {
416
- return (<react_native_1.View style={bundleStyles.treeFolderBlock}>
417
- <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel={`Folder ${node.name}, ${node.fileCount} ${node.fileCount === 1 ? 'file' : 'files'}, ${node.sizeKb >= 1024
418
- ? `${(node.sizeKb / 1024).toFixed(2)} MB`
419
- : `${node.sizeKb} KB`}`} accessibilityState={{ expanded: isExpanded }} accessibilityHint="Double tap to expand or collapse folder" onPress={() => toggleFolder(node.fullPath)} style={[bundleStyles.treeFolderRow, { paddingLeft: indentLeft }]}>
131
+ `);try{await react_native_1.Share.share(react_native_1.Platform.OS==="ios"?{title:t.name,message:n}:{title:`Download ${t.name}`,message:n},{dialogTitle:`Download / Save ${t.name}`})}catch{}try{(0,helpers_1.copyToClipboard)(n,t.name)}catch{}};exports.downloadBundleFile=downloadBundleFile;const BundleTreeNodeView=({node:t,level:r,search:n,totalBundleKb:o,expandedFolders:c,toggleFolder:s,isLastChild:y,onDownload:u})=>{const _=n?!0:!!c[t.fullPath],a=!_,v=r*16+10;if(t.isFolder)return<react_native_1.View style={bundleStyles.treeFolderBlock}>
132
+ <TouchableScale_1.default accessible={!0}accessibilityRole="button"accessibilityLabel={`Folder ${t.name}, ${t.fileCount} ${t.fileCount===1?"file":"files"}, ${t.sizeKb>=1024?`${(t.sizeKb/1024).toFixed(2)} MB`:`${t.sizeKb} KB`}`}accessibilityState={{expanded:_}}accessibilityHint="Double tap to expand or collapse folder"onPress={()=>s(t.fullPath)}style={[bundleStyles.treeFolderRow,{paddingLeft:v}]}>
420
133
  <react_native_1.View style={bundleStyles.treeRowLeft}>
421
- <react_native_1.View style={{ marginRight: 4 }}>
422
- <NetworkIcons_1.ChevronIcon direction={isCollapsed ? 'right' : 'down'} size={12} color={AppColors_1.AppColors.grayTextWeak}/>
134
+ <react_native_1.View style={{marginRight:4}}>
135
+ <NetworkIcons_1.ChevronIcon direction={a?"right":"down"}size={12}color={AppColors_1.AppColors.grayTextWeak}/>
423
136
  </react_native_1.View>
424
- {isCollapsed ? (<NetworkIcons_1.FolderIcon color={AppColors_1.AppColors.amber500} size={15}/>) : (<NetworkIcons_1.FolderOpenIcon color={AppColors_1.AppColors.amber500} size={15}/>)}
425
- <HighlightText_1.default text={node.name + '/'} search={search} style={bundleStyles.treeFolderName} highlightStyle={bundleStyles.searchHighlight}/>
137
+ {a?<NetworkIcons_1.FolderIcon color={AppColors_1.AppColors.amber500}size={15}/>:<NetworkIcons_1.FolderOpenIcon color={AppColors_1.AppColors.amber500}size={15}/>}
138
+ <HighlightText_1.default text={t.name+"/"}search={n}style={bundleStyles.treeFolderName}highlightStyle={bundleStyles.searchHighlight}/>
426
139
  <react_native_1.View style={bundleStyles.treeCountBadge}>
427
140
  <react_native_1.Text style={bundleStyles.treeCountBadgeText}>
428
- {node.fileCount}{' '}
429
- {node.fileCount === 1 ? (0, i18n_1.t)('bundle.file') : (0, i18n_1.t)('bundle.files')}
141
+ {t.fileCount}{" "}
142
+ {t.fileCount===1?(0,i18n_1.t)("bundle.file"):(0,i18n_1.t)("bundle.files")}
430
143
  </react_native_1.Text>
431
144
  </react_native_1.View>
432
145
  </react_native_1.View>
433
146
 
434
147
  <react_native_1.View style={bundleStyles.treeRowRight}>
435
148
  <react_native_1.Text style={bundleStyles.treeFolderSize}>
436
- {node.sizeKb >= 1024
437
- ? (0, i18n_1.t)('bundle.fileSizeMb', {
438
- size: (node.sizeKb / 1024).toFixed(2),
439
- })
440
- : (0, i18n_1.t)('bundle.fileSizeKb', { size: node.sizeKb })}
149
+ {t.sizeKb>=1024?(0,i18n_1.t)("bundle.fileSizeMb",{size:(t.sizeKb/1024).toFixed(2)}):(0,i18n_1.t)("bundle.fileSizeKb",{size:t.sizeKb})}
441
150
  </react_native_1.Text>
442
- <CopyButton_1.default value={() => ({
443
- folder: node.fullPath,
444
- sizeKb: node.sizeKb,
445
- fileCount: node.fileCount,
446
- })} label={(0, i18n_1.t)('bundle.copyFileInfo', { name: node.name })}/>
151
+ <CopyButton_1.default value={()=>({folder:t.fullPath,sizeKb:t.sizeKb,fileCount:t.fileCount})}label={(0,i18n_1.t)("bundle.copyFileInfo",{name:t.name})}/>
447
152
  </react_native_1.View>
448
153
  </TouchableScale_1.default>
449
154
 
450
- {!isCollapsed && (<react_native_1.View style={bundleStyles.treeChildrenContainer}>
451
- {node.children.map((child, cIdx) => (<BundleTreeNodeView key={child.id} node={child} level={level + 1} search={search} totalBundleKb={totalBundleKb} expandedFolders={expandedFolders} toggleFolder={toggleFolder} isLastChild={cIdx === node.children.length - 1} onDownload={onDownload}/>))}
452
- </react_native_1.View>)}
453
- </react_native_1.View>);
454
- }
455
- const file = node.fileItem;
456
- if (!file)
457
- return null;
458
- const pctOfTotal = totalBundleKb > 0 ? ((file.sizeKb / totalBundleKb) * 100).toFixed(1) : '0';
459
- const isUnused = file.isConsumed === false;
460
- return (<react_native_1.View style={[
461
- bundleStyles.treeFileRow,
462
- { paddingLeft: indentLeft },
463
- isUnused && bundleStyles.treeFileRowUnused,
464
- ]}>
155
+ {!a&&<react_native_1.View style={bundleStyles.treeChildrenContainer}>
156
+ {t.children.map((w,d)=><BundleTreeNodeView key={w.id}node={w}level={r+1}search={n}totalBundleKb={o}expandedFolders={c}toggleFolder={s}isLastChild={d===t.children.length-1}onDownload={u}/>)}
157
+ </react_native_1.View>}
158
+ </react_native_1.View>;const b=t.fileItem;if(!b)return null;const h=o>0?(b.sizeKb/o*100).toFixed(1):"0",k=b.isConsumed===!1;return<react_native_1.View style={[bundleStyles.treeFileRow,{paddingLeft:v},k&&bundleStyles.treeFileRowUnused]}>
465
159
  <react_native_1.View style={bundleStyles.treeRowLeft}>
466
160
  <react_native_1.View style={bundleStyles.treeBranchGuide}>
467
161
  <react_native_1.Text style={bundleStyles.treeBranchGuideText}>
468
- {isLastChild ? '└' : '├'}
162
+ {y?"\u2514":"\u251C"}
469
163
  </react_native_1.Text>
470
164
  </react_native_1.View>
471
165
 
472
- <MediaPreviewThumbnail file={file}/>
166
+ <MediaPreviewThumbnail file={b}/>
473
167
 
474
- <HighlightText_1.default text={file.name} search={search} style={bundleStyles.treeFileName} highlightStyle={bundleStyles.searchHighlight}/>
168
+ <HighlightText_1.default text={b.name}search={n}style={bundleStyles.treeFileName}highlightStyle={bundleStyles.searchHighlight}/>
475
169
 
476
- {isUnused && (<react_native_1.View style={bundleStyles.treeUnusedPill}>
170
+ {k&&<react_native_1.View style={bundleStyles.treeUnusedPill}>
477
171
  <react_native_1.Text style={bundleStyles.treeUnusedPillText}>
478
- {(0, i18n_1.t)('bundle.notConsumed')}
172
+ {(0,i18n_1.t)("bundle.notConsumed")}
479
173
  </react_native_1.Text>
480
- </react_native_1.View>)}
174
+ </react_native_1.View>}
481
175
  </react_native_1.View>
482
176
 
483
177
  <react_native_1.View style={bundleStyles.treeRowRight}>
484
178
  <react_native_1.View style={bundleStyles.treeFileSizeGroup}>
485
- <react_native_1.Text style={[
486
- bundleStyles.treeFileSizeText,
487
- isUnused && { color: AppColors_1.AppColors.red600 },
488
- ]}>
489
- {file.sizeKb >= 1024
490
- ? (0, i18n_1.t)('bundle.fileSizeMb', { size: (file.sizeKb / 1024).toFixed(2) })
491
- : (0, i18n_1.t)('bundle.fileSizeKb', { size: file.sizeKb })}
179
+ <react_native_1.Text style={[bundleStyles.treeFileSizeText,k&&{color:AppColors_1.AppColors.red600}]}>
180
+ {b.sizeKb>=1024?(0,i18n_1.t)("bundle.fileSizeMb",{size:(b.sizeKb/1024).toFixed(2)}):(0,i18n_1.t)("bundle.fileSizeKb",{size:b.sizeKb})}
492
181
  </react_native_1.Text>
493
- <react_native_1.Text style={bundleStyles.treeFilePctText}>{pctOfTotal}%</react_native_1.Text>
182
+ <react_native_1.Text style={bundleStyles.treeFilePctText}>{h}%</react_native_1.Text>
494
183
  </react_native_1.View>
495
184
 
496
- <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 5 }}>
497
- {onDownload && (<TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel={`Download source code for ${file.name}`} accessibilityHint="Fetches module source code from Metro dev server" onPress={() => onDownload(file)} style={bundleStyles.treeActionBtn} hitSlop={8}>
498
- <NetworkIcons_1.DownloadIcon size={13} color={AppColors_1.AppColors.sky500}/>
499
- </TouchableScale_1.default>)}
185
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:5}}>
186
+ {u&&<TouchableScale_1.default accessible={!0}accessibilityRole="button"accessibilityLabel={`Download source code for ${b.name}`}accessibilityHint="Fetches module source code from Metro dev server"onPress={()=>u(b)}style={bundleStyles.treeActionBtn}hitSlop={8}>
187
+ <NetworkIcons_1.DownloadIcon size={13}color={AppColors_1.AppColors.sky500}/>
188
+ </TouchableScale_1.default>}
500
189
 
501
- <CopyButton_1.default value={() => file} label={(0, i18n_1.t)('bundle.fileDetailsJson')}/>
190
+ <CopyButton_1.default value={()=>b}label={(0,i18n_1.t)("bundle.fileDetailsJson")}/>
502
191
  </react_native_1.View>
503
192
  </react_native_1.View>
504
- </react_native_1.View>);
505
- };
506
- const CATEGORY_TABS = [
507
- { key: 'ALL', labelKey: 'bundle.catAll', iconType: 'folder' },
508
- { key: 'UNUSED', labelKey: 'bundle.catUnused', iconType: 'ban' },
509
- { key: 'CONSUMED', labelKey: 'bundle.catConsumed', iconType: 'bolt' },
510
- { key: 'image', labelKey: 'bundle.catImages', iconType: 'image' },
511
- {
512
- key: 'typescript',
513
- labelKey: 'bundle.catTypescript',
514
- iconType: 'typescript',
515
- },
516
- {
517
- key: 'javascript',
518
- labelKey: 'bundle.catJavascript',
519
- iconType: 'javascript',
520
- },
521
- { key: 'font', labelKey: 'bundle.catFonts', iconType: 'font' },
522
- { key: 'json', labelKey: 'bundle.catJson', iconType: 'json' },
523
- ];
524
- const CATEGORY_COLORS = {
525
- image: {
526
- label: 'Images & Media',
527
- color: AppColors_1.AppColors.pink500,
528
- bg: AppColors_1.AppColors.pink100,
529
- },
530
- typescript: {
531
- label: 'TypeScript',
532
- color: AppColors_1.AppColors.sky500,
533
- bg: AppColors_1.AppColors.sky100,
534
- },
535
- javascript: {
536
- label: 'JavaScript',
537
- color: AppColors_1.AppColors.indigo500,
538
- bg: AppColors_1.AppColors.indigo50,
539
- },
540
- font: { label: 'Fonts', color: AppColors_1.AppColors.purple500, bg: AppColors_1.AppColors.purple100 },
541
- json: {
542
- label: 'JSON / Data',
543
- color: AppColors_1.AppColors.emerald500,
544
- bg: AppColors_1.AppColors.emerald100,
545
- },
546
- };
547
- const BundleTab = react_1.default.memo(() => {
548
- const { t } = (0, i18n_1.useTranslation)();
549
- const [activeSubTab, setActiveSubTab] = (0, react_1.useState)('overview');
550
- const [prodPlatform, setProdPlatform] = (0, react_1.useState)('ios');
551
- const [search, setSearch] = (0, react_1.useState)('');
552
- const [activeCategory, setActiveCategory] = (0, react_1.useState)('ALL');
553
- const [analysis, setAnalysis] = (0, react_1.useState)(() => (0, bundleAnalyzer_1.getCachedBundleAnalysis)() || (0, bundleAnalyzer_1.getInitialBundleAnalysis)());
554
- const [isAnalyzing, setIsAnalyzing] = (0, react_1.useState)(false);
555
- const refreshAnalysis = (0, react_1.useCallback)(() => {
556
- setIsAnalyzing(true);
557
- (0, bundleAnalyzer_1.analyzeHostAppBundle)(true)
558
- .then(result => {
559
- setAnalysis(result);
560
- setIsAnalyzing(false);
561
- })
562
- .catch(() => {
563
- setIsAnalyzing(false);
564
- });
565
- }, []);
566
- (0, react_1.useEffect)(() => {
567
- let mounted = true;
568
- (0, bundleAnalyzer_1.analyzeHostAppBundle)()
569
- .then(result => {
570
- if (mounted) {
571
- setAnalysis(result);
572
- setIsAnalyzing(false);
573
- }
574
- })
575
- .catch(() => {
576
- if (mounted) {
577
- setIsAnalyzing(false);
578
- }
579
- });
580
- return () => {
581
- mounted = false;
582
- };
583
- }, []);
584
- const isHermes = Boolean(global.HermesInternal);
585
- const bundleFiles = (0, react_1.useMemo)(() => (analysis ? analysis.files : []), [analysis]);
586
- const bundlePackages = (0, react_1.useMemo)(() => (analysis ? analysis.packages : []), [analysis]);
587
- const summary = (0, react_1.useMemo)(() => {
588
- const totalKb = analysis?.totalDevKb ||
589
- (analysis?.totalDevBytes
590
- ? Math.round(analysis.totalDevBytes / 1024)
591
- : 6144);
592
- const totalMb = analysis?.totalDevMb
593
- ? analysis.totalDevMb.toFixed(2)
594
- : (totalKb / 1024).toFixed(2);
595
- const nodeModulesKb = analysis?.splitUp?.nodeModules?.kb || Math.round(totalKb * 0.52);
596
- const nodeModulesPct = analysis?.splitUp?.nodeModules?.pct || 52.0;
597
- const metroKb = analysis?.splitUp?.metroDevOverhead?.kb || Math.round(totalKb * 0.21);
598
- const metroPct = analysis?.splitUp?.metroDevOverhead?.pct || 21.0;
599
- const appSourceKb = analysis?.splitUp?.appSource?.kb || Math.round(totalKb * 0.15);
600
- const appSourcePct = analysis?.splitUp?.appSource?.pct || 15.0;
601
- const assetsMediaKb = analysis?.splitUp?.assetsMedia?.kb || Math.round(totalKb * 0.12);
602
- const assetsMediaPct = analysis?.splitUp?.assetsMedia?.pct || 12.0;
603
- const categories = [
604
- {
605
- key: 'node_modules',
606
- iconType: 'javascript',
607
- title: 'NPM Dependencies',
608
- targetTab: 'packages',
609
- count: analysis?.packageCount || bundlePackages.length || 53,
610
- sizeKb: nodeModulesKb,
611
- sizeMb: (nodeModulesKb / 1024).toFixed(2),
612
- pct: nodeModulesPct,
613
- color: AppColors_1.AppColors.indigo500,
614
- desc: `${analysis?.packageCount || bundlePackages.length || 53} node_modules packages (React Native, React, navigation, axios)`,
615
- },
616
- {
617
- key: 'metro_runtime',
618
- iconType: 'bolt',
619
- title: 'Metro Dev Runtime',
620
- targetTab: 'optimizer',
621
- count: 1,
622
- sizeKb: metroKb,
623
- sizeMb: (metroKb / 1024).toFixed(2),
624
- pct: metroPct,
625
- color: AppColors_1.AppColors.amber500,
626
- desc: 'Module loader, polyfills, HMR client, and prelude runtime',
627
- },
628
- {
629
- key: 'app_source',
630
- iconType: 'typescript',
631
- title: 'App Source Code (TSX/JS)',
632
- targetTab: 'files',
633
- count: bundleFiles.filter(f => f.category === 'typescript' || f.category === 'javascript').length || 7,
634
- sizeKb: appSourceKb,
635
- sizeMb: (appSourceKb / 1024).toFixed(2),
636
- pct: appSourcePct,
637
- color: AppColors_1.AppColors.sky500,
638
- desc: 'Screens, components, navigation, Redux store, and hooks',
639
- },
640
- {
641
- key: 'assets_media',
642
- iconType: 'image',
643
- title: 'Images & Static Media',
644
- targetTab: 'media',
645
- count: bundleFiles.filter(f => f.category === 'image' ||
646
- f.category === 'font' ||
647
- f.category === 'json').length || 3,
648
- sizeKb: assetsMediaKb,
649
- sizeMb: (assetsMediaKb / 1024).toFixed(2),
650
- pct: assetsMediaPct,
651
- color: AppColors_1.AppColors.pink500,
652
- desc: 'Bundled PNG/JPG/SVG drawables, custom fonts, and JSON assets',
653
- },
654
- ];
655
- return {
656
- totalKb,
657
- totalMb,
658
- totalCount: (analysis?.packageCount || 53) + bundleFiles.length + 1,
659
- categories,
660
- nodeModulesKb,
661
- nodeModulesPct,
662
- metroKb,
663
- metroPct,
664
- appSourceKb,
665
- appSourcePct,
666
- assetsMediaKb,
667
- assetsMediaPct,
668
- images: {
669
- count: bundleFiles.filter(f => f.category === 'image').length,
670
- kb: assetsMediaKb,
671
- pct: assetsMediaPct,
672
- },
673
- ts: {
674
- count: bundleFiles.filter(f => f.category === 'typescript').length,
675
- kb: appSourceKb,
676
- pct: appSourcePct,
677
- },
678
- js: {
679
- count: (analysis?.packageCount || 53) + 1,
680
- kb: nodeModulesKb + metroKb,
681
- pct: Number((nodeModulesPct + metroPct).toFixed(1)),
682
- },
683
- fonts: {
684
- count: bundleFiles.filter(f => f.category === 'font').length,
685
- kb: 0,
686
- pct: 0,
687
- },
688
- json: {
689
- count: bundleFiles.filter(f => f.category === 'json').length,
690
- kb: Math.round(assetsMediaKb * 0.1),
691
- pct: Number((assetsMediaPct * 0.1).toFixed(1)),
692
- },
693
- };
694
- }, [analysis, bundleFiles, bundlePackages]);
695
- const filteredFiles = (0, react_1.useMemo)(() => {
696
- return bundleFiles.filter(file => {
697
- const matchSearch = !search ||
698
- file.name.toLowerCase().includes(search.toLowerCase()) ||
699
- file.path.toLowerCase().includes(search.toLowerCase()) ||
700
- file.ext.toLowerCase().includes(search.toLowerCase()) ||
701
- file.meta.toLowerCase().includes(search.toLowerCase());
702
- const matchCategory = activeCategory === 'ALL'
703
- ? true
704
- : activeCategory === 'UNUSED'
705
- ? file.isConsumed === false
706
- : activeCategory === 'CONSUMED'
707
- ? file.isConsumed !== false
708
- : file.category === activeCategory;
709
- return matchSearch && matchCategory;
710
- });
711
- }, [search, activeCategory, bundleFiles]);
712
- const filteredTotalKb = (0, react_1.useMemo)(() => {
713
- return filteredFiles.reduce((acc, f) => acc + f.sizeKb, 0);
714
- }, [filteredFiles]);
715
- const [filesViewMode, setFilesViewMode] = (0, react_1.useState)('tree');
716
- const [expandedFolders, setExpandedFolders] = (0, react_1.useState)({});
717
- const fileTreeNodes = (0, react_1.useMemo)(() => {
718
- return buildBundleFileTree(filteredFiles);
719
- }, [filteredFiles]);
720
- (0, react_1.useEffect)(() => {
721
- if (fileTreeNodes.length > 0 && Object.keys(expandedFolders).length === 0) {
722
- const initial = {};
723
- fileTreeNodes.forEach(node => {
724
- if (node.isFolder) {
725
- initial[node.fullPath] = true;
726
- node.children.forEach(child => {
727
- if (child.isFolder) {
728
- initial[child.fullPath] = true;
729
- }
730
- });
731
- }
732
- });
733
- setExpandedFolders(initial);
734
- }
735
- }, [fileTreeNodes]);
736
- const toggleFolder = (0, react_1.useCallback)((path) => {
737
- setExpandedFolders(prev => ({
738
- ...prev,
739
- [path]: !prev[path],
740
- }));
741
- }, []);
742
- const expandAllFolders = (0, react_1.useCallback)(() => {
743
- const all = {};
744
- function collect(nodes) {
745
- for (const n of nodes) {
746
- if (n.isFolder) {
747
- all[n.fullPath] = true;
748
- collect(n.children);
749
- }
750
- }
751
- }
752
- collect(fileTreeNodes);
753
- setExpandedFolders(all);
754
- }, [fileTreeNodes]);
755
- const collapseAllFolders = (0, react_1.useCallback)(() => {
756
- setExpandedFolders({});
757
- }, []);
758
- const filteredPackages = (0, react_1.useMemo)(() => {
759
- if (!search)
760
- return bundlePackages;
761
- const q = search.toLowerCase();
762
- return bundlePackages.filter(pkg => pkg.name.toLowerCase().includes(q) ||
763
- pkg.description.toLowerCase().includes(q) ||
764
- pkg.category.toLowerCase().includes(q));
765
- }, [search, bundlePackages]);
766
- const packagesTotalKb = (0, react_1.useMemo)(() => {
767
- return filteredPackages.reduce((acc, p) => acc + p.sizeKb, 0);
768
- }, [filteredPackages]);
769
- const mediaFiles = (0, react_1.useMemo)(() => {
770
- return bundleFiles.filter(f => f.category === 'image' || f.category === 'font');
771
- }, [bundleFiles]);
772
- const mediaTotalKb = (0, react_1.useMemo)(() => {
773
- return mediaFiles.reduce((acc, m) => acc + m.sizeKb, 0);
774
- }, [mediaFiles]);
775
- const subTabs = [
776
- {
777
- key: 'overview',
778
- label: t('bundle.tabOverview'),
779
- icon: (isActive) => (<NetworkIcons_1.LiveStateIcon color={isActive ? AppColors_1.AppColors.white : AppColors_1.AppColors.purple} size={12}/>),
780
- },
781
- {
782
- key: 'production',
783
- label: t('bundle.tabProduction', { count: 3 }),
784
- icon: (isActive) => (<NetworkIcons_1.TimelineIcon color={isActive ? AppColors_1.AppColors.white : AppColors_1.AppColors.purple} size={12}/>),
785
- },
786
- {
787
- key: 'files',
788
- label: t('bundle.tabFiles', { count: bundleFiles.length }),
789
- icon: (isActive) => (<NetworkIcons_1.LayersIcon color={isActive ? AppColors_1.AppColors.white : AppColors_1.AppColors.purple} size={12}/>),
790
- },
791
- {
792
- key: 'packages',
793
- label: t('bundle.tabPackages', { count: bundlePackages.length }),
794
- icon: (isActive) => (<NetworkIcons_1.PackageIcon color={isActive ? AppColors_1.AppColors.white : AppColors_1.AppColors.purple} size={12}/>),
795
- },
796
- {
797
- key: 'media',
798
- label: t('bundle.tabMedia', { count: mediaFiles.length }),
799
- icon: (isActive) => (<NetworkIcons_1.StorageIcon color={isActive ? AppColors_1.AppColors.white : AppColors_1.AppColors.purple} size={12}/>),
800
- },
801
- {
802
- key: 'optimizer',
803
- label: t('bundle.tabOptimizer'),
804
- icon: (isActive) => (<NetworkIcons_1.MetadataIcon color={isActive ? AppColors_1.AppColors.white : AppColors_1.AppColors.purple} size={12}/>),
805
- },
806
- ];
807
- return (<react_native_1.View style={{ flex: 1, backgroundColor: AppColors_1.AppColors.grayBackground }}>
193
+ </react_native_1.View>},CATEGORY_TABS=[{key:"ALL",labelKey:"bundle.catAll",iconType:"folder"},{key:"UNUSED",labelKey:"bundle.catUnused",iconType:"ban"},{key:"CONSUMED",labelKey:"bundle.catConsumed",iconType:"bolt"},{key:"image",labelKey:"bundle.catImages",iconType:"image"},{key:"typescript",labelKey:"bundle.catTypescript",iconType:"typescript"},{key:"javascript",labelKey:"bundle.catJavascript",iconType:"javascript"},{key:"font",labelKey:"bundle.catFonts",iconType:"font"},{key:"json",labelKey:"bundle.catJson",iconType:"json"}],CATEGORY_COLORS={image:{label:"Images & Media",color:AppColors_1.AppColors.pink500,bg:AppColors_1.AppColors.pink100},typescript:{label:"TypeScript",color:AppColors_1.AppColors.sky500,bg:AppColors_1.AppColors.sky100},javascript:{label:"JavaScript",color:AppColors_1.AppColors.indigo500,bg:AppColors_1.AppColors.indigo50},font:{label:"Fonts",color:AppColors_1.AppColors.purple500,bg:AppColors_1.AppColors.purple100},json:{label:"JSON / Data",color:AppColors_1.AppColors.emerald500,bg:AppColors_1.AppColors.emerald100}},BundleTab=react_1.default.memo(()=>{const{t}=(0,i18n_1.useTranslation)(),[r,n]=(0,react_1.useState)("overview"),[o,c]=(0,react_1.useState)("ios"),[s,y]=(0,react_1.useState)(""),[u,_]=(0,react_1.useState)("ALL"),[a,v]=(0,react_1.useState)(()=>(0,bundleAnalyzer_1.getCachedBundleAnalysis)()||(0,bundleAnalyzer_1.getInitialBundleAnalysis)()),[b,h]=(0,react_1.useState)(!1),k=(0,react_1.useCallback)(()=>{h(!0),(0,bundleAnalyzer_1.analyzeHostAppBundle)(!0).then(e=>{v(e),h(!1)}).catch(()=>{h(!1)})},[]);(0,react_1.useEffect)(()=>{let e=!0;return(0,bundleAnalyzer_1.analyzeHostAppBundle)().then(l=>{e&&(v(l),h(!1))}).catch(()=>{e&&h(!1)}),()=>{e=!1}},[]);const w=!!global.HermesInternal,d=(0,react_1.useMemo)(()=>a?a.files:[],[a]),x=(0,react_1.useMemo)(()=>a?a.packages:[],[a]),i=(0,react_1.useMemo)(()=>{const e=a?.totalDevKb||(a?.totalDevBytes?Math.round(a.totalDevBytes/1024):6144),l=a?.totalDevMb?a.totalDevMb.toFixed(2):(e/1024).toFixed(2),p=a?.splitUp?.nodeModules?.kb||Math.round(e*.52),g=a?.splitUp?.nodeModules?.pct||52,C=a?.splitUp?.metroDevOverhead?.kb||Math.round(e*.21),M=a?.splitUp?.metroDevOverhead?.pct||21,P=a?.splitUp?.appSource?.kb||Math.round(e*.15),I=a?.splitUp?.appSource?.pct||15,B=a?.splitUp?.assetsMedia?.kb||Math.round(e*.12),z=a?.splitUp?.assetsMedia?.pct||12,U=[{key:"node_modules",iconType:"javascript",title:"NPM Dependencies",targetTab:"packages",count:a?.packageCount||x.length||53,sizeKb:p,sizeMb:(p/1024).toFixed(2),pct:g,color:AppColors_1.AppColors.indigo500,desc:`${a?.packageCount||x.length||53} node_modules packages (React Native, React, navigation, axios)`},{key:"metro_runtime",iconType:"bolt",title:"Metro Dev Runtime",targetTab:"optimizer",count:1,sizeKb:C,sizeMb:(C/1024).toFixed(2),pct:M,color:AppColors_1.AppColors.amber500,desc:"Module loader, polyfills, HMR client, and prelude runtime"},{key:"app_source",iconType:"typescript",title:"App Source Code (TSX/JS)",targetTab:"files",count:d.filter(m=>m.category==="typescript"||m.category==="javascript").length||7,sizeKb:P,sizeMb:(P/1024).toFixed(2),pct:I,color:AppColors_1.AppColors.sky500,desc:"Screens, components, navigation, Redux store, and hooks"},{key:"assets_media",iconType:"image",title:"Images & Static Media",targetTab:"media",count:d.filter(m=>m.category==="image"||m.category==="font"||m.category==="json").length||3,sizeKb:B,sizeMb:(B/1024).toFixed(2),pct:z,color:AppColors_1.AppColors.pink500,desc:"Bundled PNG/JPG/SVG drawables, custom fonts, and JSON assets"}];return{totalKb:e,totalMb:l,totalCount:(a?.packageCount||53)+d.length+1,categories:U,nodeModulesKb:p,nodeModulesPct:g,metroKb:C,metroPct:M,appSourceKb:P,appSourcePct:I,assetsMediaKb:B,assetsMediaPct:z,images:{count:d.filter(m=>m.category==="image").length,kb:B,pct:z},ts:{count:d.filter(m=>m.category==="typescript").length,kb:P,pct:I},js:{count:(a?.packageCount||53)+1,kb:p+C,pct:Number((g+M).toFixed(1))},fonts:{count:d.filter(m=>m.category==="font").length,kb:0,pct:0},json:{count:d.filter(m=>m.category==="json").length,kb:Math.round(B*.1),pct:Number((z*.1).toFixed(1))}}},[a,d,x]),T=(0,react_1.useMemo)(()=>d.filter(e=>{const l=!s||e.name.toLowerCase().includes(s.toLowerCase())||e.path.toLowerCase().includes(s.toLowerCase())||e.ext.toLowerCase().includes(s.toLowerCase())||e.meta.toLowerCase().includes(s.toLowerCase()),p=u==="ALL"?!0:u==="UNUSED"?e.isConsumed===!1:u==="CONSUMED"?e.isConsumed!==!1:e.category===u;return l&&p}),[s,u,d]),R=(0,react_1.useMemo)(()=>T.reduce((e,l)=>e+l.sizeKb,0),[T]),[f,L]=(0,react_1.useState)("tree"),[D,F]=(0,react_1.useState)({}),A=(0,react_1.useMemo)(()=>buildBundleFileTree(T),[T]);(0,react_1.useEffect)(()=>{if(A.length>0&&Object.keys(D).length===0){const e={};A.forEach(l=>{l.isFolder&&(e[l.fullPath]=!0,l.children.forEach(p=>{p.isFolder&&(e[p.fullPath]=!0)}))}),F(e)}},[A]);const K=(0,react_1.useCallback)(e=>{F(l=>({...l,[e]:!l[e]}))},[]),$=(0,react_1.useCallback)(()=>{const e={};function l(p){for(const g of p)g.isFolder&&(e[g.fullPath]=!0,l(g.children))}l(A),F(e)},[A]),O=(0,react_1.useCallback)(()=>{F({})},[]),S=(0,react_1.useMemo)(()=>{if(!s)return x;const e=s.toLowerCase();return x.filter(l=>l.name.toLowerCase().includes(e)||l.description.toLowerCase().includes(e)||l.category.toLowerCase().includes(e))},[s,x]),W=(0,react_1.useMemo)(()=>S.reduce((e,l)=>e+l.sizeKb,0),[S]),V=(0,react_1.useMemo)(()=>d.filter(e=>e.category==="image"||e.category==="font"),[d]),H=(0,react_1.useMemo)(()=>V.reduce((e,l)=>e+l.sizeKb,0),[V]),N=[{key:"overview",label:t("bundle.tabOverview"),icon:e=><NetworkIcons_1.LiveStateIcon color={e?AppColors_1.AppColors.white:AppColors_1.AppColors.purple}size={12}/>},{key:"production",label:t("bundle.tabProduction",{count:3}),icon:e=><NetworkIcons_1.TimelineIcon color={e?AppColors_1.AppColors.white:AppColors_1.AppColors.purple}size={12}/>},{key:"files",label:t("bundle.tabFiles",{count:d.length}),icon:e=><NetworkIcons_1.LayersIcon color={e?AppColors_1.AppColors.white:AppColors_1.AppColors.purple}size={12}/>},{key:"packages",label:t("bundle.tabPackages",{count:x.length}),icon:e=><NetworkIcons_1.PackageIcon color={e?AppColors_1.AppColors.white:AppColors_1.AppColors.purple}size={12}/>},{key:"media",label:t("bundle.tabMedia",{count:V.length}),icon:e=><NetworkIcons_1.StorageIcon color={e?AppColors_1.AppColors.white:AppColors_1.AppColors.purple}size={12}/>},{key:"optimizer",label:t("bundle.tabOptimizer"),icon:e=><NetworkIcons_1.MetadataIcon color={e?AppColors_1.AppColors.white:AppColors_1.AppColors.purple}size={12}/>}];return<react_native_1.View style={{flex:1,backgroundColor:AppColors_1.AppColors.grayBackground}}>
808
194
 
809
195
  <react_native_1.View style={bundleStyles.topTabWrap}>
810
- <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={false} style={{ flex: 1 }} contentContainerStyle={bundleStyles.subTabsScroll}>
811
- {subTabs.map(tab => {
812
- const isActive = activeSubTab === tab.key;
813
- return (<TouchableScale_1.default key={tab.key} accessible={true} accessibilityRole="tab" accessibilityLabel={`${tab.label} tab`} accessibilityState={{ selected: isActive }} accessibilityHint={`Switches to ${tab.label} tab`} onPress={() => setActiveSubTab(tab.key)} style={[
814
- bundleStyles.subTabPill,
815
- isActive && bundleStyles.subTabPillActive,
816
- ]}>
817
- {tab.icon(isActive)}
818
- <react_native_1.Text style={[
819
- bundleStyles.subTabPillText,
820
- isActive && bundleStyles.subTabPillTextActive,
821
- ]}>
822
- {tab.label}
196
+ <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}style={{flex:1}}contentContainerStyle={bundleStyles.subTabsScroll}>
197
+ {N.map(e=>{const l=r===e.key;return<TouchableScale_1.default key={e.key}accessible={!0}accessibilityRole="tab"accessibilityLabel={`${e.label} tab`}accessibilityState={{selected:l}}accessibilityHint={`Switches to ${e.label} tab`}onPress={()=>n(e.key)}style={[bundleStyles.subTabPill,l&&bundleStyles.subTabPillActive]}>
198
+ {e.icon(l)}
199
+ <react_native_1.Text style={[bundleStyles.subTabPillText,l&&bundleStyles.subTabPillTextActive]}>
200
+ {e.label}
823
201
  </react_native_1.Text>
824
- </TouchableScale_1.default>);
825
- })}
202
+ </TouchableScale_1.default>})}
826
203
  </react_native_1.ScrollView>
827
- <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel={isAnalyzing ? 'Analyzing Metro bundle' : 'Reload bundle analysis'} accessibilityHint="Re-probes Metro dev server and refreshes bundle statistics" onPress={refreshAnalysis} style={bundleStyles.reloadButton} hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }}>
828
- {isAnalyzing ? (<react_native_1.ActivityIndicator size="small" color={AppColors_1.AppColors.brandPurple}/>) : (<NetworkIcons_1.RefreshCcwIcon color={AppColors_1.AppColors.brandPurple} size={14}/>)}
204
+ <TouchableScale_1.default accessible={!0}accessibilityRole="button"accessibilityLabel={b?"Analyzing Metro bundle":"Reload bundle analysis"}accessibilityHint="Re-probes Metro dev server and refreshes bundle statistics"onPress={k}style={bundleStyles.reloadButton}hitSlop={{top:8,bottom:8,left:8,right:8}}>
205
+ {b?<react_native_1.ActivityIndicator size="small"color={AppColors_1.AppColors.brandPurple}/>:<NetworkIcons_1.RefreshCcwIcon color={AppColors_1.AppColors.brandPurple}size={14}/>}
829
206
  </TouchableScale_1.default>
830
207
  </react_native_1.View>
831
208
 
@@ -834,300 +211,183 @@ const BundleTab = react_1.default.memo(() => {
834
211
 
835
212
 
836
213
 
837
- {activeSubTab === 'overview' && (<react_native_1.ScrollView style={{ flex: 1 }} contentContainerStyle={bundleStyles.contentContainer} keyboardShouldPersistTaps="handled">
214
+ {r==="overview"&&<react_native_1.ScrollView style={{flex:1}}contentContainerStyle={bundleStyles.contentContainer}keyboardShouldPersistTaps="handled">
838
215
 
839
216
  <react_native_1.View style={bundleStyles.heroCard}>
840
217
  <react_native_1.View style={bundleStyles.heroTopRow}>
841
218
  <react_native_1.View style={bundleStyles.heroIconWrap}>
842
- <NetworkIcons_1.PackageIcon color={AppColors_1.AppColors.brandPurple} size={24}/>
219
+ <NetworkIcons_1.PackageIcon color={AppColors_1.AppColors.brandPurple}size={24}/>
843
220
  </react_native_1.View>
844
- <react_native_1.View style={{ flex: 1 }}>
221
+ <react_native_1.View style={{flex:1}}>
845
222
  <react_native_1.Text style={bundleStyles.heroTitle}>
846
- {t('bundle.heroTitle')}
223
+ {t("bundle.heroTitle")}
847
224
  </react_native_1.Text>
848
- {analysis?.isLive && analysis.scriptURL ? (<react_native_1.View style={{ marginTop: 4, gap: 4 }}>
225
+ {a?.isLive&&a.scriptURL?<react_native_1.View style={{marginTop:4,gap:4}}>
849
226
  <react_native_1.Text style={bundleStyles.heroSubtitle}>
850
- {t('bundle.heroSubtitle')}
227
+ {t("bundle.heroSubtitle")}
851
228
  </react_native_1.Text>
852
- <react_native_1.Pressable accessible={true} accessibilityRole="link" accessibilityLabel={`Live Metro bundle URL: ${analysis.scriptURL}`} accessibilityHint="Opens Metro bundle script in browser" style={{
853
- backgroundColor: `${AppColors_1.AppColors.skyBlue}10`,
854
- borderColor: `${AppColors_1.AppColors.skyBlue}30`,
855
- borderWidth: 1,
856
- borderRadius: 8,
857
- padding: 8,
858
- marginTop: 2,
859
- }} onPress={() => react_native_1.Linking.openURL(analysis.scriptURL)}>
860
- <react_native_1.View style={{
861
- flexDirection: 'row',
862
- alignItems: 'center',
863
- justifyContent: 'space-between',
864
- marginBottom: 3,
865
- }}>
866
- <react_native_1.View style={{
867
- flexDirection: 'row',
868
- alignItems: 'center',
869
- gap: 4,
870
- }}>
871
- <NetworkIcons_1.ExternalLinkIcon color={AppColors_1.AppColors.skyBlue} size={11}/>
872
- <react_native_1.Text style={{
873
- fontFamily: AppFonts_1.AppFonts.interBold,
874
- fontSize: 9.5,
875
- color: AppColors_1.AppColors.skyBlue,
876
- letterSpacing: 0.3,
877
- textTransform: 'uppercase',
878
- }}>
229
+ <react_native_1.Pressable accessible={!0}accessibilityRole="link"accessibilityLabel={`Live Metro bundle URL: ${a.scriptURL}`}accessibilityHint="Opens Metro bundle script in browser"style={{backgroundColor:`${AppColors_1.AppColors.skyBlue}10`,borderColor:`${AppColors_1.AppColors.skyBlue}30`,borderWidth:1,borderRadius:8,padding:8,marginTop:2}}onPress={()=>react_native_1.Linking.openURL(a.scriptURL)}>
230
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginBottom:3}}>
231
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
232
+ <NetworkIcons_1.ExternalLinkIcon color={AppColors_1.AppColors.skyBlue}size={11}/>
233
+ <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.skyBlue,letterSpacing:.3,textTransform:"uppercase"}}>
879
234
  Live Metro URL
880
235
  </react_native_1.Text>
881
236
  </react_native_1.View>
882
- <react_native_1.Text style={{
883
- fontFamily: AppFonts_1.AppFonts.interRegular,
884
- fontSize: 9.5,
885
- color: AppColors_1.AppColors.grayTextWeak,
886
- }}>
887
- {analysis.scriptURL.length} chars
237
+ <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:9.5,color:AppColors_1.AppColors.grayTextWeak}}>
238
+ {a.scriptURL.length} chars
888
239
  </react_native_1.Text>
889
240
  </react_native_1.View>
890
- <react_native_1.Text selectable={true} numberOfLines={1} ellipsizeMode="tail" style={{
891
- fontFamily: AppFonts_1.AppFonts.interMedium,
892
- fontSize: 11,
893
- color: AppColors_1.AppColors.skyBlue,
894
- textDecorationLine: 'underline',
895
- lineHeight: 16,
896
- }}>
897
- {analysis.scriptURL}
241
+ <react_native_1.Text selectable={!0}numberOfLines={1}ellipsizeMode="tail"style={{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.skyBlue,textDecorationLine:"underline",lineHeight:16}}>
242
+ {a.scriptURL}
898
243
  </react_native_1.Text>
899
244
  </react_native_1.Pressable>
900
- </react_native_1.View>) : (<react_native_1.Text style={bundleStyles.heroSubtitle}>
901
- {t('bundle.heroSubtitle')}
902
- </react_native_1.Text>)}
245
+ </react_native_1.View>:<react_native_1.Text style={bundleStyles.heroSubtitle}>
246
+ {t("bundle.heroSubtitle")}
247
+ </react_native_1.Text>}
903
248
  </react_native_1.View>
904
- <CopyButton_1.default value={() => ({ ...summary, bundle: analysis })} label={t('bundle.bundleOverviewJson')}/>
249
+ <CopyButton_1.default value={()=>({...i,bundle:a})}label={t("bundle.bundleOverviewJson")}/>
905
250
  </react_native_1.View>
906
251
 
907
252
 
908
253
  <react_native_1.View style={bundleStyles.metricsGrid}>
909
254
  <react_native_1.View style={bundleStyles.metricBox}>
910
255
  <react_native_1.Text style={bundleStyles.metricLabel}>
911
- {t('bundle.devBundleSize')}
256
+ {t("bundle.devBundleSize")}
912
257
  </react_native_1.Text>
913
258
  <react_native_1.Text style={bundleStyles.metricValue}>
914
- {t('bundle.mbValue', {
915
- size: analysis ? analysis.totalDevMb : summary.totalMb,
916
- })}
259
+ {t("bundle.mbValue",{size:a?a.totalDevMb:i.totalMb})}
917
260
  </react_native_1.Text>
918
261
  <react_native_1.Text style={bundleStyles.metricHint}>
919
- {analysis
920
- ? t('bundle.devBundleHint', {
921
- kb: analysis.totalDevKb,
922
- modules: analysis.moduleCount,
923
- })
924
- : t('bundle.trackedFilesHint', { count: bundleFiles.length })}
262
+ {a?t("bundle.devBundleHint",{kb:a.totalDevKb,modules:a.moduleCount}):t("bundle.trackedFilesHint",{count:d.length})}
925
263
  </react_native_1.Text>
926
264
  </react_native_1.View>
927
265
 
928
266
  <react_native_1.View style={bundleStyles.metricBox}>
929
267
  <react_native_1.Text style={bundleStyles.metricLabel}>
930
- {t('bundle.imagesMedia')}
268
+ {t("bundle.imagesMedia")}
931
269
  </react_native_1.Text>
932
- <react_native_1.Text style={[
933
- bundleStyles.metricValue,
934
- { color: AppColors_1.AppColors.pink500 },
935
- ]}>
936
- {t('bundle.fileSizeKb', { size: summary.images.kb })}
270
+ <react_native_1.Text style={[bundleStyles.metricValue,{color:AppColors_1.AppColors.pink500}]}>
271
+ {t("bundle.fileSizeKb",{size:i.images.kb})}
937
272
  </react_native_1.Text>
938
273
  <react_native_1.Text style={bundleStyles.metricHint}>
939
- {t('bundle.pctOfTrackedAssets', { pct: summary.images.pct })}
274
+ {t("bundle.pctOfTrackedAssets",{pct:i.images.pct})}
940
275
  </react_native_1.Text>
941
276
  </react_native_1.View>
942
277
 
943
278
  <react_native_1.View style={bundleStyles.metricBox}>
944
279
  <react_native_1.Text style={bundleStyles.metricLabel}>
945
- {t('bundle.tsJsSource')}
280
+ {t("bundle.tsJsSource")}
946
281
  </react_native_1.Text>
947
- <react_native_1.Text style={[bundleStyles.metricValue, { color: AppColors_1.AppColors.sky500 }]}>
948
- {t('bundle.fileSizeKb', {
949
- size: summary.ts.kb + summary.js.kb,
950
- })}
282
+ <react_native_1.Text style={[bundleStyles.metricValue,{color:AppColors_1.AppColors.sky500}]}>
283
+ {t("bundle.fileSizeKb",{size:i.ts.kb+i.js.kb})}
951
284
  </react_native_1.Text>
952
285
  <react_native_1.Text style={bundleStyles.metricHint}>
953
- {t('bundle.pctOfTrackedAssets', {
954
- pct: (summary.ts.pct + summary.js.pct).toFixed(1),
955
- })}
286
+ {t("bundle.pctOfTrackedAssets",{pct:(i.ts.pct+i.js.pct).toFixed(1)})}
956
287
  </react_native_1.Text>
957
288
  </react_native_1.View>
958
289
 
959
290
  <react_native_1.View style={bundleStyles.metricBox}>
960
291
  <react_native_1.Text style={bundleStyles.metricLabel}>
961
- {t('bundle.jsEngine')}
292
+ {t("bundle.jsEngine")}
962
293
  </react_native_1.Text>
963
- <react_native_1.View style={{
964
- flexDirection: 'row',
965
- alignItems: 'center',
966
- gap: 5,
967
- marginTop: 2,
968
- }}>
969
- <react_native_1.View style={[
970
- bundleStyles.statusIndicator,
971
- {
972
- backgroundColor: isHermes
973
- ? AppColors_1.AppColors.greenColor
974
- : AppColors_1.AppColors.darkOrange,
975
- },
976
- ]}/>
294
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:5,marginTop:2}}>
295
+ <react_native_1.View style={[bundleStyles.statusIndicator,{backgroundColor:w?AppColors_1.AppColors.greenColor:AppColors_1.AppColors.darkOrange}]}/>
977
296
  <react_native_1.Text style={bundleStyles.metricValue}>
978
- {isHermes ? 'Hermes' : 'JSC'}
297
+ {w?"Hermes":"JSC"}
979
298
  </react_native_1.Text>
980
299
  </react_native_1.View>
981
300
  <react_native_1.Text style={bundleStyles.metricHint}>
982
- {isHermes ? t('bundle.bytecodeAot') : t('bundle.standard')}
301
+ {t(w?"bundle.bytecodeAot":"bundle.standard")}
983
302
  </react_native_1.Text>
984
303
  </react_native_1.View>
985
304
  </react_native_1.View>
986
305
  </react_native_1.View>
987
306
 
988
307
 
989
- {analysis && !analysis.isLive && (<react_native_1.View style={bundleStyles.liveWarningCard}>
990
- <react_native_1.View style={{
991
- flexDirection: 'row',
992
- alignItems: 'center',
993
- gap: 6,
994
- flex: 1,
995
- }}>
996
- <NetworkIcons_1.CircleAlertIcon color={AppColors_1.AppColors.amber700} size={16}/>
997
- <react_native_1.View style={{ flex: 1 }}>
308
+ {a&&!a.isLive&&<react_native_1.View style={bundleStyles.liveWarningCard}>
309
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6,flex:1}}>
310
+ <NetworkIcons_1.CircleAlertIcon color={AppColors_1.AppColors.amber700}size={16}/>
311
+ <react_native_1.View style={{flex:1}}>
998
312
  <react_native_1.Text style={bundleStyles.liveWarningTitle}>
999
- {t('bundle.liveAnalysisUnavailable')}
313
+ {t("bundle.liveAnalysisUnavailable")}
1000
314
  </react_native_1.Text>
1001
315
  <react_native_1.Text style={bundleStyles.liveWarningDesc}>
1002
- {t('bundle.liveAnalysisUnavailableSub')}
316
+ {t("bundle.liveAnalysisUnavailableSub")}
1003
317
  </react_native_1.Text>
1004
318
  </react_native_1.View>
1005
- <TouchableScale_1.default onPress={refreshAnalysis} style={{
1006
- backgroundColor: `${AppColors_1.AppColors.amber700}18`,
1007
- paddingHorizontal: 8,
1008
- paddingVertical: 5,
1009
- borderRadius: 6,
1010
- borderWidth: 1,
1011
- borderColor: `${AppColors_1.AppColors.amber700}30`,
1012
- flexDirection: 'row',
1013
- alignItems: 'center',
1014
- gap: 4,
1015
- }}>
1016
- {isAnalyzing ? (<react_native_1.ActivityIndicator size="small" color={AppColors_1.AppColors.amber700}/>) : (<>
1017
- <NetworkIcons_1.RefreshCcwIcon color={AppColors_1.AppColors.amber700} size={11}/>
1018
- <react_native_1.Text style={{
1019
- fontSize: 10.5,
1020
- fontFamily: AppFonts_1.AppFonts.interBold,
1021
- color: AppColors_1.AppColors.amber700,
1022
- }}>
319
+ <TouchableScale_1.default onPress={k}style={{backgroundColor:`${AppColors_1.AppColors.amber700}18`,paddingHorizontal:8,paddingVertical:5,borderRadius:6,borderWidth:1,borderColor:`${AppColors_1.AppColors.amber700}30`,flexDirection:"row",alignItems:"center",gap:4}}>
320
+ {b?<react_native_1.ActivityIndicator size="small"color={AppColors_1.AppColors.amber700}/>:<>
321
+ <NetworkIcons_1.RefreshCcwIcon color={AppColors_1.AppColors.amber700}size={11}/>
322
+ <react_native_1.Text style={{fontSize:10.5,fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.amber700}}>
1023
323
  Retry
1024
324
  </react_native_1.Text>
1025
- </>)}
325
+ </>}
1026
326
  </TouchableScale_1.default>
1027
327
  </react_native_1.View>
1028
- </react_native_1.View>)}
328
+ </react_native_1.View>}
1029
329
 
1030
330
 
1031
331
  <react_native_1.View style={bundleStyles.sectionCard}>
1032
332
  <react_native_1.View style={bundleStyles.sectionHeaderRow}>
1033
- <react_native_1.View style={{ flex: 1, paddingRight: 4 }}>
333
+ <react_native_1.View style={{flex:1,paddingRight:4}}>
1034
334
  <react_native_1.Text style={bundleStyles.sectionTitle}>
1035
- {t('bundle.treemapTitle')}
335
+ {t("bundle.treemapTitle")}
1036
336
  </react_native_1.Text>
1037
337
  <react_native_1.Text style={bundleStyles.sectionSub}>
1038
- {t('bundle.treemapSub', { mb: summary.totalMb })}
338
+ {t("bundle.treemapSub",{mb:i.totalMb})}
1039
339
  </react_native_1.Text>
1040
340
  </react_native_1.View>
1041
- <CopyButton_1.default value={() => ({
1042
- totalMb: summary.totalMb,
1043
- totalKb: summary.totalKb,
1044
- nodeModules: {
1045
- kb: summary.nodeModulesKb,
1046
- pct: summary.nodeModulesPct,
1047
- },
1048
- metroRuntime: { kb: summary.metroKb, pct: summary.metroPct },
1049
- appSource: {
1050
- kb: summary.appSourceKb,
1051
- pct: summary.appSourcePct,
1052
- },
1053
- assetsMedia: {
1054
- kb: summary.assetsMediaKb,
1055
- pct: summary.assetsMediaPct,
1056
- },
1057
- })} label={t('bundle.treemapJson')}/>
341
+ <CopyButton_1.default value={()=>({totalMb:i.totalMb,totalKb:i.totalKb,nodeModules:{kb:i.nodeModulesKb,pct:i.nodeModulesPct},metroRuntime:{kb:i.metroKb,pct:i.metroPct},appSource:{kb:i.appSourceKb,pct:i.appSourcePct},assetsMedia:{kb:i.assetsMediaKb,pct:i.assetsMediaPct}})}label={t("bundle.treemapJson")}/>
1058
342
  </react_native_1.View>
1059
343
 
1060
344
 
1061
345
  <react_native_1.View style={bundleStyles.treemapBar}>
1062
- <react_native_1.View style={{
1063
- flex: summary.nodeModulesPct,
1064
- backgroundColor: AppColors_1.AppColors.indigo500,
1065
- height: 16,
1066
- }}/>
1067
- <react_native_1.View style={{
1068
- flex: summary.metroPct,
1069
- backgroundColor: AppColors_1.AppColors.amber500,
1070
- height: 16,
1071
- }}/>
1072
- <react_native_1.View style={{
1073
- flex: summary.appSourcePct,
1074
- backgroundColor: AppColors_1.AppColors.sky500,
1075
- height: 16,
1076
- }}/>
1077
- <react_native_1.View style={{
1078
- flex: summary.assetsMediaPct,
1079
- backgroundColor: AppColors_1.AppColors.pink500,
1080
- height: 16,
1081
- }}/>
346
+ <react_native_1.View style={{flex:i.nodeModulesPct,backgroundColor:AppColors_1.AppColors.indigo500,height:16}}/>
347
+ <react_native_1.View style={{flex:i.metroPct,backgroundColor:AppColors_1.AppColors.amber500,height:16}}/>
348
+ <react_native_1.View style={{flex:i.appSourcePct,backgroundColor:AppColors_1.AppColors.sky500,height:16}}/>
349
+ <react_native_1.View style={{flex:i.assetsMediaPct,backgroundColor:AppColors_1.AppColors.pink500,height:16}}/>
1082
350
  </react_native_1.View>
1083
351
 
1084
352
 
1085
353
  <react_native_1.View style={bundleStyles.legendGrid}>
1086
354
  <react_native_1.View style={bundleStyles.legendItem}>
1087
- <BundleCategoryIcon type="javascript" size={13} color={AppColors_1.AppColors.indigo500}/>
355
+ <BundleCategoryIcon type="javascript"size={13}color={AppColors_1.AppColors.indigo500}/>
1088
356
  <react_native_1.Text style={bundleStyles.legendText}>
1089
- Node Modules{' '}
357
+ Node Modules{" "}
1090
358
  <react_native_1.Text style={bundleStyles.legendVal}>
1091
- {summary.nodeModulesKb >= 1024
1092
- ? `${(summary.nodeModulesKb / 1024).toFixed(1)} MB`
1093
- : `${summary.nodeModulesKb} KB`}{' '}
1094
- ({summary.nodeModulesPct}%)
359
+ {i.nodeModulesKb>=1024?`${(i.nodeModulesKb/1024).toFixed(1)} MB`:`${i.nodeModulesKb} KB`}{" "}
360
+ ({i.nodeModulesPct}%)
1095
361
  </react_native_1.Text>
1096
362
  </react_native_1.Text>
1097
363
  </react_native_1.View>
1098
364
  <react_native_1.View style={bundleStyles.legendItem}>
1099
- <BundleCategoryIcon type="overhead" size={13} color={AppColors_1.AppColors.amber500}/>
365
+ <BundleCategoryIcon type="overhead"size={13}color={AppColors_1.AppColors.amber500}/>
1100
366
  <react_native_1.Text style={bundleStyles.legendText}>
1101
- Metro Runtime{' '}
367
+ Metro Runtime{" "}
1102
368
  <react_native_1.Text style={bundleStyles.legendVal}>
1103
- {summary.metroKb >= 1024
1104
- ? `${(summary.metroKb / 1024).toFixed(1)} MB`
1105
- : `${summary.metroKb} KB`}{' '}
1106
- ({summary.metroPct}%)
369
+ {i.metroKb>=1024?`${(i.metroKb/1024).toFixed(1)} MB`:`${i.metroKb} KB`}{" "}
370
+ ({i.metroPct}%)
1107
371
  </react_native_1.Text>
1108
372
  </react_native_1.Text>
1109
373
  </react_native_1.View>
1110
374
  <react_native_1.View style={bundleStyles.legendItem}>
1111
- <BundleCategoryIcon type="typescript" size={13} color={AppColors_1.AppColors.sky500}/>
375
+ <BundleCategoryIcon type="typescript"size={13}color={AppColors_1.AppColors.sky500}/>
1112
376
  <react_native_1.Text style={bundleStyles.legendText}>
1113
- App Source{' '}
377
+ App Source{" "}
1114
378
  <react_native_1.Text style={bundleStyles.legendVal}>
1115
- {summary.appSourceKb >= 1024
1116
- ? `${(summary.appSourceKb / 1024).toFixed(1)} MB`
1117
- : `${summary.appSourceKb} KB`}{' '}
1118
- ({summary.appSourcePct}%)
379
+ {i.appSourceKb>=1024?`${(i.appSourceKb/1024).toFixed(1)} MB`:`${i.appSourceKb} KB`}{" "}
380
+ ({i.appSourcePct}%)
1119
381
  </react_native_1.Text>
1120
382
  </react_native_1.Text>
1121
383
  </react_native_1.View>
1122
384
  <react_native_1.View style={bundleStyles.legendItem}>
1123
- <BundleCategoryIcon type="image" size={13} color={AppColors_1.AppColors.pink500}/>
385
+ <BundleCategoryIcon type="image"size={13}color={AppColors_1.AppColors.pink500}/>
1124
386
  <react_native_1.Text style={bundleStyles.legendText}>
1125
- Assets & Media{' '}
387
+ Assets & Media{" "}
1126
388
  <react_native_1.Text style={bundleStyles.legendVal}>
1127
- {summary.assetsMediaKb >= 1024
1128
- ? `${(summary.assetsMediaKb / 1024).toFixed(1)} MB`
1129
- : `${summary.assetsMediaKb} KB`}{' '}
1130
- ({summary.assetsMediaPct}%)
389
+ {i.assetsMediaKb>=1024?`${(i.assetsMediaKb/1024).toFixed(1)} MB`:`${i.assetsMediaKb} KB`}{" "}
390
+ ({i.assetsMediaPct}%)
1131
391
  </react_native_1.Text>
1132
392
  </react_native_1.Text>
1133
393
  </react_native_1.View>
@@ -1138,97 +398,68 @@ const BundleTab = react_1.default.memo(() => {
1138
398
  <react_native_1.View style={bundleStyles.sectionCard}>
1139
399
  <react_native_1.View style={bundleStyles.sectionHeaderRow}>
1140
400
  <react_native_1.Text style={bundleStyles.sectionTitle}>
1141
- {t('bundle.categoryBreakdown')}
401
+ {t("bundle.categoryBreakdown")}
1142
402
  </react_native_1.Text>
1143
- <CopyButton_1.default value={() => summary} label={t('bundle.categoriesJson')}/>
403
+ <CopyButton_1.default value={()=>i}label={t("bundle.categoriesJson")}/>
1144
404
  </react_native_1.View>
1145
405
 
1146
- {summary.categories.map((cat, cIdx) => (<react_native_1.Pressable key={cIdx} accessible={true} accessibilityRole="button" accessibilityLabel={`${cat.title}, ${cat.sizeKb >= 1024 ? `${cat.sizeMb} MB` : `${cat.sizeKb} KB`}, ${cat.pct}% of bundle`} accessibilityHint={`Double tap to view ${cat.title} details`} style={({ pressed }) => [
1147
- bundleStyles.catRowCard,
1148
- pressed && { opacity: 0.85, transform: [{ scale: 0.99 }] },
1149
- ]} onPress={() => setActiveSubTab(cat.targetTab)}>
406
+ {i.categories.map((e,l)=><react_native_1.Pressable key={l}accessible={!0}accessibilityRole="button"accessibilityLabel={`${e.title}, ${e.sizeKb>=1024?`${e.sizeMb} MB`:`${e.sizeKb} KB`}, ${e.pct}% of bundle`}accessibilityHint={`Double tap to view ${e.title} details`}style={({pressed:p})=>[bundleStyles.catRowCard,p&&{opacity:.85,transform:[{scale:.99}]}]}onPress={()=>n(e.targetTab)}>
1150
407
  <react_native_1.View style={bundleStyles.catRowTop}>
1151
- <react_native_1.View style={[
1152
- bundleStyles.catIconBox,
1153
- {
1154
- backgroundColor: `${cat.color}15`,
1155
- borderColor: `${cat.color}30`,
1156
- },
1157
- ]}>
1158
- <BundleCategoryIcon type={cat.iconType} size={18} color={cat.color}/>
408
+ <react_native_1.View style={[bundleStyles.catIconBox,{backgroundColor:`${e.color}15`,borderColor:`${e.color}30`}]}>
409
+ <BundleCategoryIcon type={e.iconType}size={18}color={e.color}/>
1159
410
  </react_native_1.View>
1160
411
 
1161
412
  <react_native_1.View style={bundleStyles.catRowTitleWrap}>
1162
- <react_native_1.View style={{
1163
- flexDirection: 'row',
1164
- alignItems: 'center',
1165
- justifyContent: 'space-between',
1166
- gap: 6,
1167
- }}>
1168
- <react_native_1.Text style={bundleStyles.catRowTitle} numberOfLines={1}>
1169
- {cat.title}
413
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:6}}>
414
+ <react_native_1.Text style={bundleStyles.catRowTitle}numberOfLines={1}>
415
+ {e.title}
1170
416
  </react_native_1.Text>
1171
- <react_native_1.View style={{
1172
- flexDirection: 'row',
1173
- alignItems: 'center',
1174
- gap: 6,
1175
- }}>
417
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
1176
418
  <react_native_1.Text style={bundleStyles.catRowSize}>
1177
- {cat.sizeKb >= 1024
1178
- ? `${cat.sizeMb} MB`
1179
- : `${cat.sizeKb} KB`}
419
+ {e.sizeKb>=1024?`${e.sizeMb} MB`:`${e.sizeKb} KB`}
1180
420
  </react_native_1.Text>
1181
- <react_native_1.View style={[
1182
- bundleStyles.catPctPill,
1183
- { backgroundColor: `${cat.color}18` },
1184
- ]}>
1185
- <react_native_1.Text style={[
1186
- bundleStyles.catPctText,
1187
- { color: cat.color },
1188
- ]}>
1189
- {cat.pct}%
421
+ <react_native_1.View style={[bundleStyles.catPctPill,{backgroundColor:`${e.color}18`}]}>
422
+ <react_native_1.Text style={[bundleStyles.catPctText,{color:e.color}]}>
423
+ {e.pct}%
1190
424
  </react_native_1.Text>
1191
425
  </react_native_1.View>
1192
426
  </react_native_1.View>
1193
427
  </react_native_1.View>
1194
428
 
1195
- <react_native_1.Text style={bundleStyles.catRowDesc} numberOfLines={2}>
1196
- {cat.count} items • {cat.desc}
429
+ <react_native_1.Text style={bundleStyles.catRowDesc}numberOfLines={2}>
430
+ {e.count} items • {e.desc}
1197
431
  </react_native_1.Text>
1198
432
  </react_native_1.View>
1199
433
  </react_native_1.View>
1200
434
 
1201
435
 
1202
436
  <react_native_1.View style={bundleStyles.catProgressTrack}>
1203
- <react_native_1.View style={[
1204
- bundleStyles.catProgressBar,
1205
- { width: `${cat.pct}%`, backgroundColor: cat.color },
1206
- ]}/>
437
+ <react_native_1.View style={[bundleStyles.catProgressBar,{width:`${e.pct}%`,backgroundColor:e.color}]}/>
1207
438
  </react_native_1.View>
1208
- </react_native_1.Pressable>))}
439
+ </react_native_1.Pressable>)}
1209
440
 
1210
441
 
1211
442
  <react_native_1.View style={bundleStyles.totalSummaryCard}>
1212
443
  <react_native_1.View style={bundleStyles.totalSummaryRow}>
1213
444
  <react_native_1.View style={bundleStyles.totalSummaryLabelWrap}>
1214
445
  <react_native_1.View style={bundleStyles.totalIconBadge}>
1215
- <NetworkIcons_1.PackageIcon color={AppColors_1.AppColors.brandPurple} size={16}/>
446
+ <NetworkIcons_1.PackageIcon color={AppColors_1.AppColors.brandPurple}size={16}/>
1216
447
  </react_native_1.View>
1217
448
  <react_native_1.View>
1218
449
  <react_native_1.Text style={bundleStyles.totalSummaryLabel}>
1219
450
  TOTAL BUNDLE ASSETS
1220
451
  </react_native_1.Text>
1221
452
  <react_native_1.Text style={bundleStyles.totalSummarySub}>
1222
- {summary.totalCount} Tracked Modules & Media Assets
453
+ {i.totalCount} Tracked Modules & Media Assets
1223
454
  </react_native_1.Text>
1224
455
  </react_native_1.View>
1225
456
  </react_native_1.View>
1226
- <react_native_1.View style={{ alignItems: 'flex-end' }}>
457
+ <react_native_1.View style={{alignItems:"flex-end"}}>
1227
458
  <react_native_1.Text style={bundleStyles.totalSummaryValue}>
1228
- {summary.totalMb} MB
459
+ {i.totalMb} MB
1229
460
  </react_native_1.Text>
1230
461
  <react_native_1.Text style={bundleStyles.totalSummaryKb}>
1231
- {summary.totalKb.toLocaleString()} KB
462
+ {i.totalKb.toLocaleString()} KB
1232
463
  </react_native_1.Text>
1233
464
  </react_native_1.View>
1234
465
  </react_native_1.View>
@@ -1236,42 +467,30 @@ const BundleTab = react_1.default.memo(() => {
1236
467
 
1237
468
  <react_native_1.View style={bundleStyles.totalFormulaGrid}>
1238
469
  <react_native_1.View style={bundleStyles.totalChip}>
1239
- <react_native_1.View style={[
1240
- bundleStyles.totalDot,
1241
- { backgroundColor: AppColors_1.AppColors.indigo500 },
1242
- ]}/>
470
+ <react_native_1.View style={[bundleStyles.totalDot,{backgroundColor:AppColors_1.AppColors.indigo500}]}/>
1243
471
  <react_native_1.Text style={bundleStyles.totalChipText}>
1244
- NPM: {(summary.nodeModulesKb / 1024).toFixed(1)}M (
1245
- {summary.nodeModulesPct}%)
472
+ NPM: {(i.nodeModulesKb/1024).toFixed(1)}M (
473
+ {i.nodeModulesPct}%)
1246
474
  </react_native_1.Text>
1247
475
  </react_native_1.View>
1248
476
  <react_native_1.View style={bundleStyles.totalChip}>
1249
- <react_native_1.View style={[
1250
- bundleStyles.totalDot,
1251
- { backgroundColor: AppColors_1.AppColors.amber500 },
1252
- ]}/>
477
+ <react_native_1.View style={[bundleStyles.totalDot,{backgroundColor:AppColors_1.AppColors.amber500}]}/>
1253
478
  <react_native_1.Text style={bundleStyles.totalChipText}>
1254
- Metro: {(summary.metroKb / 1024).toFixed(1)}M (
1255
- {summary.metroPct}%)
479
+ Metro: {(i.metroKb/1024).toFixed(1)}M (
480
+ {i.metroPct}%)
1256
481
  </react_native_1.Text>
1257
482
  </react_native_1.View>
1258
483
  <react_native_1.View style={bundleStyles.totalChip}>
1259
- <react_native_1.View style={[
1260
- bundleStyles.totalDot,
1261
- { backgroundColor: AppColors_1.AppColors.sky500 },
1262
- ]}/>
484
+ <react_native_1.View style={[bundleStyles.totalDot,{backgroundColor:AppColors_1.AppColors.sky500}]}/>
1263
485
  <react_native_1.Text style={bundleStyles.totalChipText}>
1264
- Source: {(summary.appSourceKb / 1024).toFixed(1)}M (
1265
- {summary.appSourcePct}%)
486
+ Source: {(i.appSourceKb/1024).toFixed(1)}M (
487
+ {i.appSourcePct}%)
1266
488
  </react_native_1.Text>
1267
489
  </react_native_1.View>
1268
490
  <react_native_1.View style={bundleStyles.totalChip}>
1269
- <react_native_1.View style={[
1270
- bundleStyles.totalDot,
1271
- { backgroundColor: AppColors_1.AppColors.pink500 },
1272
- ]}/>
491
+ <react_native_1.View style={[bundleStyles.totalDot,{backgroundColor:AppColors_1.AppColors.pink500}]}/>
1273
492
  <react_native_1.Text style={bundleStyles.totalChipText}>
1274
- Media: {summary.assetsMediaKb}K ({summary.assetsMediaPct}%)
493
+ Media: {i.assetsMediaKb}K ({i.assetsMediaPct}%)
1275
494
  </react_native_1.Text>
1276
495
  </react_native_1.View>
1277
496
  </react_native_1.View>
@@ -1281,7 +500,7 @@ const BundleTab = react_1.default.memo(() => {
1281
500
 
1282
501
  <react_native_1.View style={bundleStyles.sectionCard}>
1283
502
  <react_native_1.View style={bundleStyles.sectionHeaderRow}>
1284
- <react_native_1.View style={{ flex: 1, paddingRight: 4 }}>
503
+ <react_native_1.View style={{flex:1,paddingRight:4}}>
1285
504
  <react_native_1.Text style={bundleStyles.sectionTitle}>
1286
505
  Bundle Subsystem Breakdown
1287
506
  </react_native_1.Text>
@@ -1290,69 +509,50 @@ const BundleTab = react_1.default.memo(() => {
1290
509
  runtime & assets
1291
510
  </react_native_1.Text>
1292
511
  </react_native_1.View>
1293
- <CopyButton_1.default value={() => ({
1294
- directPackages: bundlePackages.filter(p => p.type === 'direct').length,
1295
- transitivePackages: bundlePackages.filter(p => p.type !== 'direct').length,
1296
- hermesEngine: isHermes ? 'Hermes (Bytecode)' : 'JSC (Source)',
1297
- jsDevKb: summary.totalKb,
1298
- jsHermesReleaseKb: Math.round(summary.totalKb * 0.38),
1299
- appSourceFiles: bundleFiles.filter(f => f.category === 'typescript' ||
1300
- f.category === 'javascript').length,
1301
- mediaAssets: bundleFiles.filter(f => f.category === 'image' ||
1302
- f.category === 'font' ||
1303
- f.category === 'json').length,
1304
- })} label="Subsystem Split JSON"/>
512
+ <CopyButton_1.default value={()=>({directPackages:x.filter(e=>e.type==="direct").length,transitivePackages:x.filter(e=>e.type!=="direct").length,hermesEngine:w?"Hermes (Bytecode)":"JSC (Source)",jsDevKb:i.totalKb,jsHermesReleaseKb:Math.round(i.totalKb*.38),appSourceFiles:d.filter(e=>e.category==="typescript"||e.category==="javascript").length,mediaAssets:d.filter(e=>e.category==="image"||e.category==="font"||e.category==="json").length})}label="Subsystem Split JSON"/>
1305
513
  </react_native_1.View>
1306
514
 
1307
515
 
1308
516
  <react_native_1.View style={bundleStyles.subsystemCard}>
1309
517
  <react_native_1.View style={bundleStyles.subsystemHeader}>
1310
- <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
1311
- <BundleCategoryIcon type="deps" size={16} color={AppColors_1.AppColors.indigo500}/>
518
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
519
+ <BundleCategoryIcon type="deps"size={16}color={AppColors_1.AppColors.indigo500}/>
1312
520
  <react_native_1.Text style={bundleStyles.subsystemTitle}>
1313
521
  NPM & Third-Party Dependencies
1314
522
  </react_native_1.Text>
1315
523
  </react_native_1.View>
1316
- <react_native_1.View style={[
1317
- bundleStyles.subsystemBadge,
1318
- { backgroundColor: `${AppColors_1.AppColors.indigo500}18` },
1319
- ]}>
1320
- <react_native_1.Text style={[
1321
- bundleStyles.subsystemBadgeText,
1322
- { color: AppColors_1.AppColors.indigo500 },
1323
- ]}>
1324
- {(summary.nodeModulesKb / 1024).toFixed(1)} MB •{' '}
1325
- {summary.nodeModulesPct}%
524
+ <react_native_1.View style={[bundleStyles.subsystemBadge,{backgroundColor:`${AppColors_1.AppColors.indigo500}18`}]}>
525
+ <react_native_1.Text style={[bundleStyles.subsystemBadgeText,{color:AppColors_1.AppColors.indigo500}]}>
526
+ {(i.nodeModulesKb/1024).toFixed(1)} MB •{" "}
527
+ {i.nodeModulesPct}%
1326
528
  </react_native_1.Text>
1327
529
  </react_native_1.View>
1328
530
  </react_native_1.View>
1329
531
  <react_native_1.View style={bundleStyles.subsystemGrid}>
1330
532
  <react_native_1.View style={bundleStyles.subsystemItem}>
1331
533
  <react_native_1.Text style={bundleStyles.subsystemItemText}>
1332
- Direct:{' '}
534
+ Direct:{" "}
1333
535
  <react_native_1.Text style={bundleStyles.subsystemItemVal}>
1334
- {bundlePackages.filter(p => p.type === 'direct').length ||
1335
- 12}{' '}
536
+ {x.filter(e=>e.type==="direct").length||12}{" "}
1336
537
  pkgs
1337
538
  </react_native_1.Text>
1338
539
  </react_native_1.Text>
1339
540
  </react_native_1.View>
1340
541
  <react_native_1.View style={bundleStyles.subsystemItem}>
1341
542
  <react_native_1.Text style={bundleStyles.subsystemItemText}>
1342
- Transitive:{' '}
543
+ Transitive:{" "}
1343
544
  <react_native_1.Text style={bundleStyles.subsystemItemVal}>
1344
- {bundlePackages.filter(p => p.type !== 'direct').length ||
1345
- 41}{' '}
545
+ {x.filter(e=>e.type!=="direct").length||41}{" "}
1346
546
  pkgs
1347
547
  </react_native_1.Text>
1348
548
  </react_native_1.Text>
1349
549
  </react_native_1.View>
1350
550
  <react_native_1.View style={bundleStyles.subsystemItem}>
1351
551
  <react_native_1.Text style={bundleStyles.subsystemItemText}>
1352
- Top Package:{' '}
552
+ Top Package:{" "}
1353
553
  <react_native_1.Text style={bundleStyles.subsystemItemVal}>
1354
- {bundlePackages[0]?.name || 'react-native'} (
1355
- {bundlePackages[0]?.sizeKb || 1240} KB)
554
+ {x[0]?.name||"react-native"} (
555
+ {x[0]?.sizeKb||1240} KB)
1356
556
  </react_native_1.Text>
1357
557
  </react_native_1.Text>
1358
558
  </react_native_1.View>
@@ -1362,51 +562,43 @@ const BundleTab = react_1.default.memo(() => {
1362
562
 
1363
563
  <react_native_1.View style={bundleStyles.subsystemCard}>
1364
564
  <react_native_1.View style={bundleStyles.subsystemHeader}>
1365
- <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
1366
- <BundleCategoryIcon type="source" size={16} color={AppColors_1.AppColors.sky500}/>
565
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
566
+ <BundleCategoryIcon type="source"size={16}color={AppColors_1.AppColors.sky500}/>
1367
567
  <react_native_1.Text style={bundleStyles.subsystemTitle}>
1368
568
  Application Source Code
1369
569
  </react_native_1.Text>
1370
570
  </react_native_1.View>
1371
- <react_native_1.View style={[
1372
- bundleStyles.subsystemBadge,
1373
- { backgroundColor: `${AppColors_1.AppColors.sky500}18` },
1374
- ]}>
1375
- <react_native_1.Text style={[
1376
- bundleStyles.subsystemBadgeText,
1377
- { color: AppColors_1.AppColors.sky500 },
1378
- ]}>
1379
- {(summary.appSourceKb / 1024).toFixed(1)} MB •{' '}
1380
- {summary.appSourcePct}%
571
+ <react_native_1.View style={[bundleStyles.subsystemBadge,{backgroundColor:`${AppColors_1.AppColors.sky500}18`}]}>
572
+ <react_native_1.Text style={[bundleStyles.subsystemBadgeText,{color:AppColors_1.AppColors.sky500}]}>
573
+ {(i.appSourceKb/1024).toFixed(1)} MB •{" "}
574
+ {i.appSourcePct}%
1381
575
  </react_native_1.Text>
1382
576
  </react_native_1.View>
1383
577
  </react_native_1.View>
1384
578
  <react_native_1.View style={bundleStyles.subsystemGrid}>
1385
579
  <react_native_1.View style={bundleStyles.subsystemItem}>
1386
580
  <react_native_1.Text style={bundleStyles.subsystemItemText}>
1387
- TypeScript/TSX:{' '}
581
+ TypeScript/TSX:{" "}
1388
582
  <react_native_1.Text style={bundleStyles.subsystemItemVal}>
1389
- {bundleFiles.filter(f => f.category === 'typescript')
1390
- .length || 14}{' '}
583
+ {d.filter(e=>e.category==="typescript").length||14}{" "}
1391
584
  files
1392
585
  </react_native_1.Text>
1393
586
  </react_native_1.Text>
1394
587
  </react_native_1.View>
1395
588
  <react_native_1.View style={bundleStyles.subsystemItem}>
1396
589
  <react_native_1.Text style={bundleStyles.subsystemItemText}>
1397
- JavaScript/JSX:{' '}
590
+ JavaScript/JSX:{" "}
1398
591
  <react_native_1.Text style={bundleStyles.subsystemItemVal}>
1399
- {bundleFiles.filter(f => f.category === 'javascript')
1400
- .length || 3}{' '}
592
+ {d.filter(e=>e.category==="javascript").length||3}{" "}
1401
593
  files
1402
594
  </react_native_1.Text>
1403
595
  </react_native_1.Text>
1404
596
  </react_native_1.View>
1405
597
  <react_native_1.View style={bundleStyles.subsystemItem}>
1406
598
  <react_native_1.Text style={bundleStyles.subsystemItemText}>
1407
- Tracked Modules:{' '}
599
+ Tracked Modules:{" "}
1408
600
  <react_native_1.Text style={bundleStyles.subsystemItemVal}>
1409
- {bundleFiles.length || 18} files
601
+ {d.length||18} files
1410
602
  </react_native_1.Text>
1411
603
  </react_native_1.Text>
1412
604
  </react_native_1.View>
@@ -1416,20 +608,14 @@ const BundleTab = react_1.default.memo(() => {
1416
608
 
1417
609
  <react_native_1.View style={bundleStyles.subsystemCard}>
1418
610
  <react_native_1.View style={bundleStyles.subsystemHeader}>
1419
- <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
1420
- <BundleCategoryIcon type="bolt" size={16} color={AppColors_1.AppColors.emerald600}/>
611
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
612
+ <BundleCategoryIcon type="bolt"size={16}color={AppColors_1.AppColors.emerald600}/>
1421
613
  <react_native_1.Text style={bundleStyles.subsystemTitle}>
1422
614
  Hermes Bytecode Engine
1423
615
  </react_native_1.Text>
1424
616
  </react_native_1.View>
1425
- <react_native_1.View style={[
1426
- bundleStyles.subsystemBadge,
1427
- { backgroundColor: `${AppColors_1.AppColors.emerald500}18` },
1428
- ]}>
1429
- <react_native_1.Text style={[
1430
- bundleStyles.subsystemBadgeText,
1431
- { color: AppColors_1.AppColors.emerald700 },
1432
- ]}>
617
+ <react_native_1.View style={[bundleStyles.subsystemBadge,{backgroundColor:`${AppColors_1.AppColors.emerald500}18`}]}>
618
+ <react_native_1.Text style={[bundleStyles.subsystemBadgeText,{color:AppColors_1.AppColors.emerald700}]}>
1433
619
  ~62% AOT Compression
1434
620
  </react_native_1.Text>
1435
621
  </react_native_1.View>
@@ -1437,25 +623,25 @@ const BundleTab = react_1.default.memo(() => {
1437
623
  <react_native_1.View style={bundleStyles.subsystemGrid}>
1438
624
  <react_native_1.View style={bundleStyles.subsystemItem}>
1439
625
  <react_native_1.Text style={bundleStyles.subsystemItemText}>
1440
- Dev JS Size:{' '}
626
+ Dev JS Size:{" "}
1441
627
  <react_native_1.Text style={bundleStyles.subsystemItemVal}>
1442
- {summary.totalMb} MB
628
+ {i.totalMb} MB
1443
629
  </react_native_1.Text>
1444
630
  </react_native_1.Text>
1445
631
  </react_native_1.View>
1446
632
  <react_native_1.View style={bundleStyles.subsystemItem}>
1447
633
  <react_native_1.Text style={bundleStyles.subsystemItemText}>
1448
- Hermes Bytecode:{' '}
634
+ Hermes Bytecode:{" "}
1449
635
  <react_native_1.Text style={bundleStyles.subsystemItemVal}>
1450
- {((summary.totalKb * 0.38) / 1024).toFixed(2)} MB
636
+ {(i.totalKb*.38/1024).toFixed(2)} MB
1451
637
  </react_native_1.Text>
1452
638
  </react_native_1.Text>
1453
639
  </react_native_1.View>
1454
640
  <react_native_1.View style={bundleStyles.subsystemItem}>
1455
641
  <react_native_1.Text style={bundleStyles.subsystemItemText}>
1456
- Execution:{' '}
642
+ Execution:{" "}
1457
643
  <react_native_1.Text style={bundleStyles.subsystemItemVal}>
1458
- {isHermes ? 'Hermes JSI Direct' : 'JSC Standard'}
644
+ {w?"Hermes JSI Direct":"JSC Standard"}
1459
645
  </react_native_1.Text>
1460
646
  </react_native_1.Text>
1461
647
  </react_native_1.View>
@@ -1465,51 +651,42 @@ const BundleTab = react_1.default.memo(() => {
1465
651
 
1466
652
  <react_native_1.View style={bundleStyles.subsystemCard}>
1467
653
  <react_native_1.View style={bundleStyles.subsystemHeader}>
1468
- <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
1469
- <BundleCategoryIcon type="media" size={16} color={AppColors_1.AppColors.pink500}/>
654
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
655
+ <BundleCategoryIcon type="media"size={16}color={AppColors_1.AppColors.pink500}/>
1470
656
  <react_native_1.Text style={bundleStyles.subsystemTitle}>
1471
657
  Images, Fonts & Static Assets
1472
658
  </react_native_1.Text>
1473
659
  </react_native_1.View>
1474
- <react_native_1.View style={[
1475
- bundleStyles.subsystemBadge,
1476
- { backgroundColor: `${AppColors_1.AppColors.pink500}18` },
1477
- ]}>
1478
- <react_native_1.Text style={[
1479
- bundleStyles.subsystemBadgeText,
1480
- { color: AppColors_1.AppColors.pink500 },
1481
- ]}>
1482
- {summary.assetsMediaKb} KB • {summary.assetsMediaPct}%
660
+ <react_native_1.View style={[bundleStyles.subsystemBadge,{backgroundColor:`${AppColors_1.AppColors.pink500}18`}]}>
661
+ <react_native_1.Text style={[bundleStyles.subsystemBadgeText,{color:AppColors_1.AppColors.pink500}]}>
662
+ {i.assetsMediaKb} KB • {i.assetsMediaPct}%
1483
663
  </react_native_1.Text>
1484
664
  </react_native_1.View>
1485
665
  </react_native_1.View>
1486
666
  <react_native_1.View style={bundleStyles.subsystemGrid}>
1487
667
  <react_native_1.View style={bundleStyles.subsystemItem}>
1488
668
  <react_native_1.Text style={bundleStyles.subsystemItemText}>
1489
- Images & Icons:{' '}
669
+ Images & Icons:{" "}
1490
670
  <react_native_1.Text style={bundleStyles.subsystemItemVal}>
1491
- {bundleFiles.filter(f => f.category === 'image').length ||
1492
- 2}{' '}
671
+ {d.filter(e=>e.category==="image").length||2}{" "}
1493
672
  assets
1494
673
  </react_native_1.Text>
1495
674
  </react_native_1.Text>
1496
675
  </react_native_1.View>
1497
676
  <react_native_1.View style={bundleStyles.subsystemItem}>
1498
677
  <react_native_1.Text style={bundleStyles.subsystemItemText}>
1499
- JSON Data:{' '}
678
+ JSON Data:{" "}
1500
679
  <react_native_1.Text style={bundleStyles.subsystemItemVal}>
1501
- {bundleFiles.filter(f => f.category === 'json').length ||
1502
- 1}{' '}
680
+ {d.filter(e=>e.category==="json").length||1}{" "}
1503
681
  files
1504
682
  </react_native_1.Text>
1505
683
  </react_native_1.Text>
1506
684
  </react_native_1.View>
1507
685
  <react_native_1.View style={bundleStyles.subsystemItem}>
1508
686
  <react_native_1.Text style={bundleStyles.subsystemItemText}>
1509
- Custom Fonts:{' '}
687
+ Custom Fonts:{" "}
1510
688
  <react_native_1.Text style={bundleStyles.subsystemItemVal}>
1511
- {bundleFiles.filter(f => f.category === 'font').length ||
1512
- 0}{' '}
689
+ {d.filter(e=>e.category==="font").length||0}{" "}
1513
690
  fonts
1514
691
  </react_native_1.Text>
1515
692
  </react_native_1.Text>
@@ -1517,91 +694,49 @@ const BundleTab = react_1.default.memo(() => {
1517
694
  </react_native_1.View>
1518
695
  </react_native_1.View>
1519
696
  </react_native_1.View>
1520
- </react_native_1.ScrollView>)}
697
+ </react_native_1.ScrollView>}
1521
698
 
1522
699
 
1523
700
 
1524
701
 
1525
- {activeSubTab === 'production' && (<react_native_1.ScrollView style={{ flex: 1 }} contentContainerStyle={bundleStyles.contentContainer} keyboardShouldPersistTaps="handled">
702
+ {r==="production"&&<react_native_1.ScrollView style={{flex:1}}contentContainerStyle={bundleStyles.contentContainer}keyboardShouldPersistTaps="handled">
1526
703
 
1527
- <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={bundleStyles.prodPlatformScroll}>
1528
- {[
1529
- {
1530
- key: 'ios',
1531
- label: 'iOS App (.ipa)',
1532
- badge: `${analysis?.production.ios.totalDownloadMb || 111.9} MB`,
1533
- },
1534
- {
1535
- key: 'androidAab',
1536
- label: 'Android AAB (.aab)',
1537
- badge: `${analysis?.production.androidAab.totalDownloadMb || 38.5} MB`,
1538
- },
1539
- {
1540
- key: 'androidApk',
1541
- label: 'Universal APK (.apk)',
1542
- badge: `${analysis?.production.androidApk.totalInstallMb || 364.0} MB`,
1543
- },
1544
- ].map(tab => {
1545
- const isSelected = prodPlatform === tab.key;
1546
- return (<TouchableScale_1.default key={tab.key} accessible={true} accessibilityRole="tab" accessibilityLabel={`${tab.label}, ${tab.badge}`} accessibilityState={{ selected: isSelected }} accessibilityHint={`Switches production estimate to ${tab.label}`} onPress={() => setProdPlatform(tab.key)} style={[
1547
- bundleStyles.prodPlatformBtn,
1548
- isSelected && bundleStyles.prodPlatformBtnActive,
1549
- ]}>
1550
- <react_native_1.Text style={[
1551
- bundleStyles.prodPlatformBtnText,
1552
- isSelected && bundleStyles.prodPlatformBtnTextActive,
1553
- ]}>
1554
- {tab.label}
704
+ <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={bundleStyles.prodPlatformScroll}>
705
+ {[{key:"ios",label:"iOS App (.ipa)",badge:`${a?.production.ios.totalDownloadMb||111.9} MB`},{key:"androidAab",label:"Android AAB (.aab)",badge:`${a?.production.androidAab.totalDownloadMb||38.5} MB`},{key:"androidApk",label:"Universal APK (.apk)",badge:`${a?.production.androidApk.totalInstallMb||364} MB`}].map(e=>{const l=o===e.key;return<TouchableScale_1.default key={e.key}accessible={!0}accessibilityRole="tab"accessibilityLabel={`${e.label}, ${e.badge}`}accessibilityState={{selected:l}}accessibilityHint={`Switches production estimate to ${e.label}`}onPress={()=>c(e.key)}style={[bundleStyles.prodPlatformBtn,l&&bundleStyles.prodPlatformBtnActive]}>
706
+ <react_native_1.Text style={[bundleStyles.prodPlatformBtnText,l&&bundleStyles.prodPlatformBtnTextActive]}>
707
+ {e.label}
1555
708
  </react_native_1.Text>
1556
- <react_native_1.View style={[
1557
- bundleStyles.prodPlatformBadge,
1558
- isSelected && bundleStyles.prodPlatformBadgeActive,
1559
- ]}>
1560
- <react_native_1.Text style={[
1561
- bundleStyles.prodPlatformBadgeText,
1562
- isSelected && bundleStyles.prodPlatformBadgeTextActive,
1563
- ]}>
1564
- {tab.badge}
709
+ <react_native_1.View style={[bundleStyles.prodPlatformBadge,l&&bundleStyles.prodPlatformBadgeActive]}>
710
+ <react_native_1.Text style={[bundleStyles.prodPlatformBadgeText,l&&bundleStyles.prodPlatformBadgeTextActive]}>
711
+ {e.badge}
1565
712
  </react_native_1.Text>
1566
713
  </react_native_1.View>
1567
- </TouchableScale_1.default>);
1568
- })}
714
+ </TouchableScale_1.default>})}
1569
715
  </react_native_1.ScrollView>
1570
716
 
1571
717
 
1572
- {analysis && (<react_native_1.View style={bundleStyles.heroCard}>
718
+ {a&&<react_native_1.View style={bundleStyles.heroCard}>
1573
719
  <react_native_1.View style={bundleStyles.heroTopRow}>
1574
720
  <react_native_1.View style={bundleStyles.heroIconWrap}>
1575
- <NetworkIcons_1.PackageIcon color={AppColors_1.AppColors.brandPurple} size={24}/>
721
+ <NetworkIcons_1.PackageIcon color={AppColors_1.AppColors.brandPurple}size={24}/>
1576
722
  </react_native_1.View>
1577
- <react_native_1.View style={{ flex: 1 }}>
723
+ <react_native_1.View style={{flex:1}}>
1578
724
  <react_native_1.Text style={bundleStyles.heroTitle}>
1579
- {prodPlatform === 'ios'
1580
- ? 'iOS Production Binary Footprint'
1581
- : prodPlatform === 'androidAab'
1582
- ? 'Google Play App Bundle (.aab)'
1583
- : 'Universal Standalone APK (.apk)'}
725
+ {o==="ios"?"iOS Production Binary Footprint":o==="androidAab"?"Google Play App Bundle (.aab)":"Universal Standalone APK (.apk)"}
1584
726
  </react_native_1.Text>
1585
727
  <react_native_1.Text style={bundleStyles.heroSubtitle}>
1586
- {prodPlatform === 'ios'
1587
- ? 'App Store install & over-the-air cellular download estimates'
1588
- : prodPlatform === 'androidAab'
1589
- ? 'Optimized per-device dynamic delivery split APK architecture'
1590
- : 'Multi-ABI universal install archive for sideloading & direct distribution'}
728
+ {o==="ios"?"App Store install & over-the-air cellular download estimates":o==="androidAab"?"Optimized per-device dynamic delivery split APK architecture":"Multi-ABI universal install archive for sideloading & direct distribution"}
1591
729
  </react_native_1.Text>
1592
730
  </react_native_1.View>
1593
- <CopyButton_1.default value={() => analysis.production[prodPlatform]} label="Production Binary JSON"/>
731
+ <CopyButton_1.default value={()=>a.production[o]}label="Production Binary JSON"/>
1594
732
  </react_native_1.View>
1595
733
 
1596
734
 
1597
735
  <react_native_1.View style={bundleStyles.metricsGrid}>
1598
736
  <react_native_1.View style={bundleStyles.metricBox}>
1599
737
  <react_native_1.Text style={bundleStyles.metricLabel}>INSTALL SIZE</react_native_1.Text>
1600
- <react_native_1.Text style={[
1601
- bundleStyles.metricValue,
1602
- { color: AppColors_1.AppColors.purple },
1603
- ]}>
1604
- {analysis.production[prodPlatform].totalInstallMb} MB
738
+ <react_native_1.Text style={[bundleStyles.metricValue,{color:AppColors_1.AppColors.purple}]}>
739
+ {a.production[o].totalInstallMb} MB
1605
740
  </react_native_1.Text>
1606
741
  <react_native_1.Text style={bundleStyles.metricHint}>
1607
742
  On-device uncompressed footprint
@@ -1610,11 +745,8 @@ const BundleTab = react_1.default.memo(() => {
1610
745
 
1611
746
  <react_native_1.View style={bundleStyles.metricBox}>
1612
747
  <react_native_1.Text style={bundleStyles.metricLabel}>DOWNLOAD SIZE</react_native_1.Text>
1613
- <react_native_1.Text style={[
1614
- bundleStyles.metricValue,
1615
- { color: AppColors_1.AppColors.emerald600 },
1616
- ]}>
1617
- ~{analysis.production[prodPlatform].totalDownloadMb} MB
748
+ <react_native_1.Text style={[bundleStyles.metricValue,{color:AppColors_1.AppColors.emerald600}]}>
749
+ ~{a.production[o].totalDownloadMb} MB
1618
750
  </react_native_1.Text>
1619
751
  <react_native_1.Text style={bundleStyles.metricHint}>
1620
752
  Store network transfer payload
@@ -1623,11 +755,8 @@ const BundleTab = react_1.default.memo(() => {
1623
755
 
1624
756
  <react_native_1.View style={bundleStyles.metricBox}>
1625
757
  <react_native_1.Text style={bundleStyles.metricLabel}>COMPRESSION</react_native_1.Text>
1626
- <react_native_1.Text style={[
1627
- bundleStyles.metricValue,
1628
- { color: AppColors_1.AppColors.sky500 },
1629
- ]}>
1630
- {analysis.production[prodPlatform].compressionRatioPct}%
758
+ <react_native_1.Text style={[bundleStyles.metricValue,{color:AppColors_1.AppColors.sky500}]}>
759
+ {a.production[o].compressionRatioPct}%
1631
760
  </react_native_1.Text>
1632
761
  <react_native_1.Text style={bundleStyles.metricHint}>
1633
762
  Bytecode & asset ratio
@@ -1638,31 +767,20 @@ const BundleTab = react_1.default.memo(() => {
1638
767
  <react_native_1.Text style={bundleStyles.metricLabel}>
1639
768
  FORMAT ARCHITECTURE
1640
769
  </react_native_1.Text>
1641
- <react_native_1.Text style={[
1642
- bundleStyles.metricValue,
1643
- { color: AppColors_1.AppColors.amber700 },
1644
- ]}>
1645
- {prodPlatform === 'ios'
1646
- ? 'Mach-O 64-bit'
1647
- : prodPlatform === 'androidAab'
1648
- ? 'Split APKs'
1649
- : 'FAT Multi-ABI'}
770
+ <react_native_1.Text style={[bundleStyles.metricValue,{color:AppColors_1.AppColors.amber700}]}>
771
+ {o==="ios"?"Mach-O 64-bit":o==="androidAab"?"Split APKs":"FAT Multi-ABI"}
1650
772
  </react_native_1.Text>
1651
773
  <react_native_1.Text style={bundleStyles.metricHint}>
1652
- {prodPlatform === 'ios'
1653
- ? 'Apple ARM64 runtime'
1654
- : prodPlatform === 'androidAab'
1655
- ? 'Dynamic Google Play delivery'
1656
- : 'Sideload universal package'}
774
+ {o==="ios"?"Apple ARM64 runtime":o==="androidAab"?"Dynamic Google Play delivery":"Sideload universal package"}
1657
775
  </react_native_1.Text>
1658
776
  </react_native_1.View>
1659
777
  </react_native_1.View>
1660
- </react_native_1.View>)}
778
+ </react_native_1.View>}
1661
779
 
1662
780
 
1663
- {analysis && (<react_native_1.View style={bundleStyles.sectionCard}>
781
+ {a&&<react_native_1.View style={bundleStyles.sectionCard}>
1664
782
  <react_native_1.View style={bundleStyles.sectionHeaderRow}>
1665
- <react_native_1.View style={{ flex: 1, paddingRight: 4 }}>
783
+ <react_native_1.View style={{flex:1,paddingRight:4}}>
1666
784
  <react_native_1.Text style={bundleStyles.sectionTitle}>
1667
785
  Binary Component Architecture
1668
786
  </react_native_1.Text>
@@ -1671,137 +789,81 @@ const BundleTab = react_1.default.memo(() => {
1671
789
  signature blocks
1672
790
  </react_native_1.Text>
1673
791
  </react_native_1.View>
1674
- <CopyButton_1.default value={() => analysis.production[prodPlatform].components} label="Components JSON"/>
792
+ <CopyButton_1.default value={()=>a.production[o].components}label="Components JSON"/>
1675
793
  </react_native_1.View>
1676
794
 
1677
795
 
1678
796
  <react_native_1.View style={bundleStyles.prodTreemapBar}>
1679
- {analysis.production[prodPlatform].components.map((comp, cIdx) => (<react_native_1.View key={cIdx} style={{
1680
- flex: Math.max(comp.pct, 2),
1681
- backgroundColor: comp.color,
1682
- height: 16,
1683
- }}/>))}
797
+ {a.production[o].components.map((e,l)=><react_native_1.View key={l}style={{flex:Math.max(e.pct,2),backgroundColor:e.color,height:16}}/>)}
1684
798
  </react_native_1.View>
1685
799
 
1686
800
 
1687
- <react_native_1.View style={[bundleStyles.legendGrid, { marginBottom: 12 }]}>
1688
- {analysis.production[prodPlatform].components.map((comp, cIdx) => (<react_native_1.View key={cIdx} style={bundleStyles.legendItem}>
1689
- <react_native_1.View style={{
1690
- width: 8,
1691
- height: 8,
1692
- borderRadius: 4,
1693
- backgroundColor: comp.color,
1694
- }}/>
1695
- <react_native_1.Text style={bundleStyles.legendText} numberOfLines={1}>
1696
- {comp.name}{' '}
801
+ <react_native_1.View style={[bundleStyles.legendGrid,{marginBottom:12}]}>
802
+ {a.production[o].components.map((e,l)=><react_native_1.View key={l}style={bundleStyles.legendItem}>
803
+ <react_native_1.View style={{width:8,height:8,borderRadius:4,backgroundColor:e.color}}/>
804
+ <react_native_1.Text style={bundleStyles.legendText}numberOfLines={1}>
805
+ {e.name}{" "}
1697
806
  <react_native_1.Text style={bundleStyles.legendVal}>
1698
- {comp.sizeMb} MB ({comp.pct}%)
807
+ {e.sizeMb} MB ({e.pct}%)
1699
808
  </react_native_1.Text>
1700
809
  </react_native_1.Text>
1701
- </react_native_1.View>))}
810
+ </react_native_1.View>)}
1702
811
  </react_native_1.View>
1703
812
 
1704
- {analysis.production[prodPlatform].components.map((comp, idx) => (<react_native_1.View key={idx} style={bundleStyles.catRowCard}>
813
+ {a.production[o].components.map((e,l)=><react_native_1.View key={l}style={bundleStyles.catRowCard}>
1705
814
  <react_native_1.View style={bundleStyles.catRowTop}>
1706
- <react_native_1.View style={[
1707
- bundleStyles.catIconBox,
1708
- {
1709
- backgroundColor: `${comp.color}15`,
1710
- borderColor: `${comp.color}30`,
1711
- },
1712
- ]}>
1713
- <BundleCategoryIcon type={comp.category === 'native'
1714
- ? 'source'
1715
- : comp.category === 'frameworks'
1716
- ? 'deps'
1717
- : comp.category === 'assets'
1718
- ? 'media'
1719
- : comp.category === 'js'
1720
- ? 'javascript'
1721
- : 'overhead'} size={18} color={comp.color}/>
815
+ <react_native_1.View style={[bundleStyles.catIconBox,{backgroundColor:`${e.color}15`,borderColor:`${e.color}30`}]}>
816
+ <BundleCategoryIcon type={e.category==="native"?"source":e.category==="frameworks"?"deps":e.category==="assets"?"media":e.category==="js"?"javascript":"overhead"}size={18}color={e.color}/>
1722
817
  </react_native_1.View>
1723
818
 
1724
819
  <react_native_1.View style={bundleStyles.catRowTitleWrap}>
1725
- <react_native_1.View style={{
1726
- flexDirection: 'row',
1727
- alignItems: 'center',
1728
- justifyContent: 'space-between',
1729
- gap: 6,
1730
- }}>
1731
- <react_native_1.Text style={bundleStyles.catRowTitle} numberOfLines={1}>
1732
- {comp.name}
820
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:6}}>
821
+ <react_native_1.Text style={bundleStyles.catRowTitle}numberOfLines={1}>
822
+ {e.name}
1733
823
  </react_native_1.Text>
1734
- <react_native_1.View style={{
1735
- flexDirection: 'row',
1736
- alignItems: 'center',
1737
- gap: 6,
1738
- }}>
824
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
1739
825
  <react_native_1.Text style={bundleStyles.catRowSize}>
1740
- {comp.sizeMb} MB
826
+ {e.sizeMb} MB
1741
827
  </react_native_1.Text>
1742
- <react_native_1.View style={[
1743
- bundleStyles.catPctPill,
1744
- { backgroundColor: `${comp.color}18` },
1745
- ]}>
1746
- <react_native_1.Text style={[
1747
- bundleStyles.catPctText,
1748
- { color: comp.color },
1749
- ]}>
1750
- {comp.pct}%
828
+ <react_native_1.View style={[bundleStyles.catPctPill,{backgroundColor:`${e.color}18`}]}>
829
+ <react_native_1.Text style={[bundleStyles.catPctText,{color:e.color}]}>
830
+ {e.pct}%
1751
831
  </react_native_1.Text>
1752
832
  </react_native_1.View>
1753
833
  </react_native_1.View>
1754
834
  </react_native_1.View>
1755
835
 
1756
- <react_native_1.Text style={bundleStyles.catRowDesc} numberOfLines={2}>
1757
- {comp.description}
836
+ <react_native_1.Text style={bundleStyles.catRowDesc}numberOfLines={2}>
837
+ {e.description}
1758
838
  </react_native_1.Text>
1759
839
  </react_native_1.View>
1760
840
  </react_native_1.View>
1761
841
 
1762
842
  <react_native_1.View style={bundleStyles.catProgressTrack}>
1763
- <react_native_1.View style={[
1764
- bundleStyles.catProgressBar,
1765
- { width: `${comp.pct}%`, backgroundColor: comp.color },
1766
- ]}/>
843
+ <react_native_1.View style={[bundleStyles.catProgressBar,{width:`${e.pct}%`,backgroundColor:e.color}]}/>
1767
844
  </react_native_1.View>
1768
845
 
1769
- {comp.advice ? (<react_native_1.View style={[
1770
- bundleStyles.adviceBadge,
1771
- bundleStyles.adviceOptimal,
1772
- { marginTop: 6 },
1773
- ]}>
1774
- <NetworkIcons_1.LightbulbIcon color={AppColors_1.AppColors.emerald700} size={13}/>
1775
- <react_native_1.Text style={[
1776
- bundleStyles.adviceText,
1777
- { color: AppColors_1.AppColors.emerald700, flex: 1, marginLeft: 4 },
1778
- ]}>
1779
- {comp.advice}
846
+ {e.advice?<react_native_1.View style={[bundleStyles.adviceBadge,bundleStyles.adviceOptimal,{marginTop:6}]}>
847
+ <NetworkIcons_1.LightbulbIcon color={AppColors_1.AppColors.emerald700}size={13}/>
848
+ <react_native_1.Text style={[bundleStyles.adviceText,{color:AppColors_1.AppColors.emerald700,flex:1,marginLeft:4}]}>
849
+ {e.advice}
1780
850
  </react_native_1.Text>
1781
- </react_native_1.View>) : null}
1782
- </react_native_1.View>))}
851
+ </react_native_1.View>:null}
852
+ </react_native_1.View>)}
1783
853
 
1784
854
 
1785
855
  <react_native_1.View style={bundleStyles.totalSummaryCard}>
1786
856
  <react_native_1.View style={bundleStyles.totalSummaryRow}>
1787
857
  <react_native_1.View style={bundleStyles.totalSummaryLabelWrap}>
1788
858
  <react_native_1.View style={bundleStyles.totalIconBadge}>
1789
- <NetworkIcons_1.PackageIcon color={AppColors_1.AppColors.brandPurple} size={16}/>
859
+ <NetworkIcons_1.PackageIcon color={AppColors_1.AppColors.brandPurple}size={16}/>
1790
860
  </react_native_1.View>
1791
861
  <react_native_1.View>
1792
862
  <react_native_1.Text style={bundleStyles.totalSummaryLabel}>
1793
- {prodPlatform === 'ios'
1794
- ? 'TOTAL IOS APP BINARY'
1795
- : prodPlatform === 'androidAab'
1796
- ? 'TOTAL ANDROID AAB BUNDLE'
1797
- : 'TOTAL UNIVERSAL APK'}
863
+ {o==="ios"?"TOTAL IOS APP BINARY":o==="androidAab"?"TOTAL ANDROID AAB BUNDLE":"TOTAL UNIVERSAL APK"}
1798
864
  </react_native_1.Text>
1799
865
  <react_native_1.Text style={bundleStyles.totalSummarySub}>
1800
- {prodPlatform === 'ios'
1801
- ? 'App Store install & cellular download estimates'
1802
- : prodPlatform === 'androidAab'
1803
- ? 'Google Play dynamic delivery split APK'
1804
- : 'Universal standalone sideload package'}
866
+ {o==="ios"?"App Store install & cellular download estimates":o==="androidAab"?"Google Play dynamic delivery split APK":"Universal standalone sideload package"}
1805
867
  </react_native_1.Text>
1806
868
  </react_native_1.View>
1807
869
  </react_native_1.View>
@@ -1810,1855 +872,426 @@ const BundleTab = react_1.default.memo(() => {
1810
872
 
1811
873
  <react_native_1.View style={bundleStyles.totalFormulaGrid}>
1812
874
  <react_native_1.View style={bundleStyles.totalChip}>
1813
- <react_native_1.View style={[
1814
- bundleStyles.totalDot,
1815
- { backgroundColor: AppColors_1.AppColors.purple },
1816
- ]}/>
875
+ <react_native_1.View style={[bundleStyles.totalDot,{backgroundColor:AppColors_1.AppColors.purple}]}/>
1817
876
  <react_native_1.Text style={bundleStyles.totalChipText}>
1818
- Install:{' '}
1819
- {analysis.production[prodPlatform].totalInstallMb} MB
877
+ Install:{" "}
878
+ {a.production[o].totalInstallMb} MB
1820
879
  </react_native_1.Text>
1821
880
  </react_native_1.View>
1822
881
  <react_native_1.View style={bundleStyles.totalChip}>
1823
- <react_native_1.View style={[
1824
- bundleStyles.totalDot,
1825
- { backgroundColor: AppColors_1.AppColors.sky500 },
1826
- ]}/>
882
+ <react_native_1.View style={[bundleStyles.totalDot,{backgroundColor:AppColors_1.AppColors.sky500}]}/>
1827
883
  <react_native_1.Text style={bundleStyles.totalChipText}>
1828
884
  Download: ~
1829
- {analysis.production[prodPlatform].totalDownloadMb} MB
885
+ {a.production[o].totalDownloadMb} MB
1830
886
  </react_native_1.Text>
1831
887
  </react_native_1.View>
1832
888
  <react_native_1.View style={bundleStyles.totalChip}>
1833
- <react_native_1.View style={[
1834
- bundleStyles.totalDot,
1835
- { backgroundColor: AppColors_1.AppColors.emerald500 },
1836
- ]}/>
889
+ <react_native_1.View style={[bundleStyles.totalDot,{backgroundColor:AppColors_1.AppColors.emerald500}]}/>
1837
890
  <react_native_1.Text style={bundleStyles.totalChipText}>
1838
- Compression:{' '}
1839
- {analysis.production[prodPlatform].compressionRatioPct}%
891
+ Compression:{" "}
892
+ {a.production[o].compressionRatioPct}%
1840
893
  </react_native_1.Text>
1841
894
  </react_native_1.View>
1842
895
  </react_native_1.View>
1843
896
  </react_native_1.View>
1844
- </react_native_1.View>)}
1845
- </react_native_1.ScrollView>)}
897
+ </react_native_1.View>}
898
+ </react_native_1.ScrollView>}
1846
899
 
1847
900
 
1848
901
 
1849
902
 
1850
- {activeSubTab === 'files' && (<react_native_1.View style={{ flex: 1 }}>
903
+ {r==="files"&&<react_native_1.View style={{flex:1}}>
1851
904
 
1852
905
  <react_native_1.View style={bundleStyles.filterContainer}>
1853
906
  <react_native_1.View style={bundleStyles.searchRow}>
1854
- <NetworkIcons_1.SearchIcon color={AppColors_1.AppColors.grayTextWeak} size={15}/>
1855
- <react_native_1.TextInput accessible={true} accessibilityRole="search" accessibilityLabel="Search files" accessibilityHint="Type a filename, path, or extension to filter" placeholder={t('bundle.searchFilesPlaceholder')} placeholderTextColor={AppColors_1.AppColors.grayTextWeak} value={search} onChangeText={setSearch} style={bundleStyles.searchInput} autoCorrect={false} autoCapitalize="none"/>
1856
- {search.length > 0 && (<react_native_1.Pressable accessible={true} accessibilityRole="button" accessibilityLabel="Clear search input" onPress={() => setSearch('')} hitSlop={10}>
1857
- <NetworkIcons_1.ClearIcon color={AppColors_1.AppColors.grayTextWeak} size={14}/>
1858
- </react_native_1.Pressable>)}
1859
- <CopyButton_1.default value={() => filteredFiles} label={t('bundle.filteredFilesJson')}/>
907
+ <NetworkIcons_1.SearchIcon color={AppColors_1.AppColors.grayTextWeak}size={15}/>
908
+ <react_native_1.TextInput accessible={!0}accessibilityRole="search"accessibilityLabel="Search files"accessibilityHint="Type a filename, path, or extension to filter"placeholder={t("bundle.searchFilesPlaceholder")}placeholderTextColor={AppColors_1.AppColors.grayTextWeak}value={s}onChangeText={y}style={bundleStyles.searchInput}autoCorrect={!1}autoCapitalize="none"/>
909
+ {s.length>0&&<react_native_1.Pressable accessible={!0}accessibilityRole="button"accessibilityLabel="Clear search input"onPress={()=>y("")}hitSlop={10}>
910
+ <NetworkIcons_1.ClearIcon color={AppColors_1.AppColors.grayTextWeak}size={14}/>
911
+ </react_native_1.Pressable>}
912
+ <CopyButton_1.default value={()=>T}label={t("bundle.filteredFilesJson")}/>
1860
913
  </react_native_1.View>
1861
914
 
1862
915
 
1863
- <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={bundleStyles.categoryPillsScroll}>
1864
- {CATEGORY_TABS.map(tab => {
1865
- const isActive = activeCategory === tab.key;
1866
- const count = tab.key === 'ALL'
1867
- ? bundleFiles.length
1868
- : tab.key === 'UNUSED'
1869
- ? bundleFiles.filter(f => f.isConsumed === false).length
1870
- : tab.key === 'CONSUMED'
1871
- ? bundleFiles.filter(f => f.isConsumed !== false).length
1872
- : bundleFiles.filter(f => f.category === tab.key).length;
1873
- return (<TouchableScale_1.default key={tab.key} accessible={true} accessibilityRole="button" accessibilityLabel={`Filter by ${t(tab.labelKey)}, ${count} items`} accessibilityState={{ selected: isActive }} accessibilityHint={`Filters files list to ${t(tab.labelKey)}`} onPress={() => setActiveCategory(tab.key)} style={[
1874
- bundleStyles.catPill,
1875
- isActive && bundleStyles.catPillActive,
1876
- tab.key === 'UNUSED' &&
1877
- isActive && {
1878
- backgroundColor: AppColors_1.AppColors.red500,
1879
- borderColor: AppColors_1.AppColors.red600,
1880
- },
1881
- tab.key === 'CONSUMED' &&
1882
- isActive && {
1883
- backgroundColor: AppColors_1.AppColors.emerald600,
1884
- borderColor: AppColors_1.AppColors.emerald700,
1885
- },
1886
- ]}>
1887
- <BundleCategoryIcon type={tab.iconType} size={12} color={isActive ? AppColors_1.AppColors.white : AppColors_1.AppColors.grayTextStrong}/>
1888
- <react_native_1.Text style={[
1889
- bundleStyles.catPillText,
1890
- isActive && bundleStyles.catPillTextActive,
1891
- ]}>
1892
- {t(tab.labelKey)} ({count})
916
+ <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={bundleStyles.categoryPillsScroll}>
917
+ {CATEGORY_TABS.map(e=>{const l=u===e.key,p=e.key==="ALL"?d.length:e.key==="UNUSED"?d.filter(g=>g.isConsumed===!1).length:e.key==="CONSUMED"?d.filter(g=>g.isConsumed!==!1).length:d.filter(g=>g.category===e.key).length;return<TouchableScale_1.default key={e.key}accessible={!0}accessibilityRole="button"accessibilityLabel={`Filter by ${t(e.labelKey)}, ${p} items`}accessibilityState={{selected:l}}accessibilityHint={`Filters files list to ${t(e.labelKey)}`}onPress={()=>_(e.key)}style={[bundleStyles.catPill,l&&bundleStyles.catPillActive,e.key==="UNUSED"&&l&&{backgroundColor:AppColors_1.AppColors.red500,borderColor:AppColors_1.AppColors.red600},e.key==="CONSUMED"&&l&&{backgroundColor:AppColors_1.AppColors.emerald600,borderColor:AppColors_1.AppColors.emerald700}]}>
918
+ <BundleCategoryIcon type={e.iconType}size={12}color={l?AppColors_1.AppColors.white:AppColors_1.AppColors.grayTextStrong}/>
919
+ <react_native_1.Text style={[bundleStyles.catPillText,l&&bundleStyles.catPillTextActive]}>
920
+ {t(e.labelKey)} ({p})
1893
921
  </react_native_1.Text>
1894
- </TouchableScale_1.default>);
1895
- })}
922
+ </TouchableScale_1.default>})}
1896
923
  </react_native_1.ScrollView>
1897
924
  </react_native_1.View>
1898
925
 
1899
926
 
1900
- <react_native_1.ScrollView style={{ flex: 1 }} contentContainerStyle={bundleStyles.contentContainer} keyboardShouldPersistTaps="handled">
927
+ <react_native_1.ScrollView style={{flex:1}}contentContainerStyle={bundleStyles.contentContainer}keyboardShouldPersistTaps="handled">
1901
928
 
1902
929
  <react_native_1.View style={bundleStyles.treeHeaderRow}>
1903
930
  <react_native_1.View style={bundleStyles.viewModeToggleGroup}>
1904
- <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel="Tree folder view" accessibilityState={{ selected: filesViewMode === 'tree' }} onPress={() => setFilesViewMode('tree')} style={[
1905
- bundleStyles.viewModeBtn,
1906
- filesViewMode === 'tree' && bundleStyles.viewModeBtnActive,
1907
- ]}>
1908
- <react_native_1.Text style={[
1909
- bundleStyles.viewModeBtnText,
1910
- filesViewMode === 'tree' &&
1911
- bundleStyles.viewModeBtnTextActive,
1912
- ]}>
1913
- {t('bundle.treeView')}
931
+ <TouchableScale_1.default accessible={!0}accessibilityRole="button"accessibilityLabel="Tree folder view"accessibilityState={{selected:f==="tree"}}onPress={()=>L("tree")}style={[bundleStyles.viewModeBtn,f==="tree"&&bundleStyles.viewModeBtnActive]}>
932
+ <react_native_1.Text style={[bundleStyles.viewModeBtnText,f==="tree"&&bundleStyles.viewModeBtnTextActive]}>
933
+ {t("bundle.treeView")}
1914
934
  </react_native_1.Text>
1915
935
  </TouchableScale_1.default>
1916
- <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel="Flat list view" accessibilityState={{ selected: filesViewMode === 'list' }} onPress={() => setFilesViewMode('list')} style={[
1917
- bundleStyles.viewModeBtn,
1918
- filesViewMode === 'list' && bundleStyles.viewModeBtnActive,
1919
- ]}>
1920
- <react_native_1.Text style={[
1921
- bundleStyles.viewModeBtnText,
1922
- filesViewMode === 'list' &&
1923
- bundleStyles.viewModeBtnTextActive,
1924
- ]}>
1925
- {t('bundle.flatList')}
936
+ <TouchableScale_1.default accessible={!0}accessibilityRole="button"accessibilityLabel="Flat list view"accessibilityState={{selected:f==="list"}}onPress={()=>L("list")}style={[bundleStyles.viewModeBtn,f==="list"&&bundleStyles.viewModeBtnActive]}>
937
+ <react_native_1.Text style={[bundleStyles.viewModeBtnText,f==="list"&&bundleStyles.viewModeBtnTextActive]}>
938
+ {t("bundle.flatList")}
1926
939
  </react_native_1.Text>
1927
940
  </TouchableScale_1.default>
1928
941
  </react_native_1.View>
1929
942
 
1930
- {filesViewMode === 'tree' ? (<react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
1931
- <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel="Expand all folders" onPress={expandAllFolders}>
943
+ {f==="tree"?<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:8}}>
944
+ <TouchableScale_1.default accessible={!0}accessibilityRole="button"accessibilityLabel="Expand all folders"onPress={$}>
1932
945
  <react_native_1.Text style={bundleStyles.treeActionLink}>
1933
- {t('bundle.expand')}
946
+ {t("bundle.expand")}
1934
947
  </react_native_1.Text>
1935
948
  </TouchableScale_1.default>
1936
- <react_native_1.Text style={{ color: AppColors_1.AppColors.grayTextWeak, fontSize: 11 }}>
949
+ <react_native_1.Text style={{color:AppColors_1.AppColors.grayTextWeak,fontSize:11}}>
1937
950
  •
1938
951
  </react_native_1.Text>
1939
- <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel="Collapse all folders" onPress={collapseAllFolders}>
952
+ <TouchableScale_1.default accessible={!0}accessibilityRole="button"accessibilityLabel="Collapse all folders"onPress={O}>
1940
953
  <react_native_1.Text style={bundleStyles.treeActionLink}>
1941
- {t('bundle.collapse')}
954
+ {t("bundle.collapse")}
1942
955
  </react_native_1.Text>
1943
956
  </TouchableScale_1.default>
1944
- </react_native_1.View>) : (<react_native_1.Text style={bundleStyles.listHeaderCount}>
1945
- {t('bundle.showingFilesOf', {
1946
- shown: filteredFiles.length,
1947
- total: bundleFiles.length,
1948
- })}
1949
- </react_native_1.Text>)}
957
+ </react_native_1.View>:<react_native_1.Text style={bundleStyles.listHeaderCount}>
958
+ {t("bundle.showingFilesOf",{shown:T.length,total:d.length})}
959
+ </react_native_1.Text>}
1950
960
  </react_native_1.View>
1951
961
 
1952
962
 
1953
- {filesViewMode === 'tree' ? (<react_native_1.View style={bundleStyles.treeRootCard}>
1954
- {fileTreeNodes.map((node, nIdx) => (<BundleTreeNodeView key={node.id} node={node} level={0} search={search} totalBundleKb={summary.totalKb} expandedFolders={expandedFolders} toggleFolder={toggleFolder} isLastChild={nIdx === fileTreeNodes.length - 1} onDownload={f => (0, exports.downloadBundleFile)(f, analysis?.scriptURL)}/>))}
1955
- </react_native_1.View>) : (filteredFiles.map((file, index) => {
1956
- const categoryMeta = CATEGORY_COLORS[file.category] || CATEGORY_COLORS.typescript;
1957
- const pctOfTotal = ((file.sizeKb / summary.totalKb) *
1958
- 100).toFixed(1);
1959
- const isUnused = file.isConsumed === false;
1960
- return (<react_native_1.View key={file.id} style={[
1961
- bundleStyles.fileCard,
1962
- isUnused && bundleStyles.treeFileCardUnused,
1963
- ]}>
963
+ {f==="tree"?<react_native_1.View style={bundleStyles.treeRootCard}>
964
+ {A.map((e,l)=><BundleTreeNodeView key={e.id}node={e}level={0}search={s}totalBundleKb={i.totalKb}expandedFolders={D}toggleFolder={K}isLastChild={l===A.length-1}onDownload={p=>(0,exports.downloadBundleFile)(p,a?.scriptURL)}/>)}
965
+ </react_native_1.View>:T.map((e,l)=>{const p=CATEGORY_COLORS[e.category]||CATEGORY_COLORS.typescript,g=(e.sizeKb/i.totalKb*100).toFixed(1),C=e.isConsumed===!1;return<react_native_1.View key={e.id}style={[bundleStyles.fileCard,C&&bundleStyles.treeFileCardUnused]}>
1964
966
  <react_native_1.View style={bundleStyles.fileCardTop}>
1965
967
  <react_native_1.View style={bundleStyles.sNoBadge}>
1966
- <react_native_1.Text style={bundleStyles.sNoText}>#{index + 1}</react_native_1.Text>
968
+ <react_native_1.Text style={bundleStyles.sNoText}>#{l+1}</react_native_1.Text>
1967
969
  </react_native_1.View>
1968
970
 
1969
- <MediaPreviewThumbnail file={file}/>
1970
-
1971
- <react_native_1.View style={{ flex: 1, paddingHorizontal: 4 }}>
1972
- <react_native_1.View style={{
1973
- flexDirection: 'row',
1974
- alignItems: 'center',
1975
- gap: 6,
1976
- flexWrap: 'wrap',
1977
- }}>
1978
- <HighlightText_1.default text={file.name} search={search} style={bundleStyles.fileName} highlightStyle={bundleStyles.searchHighlight}/>
1979
- {isUnused ? (<react_native_1.View style={bundleStyles.unusedBadge}>
971
+ <MediaPreviewThumbnail file={e}/>
972
+
973
+ <react_native_1.View style={{flex:1,paddingHorizontal:4}}>
974
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6,flexWrap:"wrap"}}>
975
+ <HighlightText_1.default text={e.name}search={s}style={bundleStyles.fileName}highlightStyle={bundleStyles.searchHighlight}/>
976
+ {C?<react_native_1.View style={bundleStyles.unusedBadge}>
1980
977
  <react_native_1.Text style={bundleStyles.unusedBadgeText}>
1981
- {t('bundle.notConsumed')}
978
+ {t("bundle.notConsumed")}
1982
979
  </react_native_1.Text>
1983
- </react_native_1.View>) : (<react_native_1.View style={bundleStyles.consumedBadge}>
980
+ </react_native_1.View>:<react_native_1.View style={bundleStyles.consumedBadge}>
1984
981
  <react_native_1.Text style={bundleStyles.consumedBadgeText}>
1985
- {t('bundle.consumed')}
982
+ {t("bundle.consumed")}
1986
983
  </react_native_1.Text>
1987
- </react_native_1.View>)}
984
+ </react_native_1.View>}
1988
985
  </react_native_1.View>
1989
- <HighlightText_1.default text={file.path} search={search} style={bundleStyles.filePath} highlightStyle={bundleStyles.searchHighlight} numberOfLines={1}/>
986
+ <HighlightText_1.default text={e.path}search={s}style={bundleStyles.filePath}highlightStyle={bundleStyles.searchHighlight}numberOfLines={1}/>
1990
987
  </react_native_1.View>
1991
988
 
1992
- <react_native_1.View style={{
1993
- flexDirection: 'row',
1994
- alignItems: 'center',
1995
- gap: 6,
1996
- }}>
989
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
1997
990
  <react_native_1.View style={bundleStyles.fileSizeBox}>
1998
- <react_native_1.Text style={[
1999
- bundleStyles.fileSizeKb,
2000
- isUnused && { color: AppColors_1.AppColors.amber800Warm },
2001
- ]}>
2002
- {file.sizeKb >= 1024
2003
- ? t('bundle.fileSizeMb', {
2004
- size: (file.sizeKb / 1024).toFixed(2),
2005
- })
2006
- : t('bundle.fileSizeKb', { size: file.sizeKb })}
991
+ <react_native_1.Text style={[bundleStyles.fileSizeKb,C&&{color:AppColors_1.AppColors.amber800Warm}]}>
992
+ {e.sizeKb>=1024?t("bundle.fileSizeMb",{size:(e.sizeKb/1024).toFixed(2)}):t("bundle.fileSizeKb",{size:e.sizeKb})}
2007
993
  </react_native_1.Text>
2008
994
  <react_native_1.Text style={bundleStyles.filePercent}>
2009
- {pctOfTotal}%
995
+ {g}%
2010
996
  </react_native_1.Text>
2011
997
  </react_native_1.View>
2012
- <TouchableScale_1.default onPress={() => (0, exports.downloadBundleFile)(file, analysis?.scriptURL)} style={bundleStyles.downloadFileBtn} hitSlop={8}>
2013
- <NetworkIcons_1.DownloadIcon size={14} color={AppColors_1.AppColors.sky500}/>
998
+ <TouchableScale_1.default onPress={()=>(0,exports.downloadBundleFile)(e,a?.scriptURL)}style={bundleStyles.downloadFileBtn}hitSlop={8}>
999
+ <NetworkIcons_1.DownloadIcon size={14}color={AppColors_1.AppColors.sky500}/>
2014
1000
  </TouchableScale_1.default>
2015
- <CopyButton_1.default value={() => file} label={t('bundle.fileDetailsJson')}/>
1001
+ <CopyButton_1.default value={()=>e}label={t("bundle.fileDetailsJson")}/>
2016
1002
  </react_native_1.View>
2017
1003
  </react_native_1.View>
2018
1004
 
2019
1005
  <react_native_1.View style={bundleStyles.fileProgressTrack}>
2020
- <react_native_1.View style={[
2021
- bundleStyles.fileProgressBar,
2022
- {
2023
- width: `${Math.min(100, Math.max(4, Number(pctOfTotal) * 4))}%`,
2024
- backgroundColor: isUnused
2025
- ? AppColors_1.AppColors.red500
2026
- : categoryMeta.color,
2027
- },
2028
- ]}/>
1006
+ <react_native_1.View style={[bundleStyles.fileProgressBar,{width:`${Math.min(100,Math.max(4,Number(g)*4))}%`,backgroundColor:C?AppColors_1.AppColors.red500:p.color}]}/>
2029
1007
  </react_native_1.View>
2030
1008
 
2031
1009
  <react_native_1.View style={bundleStyles.fileCardBottom}>
2032
- <react_native_1.Text style={bundleStyles.fileMetaText}>{file.meta}</react_native_1.Text>
2033
- {file.advice && (<react_native_1.View style={[
2034
- bundleStyles.adviceBadge,
2035
- file.status === 'warning' &&
2036
- bundleStyles.adviceWarning,
2037
- file.status === 'optimal' &&
2038
- bundleStyles.adviceOptimal,
2039
- isUnused && bundleStyles.adviceUnused,
2040
- ]}>
2041
- {isUnused ? (<NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.red600} size={12}/>) : file.status === 'warning' ? (<NetworkIcons_1.LightbulbIcon color={AppColors_1.AppColors.amber800Warm} size={12}/>) : (<NetworkIcons_1.SparkleIcon color={AppColors_1.AppColors.emerald700} size={12}/>)}
2042
- <react_native_1.Text style={[
2043
- bundleStyles.adviceText,
2044
- file.status === 'warning' && {
2045
- color: AppColors_1.AppColors.amber800Warm,
2046
- },
2047
- file.status === 'optimal' && {
2048
- color: AppColors_1.AppColors.emerald700,
2049
- },
2050
- isUnused && { color: AppColors_1.AppColors.red600 },
2051
- ]}>
2052
- {file.advice}
1010
+ <react_native_1.Text style={bundleStyles.fileMetaText}>{e.meta}</react_native_1.Text>
1011
+ {e.advice&&<react_native_1.View style={[bundleStyles.adviceBadge,e.status==="warning"&&bundleStyles.adviceWarning,e.status==="optimal"&&bundleStyles.adviceOptimal,C&&bundleStyles.adviceUnused]}>
1012
+ {C?<NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.red600}size={12}/>:e.status==="warning"?<NetworkIcons_1.LightbulbIcon color={AppColors_1.AppColors.amber800Warm}size={12}/>:<NetworkIcons_1.SparkleIcon color={AppColors_1.AppColors.emerald700}size={12}/>}
1013
+ <react_native_1.Text style={[bundleStyles.adviceText,e.status==="warning"&&{color:AppColors_1.AppColors.amber800Warm},e.status==="optimal"&&{color:AppColors_1.AppColors.emerald700},C&&{color:AppColors_1.AppColors.red600}]}>
1014
+ {e.advice}
2053
1015
  </react_native_1.Text>
2054
- </react_native_1.View>)}
1016
+ </react_native_1.View>}
2055
1017
  </react_native_1.View>
2056
- </react_native_1.View>);
2057
- }))}
1018
+ </react_native_1.View>})}
2058
1019
  </react_native_1.ScrollView>
2059
1020
 
2060
1021
 
2061
1022
  <react_native_1.View style={bundleStyles.stickyFooterBar}>
2062
- <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
2063
- <NetworkIcons_1.LayersIcon color={AppColors_1.AppColors.purple} size={14}/>
1023
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
1024
+ <NetworkIcons_1.LayersIcon color={AppColors_1.AppColors.purple}size={14}/>
2064
1025
  <react_native_1.Text style={bundleStyles.footerTitle}>
2065
- {t('bundle.filesOf', {
2066
- count: filteredFiles.length,
2067
- total: summary.totalCount,
2068
- })}
1026
+ {t("bundle.filesOf",{count:T.length,total:i.totalCount})}
2069
1027
  </react_native_1.Text>
2070
1028
  </react_native_1.View>
2071
1029
  <react_native_1.Text style={bundleStyles.footerSizeVal}>
2072
- {t('bundle.kbMbValue', {
2073
- kb: filteredTotalKb,
2074
- mb: (filteredTotalKb / 1024).toFixed(2),
2075
- })}
1030
+ {t("bundle.kbMbValue",{kb:R,mb:(R/1024).toFixed(2)})}
2076
1031
  </react_native_1.Text>
2077
1032
  </react_native_1.View>
2078
- </react_native_1.View>)}
1033
+ </react_native_1.View>}
2079
1034
 
2080
1035
 
2081
1036
 
2082
1037
 
2083
- {activeSubTab === 'packages' && (<react_native_1.View style={{ flex: 1 }}>
2084
- <react_native_1.ScrollView style={{ flex: 1 }} contentContainerStyle={bundleStyles.contentContainer} keyboardShouldPersistTaps="handled">
1038
+ {r==="packages"&&<react_native_1.View style={{flex:1}}>
1039
+ <react_native_1.ScrollView style={{flex:1}}contentContainerStyle={bundleStyles.contentContainer}keyboardShouldPersistTaps="handled">
2085
1040
  <react_native_1.View style={bundleStyles.filterContainer}>
2086
1041
  <react_native_1.View style={bundleStyles.searchRow}>
2087
- <NetworkIcons_1.SearchIcon color={AppColors_1.AppColors.grayTextWeak} size={15}/>
2088
- <react_native_1.TextInput accessible={true} accessibilityRole="search" accessibilityLabel="Search packages" accessibilityHint="Type a package name or description to filter" placeholder={t('bundle.searchPackagesPlaceholder')} placeholderTextColor={AppColors_1.AppColors.grayTextWeak} value={search} onChangeText={setSearch} style={bundleStyles.searchInput} autoCorrect={false} autoCapitalize="none"/>
2089
- {search.length > 0 && (<react_native_1.Pressable accessible={true} accessibilityRole="button" accessibilityLabel="Clear search input" onPress={() => setSearch('')} hitSlop={10}>
2090
- <NetworkIcons_1.ClearIcon color={AppColors_1.AppColors.grayTextWeak} size={14}/>
2091
- </react_native_1.Pressable>)}
2092
- <CopyButton_1.default value={() => filteredPackages} label={t('bundle.dependenciesJson')}/>
1042
+ <NetworkIcons_1.SearchIcon color={AppColors_1.AppColors.grayTextWeak}size={15}/>
1043
+ <react_native_1.TextInput accessible={!0}accessibilityRole="search"accessibilityLabel="Search packages"accessibilityHint="Type a package name or description to filter"placeholder={t("bundle.searchPackagesPlaceholder")}placeholderTextColor={AppColors_1.AppColors.grayTextWeak}value={s}onChangeText={y}style={bundleStyles.searchInput}autoCorrect={!1}autoCapitalize="none"/>
1044
+ {s.length>0&&<react_native_1.Pressable accessible={!0}accessibilityRole="button"accessibilityLabel="Clear search input"onPress={()=>y("")}hitSlop={10}>
1045
+ <NetworkIcons_1.ClearIcon color={AppColors_1.AppColors.grayTextWeak}size={14}/>
1046
+ </react_native_1.Pressable>}
1047
+ <CopyButton_1.default value={()=>S}label={t("bundle.dependenciesJson")}/>
2093
1048
  </react_native_1.View>
2094
1049
  </react_native_1.View>
2095
1050
 
2096
1051
  <react_native_1.Text style={bundleStyles.listHeaderCount}>
2097
- {t('bundle.showingDependencies', {
2098
- count: filteredPackages.length,
2099
- })}
1052
+ {t("bundle.showingDependencies",{count:S.length})}
2100
1053
  </react_native_1.Text>
2101
1054
 
2102
- {filteredPackages.map((pkg, index) => {
2103
- const cleanInstalledVersion = pkg.version
2104
- ? pkg.version.replace(/^\^/, '')
2105
- : '';
2106
- const hasUpdate = !!pkg.latestVersion &&
2107
- !!cleanInstalledVersion &&
2108
- pkg.latestVersion !== cleanInstalledVersion;
2109
- return (<react_native_1.View key={pkg.id} style={[
2110
- bundleStyles.fileCard,
2111
- pkg.isDeprecated && {
2112
- borderColor: AppColors_1.AppColors.errorBorder,
2113
- backgroundColor: AppColors_1.AppColors.errorCardBg,
2114
- },
2115
- ]}>
1055
+ {S.map((e,l)=>{const p=e.version?e.version.replace(/^\^/,""):"",g=!!e.latestVersion&&!!p&&e.latestVersion!==p;return<react_native_1.View key={e.id}style={[bundleStyles.fileCard,e.isDeprecated&&{borderColor:AppColors_1.AppColors.errorBorder,backgroundColor:AppColors_1.AppColors.errorCardBg}]}>
2116
1056
 
2117
1057
  <react_native_1.View style={bundleStyles.fileCardTop}>
2118
1058
  <react_native_1.View style={bundleStyles.sNoBadge}>
2119
- <react_native_1.Text style={bundleStyles.sNoText}>#{index + 1}</react_native_1.Text>
1059
+ <react_native_1.Text style={bundleStyles.sNoText}>#{l+1}</react_native_1.Text>
2120
1060
  </react_native_1.View>
2121
1061
 
2122
- <PackageLogoRenderer name={pkg.name} color={pkg.color} size={28}/>
1062
+ <PackageLogoRenderer name={e.name}color={e.color}size={28}/>
2123
1063
 
2124
- <react_native_1.View style={{ flex: 1, paddingHorizontal: 4 }}>
2125
- <react_native_1.View style={{
2126
- flexDirection: 'row',
2127
- alignItems: 'center',
2128
- gap: 6,
2129
- flexWrap: 'wrap',
2130
- }}>
2131
- <HighlightText_1.default text={pkg.name} search={search} style={bundleStyles.fileName} highlightStyle={bundleStyles.searchHighlight}/>
1064
+ <react_native_1.View style={{flex:1,paddingHorizontal:4}}>
1065
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6,flexWrap:"wrap"}}>
1066
+ <HighlightText_1.default text={e.name}search={s}style={bundleStyles.fileName}highlightStyle={bundleStyles.searchHighlight}/>
2132
1067
  <react_native_1.View style={bundleStyles.versionPill}>
2133
1068
  <react_native_1.Text style={bundleStyles.versionPillText}>
2134
- {cleanInstalledVersion
2135
- ? t('bundle.versionPrefix', {
2136
- version: cleanInstalledVersion,
2137
- })
2138
- : t('bundle.bundled')}
1069
+ {p?t("bundle.versionPrefix",{version:p}):t("bundle.bundled")}
2139
1070
  </react_native_1.Text>
2140
1071
  </react_native_1.View>
2141
1072
 
2142
- {pkg.isDeprecated ? (<react_native_1.View style={bundleStyles.deprecatedBadge}>
1073
+ {e.isDeprecated?<react_native_1.View style={bundleStyles.deprecatedBadge}>
2143
1074
  <react_native_1.Text style={bundleStyles.deprecatedBadgeText}>
2144
- {t('bundle.deprecated')}
1075
+ {t("bundle.deprecated")}
2145
1076
  </react_native_1.Text>
2146
- </react_native_1.View>) : hasUpdate ? (<react_native_1.View style={bundleStyles.updateBadge}>
1077
+ </react_native_1.View>:g?<react_native_1.View style={bundleStyles.updateBadge}>
2147
1078
  <react_native_1.Text style={bundleStyles.updateBadgeText}>
2148
- {t('bundle.updateAvailable', {
2149
- version: pkg.latestVersion,
2150
- })}
1079
+ {t("bundle.updateAvailable",{version:e.latestVersion})}
2151
1080
  </react_native_1.Text>
2152
- </react_native_1.View>) : cleanInstalledVersion ? (<react_native_1.View style={[
2153
- bundleStyles.updateBadge,
2154
- {
2155
- backgroundColor: AppColors_1.AppColors.gray100,
2156
- borderColor: AppColors_1.AppColors.gray200,
2157
- },
2158
- ]}>
2159
- <react_native_1.Text style={[
2160
- bundleStyles.updateBadgeText,
2161
- { color: AppColors_1.AppColors.gray600 },
2162
- ]}>
2163
- {t('bundle.upToDate')}
1081
+ </react_native_1.View>:p?<react_native_1.View style={[bundleStyles.updateBadge,{backgroundColor:AppColors_1.AppColors.gray100,borderColor:AppColors_1.AppColors.gray200}]}>
1082
+ <react_native_1.Text style={[bundleStyles.updateBadgeText,{color:AppColors_1.AppColors.gray600}]}>
1083
+ {t("bundle.upToDate")}
2164
1084
  </react_native_1.Text>
2165
- </react_native_1.View>) : (<react_native_1.View style={[
2166
- bundleStyles.updateBadge,
2167
- {
2168
- backgroundColor: AppColors_1.AppColors.gray100,
2169
- borderColor: AppColors_1.AppColors.gray200,
2170
- },
2171
- ]}>
2172
- <react_native_1.Text style={[
2173
- bundleStyles.updateBadgeText,
2174
- { color: AppColors_1.AppColors.gray600 },
2175
- ]}>
2176
- {t('bundle.bundledBadge')}
1085
+ </react_native_1.View>:<react_native_1.View style={[bundleStyles.updateBadge,{backgroundColor:AppColors_1.AppColors.gray100,borderColor:AppColors_1.AppColors.gray200}]}>
1086
+ <react_native_1.Text style={[bundleStyles.updateBadgeText,{color:AppColors_1.AppColors.gray600}]}>
1087
+ {t("bundle.bundledBadge")}
2177
1088
  </react_native_1.Text>
2178
- </react_native_1.View>)}
1089
+ </react_native_1.View>}
2179
1090
  </react_native_1.View>
2180
1091
  </react_native_1.View>
2181
1092
 
2182
- <react_native_1.View style={{
2183
- flexDirection: 'row',
2184
- alignItems: 'center',
2185
- gap: 6,
2186
- }}>
1093
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
2187
1094
  <react_native_1.View style={bundleStyles.fileSizeBox}>
2188
1095
  <react_native_1.Text style={bundleStyles.fileSizeKb}>
2189
- {t('bundle.fileSizeKb', { size: pkg.sizeKb })}
1096
+ {t("bundle.fileSizeKb",{size:e.sizeKb})}
2190
1097
  </react_native_1.Text>
2191
1098
  <react_native_1.Text style={bundleStyles.filePercent}>
2192
- {pkg.percentage}%
1099
+ {e.percentage}%
2193
1100
  </react_native_1.Text>
2194
1101
  </react_native_1.View>
2195
- <CopyButton_1.default value={() => pkg} label={t('bundle.packageDetailsJson')}/>
1102
+ <CopyButton_1.default value={()=>e}label={t("bundle.packageDetailsJson")}/>
2196
1103
  </react_native_1.View>
2197
1104
  </react_native_1.View>
2198
1105
 
2199
1106
 
2200
- <react_native_1.View style={{
2201
- flexDirection: 'row',
2202
- alignItems: 'center',
2203
- gap: 6,
2204
- marginTop: 4,
2205
- marginBottom: 2,
2206
- }}>
2207
- <react_native_1.View style={[
2208
- bundleStyles.pkgBadge,
2209
- {
2210
- backgroundColor: `${pkg.color}1F`,
2211
- borderColor: `${pkg.color}4D`,
2212
- },
2213
- ]}>
2214
- <react_native_1.Text style={[bundleStyles.pkgBadgeText, { color: pkg.color }]}>
2215
- {pkg.category.toUpperCase()}
1107
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6,marginTop:4,marginBottom:2}}>
1108
+ <react_native_1.View style={[bundleStyles.pkgBadge,{backgroundColor:`${e.color}1F`,borderColor:`${e.color}4D`}]}>
1109
+ <react_native_1.Text style={[bundleStyles.pkgBadgeText,{color:e.color}]}>
1110
+ {e.category.toUpperCase()}
2216
1111
  </react_native_1.Text>
2217
1112
  </react_native_1.View>
2218
- <react_native_1.Text style={[bundleStyles.filePath, { flex: 1, marginTop: 0 }]} numberOfLines={1}>
2219
- {pkg.description}
1113
+ <react_native_1.Text style={[bundleStyles.filePath,{flex:1,marginTop:0}]}numberOfLines={1}>
1114
+ {e.description}
2220
1115
  </react_native_1.Text>
2221
1116
  </react_native_1.View>
2222
1117
 
2223
1118
 
2224
- {pkg.isDeprecated && pkg.deprecationReason && (<react_native_1.View style={bundleStyles.deprecationBox}>
2225
- <react_native_1.View style={{
2226
- flexDirection: 'row',
2227
- alignItems: 'center',
2228
- gap: 5,
2229
- }}>
2230
- <NetworkIcons_1.CircleAlertIcon color={AppColors_1.AppColors.errorColor} size={12}/>
1119
+ {e.isDeprecated&&e.deprecationReason&&<react_native_1.View style={bundleStyles.deprecationBox}>
1120
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:5}}>
1121
+ <NetworkIcons_1.CircleAlertIcon color={AppColors_1.AppColors.errorColor}size={12}/>
2231
1122
  <react_native_1.Text style={bundleStyles.deprecationText}>
2232
- {pkg.deprecationReason}
1123
+ {e.deprecationReason}
2233
1124
  </react_native_1.Text>
2234
1125
  </react_native_1.View>
2235
- </react_native_1.View>)}
1126
+ </react_native_1.View>}
2236
1127
 
2237
1128
  <react_native_1.View style={bundleStyles.fileProgressTrack}>
2238
- <react_native_1.View style={[
2239
- bundleStyles.fileProgressBar,
2240
- {
2241
- width: `${pkg.percentage * 2}%`,
2242
- backgroundColor: pkg.isDeprecated
2243
- ? AppColors_1.AppColors.red500
2244
- : pkg.color,
2245
- },
2246
- ]}/>
1129
+ <react_native_1.View style={[bundleStyles.fileProgressBar,{width:`${e.percentage*2}%`,backgroundColor:e.isDeprecated?AppColors_1.AppColors.red500:e.color}]}/>
2247
1130
  </react_native_1.View>
2248
1131
 
2249
1132
 
2250
- <react_native_1.View style={{
2251
- flexDirection: 'row',
2252
- justifyContent: 'space-between',
2253
- alignItems: 'center',
2254
- marginTop: 3,
2255
- }}>
2256
- <react_native_1.View style={{
2257
- flexDirection: 'row',
2258
- alignItems: 'center',
2259
- gap: 8,
2260
- }}>
1133
+ <react_native_1.View style={{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginTop:3}}>
1134
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:8}}>
2261
1135
  <react_native_1.View style={bundleStyles.typeTag}>
2262
1136
  <react_native_1.Text style={bundleStyles.typeTagText}>
2263
- {pkg.type === 'direct'
2264
- ? t('bundle.direct')
2265
- : t('bundle.transitive')}
1137
+ {e.type==="direct"?t("bundle.direct"):t("bundle.transitive")}
2266
1138
  </react_native_1.Text>
2267
1139
  </react_native_1.View>
2268
- {pkg.lastActive && (<react_native_1.View style={{
2269
- flexDirection: 'row',
2270
- alignItems: 'center',
2271
- gap: 4,
2272
- }}>
2273
- <NetworkIcons_1.ClockIcon color={AppColors_1.AppColors.grayTextWeak} size={11}/>
1140
+ {e.lastActive&&<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
1141
+ <NetworkIcons_1.ClockIcon color={AppColors_1.AppColors.grayTextWeak}size={11}/>
2274
1142
  <react_native_1.Text style={bundleStyles.lastActiveText}>
2275
- {pkg.lastActive}
1143
+ {e.lastActive}
2276
1144
  </react_native_1.Text>
2277
- </react_native_1.View>)}
1145
+ </react_native_1.View>}
2278
1146
  </react_native_1.View>
2279
1147
 
2280
- <react_native_1.View style={{
2281
- flexDirection: 'row',
2282
- alignItems: 'center',
2283
- gap: 8,
2284
- }}>
1148
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:8}}>
2285
1149
  <react_native_1.Text style={bundleStyles.fileMetaText}>
2286
- {t('bundle.minified', { size: pkg.sizeKb })}
1150
+ {t("bundle.minified",{size:e.sizeKb})}
2287
1151
  </react_native_1.Text>
2288
- <TouchableScale_1.default accessible={true} accessibilityRole="link" accessibilityLabel={`Open ${pkg.name} on NPM`} accessibilityHint="Opens NPM package page in browser" onPress={() => {
2289
- const url = pkg.npmUrl ||
2290
- `https://www.npmjs.com/package/${pkg.name}`;
2291
- react_native_1.Linking.openURL(url).catch(() => { });
2292
- }} style={bundleStyles.npmLinkBtn}>
1152
+ <TouchableScale_1.default accessible={!0}accessibilityRole="link"accessibilityLabel={`Open ${e.name} on NPM`}accessibilityHint="Opens NPM package page in browser"onPress={()=>{const C=e.npmUrl||`https://www.npmjs.com/package/${e.name}`;react_native_1.Linking.openURL(C).catch(()=>{})}}style={bundleStyles.npmLinkBtn}>
2293
1153
  <react_native_1.Text style={bundleStyles.npmLinkText}>
2294
- {t('bundle.npmLink')}
1154
+ {t("bundle.npmLink")}
2295
1155
  </react_native_1.Text>
2296
1156
  </TouchableScale_1.default>
2297
1157
  </react_native_1.View>
2298
1158
  </react_native_1.View>
2299
- </react_native_1.View>);
2300
- })}
1159
+ </react_native_1.View>})}
2301
1160
  </react_native_1.ScrollView>
2302
1161
 
2303
1162
 
2304
1163
  <react_native_1.View style={bundleStyles.stickyFooterBar}>
2305
- <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
2306
- <NetworkIcons_1.PackageIcon color={AppColors_1.AppColors.purple} size={14}/>
1164
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
1165
+ <NetworkIcons_1.PackageIcon color={AppColors_1.AppColors.purple}size={14}/>
2307
1166
  <react_native_1.Text style={bundleStyles.footerTitle}>
2308
- {t('bundle.dependenciesCount', {
2309
- count: filteredPackages.length,
2310
- })}
1167
+ {t("bundle.dependenciesCount",{count:S.length})}
2311
1168
  </react_native_1.Text>
2312
1169
  </react_native_1.View>
2313
1170
  <react_native_1.Text style={bundleStyles.footerSizeVal}>
2314
- {t('bundle.kbMbValue', {
2315
- kb: packagesTotalKb,
2316
- mb: (packagesTotalKb / 1024).toFixed(2),
2317
- })}
1171
+ {t("bundle.kbMbValue",{kb:W,mb:(W/1024).toFixed(2)})}
2318
1172
  </react_native_1.Text>
2319
1173
  </react_native_1.View>
2320
- </react_native_1.View>)}
1174
+ </react_native_1.View>}
2321
1175
 
2322
1176
 
2323
1177
 
2324
1178
 
2325
- {activeSubTab === 'media' && (<react_native_1.View style={{ flex: 1 }}>
2326
- <react_native_1.ScrollView style={{ flex: 1 }} contentContainerStyle={bundleStyles.contentContainer} keyboardShouldPersistTaps="handled">
1179
+ {r==="media"&&<react_native_1.View style={{flex:1}}>
1180
+ <react_native_1.ScrollView style={{flex:1}}contentContainerStyle={bundleStyles.contentContainer}keyboardShouldPersistTaps="handled">
2327
1181
  <react_native_1.View style={bundleStyles.tipsCard}>
2328
- <react_native_1.View style={{
2329
- flexDirection: 'row',
2330
- alignItems: 'center',
2331
- justifyContent: 'space-between',
2332
- marginBottom: 8,
2333
- }}>
2334
- <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
2335
- <NetworkIcons_1.StorageIcon color={AppColors_1.AppColors.purple} size={18}/>
1182
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginBottom:8}}>
1183
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
1184
+ <NetworkIcons_1.StorageIcon color={AppColors_1.AppColors.purple}size={18}/>
2336
1185
  <react_native_1.Text style={bundleStyles.tipsHeading}>
2337
- {t('bundle.mediaAuditorTitle')}
1186
+ {t("bundle.mediaAuditorTitle")}
2338
1187
  </react_native_1.Text>
2339
1188
  </react_native_1.View>
2340
- <CopyButton_1.default value={() => mediaFiles} label={t('bundle.mediaAssetsJson')}/>
1189
+ <CopyButton_1.default value={()=>V}label={t("bundle.mediaAssetsJson")}/>
2341
1190
  </react_native_1.View>
2342
1191
  <react_native_1.Text style={bundleStyles.tipDesc}>
2343
- {t('bundle.mediaAuditorPrefix')}{' '}
2344
- <react_native_1.Text style={{
2345
- fontFamily: AppFonts_1.AppFonts.interBold,
2346
- color: AppColors_1.AppColors.purple,
2347
- }}>
2348
- {summary.images.pct + summary.fonts.pct}%
2349
- </react_native_1.Text>{' '}
2350
- {t('bundle.mediaAuditorMid', {
2351
- kb: summary.images.kb + summary.fonts.kb,
2352
- })}{' '}
2353
- <react_native_1.Text style={{
2354
- fontFamily: AppFonts_1.AppFonts.interBold,
2355
- color: AppColors_1.AppColors.emerald700,
2356
- }}>
2357
- {t('bundle.mediaSavings', { size: 540 })}
2358
- </react_native_1.Text>{' '}
2359
- {t('bundle.mediaAuditorSuffix')}
1192
+ {t("bundle.mediaAuditorPrefix")}{" "}
1193
+ <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.purple}}>
1194
+ {i.images.pct+i.fonts.pct}%
1195
+ </react_native_1.Text>{" "}
1196
+ {t("bundle.mediaAuditorMid",{kb:i.images.kb+i.fonts.kb})}{" "}
1197
+ <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.emerald700}}>
1198
+ {t("bundle.mediaSavings",{size:540})}
1199
+ </react_native_1.Text>{" "}
1200
+ {t("bundle.mediaAuditorSuffix")}
2360
1201
  </react_native_1.Text>
2361
1202
  </react_native_1.View>
2362
1203
 
2363
1204
  <react_native_1.Text style={bundleStyles.listHeaderCount}>
2364
- {t('bundle.mediaAssetsList', { count: mediaFiles.length })}
1205
+ {t("bundle.mediaAssetsList",{count:V.length})}
2365
1206
  </react_native_1.Text>
2366
1207
 
2367
- {mediaFiles.map((file, index) => (<react_native_1.View key={file.id} style={bundleStyles.fileCard}>
1208
+ {V.map((e,l)=><react_native_1.View key={e.id}style={bundleStyles.fileCard}>
2368
1209
  <react_native_1.View style={bundleStyles.fileCardTop}>
2369
1210
  <react_native_1.View style={bundleStyles.sNoBadge}>
2370
- <react_native_1.Text style={bundleStyles.sNoText}>#{index + 1}</react_native_1.Text>
1211
+ <react_native_1.Text style={bundleStyles.sNoText}>#{l+1}</react_native_1.Text>
2371
1212
  </react_native_1.View>
2372
1213
 
2373
- <MediaPreviewThumbnail file={file}/>
1214
+ <MediaPreviewThumbnail file={e}/>
2374
1215
 
2375
- <react_native_1.View style={{ flex: 1 }}>
2376
- <react_native_1.Text style={bundleStyles.fileName}>{file.name}</react_native_1.Text>
2377
- <react_native_1.Text style={bundleStyles.filePath}>{file.path}</react_native_1.Text>
1216
+ <react_native_1.View style={{flex:1}}>
1217
+ <react_native_1.Text style={bundleStyles.fileName}>{e.name}</react_native_1.Text>
1218
+ <react_native_1.Text style={bundleStyles.filePath}>{e.path}</react_native_1.Text>
2378
1219
  </react_native_1.View>
2379
1220
 
2380
- <react_native_1.View style={{
2381
- flexDirection: 'row',
2382
- alignItems: 'center',
2383
- gap: 6,
2384
- }}>
1221
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
2385
1222
  <react_native_1.View style={bundleStyles.fileSizeBox}>
2386
1223
  <react_native_1.Text style={bundleStyles.fileSizeKb}>
2387
- {t('bundle.fileSizeKb', { size: file.sizeKb })}
1224
+ {t("bundle.fileSizeKb",{size:e.sizeKb})}
2388
1225
  </react_native_1.Text>
2389
1226
  </react_native_1.View>
2390
- <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel={`Download ${file.name}`} accessibilityHint="Downloads media asset file" onPress={() => (0, exports.downloadBundleFile)(file, analysis?.scriptURL)} style={bundleStyles.downloadFileBtn} hitSlop={8}>
2391
- <NetworkIcons_1.DownloadIcon size={14} color={AppColors_1.AppColors.sky500}/>
1227
+ <TouchableScale_1.default accessible={!0}accessibilityRole="button"accessibilityLabel={`Download ${e.name}`}accessibilityHint="Downloads media asset file"onPress={()=>(0,exports.downloadBundleFile)(e,a?.scriptURL)}style={bundleStyles.downloadFileBtn}hitSlop={8}>
1228
+ <NetworkIcons_1.DownloadIcon size={14}color={AppColors_1.AppColors.sky500}/>
2392
1229
  </TouchableScale_1.default>
2393
- <CopyButton_1.default value={() => file} label={t('bundle.mediaItemJson')}/>
1230
+ <CopyButton_1.default value={()=>e}label={t("bundle.mediaItemJson")}/>
2394
1231
  </react_native_1.View>
2395
1232
  </react_native_1.View>
2396
1233
 
2397
1234
  <react_native_1.View style={bundleStyles.fileCardBottom}>
2398
- <react_native_1.Text style={bundleStyles.fileMetaText}>{file.meta}</react_native_1.Text>
2399
- {file.advice && (<react_native_1.View style={[
2400
- bundleStyles.adviceBadge,
2401
- file.status === 'warning' && bundleStyles.adviceWarning,
2402
- file.status === 'optimal' && bundleStyles.adviceOptimal,
2403
- ]}>
2404
- {file.status === 'warning' ? (<NetworkIcons_1.LightbulbIcon color={AppColors_1.AppColors.amber800Warm} size={12}/>) : (<NetworkIcons_1.SparkleIcon color={AppColors_1.AppColors.emerald700} size={12}/>)}
2405
- <react_native_1.Text style={[
2406
- bundleStyles.adviceText,
2407
- file.status === 'warning' && {
2408
- color: AppColors_1.AppColors.amber800Warm,
2409
- },
2410
- file.status === 'optimal' && {
2411
- color: AppColors_1.AppColors.emerald700,
2412
- },
2413
- ]}>
2414
- {file.advice}
1235
+ <react_native_1.Text style={bundleStyles.fileMetaText}>{e.meta}</react_native_1.Text>
1236
+ {e.advice&&<react_native_1.View style={[bundleStyles.adviceBadge,e.status==="warning"&&bundleStyles.adviceWarning,e.status==="optimal"&&bundleStyles.adviceOptimal]}>
1237
+ {e.status==="warning"?<NetworkIcons_1.LightbulbIcon color={AppColors_1.AppColors.amber800Warm}size={12}/>:<NetworkIcons_1.SparkleIcon color={AppColors_1.AppColors.emerald700}size={12}/>}
1238
+ <react_native_1.Text style={[bundleStyles.adviceText,e.status==="warning"&&{color:AppColors_1.AppColors.amber800Warm},e.status==="optimal"&&{color:AppColors_1.AppColors.emerald700}]}>
1239
+ {e.advice}
2415
1240
  </react_native_1.Text>
2416
- </react_native_1.View>)}
1241
+ </react_native_1.View>}
2417
1242
  </react_native_1.View>
2418
- </react_native_1.View>))}
1243
+ </react_native_1.View>)}
2419
1244
  </react_native_1.ScrollView>
2420
1245
 
2421
1246
 
2422
1247
  <react_native_1.View style={bundleStyles.stickyFooterBar}>
2423
- <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
2424
- <NetworkIcons_1.StorageIcon color={AppColors_1.AppColors.purple} size={14}/>
1248
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
1249
+ <NetworkIcons_1.StorageIcon color={AppColors_1.AppColors.purple}size={14}/>
2425
1250
  <react_native_1.Text style={bundleStyles.footerTitle}>
2426
- {t('bundle.mediaAndFonts', { count: mediaFiles.length })}
1251
+ {t("bundle.mediaAndFonts",{count:V.length})}
2427
1252
  </react_native_1.Text>
2428
1253
  </react_native_1.View>
2429
1254
  <react_native_1.Text style={bundleStyles.footerSizeVal}>
2430
- {t('bundle.kbMbValue', {
2431
- kb: mediaTotalKb,
2432
- mb: (mediaTotalKb / 1024).toFixed(2),
2433
- })}
1255
+ {t("bundle.kbMbValue",{kb:H,mb:(H/1024).toFixed(2)})}
2434
1256
  </react_native_1.Text>
2435
1257
  </react_native_1.View>
2436
- </react_native_1.View>)}
1258
+ </react_native_1.View>}
2437
1259
 
2438
1260
 
2439
1261
 
2440
1262
 
2441
- {activeSubTab === 'optimizer' && (<react_native_1.ScrollView style={{ flex: 1 }} contentContainerStyle={bundleStyles.contentContainer} keyboardShouldPersistTaps="handled">
1263
+ {r==="optimizer"&&<react_native_1.ScrollView style={{flex:1}}contentContainerStyle={bundleStyles.contentContainer}keyboardShouldPersistTaps="handled">
2442
1264
  <react_native_1.View style={bundleStyles.tipsCard}>
2443
- <react_native_1.View style={{
2444
- flexDirection: 'row',
2445
- alignItems: 'center',
2446
- justifyContent: 'space-between',
2447
- marginBottom: 12,
2448
- }}>
2449
- <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
2450
- <NetworkIcons_1.CircleAlertIcon color={AppColors_1.AppColors.purple} size={18}/>
1265
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginBottom:12}}>
1266
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
1267
+ <NetworkIcons_1.CircleAlertIcon color={AppColors_1.AppColors.purple}size={18}/>
2451
1268
  <react_native_1.Text style={bundleStyles.tipsHeading}>
2452
- {t('bundle.optimizerTitle')}
1269
+ {t("bundle.optimizerTitle")}
2453
1270
  </react_native_1.Text>
2454
1271
  </react_native_1.View>
2455
- <CopyButton_1.default value={() => [
2456
- t('bundle.optTip1Title'),
2457
- `${t('bundle.optTip2Title')} (${isHermes ? t('bundle.active') : t('bundle.actionRequired')})`,
2458
- t('bundle.optTip3Title'),
2459
- t('bundle.optTip4Title'),
2460
- t('bundle.optTip5Title'),
2461
- ]} label={t('bundle.optimizationChecklist')}/>
1272
+ <CopyButton_1.default value={()=>[t("bundle.optTip1Title"),`${t("bundle.optTip2Title")} (${t(w?"bundle.active":"bundle.actionRequired")})`,t("bundle.optTip3Title"),t("bundle.optTip4Title"),t("bundle.optTip5Title")]}label={t("bundle.optimizationChecklist")}/>
2462
1273
  </react_native_1.View>
2463
1274
 
2464
- {[
2465
- {
2466
- iconType: 'image',
2467
- iconColor: AppColors_1.AppColors.pink500,
2468
- title: t('bundle.optTip1Title'),
2469
- desc: t('bundle.optTip1Desc'),
2470
- badge: t('bundle.highImpact'),
2471
- badgeColor: AppColors_1.AppColors.pink500,
2472
- },
2473
- {
2474
- iconType: 'bolt',
2475
- iconColor: isHermes ? AppColors_1.AppColors.emerald500 : AppColors_1.AppColors.amber500,
2476
- title: t('bundle.optTip2Title'),
2477
- desc: isHermes
2478
- ? t('bundle.optTip2DescActive')
2479
- : t('bundle.optTip2DescInactive'),
2480
- badge: isHermes
2481
- ? t('bundle.active')
2482
- : t('bundle.actionRequired'),
2483
- badgeColor: isHermes
2484
- ? AppColors_1.AppColors.emerald500
2485
- : AppColors_1.AppColors.amber500,
2486
- },
2487
- {
2488
- iconType: 'font',
2489
- iconColor: AppColors_1.AppColors.purple500,
2490
- title: t('bundle.optTip3Title'),
2491
- desc: t('bundle.optTip3Desc'),
2492
- badge: t('bundle.mediumImpact'),
2493
- badgeColor: AppColors_1.AppColors.purple500,
2494
- },
2495
- {
2496
- iconType: 'source',
2497
- iconColor: AppColors_1.AppColors.sky500,
2498
- title: t('bundle.optTip4Title'),
2499
- desc: t('bundle.optTip4Desc'),
2500
- badge: t('bundle.bestPractice'),
2501
- badgeColor: AppColors_1.AppColors.sky500,
2502
- },
2503
- {
2504
- iconType: 'overhead',
2505
- iconColor: AppColors_1.AppColors.indigo500,
2506
- title: t('bundle.optTip5Title'),
2507
- desc: t('bundle.optTip5Desc'),
2508
- badge: t('bundle.bestPractice'),
2509
- badgeColor: AppColors_1.AppColors.indigo500,
2510
- },
2511
- ].map((tip, tIdx) => (<react_native_1.View key={tIdx} style={bundleStyles.tipItem}>
1275
+ {[{iconType:"image",iconColor:AppColors_1.AppColors.pink500,title:t("bundle.optTip1Title"),desc:t("bundle.optTip1Desc"),badge:t("bundle.highImpact"),badgeColor:AppColors_1.AppColors.pink500},{iconType:"bolt",iconColor:w?AppColors_1.AppColors.emerald500:AppColors_1.AppColors.amber500,title:t("bundle.optTip2Title"),desc:t(w?"bundle.optTip2DescActive":"bundle.optTip2DescInactive"),badge:t(w?"bundle.active":"bundle.actionRequired"),badgeColor:w?AppColors_1.AppColors.emerald500:AppColors_1.AppColors.amber500},{iconType:"font",iconColor:AppColors_1.AppColors.purple500,title:t("bundle.optTip3Title"),desc:t("bundle.optTip3Desc"),badge:t("bundle.mediumImpact"),badgeColor:AppColors_1.AppColors.purple500},{iconType:"source",iconColor:AppColors_1.AppColors.sky500,title:t("bundle.optTip4Title"),desc:t("bundle.optTip4Desc"),badge:t("bundle.bestPractice"),badgeColor:AppColors_1.AppColors.sky500},{iconType:"overhead",iconColor:AppColors_1.AppColors.indigo500,title:t("bundle.optTip5Title"),desc:t("bundle.optTip5Desc"),badge:t("bundle.bestPractice"),badgeColor:AppColors_1.AppColors.indigo500}].map((e,l)=><react_native_1.View key={l}style={bundleStyles.tipItem}>
2512
1276
  <react_native_1.View style={bundleStyles.tipItemHeader}>
2513
1277
  <react_native_1.View style={bundleStyles.tipTitleWrap}>
2514
1278
  <react_native_1.View style={bundleStyles.sNoBadge}>
2515
- <react_native_1.Text style={bundleStyles.sNoText}>#{tIdx + 1}</react_native_1.Text>
1279
+ <react_native_1.Text style={bundleStyles.sNoText}>#{l+1}</react_native_1.Text>
2516
1280
  </react_native_1.View>
2517
- <BundleCategoryIcon type={tip.iconType} size={14} color={tip.iconColor}/>
2518
- <react_native_1.Text style={bundleStyles.tipTitle}>{tip.title}</react_native_1.Text>
1281
+ <BundleCategoryIcon type={e.iconType}size={14}color={e.iconColor}/>
1282
+ <react_native_1.Text style={bundleStyles.tipTitle}>{e.title}</react_native_1.Text>
2519
1283
  </react_native_1.View>
2520
1284
  <react_native_1.View style={bundleStyles.tipActionWrap}>
2521
- <react_native_1.View style={[
2522
- bundleStyles.impactBadge,
2523
- {
2524
- backgroundColor: `${tip.badgeColor}18`,
2525
- borderColor: `${tip.badgeColor}40`,
2526
- },
2527
- ]}>
2528
- <react_native_1.Text style={[
2529
- bundleStyles.impactBadgeText,
2530
- { color: tip.badgeColor },
2531
- ]}>
2532
- {tip.badge}
1285
+ <react_native_1.View style={[bundleStyles.impactBadge,{backgroundColor:`${e.badgeColor}18`,borderColor:`${e.badgeColor}40`}]}>
1286
+ <react_native_1.Text style={[bundleStyles.impactBadgeText,{color:e.badgeColor}]}>
1287
+ {e.badge}
2533
1288
  </react_native_1.Text>
2534
1289
  </react_native_1.View>
2535
- <CopyButton_1.default value={() => tip} label={t('bundle.tipDetails')}/>
1290
+ <CopyButton_1.default value={()=>e}label={t("bundle.tipDetails")}/>
2536
1291
  </react_native_1.View>
2537
1292
  </react_native_1.View>
2538
- <react_native_1.Text style={bundleStyles.tipDesc}>{tip.desc}</react_native_1.Text>
2539
- </react_native_1.View>))}
1293
+ <react_native_1.Text style={bundleStyles.tipDesc}>{e.desc}</react_native_1.Text>
1294
+ </react_native_1.View>)}
2540
1295
  </react_native_1.View>
2541
- </react_native_1.ScrollView>)}
2542
- </react_native_1.View>);
2543
- });
2544
- const bundleStyles = react_native_1.StyleSheet.create({
2545
- topTabWrap: {
2546
- backgroundColor: AppColors_1.AppColors.white,
2547
- paddingVertical: 8,
2548
- borderBottomWidth: 1,
2549
- borderBottomColor: AppColors_1.AppColors.dividerColor,
2550
- flexDirection: 'row',
2551
- alignItems: 'center',
2552
- paddingRight: 10,
2553
- },
2554
- reloadButton: {
2555
- padding: 8,
2556
- borderRadius: 20,
2557
- backgroundColor: AppColors_1.AppColors.grayBackground,
2558
- borderWidth: 1,
2559
- borderColor: AppColors_1.AppColors.dividerColor,
2560
- alignItems: 'center',
2561
- justifyContent: 'center',
2562
- marginLeft: 4,
2563
- },
2564
- analyzingContainer: {
2565
- flex: 1,
2566
- alignItems: 'center',
2567
- justifyContent: 'center',
2568
- gap: 8,
2569
- padding: 24,
2570
- },
2571
- analyzingText: {
2572
- fontFamily: AppFonts_1.AppFonts.interBold,
2573
- fontSize: 13,
2574
- color: AppColors_1.AppColors.primaryBlack,
2575
- },
2576
- analyzingHint: {
2577
- fontFamily: AppFonts_1.AppFonts.interRegular,
2578
- fontSize: 11,
2579
- color: AppColors_1.AppColors.grayTextWeak,
2580
- },
2581
- subTabsScroll: {
2582
- paddingHorizontal: 12,
2583
- gap: 8,
2584
- flexDirection: 'row',
2585
- alignItems: 'center',
2586
- },
2587
- subTabPill: {
2588
- flexDirection: 'row',
2589
- alignItems: 'center',
2590
- gap: 6,
2591
- paddingHorizontal: 12,
2592
- paddingVertical: 7,
2593
- borderRadius: 20,
2594
- backgroundColor: AppColors_1.AppColors.grayBackground,
2595
- borderWidth: 1,
2596
- borderColor: AppColors_1.AppColors.dividerColor,
2597
- },
2598
- subTabPillActive: {
2599
- backgroundColor: AppColors_1.AppColors.brandPurple,
2600
- borderColor: AppColors_1.AppColors.brandPurple,
2601
- shadowColor: AppColors_1.AppColors.brandPurple,
2602
- shadowOffset: { width: 0, height: 2 },
2603
- shadowOpacity: 0.2,
2604
- shadowRadius: 3,
2605
- elevation: 2,
2606
- },
2607
- subTabPillText: {
2608
- fontFamily: AppFonts_1.AppFonts.interMedium,
2609
- fontSize: 11.5,
2610
- color: AppColors_1.AppColors.grayTextStrong,
2611
- },
2612
- subTabPillTextActive: {
2613
- fontFamily: AppFonts_1.AppFonts.interBold,
2614
- color: AppColors_1.AppColors.white,
2615
- },
2616
- contentContainer: {
2617
- padding: 16,
2618
- paddingBottom: 40,
2619
- gap: 14,
2620
- },
2621
- heroCard: {
2622
- backgroundColor: AppColors_1.AppColors.white,
2623
- borderRadius: 14,
2624
- padding: 16,
2625
- borderWidth: 1,
2626
- borderColor: AppColors_1.AppColors.dividerColor,
2627
- shadowColor: AppColors_1.AppColors.primaryBlack,
2628
- shadowOffset: { width: 0, height: 2 },
2629
- shadowOpacity: 0.04,
2630
- shadowRadius: 6,
2631
- elevation: 2,
2632
- },
2633
- heroTopRow: {
2634
- flexDirection: 'row',
2635
- alignItems: 'flex-start',
2636
- gap: 12,
2637
- marginBottom: 16,
2638
- },
2639
- heroIconWrap: {
2640
- width: 44,
2641
- height: 44,
2642
- borderRadius: 12,
2643
- backgroundColor: `${AppColors_1.AppColors.brandPurple}12`,
2644
- alignItems: 'center',
2645
- justifyContent: 'center',
2646
- borderWidth: 1,
2647
- borderColor: `${AppColors_1.AppColors.brandPurple}25`,
2648
- },
2649
- heroTitle: {
2650
- fontFamily: AppFonts_1.AppFonts.interBold,
2651
- fontSize: 16,
2652
- color: AppColors_1.AppColors.primaryBlack,
2653
- },
2654
- heroSubtitle: {
2655
- fontFamily: AppFonts_1.AppFonts.interRegular,
2656
- fontSize: 12,
2657
- color: AppColors_1.AppColors.grayTextWeak,
2658
- marginTop: 2,
2659
- },
2660
- metricsGrid: {
2661
- flexDirection: 'row',
2662
- flexWrap: 'wrap',
2663
- gap: 8,
2664
- },
2665
- metricBox: {
2666
- flex: 1,
2667
- minWidth: '45%',
2668
- backgroundColor: AppColors_1.AppColors.grayBackground,
2669
- borderRadius: 10,
2670
- padding: 10,
2671
- borderWidth: 1,
2672
- borderColor: AppColors_1.AppColors.dividerColor,
2673
- },
2674
- metricLabel: {
2675
- fontFamily: AppFonts_1.AppFonts.interBold,
2676
- fontSize: 9.5,
2677
- color: AppColors_1.AppColors.grayTextWeak,
2678
- letterSpacing: 0.5,
2679
- },
2680
- metricValue: {
2681
- fontFamily: AppFonts_1.AppFonts.interBold,
2682
- fontSize: 14,
2683
- color: AppColors_1.AppColors.primaryBlack,
2684
- marginTop: 3,
2685
- },
2686
- metricHint: {
2687
- fontFamily: AppFonts_1.AppFonts.interMedium,
2688
- fontSize: 10.5,
2689
- color: AppColors_1.AppColors.grayText,
2690
- marginTop: 2,
2691
- },
2692
- statusIndicator: {
2693
- width: 8,
2694
- height: 8,
2695
- borderRadius: 4,
2696
- },
2697
- prodPlatformScroll: {
2698
- flexDirection: 'row',
2699
- alignItems: 'center',
2700
- gap: 8,
2701
- paddingBottom: 4,
2702
- },
2703
- prodPlatformBtn: {
2704
- flexDirection: 'row',
2705
- alignItems: 'center',
2706
- paddingVertical: 7,
2707
- paddingHorizontal: 12,
2708
- borderRadius: 20,
2709
- backgroundColor: AppColors_1.AppColors.white,
2710
- borderWidth: 1,
2711
- borderColor: AppColors_1.AppColors.dividerColor,
2712
- gap: 6,
2713
- },
2714
- prodPlatformBtnActive: {
2715
- backgroundColor: AppColors_1.AppColors.brandPurple,
2716
- borderColor: AppColors_1.AppColors.brandPurple,
2717
- shadowColor: AppColors_1.AppColors.brandPurple,
2718
- shadowOffset: { width: 0, height: 2 },
2719
- shadowOpacity: 0.18,
2720
- shadowRadius: 3,
2721
- elevation: 2,
2722
- },
2723
- prodPlatformBtnText: {
2724
- fontFamily: AppFonts_1.AppFonts.interBold,
2725
- fontSize: 11.5,
2726
- color: AppColors_1.AppColors.grayTextStrong,
2727
- },
2728
- prodPlatformBtnTextActive: {
2729
- color: AppColors_1.AppColors.white,
2730
- },
2731
- prodPlatformBadge: {
2732
- paddingHorizontal: 6,
2733
- paddingVertical: 2,
2734
- borderRadius: 10,
2735
- backgroundColor: `${AppColors_1.AppColors.purple}14`,
2736
- },
2737
- prodPlatformBadgeActive: {
2738
- backgroundColor: 'rgba(255, 255, 255, 0.25)',
2739
- },
2740
- prodPlatformBadgeText: {
2741
- fontFamily: AppFonts_1.AppFonts.interBold,
2742
- fontSize: 9.5,
2743
- color: AppColors_1.AppColors.purple,
2744
- },
2745
- prodPlatformBadgeTextActive: {
2746
- color: AppColors_1.AppColors.white,
2747
- },
2748
- sectionCard: {
2749
- backgroundColor: AppColors_1.AppColors.white,
2750
- borderRadius: 14,
2751
- padding: 14,
2752
- borderWidth: 1,
2753
- borderColor: AppColors_1.AppColors.dividerColor,
2754
- overflow: 'hidden',
2755
- },
2756
- sectionHeaderRow: {
2757
- flexDirection: 'row',
2758
- justifyContent: 'space-between',
2759
- alignItems: 'center',
2760
- marginBottom: 10,
2761
- gap: 8,
2762
- },
2763
- sectionTitle: {
2764
- fontFamily: AppFonts_1.AppFonts.interBold,
2765
- fontSize: 13,
2766
- color: AppColors_1.AppColors.primaryBlack,
2767
- },
2768
- sectionSub: {
2769
- fontFamily: AppFonts_1.AppFonts.interMedium,
2770
- fontSize: 11,
2771
- color: AppColors_1.AppColors.grayTextWeak,
2772
- },
2773
- treemapBar: {
2774
- flexDirection: 'row',
2775
- borderRadius: 6,
2776
- overflow: 'hidden',
2777
- height: 16,
2778
- marginBottom: 12,
2779
- backgroundColor: AppColors_1.AppColors.slate200,
2780
- },
2781
- prodTreemapBar: {
2782
- flexDirection: 'row',
2783
- borderRadius: 6,
2784
- overflow: 'hidden',
2785
- height: 16,
2786
- marginBottom: 12,
2787
- backgroundColor: AppColors_1.AppColors.slate200,
2788
- },
2789
- legendGrid: {
2790
- flexDirection: 'row',
2791
- flexWrap: 'wrap',
2792
- gap: 8,
2793
- },
2794
- legendItem: {
2795
- flexDirection: 'row',
2796
- alignItems: 'center',
2797
- gap: 6,
2798
- paddingHorizontal: 8,
2799
- paddingVertical: 5,
2800
- borderRadius: 8,
2801
- backgroundColor: `${AppColors_1.AppColors.slate200}40`,
2802
- borderWidth: 1,
2803
- borderColor: `${AppColors_1.AppColors.dividerColor}`,
2804
- flexShrink: 0,
2805
- },
2806
- legendText: {
2807
- fontFamily: AppFonts_1.AppFonts.interMedium,
2808
- fontSize: 11,
2809
- color: AppColors_1.AppColors.grayTextStrong,
2810
- },
2811
- legendVal: {
2812
- fontFamily: AppFonts_1.AppFonts.interBold,
2813
- color: AppColors_1.AppColors.primaryBlack,
2814
- },
2815
- subsystemCard: {
2816
- backgroundColor: AppColors_1.AppColors.white,
2817
- borderRadius: 12,
2818
- padding: 12,
2819
- marginBottom: 8,
2820
- borderWidth: 1,
2821
- borderColor: AppColors_1.AppColors.dividerColor,
2822
- gap: 8,
2823
- },
2824
- subsystemHeader: {
2825
- flexDirection: 'row',
2826
- alignItems: 'center',
2827
- justifyContent: 'space-between',
2828
- gap: 8,
2829
- },
2830
- subsystemTitle: {
2831
- fontFamily: AppFonts_1.AppFonts.interBold,
2832
- fontSize: 12.5,
2833
- color: AppColors_1.AppColors.primaryBlack,
2834
- },
2835
- subsystemBadge: {
2836
- paddingHorizontal: 6,
2837
- paddingVertical: 2,
2838
- borderRadius: 6,
2839
- },
2840
- subsystemBadgeText: {
2841
- fontFamily: AppFonts_1.AppFonts.interBold,
2842
- fontSize: 10,
2843
- },
2844
- subsystemGrid: {
2845
- flexDirection: 'row',
2846
- flexWrap: 'wrap',
2847
- gap: 6,
2848
- },
2849
- subsystemItem: {
2850
- flexDirection: 'row',
2851
- alignItems: 'center',
2852
- gap: 5,
2853
- paddingHorizontal: 8,
2854
- paddingVertical: 4,
2855
- borderRadius: 6,
2856
- backgroundColor: AppColors_1.AppColors.grayBackground,
2857
- borderWidth: 1,
2858
- borderColor: AppColors_1.AppColors.dividerColor,
2859
- },
2860
- subsystemItemText: {
2861
- fontFamily: AppFonts_1.AppFonts.interMedium,
2862
- fontSize: 10.5,
2863
- color: AppColors_1.AppColors.grayTextStrong,
2864
- },
2865
- subsystemItemVal: {
2866
- fontFamily: AppFonts_1.AppFonts.interBold,
2867
- color: AppColors_1.AppColors.primaryBlack,
2868
- },
2869
- catRowCard: {
2870
- backgroundColor: AppColors_1.AppColors.grayBackground,
2871
- borderRadius: 12,
2872
- padding: 12,
2873
- marginBottom: 8,
2874
- borderWidth: 1,
2875
- borderColor: AppColors_1.AppColors.dividerColor,
2876
- gap: 8,
2877
- },
2878
- catRowTop: {
2879
- flexDirection: 'row',
2880
- alignItems: 'flex-start',
2881
- gap: 10,
2882
- },
2883
- catIconBox: {
2884
- width: 36,
2885
- height: 36,
2886
- borderRadius: 10,
2887
- borderWidth: 1,
2888
- alignItems: 'center',
2889
- justifyContent: 'center',
2890
- flexShrink: 0,
2891
- },
2892
- catRowTitleWrap: {
2893
- flex: 1,
2894
- minWidth: 0,
2895
- gap: 2,
2896
- },
2897
- catRowTitle: {
2898
- fontFamily: AppFonts_1.AppFonts.interBold,
2899
- fontSize: 13,
2900
- color: AppColors_1.AppColors.primaryBlack,
2901
- flex: 1,
2902
- },
2903
- catRowDesc: {
2904
- fontFamily: AppFonts_1.AppFonts.interRegular,
2905
- fontSize: 10.5,
2906
- color: AppColors_1.AppColors.grayTextWeak,
2907
- lineHeight: 14.5,
2908
- },
2909
- catRowSize: {
2910
- fontFamily: AppFonts_1.AppFonts.interBold,
2911
- fontSize: 12.5,
2912
- color: AppColors_1.AppColors.primaryBlack,
2913
- },
2914
- catRowRight: {
2915
- alignItems: 'flex-end',
2916
- justifyContent: 'center',
2917
- flexShrink: 0,
2918
- minWidth: 64,
2919
- },
2920
- catRowPct: {
2921
- fontFamily: AppFonts_1.AppFonts.interMedium,
2922
- fontSize: 10,
2923
- color: AppColors_1.AppColors.grayTextWeak,
2924
- },
2925
- catPctPill: {
2926
- paddingHorizontal: 5.5,
2927
- paddingVertical: 1.5,
2928
- borderRadius: 5,
2929
- },
2930
- catPctText: {
2931
- fontFamily: AppFonts_1.AppFonts.interBold,
2932
- fontSize: 9.5,
2933
- },
2934
- catProgressTrack: {
2935
- height: 5,
2936
- borderRadius: 2.5,
2937
- backgroundColor: `${AppColors_1.AppColors.slate200}`,
2938
- overflow: 'hidden',
2939
- marginTop: 2,
2940
- },
2941
- catProgressBar: {
2942
- height: '100%',
2943
- borderRadius: 2.5,
2944
- },
2945
- filterContainer: {
2946
- backgroundColor: AppColors_1.AppColors.white,
2947
- borderRadius: 12,
2948
- padding: 10,
2949
- marginHorizontal: 16,
2950
- marginTop: 12,
2951
- borderWidth: 1,
2952
- borderColor: AppColors_1.AppColors.dividerColor,
2953
- gap: 8,
2954
- },
2955
- searchRow: {
2956
- flexDirection: 'row',
2957
- alignItems: 'center',
2958
- backgroundColor: AppColors_1.AppColors.grayBackground,
2959
- borderRadius: 8,
2960
- paddingHorizontal: 10,
2961
- height: 36,
2962
- gap: 8,
2963
- },
2964
- searchInput: {
2965
- flex: 1,
2966
- fontFamily: AppFonts_1.AppFonts.interRegular,
2967
- fontSize: 12,
2968
- color: AppColors_1.AppColors.primaryBlack,
2969
- padding: 0,
2970
- },
2971
- categoryPillsScroll: {
2972
- gap: 6,
2973
- paddingVertical: 2,
2974
- },
2975
- catPill: {
2976
- flexDirection: 'row',
2977
- alignItems: 'center',
2978
- gap: 4,
2979
- paddingHorizontal: 10,
2980
- paddingVertical: 5,
2981
- borderRadius: 16,
2982
- backgroundColor: AppColors_1.AppColors.grayBackground,
2983
- borderWidth: 1,
2984
- borderColor: AppColors_1.AppColors.dividerColor,
2985
- },
2986
- catPillActive: {
2987
- backgroundColor: AppColors_1.AppColors.brandPurple,
2988
- borderColor: AppColors_1.AppColors.brandPurple,
2989
- },
2990
- catPillText: {
2991
- fontFamily: AppFonts_1.AppFonts.interMedium,
2992
- fontSize: 11,
2993
- color: AppColors_1.AppColors.grayTextStrong,
2994
- },
2995
- catPillTextActive: {
2996
- fontFamily: AppFonts_1.AppFonts.interBold,
2997
- color: AppColors_1.AppColors.white,
2998
- },
2999
- listHeaderCount: {
3000
- fontFamily: AppFonts_1.AppFonts.interMedium,
3001
- fontSize: 11,
3002
- color: AppColors_1.AppColors.grayTextWeak,
3003
- paddingHorizontal: 4,
3004
- },
3005
- treeHeaderRow: {
3006
- flexDirection: 'row',
3007
- alignItems: 'center',
3008
- justifyContent: 'space-between',
3009
- paddingHorizontal: 2,
3010
- marginBottom: 6,
3011
- },
3012
- viewModeToggleGroup: {
3013
- flexDirection: 'row',
3014
- backgroundColor: AppColors_1.AppColors.grayBackground,
3015
- borderRadius: 8,
3016
- padding: 2,
3017
- borderWidth: 1,
3018
- borderColor: AppColors_1.AppColors.dividerColor,
3019
- },
3020
- viewModeBtn: {
3021
- paddingHorizontal: 10,
3022
- paddingVertical: 5,
3023
- borderRadius: 6,
3024
- },
3025
- viewModeBtnActive: {
3026
- backgroundColor: AppColors_1.AppColors.brandPurple,
3027
- shadowColor: AppColors_1.AppColors.brandPurple,
3028
- shadowOffset: { width: 0, height: 1 },
3029
- shadowOpacity: 0.2,
3030
- shadowRadius: 2,
3031
- elevation: 2,
3032
- },
3033
- viewModeBtnText: {
3034
- fontFamily: AppFonts_1.AppFonts.interMedium,
3035
- fontSize: 11,
3036
- color: AppColors_1.AppColors.grayTextStrong,
3037
- },
3038
- viewModeBtnTextActive: {
3039
- fontFamily: AppFonts_1.AppFonts.interBold,
3040
- color: AppColors_1.AppColors.white,
3041
- },
3042
- treeActionLink: {
3043
- fontFamily: AppFonts_1.AppFonts.interBold,
3044
- fontSize: 11.5,
3045
- color: AppColors_1.AppColors.purple,
3046
- },
3047
- treeRootCard: {
3048
- backgroundColor: AppColors_1.AppColors.white,
3049
- borderRadius: 12,
3050
- borderWidth: 1,
3051
- borderColor: AppColors_1.AppColors.dividerColor,
3052
- overflow: 'hidden',
3053
- marginBottom: 16,
3054
- },
3055
- treeFolderBlock: {
3056
- borderBottomWidth: react_native_1.StyleSheet.hairlineWidth,
3057
- borderBottomColor: AppColors_1.AppColors.dividerColor,
3058
- },
3059
- treeFolderRow: {
3060
- flexDirection: 'row',
3061
- alignItems: 'center',
3062
- justifyContent: 'space-between',
3063
- paddingVertical: 8,
3064
- paddingRight: 10,
3065
- backgroundColor: `${AppColors_1.AppColors.purple}06`,
3066
- },
3067
- treeRowLeft: {
3068
- flexDirection: 'row',
3069
- alignItems: 'center',
3070
- gap: 6,
3071
- flex: 1,
3072
- marginRight: 6,
3073
- },
3074
- treeRowRight: {
3075
- flexDirection: 'row',
3076
- alignItems: 'center',
3077
- gap: 6,
3078
- },
3079
- treeChevron: {
3080
- fontSize: 12,
3081
- color: AppColors_1.AppColors.purple,
3082
- fontFamily: AppFonts_1.AppFonts.interBold,
3083
- width: 12,
3084
- textAlign: 'center',
3085
- },
3086
- treeFolderName: {
3087
- fontFamily: AppFonts_1.AppFonts.interBold,
3088
- fontSize: 12.5,
3089
- color: AppColors_1.AppColors.primaryBlack,
3090
- },
3091
- treeCountBadge: {
3092
- paddingHorizontal: 5,
3093
- paddingVertical: 1,
3094
- borderRadius: 8,
3095
- backgroundColor: `${AppColors_1.AppColors.purple}14`,
3096
- },
3097
- treeCountBadgeText: {
3098
- fontFamily: AppFonts_1.AppFonts.interMedium,
3099
- fontSize: 9.5,
3100
- color: AppColors_1.AppColors.purple,
3101
- },
3102
- treeFolderSize: {
3103
- fontFamily: AppFonts_1.AppFonts.interMedium,
3104
- fontSize: 11,
3105
- color: AppColors_1.AppColors.grayTextStrong,
3106
- },
3107
- treeChildrenContainer: {
3108
- backgroundColor: AppColors_1.AppColors.white,
3109
- },
3110
- treeFileRow: {
3111
- flexDirection: 'row',
3112
- alignItems: 'center',
3113
- justifyContent: 'space-between',
3114
- paddingVertical: 6,
3115
- paddingRight: 10,
3116
- borderBottomWidth: react_native_1.StyleSheet.hairlineWidth,
3117
- borderBottomColor: `${AppColors_1.AppColors.dividerColor}80`,
3118
- backgroundColor: AppColors_1.AppColors.white,
3119
- },
3120
- treeFileRowUnused: {
3121
- backgroundColor: `${AppColors_1.AppColors.red500}06`,
3122
- },
3123
- treeBranchGuide: {
3124
- width: 12,
3125
- alignItems: 'center',
3126
- justifyContent: 'center',
3127
- },
3128
- treeBranchGuideText: {
3129
- fontFamily: AppFonts_1.AppFonts.interRegular,
3130
- fontSize: 11,
3131
- color: AppColors_1.AppColors.dividerColor,
3132
- },
3133
- treeFileName: {
3134
- fontFamily: AppFonts_1.AppFonts.interMedium,
3135
- fontSize: 12,
3136
- color: AppColors_1.AppColors.primaryBlack,
3137
- flexShrink: 1,
3138
- },
3139
- treeUnusedPill: {
3140
- paddingHorizontal: 5,
3141
- paddingVertical: 1,
3142
- borderRadius: 4,
3143
- backgroundColor: `${AppColors_1.AppColors.red500}18`,
3144
- },
3145
- treeUnusedPillText: {
3146
- fontFamily: AppFonts_1.AppFonts.interBold,
3147
- fontSize: 9,
3148
- color: AppColors_1.AppColors.red600,
3149
- },
3150
- treeFileSizeGroup: {
3151
- alignItems: 'flex-end',
3152
- },
3153
- treeFileSizeText: {
3154
- fontFamily: AppFonts_1.AppFonts.interMedium,
3155
- fontSize: 11,
3156
- color: AppColors_1.AppColors.primaryBlack,
3157
- },
3158
- treeFilePctText: {
3159
- fontFamily: AppFonts_1.AppFonts.interRegular,
3160
- fontSize: 9,
3161
- color: AppColors_1.AppColors.grayTextWeak,
3162
- },
3163
- fileCard: {
3164
- backgroundColor: AppColors_1.AppColors.white,
3165
- borderRadius: 12,
3166
- padding: 12,
3167
- borderWidth: 1,
3168
- borderColor: AppColors_1.AppColors.dividerColor,
3169
- gap: 6,
3170
- marginBottom: 8,
3171
- },
3172
- fileCardTop: {
3173
- flexDirection: 'row',
3174
- alignItems: 'center',
3175
- gap: 8,
3176
- },
3177
- sNoBadge: {
3178
- paddingHorizontal: 6,
3179
- paddingVertical: 2,
3180
- borderRadius: 4,
3181
- backgroundColor: `${AppColors_1.AppColors.purple}14`,
3182
- borderWidth: 1,
3183
- borderColor: `${AppColors_1.AppColors.purple}30`,
3184
- minWidth: 26,
3185
- alignItems: 'center',
3186
- justifyContent: 'center',
3187
- },
3188
- sNoText: {
3189
- fontFamily: AppFonts_1.AppFonts.interBold,
3190
- fontSize: 10,
3191
- color: AppColors_1.AppColors.purple,
3192
- },
3193
- extChip: {
3194
- paddingHorizontal: 6,
3195
- paddingVertical: 3,
3196
- borderRadius: 5,
3197
- borderWidth: 1,
3198
- },
3199
- extChipText: {
3200
- fontFamily: AppFonts_1.AppFonts.interBold,
3201
- fontSize: 10,
3202
- letterSpacing: 0.4,
3203
- },
3204
- pkgBadge: {
3205
- paddingHorizontal: 6,
3206
- paddingVertical: 3,
3207
- borderRadius: 5,
3208
- borderWidth: 1,
3209
- },
3210
- pkgBadgeText: {
3211
- fontFamily: AppFonts_1.AppFonts.interBold,
3212
- fontSize: 9,
3213
- letterSpacing: 0.4,
3214
- },
3215
- pkgLogoWrap: {
3216
- borderRadius: 7,
3217
- borderWidth: 1,
3218
- alignItems: 'center',
3219
- justifyContent: 'center',
3220
- backgroundColor: AppColors_1.AppColors.white,
3221
- borderColor: AppColors_1.AppColors.dividerColor,
3222
- overflow: 'hidden',
3223
- },
3224
- pkgLogoFallbackText: {
3225
- fontFamily: AppFonts_1.AppFonts.interBold,
3226
- },
3227
- mediaThumbWrap: {
3228
- width: 32,
3229
- height: 32,
3230
- borderRadius: 6,
3231
- overflow: 'hidden',
3232
- backgroundColor: AppColors_1.AppColors.grayBackground,
3233
- borderWidth: 1,
3234
- borderColor: AppColors_1.AppColors.dividerColor,
3235
- },
3236
- mediaThumbImg: {
3237
- width: '100%',
3238
- height: '100%',
3239
- },
3240
- fileName: {
3241
- fontFamily: AppFonts_1.AppFonts.interBold,
3242
- fontSize: 12.5,
3243
- color: AppColors_1.AppColors.primaryBlack,
3244
- },
3245
- versionPill: {
3246
- paddingHorizontal: 5,
3247
- paddingVertical: 1,
3248
- borderRadius: 4,
3249
- backgroundColor: `${AppColors_1.AppColors.purple}14`,
3250
- borderWidth: 1,
3251
- borderColor: `${AppColors_1.AppColors.purple}26`,
3252
- },
3253
- versionPillText: {
3254
- fontFamily: AppFonts_1.AppFonts.interMedium,
3255
- fontSize: 10,
3256
- color: AppColors_1.AppColors.purple,
3257
- },
3258
- pkgVersion: {
3259
- fontFamily: AppFonts_1.AppFonts.interMedium,
3260
- fontSize: 11,
3261
- color: AppColors_1.AppColors.grayTextWeak,
3262
- },
3263
- filePath: {
3264
- fontFamily: AppFonts_1.AppFonts.interRegular,
3265
- fontSize: 10.5,
3266
- color: AppColors_1.AppColors.grayTextWeak,
3267
- marginTop: 1,
3268
- },
3269
- fileSizeBox: {
3270
- alignItems: 'flex-end',
3271
- },
3272
- downloadFileBtn: {
3273
- padding: 6,
3274
- borderRadius: 6,
3275
- backgroundColor: `${AppColors_1.AppColors.sky500}14`,
3276
- alignItems: 'center',
3277
- justifyContent: 'center',
3278
- borderWidth: 1,
3279
- borderColor: `${AppColors_1.AppColors.sky500}28`,
3280
- },
3281
- treeActionBtn: {
3282
- padding: 4,
3283
- borderRadius: 4,
3284
- backgroundColor: `${AppColors_1.AppColors.sky500}14`,
3285
- alignItems: 'center',
3286
- justifyContent: 'center',
3287
- borderWidth: 1,
3288
- borderColor: `${AppColors_1.AppColors.sky500}28`,
3289
- },
3290
- fileSizeKb: {
3291
- fontFamily: AppFonts_1.AppFonts.interBold,
3292
- fontSize: 12,
3293
- color: AppColors_1.AppColors.primaryBlack,
3294
- },
3295
- filePercent: {
3296
- fontFamily: AppFonts_1.AppFonts.interMedium,
3297
- fontSize: 10,
3298
- color: AppColors_1.AppColors.grayTextWeak,
3299
- },
3300
- fileProgressTrack: {
3301
- height: 4,
3302
- borderRadius: 2,
3303
- backgroundColor: AppColors_1.AppColors.grayBackground,
3304
- overflow: 'hidden',
3305
- marginVertical: 2,
3306
- },
3307
- fileProgressBar: {
3308
- height: '100%',
3309
- borderRadius: 2,
3310
- },
3311
- fileCardBottom: {
3312
- gap: 4,
3313
- },
3314
- fileMetaText: {
3315
- fontFamily: AppFonts_1.AppFonts.interRegular,
3316
- fontSize: 10.5,
3317
- color: AppColors_1.AppColors.grayTextWeak,
3318
- },
3319
- typeTag: {
3320
- backgroundColor: AppColors_1.AppColors.grayBackground,
3321
- paddingHorizontal: 6,
3322
- paddingVertical: 2,
3323
- borderRadius: 4,
3324
- borderWidth: 1,
3325
- borderColor: AppColors_1.AppColors.dividerColor,
3326
- },
3327
- typeTagText: {
3328
- fontFamily: AppFonts_1.AppFonts.interMedium,
3329
- fontSize: 9.5,
3330
- color: AppColors_1.AppColors.grayText,
3331
- },
3332
- npmLinkBtn: {
3333
- flexDirection: 'row',
3334
- alignItems: 'center',
3335
- gap: 3,
3336
- paddingHorizontal: 7,
3337
- paddingVertical: 2,
3338
- borderRadius: 5,
3339
- backgroundColor: AppColors_1.AppColors.npmRedTint,
3340
- borderWidth: 1,
3341
- borderColor: AppColors_1.AppColors.npmRedBorder,
3342
- },
3343
- npmLinkText: {
3344
- fontFamily: AppFonts_1.AppFonts.interBold,
3345
- fontSize: 9.5,
3346
- color: AppColors_1.AppColors.npmRed,
3347
- },
3348
- deprecatedBadge: {
3349
- paddingHorizontal: 6,
3350
- paddingVertical: 1.5,
3351
- borderRadius: 4,
3352
- backgroundColor: AppColors_1.AppColors.red100,
3353
- borderWidth: 1,
3354
- borderColor: AppColors_1.AppColors.errorBorder,
3355
- },
3356
- deprecatedBadgeText: {
3357
- fontFamily: AppFonts_1.AppFonts.interBold,
3358
- fontSize: 9,
3359
- color: AppColors_1.AppColors.red600,
3360
- letterSpacing: 0.3,
3361
- },
3362
- updateBadge: {
3363
- paddingHorizontal: 6,
3364
- paddingVertical: 1.5,
3365
- borderRadius: 4,
3366
- backgroundColor: AppColors_1.AppColors.green100,
3367
- borderWidth: 1,
3368
- borderColor: AppColors_1.AppColors.greenBorder,
3369
- },
3370
- updateBadgeText: {
3371
- fontFamily: AppFonts_1.AppFonts.interBold,
3372
- fontSize: 9,
3373
- color: AppColors_1.AppColors.emerald700,
3374
- },
3375
- lastActiveText: {
3376
- fontFamily: AppFonts_1.AppFonts.interRegular,
3377
- fontSize: 10,
3378
- color: AppColors_1.AppColors.grayTextWeak,
3379
- },
3380
- deprecationBox: {
3381
- backgroundColor: AppColors_1.AppColors.errorCardBg,
3382
- borderRadius: 6,
3383
- paddingHorizontal: 8,
3384
- paddingVertical: 5,
3385
- borderWidth: 1,
3386
- borderColor: AppColors_1.AppColors.errorBorder,
3387
- marginTop: 3,
3388
- },
3389
- deprecationText: {
3390
- fontFamily: AppFonts_1.AppFonts.interMedium,
3391
- fontSize: 10.5,
3392
- color: AppColors_1.AppColors.rose700,
3393
- lineHeight: 14,
3394
- },
3395
- unusedBadge: {
3396
- paddingHorizontal: 6,
3397
- paddingVertical: 1.5,
3398
- borderRadius: 4,
3399
- backgroundColor: AppColors_1.AppColors.red100,
3400
- borderWidth: 1,
3401
- borderColor: AppColors_1.AppColors.errorBorder,
3402
- },
3403
- unusedBadgeText: {
3404
- fontFamily: AppFonts_1.AppFonts.interBold,
3405
- fontSize: 9.5,
3406
- color: AppColors_1.AppColors.red600,
3407
- },
3408
- consumedBadge: {
3409
- paddingHorizontal: 6,
3410
- paddingVertical: 1.5,
3411
- borderRadius: 4,
3412
- backgroundColor: AppColors_1.AppColors.green100,
3413
- borderWidth: 1,
3414
- borderColor: AppColors_1.AppColors.greenBorder,
3415
- },
3416
- consumedBadgeText: {
3417
- fontFamily: AppFonts_1.AppFonts.interBold,
3418
- fontSize: 9.5,
3419
- color: AppColors_1.AppColors.emerald600,
3420
- },
3421
- treeFolderChevronWrap: {
3422
- width: 18,
3423
- height: 18,
3424
- borderRadius: 9,
3425
- backgroundColor: `${AppColors_1.AppColors.purple}14`,
3426
- alignItems: 'center',
3427
- justifyContent: 'center',
3428
- },
3429
- treeFileCardUnused: {
3430
- borderColor: AppColors_1.AppColors.errorBorder,
3431
- backgroundColor: AppColors_1.AppColors.red50,
3432
- },
3433
- adviceUnused: {
3434
- backgroundColor: AppColors_1.AppColors.errorCardBg,
3435
- borderWidth: 1,
3436
- borderColor: AppColors_1.AppColors.errorBorder,
3437
- },
3438
- liveWarningCard: {
3439
- flexDirection: 'row',
3440
- alignItems: 'center',
3441
- backgroundColor: AppColors_1.AppColors.amber100,
3442
- borderWidth: 1,
3443
- borderColor: AppColors_1.AppColors.amber200,
3444
- borderRadius: 10,
3445
- padding: 12,
3446
- marginBottom: 12,
3447
- },
3448
- liveWarningTitle: {
3449
- fontFamily: AppFonts_1.AppFonts.interBold,
3450
- fontSize: 12,
3451
- color: AppColors_1.AppColors.amber800Warm,
3452
- marginBottom: 2,
3453
- },
3454
- liveWarningDesc: {
3455
- fontFamily: AppFonts_1.AppFonts.interRegular,
3456
- fontSize: 10.5,
3457
- lineHeight: 14,
3458
- color: AppColors_1.AppColors.amber800Warm,
3459
- },
3460
- adviceBadge: {
3461
- flexDirection: 'row',
3462
- alignItems: 'center',
3463
- paddingHorizontal: 8,
3464
- paddingVertical: 5,
3465
- borderRadius: 6,
3466
- marginTop: 4,
3467
- gap: 6,
3468
- },
3469
- adviceWarning: {
3470
- backgroundColor: AppColors_1.AppColors.amber100,
3471
- borderWidth: 1,
3472
- borderColor: AppColors_1.AppColors.amber200,
3473
- },
3474
- adviceOptimal: {
3475
- backgroundColor: AppColors_1.AppColors.green100,
3476
- borderWidth: 1,
3477
- borderColor: AppColors_1.AppColors.greenBorder,
3478
- },
3479
- adviceText: {
3480
- fontFamily: AppFonts_1.AppFonts.interMedium,
3481
- fontSize: 10.5,
3482
- lineHeight: 14,
3483
- flex: 1,
3484
- },
3485
- impactBadge: {
3486
- paddingHorizontal: 6,
3487
- paddingVertical: 2,
3488
- borderRadius: 4,
3489
- borderWidth: 1,
3490
- },
3491
- impactBadgeText: {
3492
- fontFamily: AppFonts_1.AppFonts.interBold,
3493
- fontSize: 9,
3494
- },
3495
- searchHighlight: {
3496
- backgroundColor: AppColors_1.AppColors.yellow200,
3497
- color: AppColors_1.AppColors.yellow800,
3498
- fontFamily: AppFonts_1.AppFonts.interBold,
3499
- },
3500
- tipsCard: {
3501
- backgroundColor: AppColors_1.AppColors.purple50,
3502
- borderRadius: 14,
3503
- padding: 14,
3504
- borderWidth: 1,
3505
- borderColor: AppColors_1.AppColors.purple200,
3506
- },
3507
- tipsHeading: {
3508
- fontFamily: AppFonts_1.AppFonts.interBold,
3509
- fontSize: 13.5,
3510
- color: AppColors_1.AppColors.purple800,
3511
- },
3512
- totalSummaryCard: {
3513
- marginTop: 10,
3514
- backgroundColor: `${AppColors_1.AppColors.brandPurple}0B`,
3515
- borderRadius: 12,
3516
- padding: 12,
3517
- borderWidth: 1,
3518
- borderColor: `${AppColors_1.AppColors.brandPurple}25`,
3519
- gap: 8,
3520
- },
3521
- totalSummaryRow: {
3522
- flexDirection: 'row',
3523
- justifyContent: 'space-between',
3524
- alignItems: 'center',
3525
- },
3526
- totalSummaryLabelWrap: {
3527
- flexDirection: 'row',
3528
- alignItems: 'center',
3529
- gap: 8,
3530
- },
3531
- totalIconBadge: {
3532
- width: 32,
3533
- height: 32,
3534
- borderRadius: 8,
3535
- backgroundColor: `${AppColors_1.AppColors.brandPurple}15`,
3536
- alignItems: 'center',
3537
- justifyContent: 'center',
3538
- },
3539
- totalSummaryLabel: {
3540
- fontFamily: AppFonts_1.AppFonts.interBold,
3541
- fontSize: 11.5,
3542
- color: AppColors_1.AppColors.brandPurple,
3543
- letterSpacing: 0.6,
3544
- },
3545
- totalSummarySub: {
3546
- fontFamily: AppFonts_1.AppFonts.interRegular,
3547
- fontSize: 10,
3548
- color: AppColors_1.AppColors.grayTextWeak,
3549
- marginTop: 1,
3550
- },
3551
- totalSummaryValue: {
3552
- fontFamily: AppFonts_1.AppFonts.interBold,
3553
- fontSize: 15,
3554
- color: AppColors_1.AppColors.primaryBlack,
3555
- },
3556
- totalSummaryKb: {
3557
- fontFamily: AppFonts_1.AppFonts.interMedium,
3558
- fontSize: 10,
3559
- color: AppColors_1.AppColors.grayTextWeak,
3560
- },
3561
- totalFormulaGrid: {
3562
- flexDirection: 'row',
3563
- flexWrap: 'wrap',
3564
- gap: 6,
3565
- paddingTop: 6,
3566
- borderTopWidth: 1,
3567
- borderTopColor: `${AppColors_1.AppColors.brandPurple}15`,
3568
- },
3569
- totalChip: {
3570
- flexDirection: 'row',
3571
- alignItems: 'center',
3572
- gap: 4,
3573
- backgroundColor: AppColors_1.AppColors.white,
3574
- borderRadius: 6,
3575
- paddingHorizontal: 6,
3576
- paddingVertical: 3,
3577
- borderWidth: 1,
3578
- borderColor: AppColors_1.AppColors.dividerColor,
3579
- },
3580
- totalDot: {
3581
- width: 6,
3582
- height: 6,
3583
- borderRadius: 3,
3584
- },
3585
- totalChipText: {
3586
- fontFamily: AppFonts_1.AppFonts.interBold,
3587
- fontSize: 9.5,
3588
- color: AppColors_1.AppColors.primaryBlack,
3589
- },
3590
- totalSummaryFormula: {
3591
- fontFamily: AppFonts_1.AppFonts.interRegular,
3592
- fontSize: 10.5,
3593
- color: AppColors_1.AppColors.grayText,
3594
- lineHeight: 15,
3595
- },
3596
- stickyFooterBar: {
3597
- flexDirection: 'row',
3598
- justifyContent: 'space-between',
3599
- alignItems: 'center',
3600
- backgroundColor: AppColors_1.AppColors.white,
3601
- paddingHorizontal: 16,
3602
- paddingTop: 10,
3603
- paddingBottom: react_native_1.Platform.OS === 'ios' ? 24 : 12,
3604
- borderTopWidth: 1,
3605
- borderTopColor: AppColors_1.AppColors.dividerColor,
3606
- shadowColor: AppColors_1.AppColors.primaryBlack,
3607
- shadowOffset: { width: 0, height: -2 },
3608
- shadowOpacity: 0.05,
3609
- shadowRadius: 4,
3610
- elevation: 3,
3611
- },
3612
- footerTitle: {
3613
- fontFamily: AppFonts_1.AppFonts.interBold,
3614
- fontSize: 12,
3615
- color: AppColors_1.AppColors.primaryBlack,
3616
- },
3617
- footerSizeVal: {
3618
- fontFamily: AppFonts_1.AppFonts.interBold,
3619
- fontSize: 12.5,
3620
- color: AppColors_1.AppColors.purple,
3621
- },
3622
- tipItem: {
3623
- marginBottom: 10,
3624
- backgroundColor: AppColors_1.AppColors.white,
3625
- padding: 12,
3626
- borderRadius: 10,
3627
- borderWidth: 1,
3628
- borderColor: AppColors_1.AppColors.purple200,
3629
- gap: 6,
3630
- },
3631
- tipItemHeader: {
3632
- flexDirection: 'row',
3633
- alignItems: 'flex-start',
3634
- justifyContent: 'space-between',
3635
- gap: 8,
3636
- },
3637
- tipTitleWrap: {
3638
- flexDirection: 'row',
3639
- alignItems: 'center',
3640
- gap: 6,
3641
- flex: 1,
3642
- flexShrink: 1,
3643
- },
3644
- tipActionWrap: {
3645
- flexDirection: 'row',
3646
- alignItems: 'center',
3647
- gap: 6,
3648
- flexShrink: 0,
3649
- },
3650
- tipTitle: {
3651
- fontFamily: AppFonts_1.AppFonts.interBold,
3652
- fontSize: 12,
3653
- color: AppColors_1.AppColors.purple900,
3654
- flex: 1,
3655
- flexShrink: 1,
3656
- },
3657
- tipDesc: {
3658
- fontFamily: AppFonts_1.AppFonts.interRegular,
3659
- fontSize: 11,
3660
- color: AppColors_1.AppColors.gray500,
3661
- lineHeight: 16,
3662
- },
3663
- });
3664
- exports.default = BundleTab;
1296
+ </react_native_1.ScrollView>}
1297
+ </react_native_1.View>}),bundleStyles=react_native_1.StyleSheet.create({topTabWrap:{backgroundColor:AppColors_1.AppColors.white,paddingVertical:8,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.dividerColor,flexDirection:"row",alignItems:"center",paddingRight:10},reloadButton:{padding:8,borderRadius:20,backgroundColor:AppColors_1.AppColors.grayBackground,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,alignItems:"center",justifyContent:"center",marginLeft:4},analyzingContainer:{flex:1,alignItems:"center",justifyContent:"center",gap:8,padding:24},analyzingText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:13,color:AppColors_1.AppColors.primaryBlack},analyzingHint:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:11,color:AppColors_1.AppColors.grayTextWeak},subTabsScroll:{paddingHorizontal:12,gap:8,flexDirection:"row",alignItems:"center"},subTabPill:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:12,paddingVertical:7,borderRadius:20,backgroundColor:AppColors_1.AppColors.grayBackground,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor},subTabPillActive:{backgroundColor:AppColors_1.AppColors.brandPurple,borderColor:AppColors_1.AppColors.brandPurple,shadowColor:AppColors_1.AppColors.brandPurple,shadowOffset:{width:0,height:2},shadowOpacity:.2,shadowRadius:3,elevation:2},subTabPillText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11.5,color:AppColors_1.AppColors.grayTextStrong},subTabPillTextActive:{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.white},contentContainer:{padding:16,paddingBottom:40,gap:14},heroCard:{backgroundColor:AppColors_1.AppColors.white,borderRadius:14,padding:16,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,shadowColor:AppColors_1.AppColors.primaryBlack,shadowOffset:{width:0,height:2},shadowOpacity:.04,shadowRadius:6,elevation:2},heroTopRow:{flexDirection:"row",alignItems:"flex-start",gap:12,marginBottom:16},heroIconWrap:{width:44,height:44,borderRadius:12,backgroundColor:`${AppColors_1.AppColors.brandPurple}12`,alignItems:"center",justifyContent:"center",borderWidth:1,borderColor:`${AppColors_1.AppColors.brandPurple}25`},heroTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:16,color:AppColors_1.AppColors.primaryBlack},heroSubtitle:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:12,color:AppColors_1.AppColors.grayTextWeak,marginTop:2},metricsGrid:{flexDirection:"row",flexWrap:"wrap",gap:8},metricBox:{flex:1,minWidth:"45%",backgroundColor:AppColors_1.AppColors.grayBackground,borderRadius:10,padding:10,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor},metricLabel:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.grayTextWeak,letterSpacing:.5},metricValue:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:14,color:AppColors_1.AppColors.primaryBlack,marginTop:3},metricHint:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10.5,color:AppColors_1.AppColors.grayText,marginTop:2},statusIndicator:{width:8,height:8,borderRadius:4},prodPlatformScroll:{flexDirection:"row",alignItems:"center",gap:8,paddingBottom:4},prodPlatformBtn:{flexDirection:"row",alignItems:"center",paddingVertical:7,paddingHorizontal:12,borderRadius:20,backgroundColor:AppColors_1.AppColors.white,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,gap:6},prodPlatformBtnActive:{backgroundColor:AppColors_1.AppColors.brandPurple,borderColor:AppColors_1.AppColors.brandPurple,shadowColor:AppColors_1.AppColors.brandPurple,shadowOffset:{width:0,height:2},shadowOpacity:.18,shadowRadius:3,elevation:2},prodPlatformBtnText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11.5,color:AppColors_1.AppColors.grayTextStrong},prodPlatformBtnTextActive:{color:AppColors_1.AppColors.white},prodPlatformBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:10,backgroundColor:`${AppColors_1.AppColors.purple}14`},prodPlatformBadgeActive:{backgroundColor:"rgba(255, 255, 255, 0.25)"},prodPlatformBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.purple},prodPlatformBadgeTextActive:{color:AppColors_1.AppColors.white},sectionCard:{backgroundColor:AppColors_1.AppColors.white,borderRadius:14,padding:14,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,overflow:"hidden"},sectionHeaderRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginBottom:10,gap:8},sectionTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:13,color:AppColors_1.AppColors.primaryBlack},sectionSub:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayTextWeak},treemapBar:{flexDirection:"row",borderRadius:6,overflow:"hidden",height:16,marginBottom:12,backgroundColor:AppColors_1.AppColors.slate200},prodTreemapBar:{flexDirection:"row",borderRadius:6,overflow:"hidden",height:16,marginBottom:12,backgroundColor:AppColors_1.AppColors.slate200},legendGrid:{flexDirection:"row",flexWrap:"wrap",gap:8},legendItem:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:8,paddingVertical:5,borderRadius:8,backgroundColor:`${AppColors_1.AppColors.slate200}40`,borderWidth:1,borderColor:`${AppColors_1.AppColors.dividerColor}`,flexShrink:0},legendText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayTextStrong},legendVal:{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.primaryBlack},subsystemCard:{backgroundColor:AppColors_1.AppColors.white,borderRadius:12,padding:12,marginBottom:8,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,gap:8},subsystemHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:8},subsystemTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12.5,color:AppColors_1.AppColors.primaryBlack},subsystemBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:6},subsystemBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10},subsystemGrid:{flexDirection:"row",flexWrap:"wrap",gap:6},subsystemItem:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:8,paddingVertical:4,borderRadius:6,backgroundColor:AppColors_1.AppColors.grayBackground,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor},subsystemItemText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10.5,color:AppColors_1.AppColors.grayTextStrong},subsystemItemVal:{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.primaryBlack},catRowCard:{backgroundColor:AppColors_1.AppColors.grayBackground,borderRadius:12,padding:12,marginBottom:8,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,gap:8},catRowTop:{flexDirection:"row",alignItems:"flex-start",gap:10},catIconBox:{width:36,height:36,borderRadius:10,borderWidth:1,alignItems:"center",justifyContent:"center",flexShrink:0},catRowTitleWrap:{flex:1,minWidth:0,gap:2},catRowTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:13,color:AppColors_1.AppColors.primaryBlack,flex:1},catRowDesc:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10.5,color:AppColors_1.AppColors.grayTextWeak,lineHeight:14.5},catRowSize:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12.5,color:AppColors_1.AppColors.primaryBlack},catRowRight:{alignItems:"flex-end",justifyContent:"center",flexShrink:0,minWidth:64},catRowPct:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10,color:AppColors_1.AppColors.grayTextWeak},catPctPill:{paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:5},catPctText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5},catProgressTrack:{height:5,borderRadius:2.5,backgroundColor:`${AppColors_1.AppColors.slate200}`,overflow:"hidden",marginTop:2},catProgressBar:{height:"100%",borderRadius:2.5},filterContainer:{backgroundColor:AppColors_1.AppColors.white,borderRadius:12,padding:10,marginHorizontal:16,marginTop:12,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,gap:8},searchRow:{flexDirection:"row",alignItems:"center",backgroundColor:AppColors_1.AppColors.grayBackground,borderRadius:8,paddingHorizontal:10,height:36,gap:8},searchInput:{flex:1,fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:12,color:AppColors_1.AppColors.primaryBlack,padding:0},categoryPillsScroll:{gap:6,paddingVertical:2},catPill:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:10,paddingVertical:5,borderRadius:16,backgroundColor:AppColors_1.AppColors.grayBackground,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor},catPillActive:{backgroundColor:AppColors_1.AppColors.brandPurple,borderColor:AppColors_1.AppColors.brandPurple},catPillText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayTextStrong},catPillTextActive:{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.white},listHeaderCount:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayTextWeak,paddingHorizontal:4},treeHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:2,marginBottom:6},viewModeToggleGroup:{flexDirection:"row",backgroundColor:AppColors_1.AppColors.grayBackground,borderRadius:8,padding:2,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor},viewModeBtn:{paddingHorizontal:10,paddingVertical:5,borderRadius:6},viewModeBtnActive:{backgroundColor:AppColors_1.AppColors.brandPurple,shadowColor:AppColors_1.AppColors.brandPurple,shadowOffset:{width:0,height:1},shadowOpacity:.2,shadowRadius:2,elevation:2},viewModeBtnText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayTextStrong},viewModeBtnTextActive:{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.white},treeActionLink:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11.5,color:AppColors_1.AppColors.purple},treeRootCard:{backgroundColor:AppColors_1.AppColors.white,borderRadius:12,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,overflow:"hidden",marginBottom:16},treeFolderBlock:{borderBottomWidth:react_native_1.StyleSheet.hairlineWidth,borderBottomColor:AppColors_1.AppColors.dividerColor},treeFolderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:8,paddingRight:10,backgroundColor:`${AppColors_1.AppColors.purple}06`},treeRowLeft:{flexDirection:"row",alignItems:"center",gap:6,flex:1,marginRight:6},treeRowRight:{flexDirection:"row",alignItems:"center",gap:6},treeChevron:{fontSize:12,color:AppColors_1.AppColors.purple,fontFamily:AppFonts_1.AppFonts.interBold,width:12,textAlign:"center"},treeFolderName:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12.5,color:AppColors_1.AppColors.primaryBlack},treeCountBadge:{paddingHorizontal:5,paddingVertical:1,borderRadius:8,backgroundColor:`${AppColors_1.AppColors.purple}14`},treeCountBadgeText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:9.5,color:AppColors_1.AppColors.purple},treeFolderSize:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayTextStrong},treeChildrenContainer:{backgroundColor:AppColors_1.AppColors.white},treeFileRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:6,paddingRight:10,borderBottomWidth:react_native_1.StyleSheet.hairlineWidth,borderBottomColor:`${AppColors_1.AppColors.dividerColor}80`,backgroundColor:AppColors_1.AppColors.white},treeFileRowUnused:{backgroundColor:`${AppColors_1.AppColors.red500}06`},treeBranchGuide:{width:12,alignItems:"center",justifyContent:"center"},treeBranchGuideText:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:11,color:AppColors_1.AppColors.dividerColor},treeFileName:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:12,color:AppColors_1.AppColors.primaryBlack,flexShrink:1},treeUnusedPill:{paddingHorizontal:5,paddingVertical:1,borderRadius:4,backgroundColor:`${AppColors_1.AppColors.red500}18`},treeUnusedPillText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9,color:AppColors_1.AppColors.red600},treeFileSizeGroup:{alignItems:"flex-end"},treeFileSizeText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.primaryBlack},treeFilePctText:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:9,color:AppColors_1.AppColors.grayTextWeak},fileCard:{backgroundColor:AppColors_1.AppColors.white,borderRadius:12,padding:12,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,gap:6,marginBottom:8},fileCardTop:{flexDirection:"row",alignItems:"center",gap:8},sNoBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:4,backgroundColor:`${AppColors_1.AppColors.purple}14`,borderWidth:1,borderColor:`${AppColors_1.AppColors.purple}30`,minWidth:26,alignItems:"center",justifyContent:"center"},sNoText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10,color:AppColors_1.AppColors.purple},extChip:{paddingHorizontal:6,paddingVertical:3,borderRadius:5,borderWidth:1},extChipText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10,letterSpacing:.4},pkgBadge:{paddingHorizontal:6,paddingVertical:3,borderRadius:5,borderWidth:1},pkgBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9,letterSpacing:.4},pkgLogoWrap:{borderRadius:7,borderWidth:1,alignItems:"center",justifyContent:"center",backgroundColor:AppColors_1.AppColors.white,borderColor:AppColors_1.AppColors.dividerColor,overflow:"hidden"},pkgLogoFallbackText:{fontFamily:AppFonts_1.AppFonts.interBold},mediaThumbWrap:{width:32,height:32,borderRadius:6,overflow:"hidden",backgroundColor:AppColors_1.AppColors.grayBackground,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor},mediaThumbImg:{width:"100%",height:"100%"},fileName:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12.5,color:AppColors_1.AppColors.primaryBlack},versionPill:{paddingHorizontal:5,paddingVertical:1,borderRadius:4,backgroundColor:`${AppColors_1.AppColors.purple}14`,borderWidth:1,borderColor:`${AppColors_1.AppColors.purple}26`},versionPillText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10,color:AppColors_1.AppColors.purple},pkgVersion:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayTextWeak},filePath:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10.5,color:AppColors_1.AppColors.grayTextWeak,marginTop:1},fileSizeBox:{alignItems:"flex-end"},downloadFileBtn:{padding:6,borderRadius:6,backgroundColor:`${AppColors_1.AppColors.sky500}14`,alignItems:"center",justifyContent:"center",borderWidth:1,borderColor:`${AppColors_1.AppColors.sky500}28`},treeActionBtn:{padding:4,borderRadius:4,backgroundColor:`${AppColors_1.AppColors.sky500}14`,alignItems:"center",justifyContent:"center",borderWidth:1,borderColor:`${AppColors_1.AppColors.sky500}28`},fileSizeKb:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12,color:AppColors_1.AppColors.primaryBlack},filePercent:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10,color:AppColors_1.AppColors.grayTextWeak},fileProgressTrack:{height:4,borderRadius:2,backgroundColor:AppColors_1.AppColors.grayBackground,overflow:"hidden",marginVertical:2},fileProgressBar:{height:"100%",borderRadius:2},fileCardBottom:{gap:4},fileMetaText:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10.5,color:AppColors_1.AppColors.grayTextWeak},typeTag:{backgroundColor:AppColors_1.AppColors.grayBackground,paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor},typeTagText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:9.5,color:AppColors_1.AppColors.grayText},npmLinkBtn:{flexDirection:"row",alignItems:"center",gap:3,paddingHorizontal:7,paddingVertical:2,borderRadius:5,backgroundColor:AppColors_1.AppColors.npmRedTint,borderWidth:1,borderColor:AppColors_1.AppColors.npmRedBorder},npmLinkText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.npmRed},deprecatedBadge:{paddingHorizontal:6,paddingVertical:1.5,borderRadius:4,backgroundColor:AppColors_1.AppColors.red100,borderWidth:1,borderColor:AppColors_1.AppColors.errorBorder},deprecatedBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9,color:AppColors_1.AppColors.red600,letterSpacing:.3},updateBadge:{paddingHorizontal:6,paddingVertical:1.5,borderRadius:4,backgroundColor:AppColors_1.AppColors.green100,borderWidth:1,borderColor:AppColors_1.AppColors.greenBorder},updateBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9,color:AppColors_1.AppColors.emerald700},lastActiveText:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10,color:AppColors_1.AppColors.grayTextWeak},deprecationBox:{backgroundColor:AppColors_1.AppColors.errorCardBg,borderRadius:6,paddingHorizontal:8,paddingVertical:5,borderWidth:1,borderColor:AppColors_1.AppColors.errorBorder,marginTop:3},deprecationText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10.5,color:AppColors_1.AppColors.rose700,lineHeight:14},unusedBadge:{paddingHorizontal:6,paddingVertical:1.5,borderRadius:4,backgroundColor:AppColors_1.AppColors.red100,borderWidth:1,borderColor:AppColors_1.AppColors.errorBorder},unusedBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.red600},consumedBadge:{paddingHorizontal:6,paddingVertical:1.5,borderRadius:4,backgroundColor:AppColors_1.AppColors.green100,borderWidth:1,borderColor:AppColors_1.AppColors.greenBorder},consumedBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.emerald600},treeFolderChevronWrap:{width:18,height:18,borderRadius:9,backgroundColor:`${AppColors_1.AppColors.purple}14`,alignItems:"center",justifyContent:"center"},treeFileCardUnused:{borderColor:AppColors_1.AppColors.errorBorder,backgroundColor:AppColors_1.AppColors.red50},adviceUnused:{backgroundColor:AppColors_1.AppColors.errorCardBg,borderWidth:1,borderColor:AppColors_1.AppColors.errorBorder},liveWarningCard:{flexDirection:"row",alignItems:"center",backgroundColor:AppColors_1.AppColors.amber100,borderWidth:1,borderColor:AppColors_1.AppColors.amber200,borderRadius:10,padding:12,marginBottom:12},liveWarningTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12,color:AppColors_1.AppColors.amber800Warm,marginBottom:2},liveWarningDesc:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10.5,lineHeight:14,color:AppColors_1.AppColors.amber800Warm},adviceBadge:{flexDirection:"row",alignItems:"center",paddingHorizontal:8,paddingVertical:5,borderRadius:6,marginTop:4,gap:6},adviceWarning:{backgroundColor:AppColors_1.AppColors.amber100,borderWidth:1,borderColor:AppColors_1.AppColors.amber200},adviceOptimal:{backgroundColor:AppColors_1.AppColors.green100,borderWidth:1,borderColor:AppColors_1.AppColors.greenBorder},adviceText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10.5,lineHeight:14,flex:1},impactBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1},impactBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9},searchHighlight:{backgroundColor:AppColors_1.AppColors.yellow200,color:AppColors_1.AppColors.yellow800,fontFamily:AppFonts_1.AppFonts.interBold},tipsCard:{backgroundColor:AppColors_1.AppColors.purple50,borderRadius:14,padding:14,borderWidth:1,borderColor:AppColors_1.AppColors.purple200},tipsHeading:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:13.5,color:AppColors_1.AppColors.purple800},totalSummaryCard:{marginTop:10,backgroundColor:`${AppColors_1.AppColors.brandPurple}0B`,borderRadius:12,padding:12,borderWidth:1,borderColor:`${AppColors_1.AppColors.brandPurple}25`,gap:8},totalSummaryRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center"},totalSummaryLabelWrap:{flexDirection:"row",alignItems:"center",gap:8},totalIconBadge:{width:32,height:32,borderRadius:8,backgroundColor:`${AppColors_1.AppColors.brandPurple}15`,alignItems:"center",justifyContent:"center"},totalSummaryLabel:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11.5,color:AppColors_1.AppColors.brandPurple,letterSpacing:.6},totalSummarySub:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10,color:AppColors_1.AppColors.grayTextWeak,marginTop:1},totalSummaryValue:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:15,color:AppColors_1.AppColors.primaryBlack},totalSummaryKb:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10,color:AppColors_1.AppColors.grayTextWeak},totalFormulaGrid:{flexDirection:"row",flexWrap:"wrap",gap:6,paddingTop:6,borderTopWidth:1,borderTopColor:`${AppColors_1.AppColors.brandPurple}15`},totalChip:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:AppColors_1.AppColors.white,borderRadius:6,paddingHorizontal:6,paddingVertical:3,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor},totalDot:{width:6,height:6,borderRadius:3},totalChipText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.primaryBlack},totalSummaryFormula:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10.5,color:AppColors_1.AppColors.grayText,lineHeight:15},stickyFooterBar:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",backgroundColor:AppColors_1.AppColors.white,paddingHorizontal:16,paddingTop:10,paddingBottom:react_native_1.Platform.OS==="ios"?24:12,borderTopWidth:1,borderTopColor:AppColors_1.AppColors.dividerColor,shadowColor:AppColors_1.AppColors.primaryBlack,shadowOffset:{width:0,height:-2},shadowOpacity:.05,shadowRadius:4,elevation:3},footerTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12,color:AppColors_1.AppColors.primaryBlack},footerSizeVal:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12.5,color:AppColors_1.AppColors.purple},tipItem:{marginBottom:10,backgroundColor:AppColors_1.AppColors.white,padding:12,borderRadius:10,borderWidth:1,borderColor:AppColors_1.AppColors.purple200,gap:6},tipItemHeader:{flexDirection:"row",alignItems:"flex-start",justifyContent:"space-between",gap:8},tipTitleWrap:{flexDirection:"row",alignItems:"center",gap:6,flex:1,flexShrink:1},tipActionWrap:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:0},tipTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12,color:AppColors_1.AppColors.purple900,flex:1,flexShrink:1},tipDesc:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:11,color:AppColors_1.AppColors.gray500,lineHeight:16}});exports.default=BundleTab;