react-native-inapp-inspector 2.4.1 → 2.4.2

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 (231) hide show
  1. package/README.ar.md +163 -0
  2. package/README.de.md +163 -0
  3. package/README.es.md +164 -0
  4. package/README.fr.md +163 -0
  5. package/README.hi.md +163 -0
  6. package/README.ja.md +180 -0
  7. package/README.ko.md +163 -0
  8. package/README.md +340 -243
  9. package/README.pt-BR.md +163 -0
  10. package/README.ru.md +163 -0
  11. package/README.zh-CN.md +387 -0
  12. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +82 -21
  13. package/assets/banner_dark.svg +186 -0
  14. package/assets/banner_light.svg +186 -0
  15. package/assets/icon_circle.svg +148 -0
  16. package/assets/icon_square.svg +369 -0
  17. package/assets/inapp_inspector_icon.gif +0 -0
  18. package/assets/inapp_inspector_icon_original.gif +0 -0
  19. package/assets/social_preview.png +0 -0
  20. package/assets/walkthrough.gif +0 -0
  21. package/dist/commonjs/components/AnimatedBrandOwl.d.ts +7 -0
  22. package/dist/commonjs/components/AnimatedBrandOwl.js +175 -0
  23. package/dist/commonjs/components/AppHeaderLogo.d.ts +1 -0
  24. package/dist/commonjs/components/AppHeaderLogo.js +7 -5
  25. package/dist/commonjs/components/BrandSquareIcon.d.ts +5 -0
  26. package/dist/commonjs/components/BrandSquareIcon.js +139 -0
  27. package/dist/commonjs/components/ConsoleLogCard.d.ts +2 -1
  28. package/dist/commonjs/components/ConsoleLogCard.js +23 -39
  29. package/dist/commonjs/components/Inspector/AboutModal.js +44 -54
  30. package/dist/commonjs/components/Inspector/AnalyticsTab.js +5 -5
  31. package/dist/commonjs/components/Inspector/ConfirmationModal.d.ts +13 -0
  32. package/dist/commonjs/components/Inspector/ConfirmationModal.js +32 -0
  33. package/dist/commonjs/components/Inspector/ConsoleTab.js +11 -11
  34. package/dist/commonjs/components/Inspector/CrashTab.js +14 -12
  35. package/dist/commonjs/components/Inspector/DebuggingTab.js +17 -17
  36. package/dist/commonjs/components/Inspector/FabLauncher.js +22 -30
  37. package/dist/commonjs/components/Inspector/FeatureUnderDevNotice.js +2 -2
  38. package/dist/commonjs/components/Inspector/LanguageSelectorModal.d.ts +15 -0
  39. package/dist/commonjs/components/Inspector/LanguageSelectorModal.js +90 -0
  40. package/dist/commonjs/components/Inspector/MainScreen.js +46 -33
  41. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +21 -19
  42. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +85 -101
  43. package/dist/commonjs/components/Inspector/NetworkTab.js +50 -50
  44. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +1 -1
  45. package/dist/commonjs/components/Inspector/PushCard.d.ts +3 -2
  46. package/dist/commonjs/components/Inspector/PushCard.js +5 -4
  47. package/dist/commonjs/components/Inspector/PushDetail.js +32 -23
  48. package/dist/commonjs/components/Inspector/PushTab.js +12 -12
  49. package/dist/commonjs/components/Inspector/ReduxDetail.js +32 -32
  50. package/dist/commonjs/components/Inspector/ReduxTab.js +5 -5
  51. package/dist/commonjs/components/Inspector/SettingsPanel.js +258 -139
  52. package/dist/commonjs/components/Inspector/SocketCard.d.ts +5 -0
  53. package/dist/commonjs/components/Inspector/SocketCard.js +116 -0
  54. package/dist/commonjs/components/Inspector/SocketDetail.d.ts +4 -0
  55. package/dist/commonjs/components/Inspector/SocketDetail.js +317 -0
  56. package/dist/commonjs/components/Inspector/SocketFilterModal.d.ts +13 -0
  57. package/dist/commonjs/components/Inspector/SocketFilterModal.js +69 -0
  58. package/dist/commonjs/components/Inspector/SocketTab.d.ts +3 -0
  59. package/dist/commonjs/components/Inspector/SocketTab.js +112 -0
  60. package/dist/commonjs/components/Inspector/StorageTab.js +38 -36
  61. package/dist/commonjs/components/Inspector/SupportModal.d.ts +7 -0
  62. package/dist/commonjs/components/Inspector/SupportModal.js +125 -0
  63. package/dist/commonjs/components/Inspector/SupportPage.d.ts +5 -0
  64. package/dist/commonjs/components/Inspector/SupportPage.js +227 -0
  65. package/dist/commonjs/components/Inspector/TabBar.js +24 -23
  66. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +24 -24
  67. package/dist/commonjs/components/JsonViewer.js +7 -7
  68. package/dist/commonjs/components/LogCard.d.ts +3 -2
  69. package/dist/commonjs/components/LogCard.js +13 -13
  70. package/dist/commonjs/components/LogSyntaxHighlighter.js +5 -5
  71. package/dist/commonjs/components/ModuleErrorBoundary.js +2 -2
  72. package/dist/commonjs/components/NetworkIcons.d.ts +15 -0
  73. package/dist/commonjs/components/NetworkIcons.js +38 -3
  74. package/dist/commonjs/components/SegmentedTabs.js +1 -1
  75. package/dist/commonjs/constants/version.d.ts +1 -1
  76. package/dist/commonjs/constants/version.js +1 -1
  77. package/dist/commonjs/customHooks/socketLogger.d.ts +26 -0
  78. package/dist/commonjs/customHooks/socketLogger.js +2 -0
  79. package/dist/commonjs/helpers/index.js +3 -3
  80. package/dist/commonjs/helpers/memoryManager.d.ts +1 -0
  81. package/dist/commonjs/helpers/memoryManager.js +1 -1
  82. package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -1
  83. package/dist/commonjs/helpers/searchQueryParser.js +5 -1
  84. package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
  85. package/dist/commonjs/helpers/settingsStore.js +1 -1
  86. package/dist/commonjs/helpers/shareFormatter.d.ts +3 -1
  87. package/dist/commonjs/helpers/shareFormatter.js +8 -7
  88. package/dist/commonjs/i18n/index.d.ts +99 -1
  89. package/dist/commonjs/i18n/index.js +1 -1
  90. package/dist/commonjs/i18n/locales/ar.json +1 -1
  91. package/dist/commonjs/i18n/locales/bn.json +1 -0
  92. package/dist/commonjs/i18n/locales/de.json +1 -1
  93. package/dist/commonjs/i18n/locales/en.json +1 -1
  94. package/dist/commonjs/i18n/locales/es.json +1 -1
  95. package/dist/commonjs/i18n/locales/fr.json +1 -1
  96. package/dist/commonjs/i18n/locales/gu.json +1 -0
  97. package/dist/commonjs/i18n/locales/hi.json +1 -1
  98. package/dist/commonjs/i18n/locales/id.json +1 -0
  99. package/dist/commonjs/i18n/locales/it.json +1 -0
  100. package/dist/commonjs/i18n/locales/ja.json +1 -1
  101. package/dist/commonjs/i18n/locales/kn.json +1 -0
  102. package/dist/commonjs/i18n/locales/ko.json +1 -1
  103. package/dist/commonjs/i18n/locales/ml.json +1 -0
  104. package/dist/commonjs/i18n/locales/mr.json +1 -0
  105. package/dist/commonjs/i18n/locales/nl.json +1 -0
  106. package/dist/commonjs/i18n/locales/pa.json +1 -0
  107. package/dist/commonjs/i18n/locales/pl.json +1 -0
  108. package/dist/commonjs/i18n/locales/pt.json +1 -1
  109. package/dist/commonjs/i18n/locales/ru.json +1 -1
  110. package/dist/commonjs/i18n/locales/ta.json +1 -0
  111. package/dist/commonjs/i18n/locales/te.json +1 -0
  112. package/dist/commonjs/i18n/locales/tr.json +1 -0
  113. package/dist/commonjs/i18n/locales/vi.json +1 -0
  114. package/dist/commonjs/i18n/locales/zh.json +1 -1
  115. package/dist/commonjs/index.d.ts +13 -13
  116. package/dist/commonjs/index.js +5 -4
  117. package/dist/commonjs/native/NativeInspector.d.ts +1 -0
  118. package/dist/commonjs/socket.d.ts +4 -0
  119. package/dist/commonjs/socket.js +1 -0
  120. package/dist/commonjs/styles/index.d.ts +23 -0
  121. package/dist/commonjs/styles/index.js +1 -1
  122. package/dist/commonjs/types/enums.d.ts +40 -0
  123. package/dist/commonjs/types/enums.js +1 -1
  124. package/dist/commonjs/types/interfaces.d.ts +122 -1
  125. package/dist/esm/components/AnimatedBrandOwl.d.ts +7 -0
  126. package/dist/esm/components/AnimatedBrandOwl.js +175 -0
  127. package/dist/esm/components/AppHeaderLogo.d.ts +1 -0
  128. package/dist/esm/components/AppHeaderLogo.js +7 -5
  129. package/dist/esm/components/BrandSquareIcon.d.ts +5 -0
  130. package/dist/esm/components/BrandSquareIcon.js +139 -0
  131. package/dist/esm/components/ConsoleLogCard.d.ts +2 -1
  132. package/dist/esm/components/ConsoleLogCard.js +61 -77
  133. package/dist/esm/components/Inspector/AboutModal.js +85 -95
  134. package/dist/esm/components/Inspector/AnalyticsTab.js +15 -15
  135. package/dist/esm/components/Inspector/ConfirmationModal.d.ts +13 -0
  136. package/dist/esm/components/Inspector/ConfirmationModal.js +32 -0
  137. package/dist/esm/components/Inspector/ConsoleTab.js +47 -47
  138. package/dist/esm/components/Inspector/CrashTab.js +34 -32
  139. package/dist/esm/components/Inspector/DebuggingTab.js +29 -29
  140. package/dist/esm/components/Inspector/FabLauncher.js +50 -58
  141. package/dist/esm/components/Inspector/FeatureUnderDevNotice.js +7 -7
  142. package/dist/esm/components/Inspector/LanguageSelectorModal.d.ts +15 -0
  143. package/dist/esm/components/Inspector/LanguageSelectorModal.js +90 -0
  144. package/dist/esm/components/Inspector/MainScreen.js +123 -110
  145. package/dist/esm/components/Inspector/MediaGalleryTab.js +64 -62
  146. package/dist/esm/components/Inspector/MediaPreviewModal.js +107 -123
  147. package/dist/esm/components/Inspector/NetworkTab.js +90 -90
  148. package/dist/esm/components/Inspector/NpmUpdateToast.js +1 -1
  149. package/dist/esm/components/Inspector/PushCard.d.ts +3 -2
  150. package/dist/esm/components/Inspector/PushCard.js +23 -22
  151. package/dist/esm/components/Inspector/PushDetail.js +34 -25
  152. package/dist/esm/components/Inspector/PushTab.js +23 -23
  153. package/dist/esm/components/Inspector/ReduxDetail.js +42 -42
  154. package/dist/esm/components/Inspector/ReduxTab.js +22 -22
  155. package/dist/esm/components/Inspector/SettingsPanel.js +495 -376
  156. package/dist/esm/components/Inspector/SocketCard.d.ts +5 -0
  157. package/dist/esm/components/Inspector/SocketCard.js +116 -0
  158. package/dist/esm/components/Inspector/SocketDetail.d.ts +4 -0
  159. package/dist/esm/components/Inspector/SocketDetail.js +317 -0
  160. package/dist/esm/components/Inspector/SocketFilterModal.d.ts +13 -0
  161. package/dist/esm/components/Inspector/SocketFilterModal.js +69 -0
  162. package/dist/esm/components/Inspector/SocketTab.d.ts +3 -0
  163. package/dist/esm/components/Inspector/SocketTab.js +112 -0
  164. package/dist/esm/components/Inspector/StorageTab.js +145 -143
  165. package/dist/esm/components/Inspector/SupportModal.d.ts +7 -0
  166. package/dist/esm/components/Inspector/SupportModal.js +125 -0
  167. package/dist/esm/components/Inspector/SupportPage.d.ts +5 -0
  168. package/dist/esm/components/Inspector/SupportPage.js +227 -0
  169. package/dist/esm/components/Inspector/TabBar.js +36 -35
  170. package/dist/esm/components/Inspector/UpdateAvailableModal.js +22 -22
  171. package/dist/esm/components/JsonViewer.js +55 -55
  172. package/dist/esm/components/LogCard.d.ts +3 -2
  173. package/dist/esm/components/LogCard.js +60 -60
  174. package/dist/esm/components/LogSyntaxHighlighter.js +5 -5
  175. package/dist/esm/components/ModuleErrorBoundary.js +23 -23
  176. package/dist/esm/components/NetworkIcons.d.ts +15 -0
  177. package/dist/esm/components/NetworkIcons.js +38 -3
  178. package/dist/esm/components/SegmentedTabs.js +7 -7
  179. package/dist/esm/constants/version.d.ts +1 -1
  180. package/dist/esm/constants/version.js +1 -1
  181. package/dist/esm/customHooks/socketLogger.d.ts +26 -0
  182. package/dist/esm/customHooks/socketLogger.js +2 -0
  183. package/dist/esm/helpers/index.js +3 -3
  184. package/dist/esm/helpers/memoryManager.d.ts +1 -0
  185. package/dist/esm/helpers/memoryManager.js +1 -1
  186. package/dist/esm/helpers/searchQueryParser.d.ts +1 -1
  187. package/dist/esm/helpers/searchQueryParser.js +5 -1
  188. package/dist/esm/helpers/settingsStore.d.ts +1 -0
  189. package/dist/esm/helpers/settingsStore.js +1 -1
  190. package/dist/esm/helpers/shareFormatter.d.ts +3 -1
  191. package/dist/esm/helpers/shareFormatter.js +8 -7
  192. package/dist/esm/i18n/index.d.ts +99 -1
  193. package/dist/esm/i18n/index.js +1 -1
  194. package/dist/esm/i18n/locales/ar.json +1 -1
  195. package/dist/esm/i18n/locales/bn.json +1 -0
  196. package/dist/esm/i18n/locales/de.json +1 -1
  197. package/dist/esm/i18n/locales/en.json +1 -1
  198. package/dist/esm/i18n/locales/es.json +1 -1
  199. package/dist/esm/i18n/locales/fr.json +1 -1
  200. package/dist/esm/i18n/locales/gu.json +1 -0
  201. package/dist/esm/i18n/locales/hi.json +1 -1
  202. package/dist/esm/i18n/locales/id.json +1 -0
  203. package/dist/esm/i18n/locales/it.json +1 -0
  204. package/dist/esm/i18n/locales/ja.json +1 -1
  205. package/dist/esm/i18n/locales/kn.json +1 -0
  206. package/dist/esm/i18n/locales/ko.json +1 -1
  207. package/dist/esm/i18n/locales/ml.json +1 -0
  208. package/dist/esm/i18n/locales/mr.json +1 -0
  209. package/dist/esm/i18n/locales/nl.json +1 -0
  210. package/dist/esm/i18n/locales/pa.json +1 -0
  211. package/dist/esm/i18n/locales/pl.json +1 -0
  212. package/dist/esm/i18n/locales/pt.json +1 -1
  213. package/dist/esm/i18n/locales/ru.json +1 -1
  214. package/dist/esm/i18n/locales/ta.json +1 -0
  215. package/dist/esm/i18n/locales/te.json +1 -0
  216. package/dist/esm/i18n/locales/tr.json +1 -0
  217. package/dist/esm/i18n/locales/vi.json +1 -0
  218. package/dist/esm/i18n/locales/zh.json +1 -1
  219. package/dist/esm/index.d.ts +13 -13
  220. package/dist/esm/index.js +8 -7
  221. package/dist/esm/native/NativeInspector.d.ts +1 -0
  222. package/dist/esm/socket.d.ts +4 -0
  223. package/dist/esm/socket.js +1 -0
  224. package/dist/esm/styles/index.d.ts +23 -0
  225. package/dist/esm/styles/index.js +1 -1
  226. package/dist/esm/types/enums.d.ts +40 -0
  227. package/dist/esm/types/enums.js +1 -1
  228. package/dist/esm/types/interfaces.d.ts +122 -1
  229. package/ios/NetworkInspectorModule.mm +102 -12
  230. package/package.json +204 -2
  231. package/src/native/NativeInspector.ts +8 -0
@@ -1,111 +1,95 @@
1
- import z from"react";import{useTranslation as G}from"../i18n";import{Pressable as K,StyleSheet as Y,Text as E,View as T}from"react-native";import{AppColors as r}from"../styles/AppColors";import{AppFonts as B}from"../styles/AppFonts";import{formatTime as X,getJsonContent as J,getJsonPreviewText as Q,parseStackLine as Z,openInVSCode as q,getSize as _,getCleanCallerDisplay as ee}from"../helpers";import Te from"./TouchableScale";import N from"./LogSyntaxHighlighter";import{ForwardChevronIcon as Ce,ExternalLinkIcon as Ie,FlaskIcon as he,ZapIcon as V,GlobeIcon as xe,DiceIcon as ye,AtomIcon as M,BarChartIcon as Se,KeyIcon as me,SmartphoneIcon as Ee,AlertTriangleIcon as Be,BugIcon as Re,TagIcon as Ae,MapPinIcon as $,StorageIcon as Oe,SignalIcon as Pe,FlameIcon as we,MoneyIcon as ke,CircleCheckIcon as U,CircleAlertIcon as Ne,CircleXIcon as Le,RefreshCcwIcon as He,PerformanceIcon as Ve,ChipIcon as Fe,SettingsIcon as De,TerminalIcon as ze,InfoCircleIcon as W,ShieldAlertIcon as Me,LayoutIcon as $e,ClockIcon as Ue,SizeIcon as We}from"./NetworkIcons";import{useInspector as Ge}from"./Inspector/InspectorContext";const ve=(w,C,O,F,L)=>{if(!w)return null;const x=/^((?:\[[^\]]+\]\s*)+)/,k=w.match(x);if(k){const I=k[1],D=w.substring(I.length),h=I.match(/\[[^\]]+\]/g)||[],H=P=>{const e=P.replace(/[\[\]]/g,"").trim().toUpperCase();return e==="AXIOS"?{color:r.emerald600,Icon:V,label:"AXIOS"}:e==="API"||e==="FETCH"||e==="HTTP"||e==="REST"||e==="NETWORK"?{color:r.sky600,Icon:xe,label:e}:e==="GRAPHQL"||e==="GQL"||e==="APOLLO"||e==="MUTATION"||e==="QUERY"?{color:r.pink500,Icon:M,label:e}:e==="WS"||e==="WEBSOCKET"||e==="SOCKET"||e==="SOCKET.IO"||e==="REALTIME"?{color:r.cyan600,Icon:Pe,label:e}:e==="REDUX"||e==="STORE"||e==="STATE"||e==="ZUSTAND"||e==="MOBX"||e==="RECOIL"||e==="ACTION"||e==="DISPATCH"?{color:r.violet600,Icon:M,label:e}:e==="ANALYTICS"||e==="FIREBASE"||e==="GA4"||e==="GA"||e==="SEGMENT"||e==="MIXPANEL"||e==="POSTHOG"||e==="TRACK"||e==="EVENT"?{color:r.teal600,Icon:Se,label:e}:e==="AUTH"||e==="TOKEN"||e==="SESSION"||e==="JWT"||e==="LOGIN"||e==="LOGOUT"||e==="USER"?{color:r.amber600,Icon:me,label:e}:e==="SECURITY"||e==="SHIELD"||e==="PERMISSION"||e==="PERMISSIONS"?{color:r.indigo600Alt,Icon:Me,label:e}:e==="NAV"||e==="NAVIGATION"||e==="ROUTE"||e==="SCREEN"||e==="ROUTER"||e==="DEEPLINK"?{color:r.indigo600Alt,Icon:$,label:e}:e==="STORAGE"||e==="ASYNCSTORAGE"||e==="MMKV"||e==="SQLITE"||e==="DB"||e==="DATABASE"||e==="REALM"||e==="CACHE"?{color:r.purple500,Icon:Oe,label:e}:e==="PERF"||e==="RENDER"||e==="PERFORMANCE"||e==="FPS"||e==="MEMORY"?{color:r.violet500,Icon:Ve,label:e}:e==="INIT"||e==="BOOT"||e==="STARTUP"||e==="LIFECYCLE"||e==="MOUNT"||e==="UNMOUNT"?{color:r.blue600,Icon:V,label:e}:e==="SYNC"||e==="REFRESH"||e==="BACKGROUND"||e==="JOB"||e==="WORKER"?{color:r.sky600,Icon:He,label:e}:e==="PUSH"||e==="NOTIF"||e==="NOTIFICATION"||e==="FCM"||e==="APNS"?{color:r.darkOrange,Icon:we,label:e}:e==="PAY"||e==="PAYMENT"||e==="STRIPE"||e==="IAP"||e==="BILLING"||e==="CHECKOUT"||e==="CART"?{color:r.emerald600,Icon:ke,label:e}:e==="DEVICE"||e==="HARDWARE"||e==="BLE"||e==="BLUETOOTH"||e==="NFC"||e==="SENSOR"?{color:r.slate600,Icon:Fe,label:e}:e==="LOCATION"||e==="GPS"||e==="GEO"?{color:r.emerald600,Icon:$,label:e}:e==="APP"?{color:r.indigo600Alt,Icon:Ee,label:"APP"}:e==="UI"||e==="VIEW"||e==="THEME"||e==="STYLE"||e==="LAYOUT"?{color:r.pink600,Icon:$e,label:e}:e==="TEST"||e==="MOCK"||e==="SPEC"?{color:r.emerald500,Icon:he,label:"TEST"}:e==="SAMPLE"||e==="BATCH"?{color:r.indigo600Alt,Icon:ye,label:e}:e==="CONFIG"||e==="ENV"||e==="SETTINGS"?{color:r.slate700,Icon:De,label:e}:e==="DEBUG"||e==="TRACE"?{color:r.purpleText,Icon:ze,label:e}:e==="INFO"?{color:r.sky600,Icon:W,label:"INFO"}:e==="SUCCESS"||e==="OK"||e==="DONE"||e==="PASSED"?{color:r.green600,Icon:U,label:e}:e==="WARN"||e==="WARNING"?{color:r.amber600,Icon:Be,label:"WARN"}:e==="ERROR"||e==="CRASH"||e==="BUG"||e==="FATAL"||e==="EXCEPTION"||e==="FAIL"?{color:r.red600,Icon:Re,label:e==="CRASH"||e==="BUG"||e==="FATAL"||e==="EXCEPTION"||e==="FAIL"?e:"ERROR"}:{color:r.slate600,Icon:Ae,label:e}};return<T style={{flexDirection:"column",gap:2}}>
2
- <T style={{flexDirection:"row",gap:4,overflow:"hidden"}}>
3
- {h.slice(0,2).map((P,e)=>{const R=H(P),S=R.Icon;return<T key={e}style={[o.prefixTag,{backgroundColor:`${R.color}12`,borderColor:`${R.color}30`}]}>
4
- <S color={R.color}size={8.5}/>
5
- <E style={[o.prefixTagText,{color:R.color}]}>
6
- {R.label}
1
+ import F from"react";import{useTranslation as v}from"../i18n";import{Pressable as K,StyleSheet as Y,Text as E,View as I}from"react-native";import{AppColors as r}from"../styles/AppColors";import{AppFonts as S}from"../styles/AppFonts";import{formatTime as X,getJsonContent as J,getJsonPreviewText as Q,parseStackLine as Z,openInVSCode as q,getSize as _,getCleanCallerDisplay as ee}from"../helpers";import Ie from"./TouchableScale";import L from"./LogSyntaxHighlighter";import{ForwardChevronIcon as Te,ExternalLinkIcon as Ce,FlaskIcon as he,ZapIcon as D,GlobeIcon as Se,DiceIcon as me,AtomIcon as U,BarChartIcon as xe,KeyIcon as ye,SmartphoneIcon as Ee,AlertTriangleIcon as Re,BugIcon as Be,TagIcon as Ae,MapPinIcon as $,StorageIcon as Oe,SignalIcon as Pe,FlameIcon as we,MoneyIcon as Ne,CircleCheckIcon as W,CircleAlertIcon as Le,CircleXIcon as ke,RefreshCcwIcon as He,PerformanceIcon as Ve,ChipIcon as Fe,SettingsIcon as De,TerminalIcon as ze,InfoCircleIcon as G,ShieldAlertIcon as Me,LayoutIcon as Ue,ClockIcon as $e,SizeIcon as We}from"./NetworkIcons";import{useInspector as Ge}from"./Inspector/InspectorContext";const ve=(R,t,P,k,H)=>{if(!R)return null;const V=/^((?:\[[^\]]+\]\s*)+)/,C=R.match(V);if(C){const w=C[1],T=R.substring(w.length),z=w.match(/\[[^\]]+\]/g)||[],O=N=>{const e=N.replace(/[\[\]]/g,"").trim().toUpperCase();return e==="AXIOS"?{color:r.emerald600,Icon:D,label:"AXIOS"}:e==="API"||e==="FETCH"||e==="HTTP"||e==="REST"||e==="NETWORK"?{color:r.sky600,Icon:Se,label:e}:e==="GRAPHQL"||e==="GQL"||e==="APOLLO"||e==="MUTATION"||e==="QUERY"?{color:r.pink500,Icon:U,label:e}:e==="WS"||e==="WEBSOCKET"||e==="SOCKET"||e==="SOCKET.IO"||e==="REALTIME"?{color:r.cyan600,Icon:Pe,label:e}:e==="REDUX"||e==="STORE"||e==="STATE"||e==="ZUSTAND"||e==="MOBX"||e==="RECOIL"||e==="ACTION"||e==="DISPATCH"?{color:r.violet600,Icon:U,label:e}:e==="ANALYTICS"||e==="FIREBASE"||e==="GA4"||e==="GA"||e==="SEGMENT"||e==="MIXPANEL"||e==="POSTHOG"||e==="TRACK"||e==="EVENT"?{color:r.teal600,Icon:xe,label:e}:e==="AUTH"||e==="TOKEN"||e==="SESSION"||e==="JWT"||e==="LOGIN"||e==="LOGOUT"||e==="USER"?{color:r.amber600,Icon:ye,label:e}:e==="SECURITY"||e==="SHIELD"||e==="PERMISSION"||e==="PERMISSIONS"?{color:r.indigo600Alt,Icon:Me,label:e}:e==="NAV"||e==="NAVIGATION"||e==="ROUTE"||e==="SCREEN"||e==="ROUTER"||e==="DEEPLINK"?{color:r.indigo600Alt,Icon:$,label:e}:e==="STORAGE"||e==="ASYNCSTORAGE"||e==="MMKV"||e==="SQLITE"||e==="DB"||e==="DATABASE"||e==="REALM"||e==="CACHE"?{color:r.purple500,Icon:Oe,label:e}:e==="PERF"||e==="RENDER"||e==="PERFORMANCE"||e==="FPS"||e==="MEMORY"?{color:r.violet500,Icon:Ve,label:e}:e==="INIT"||e==="BOOT"||e==="STARTUP"||e==="LIFECYCLE"||e==="MOUNT"||e==="UNMOUNT"?{color:r.blue600,Icon:D,label:e}:e==="SYNC"||e==="REFRESH"||e==="BACKGROUND"||e==="JOB"||e==="WORKER"?{color:r.sky600,Icon:He,label:e}:e==="PUSH"||e==="NOTIF"||e==="NOTIFICATION"||e==="FCM"||e==="APNS"?{color:r.darkOrange,Icon:we,label:e}:e==="PAY"||e==="PAYMENT"||e==="STRIPE"||e==="IAP"||e==="BILLING"||e==="CHECKOUT"||e==="CART"?{color:r.emerald600,Icon:Ne,label:e}:e==="DEVICE"||e==="HARDWARE"||e==="BLE"||e==="BLUETOOTH"||e==="NFC"||e==="SENSOR"?{color:r.slate600,Icon:Fe,label:e}:e==="LOCATION"||e==="GPS"||e==="GEO"?{color:r.emerald600,Icon:$,label:e}:e==="APP"?{color:r.indigo600Alt,Icon:Ee,label:"APP"}:e==="UI"||e==="VIEW"||e==="THEME"||e==="STYLE"||e==="LAYOUT"?{color:r.pink600,Icon:Ue,label:e}:e==="TEST"||e==="MOCK"||e==="SPEC"?{color:r.emerald500,Icon:he,label:"TEST"}:e==="SAMPLE"||e==="BATCH"?{color:r.indigo600Alt,Icon:me,label:e}:e==="CONFIG"||e==="ENV"||e==="SETTINGS"?{color:r.slate700,Icon:De,label:e}:e==="DEBUG"||e==="TRACE"?{color:r.purpleText,Icon:ze,label:e}:e==="INFO"?{color:r.sky600,Icon:G,label:"INFO"}:e==="SUCCESS"||e==="OK"||e==="DONE"||e==="PASSED"?{color:r.green600,Icon:W,label:e}:e==="WARN"||e==="WARNING"?{color:r.amber600,Icon:Re,label:"WARN"}:e==="ERROR"||e==="CRASH"||e==="BUG"||e==="FATAL"||e==="EXCEPTION"||e==="FAIL"?{color:r.red600,Icon:Be,label:e==="CRASH"||e==="BUG"||e==="FATAL"||e==="EXCEPTION"||e==="FAIL"?e:"ERROR"}:{color:r.slate600,Icon:Ae,label:e}};return<I style={{flexDirection:"column",gap:2}}>
2
+ <I style={{flexDirection:"row",gap:4,overflow:"hidden"}}>
3
+ {z.slice(0,2).map((N,e)=>{const B=O(N),M=B.Icon;return<I key={e}style={[o.prefixTag,{backgroundColor:`${B.color}12`,borderColor:`${B.color}30`}]}>
4
+ <M color={B.color}size={8.5}/>
5
+ <E style={[o.prefixTagText,{color:B.color}]}>
6
+ {B.label}
7
7
  </E>
8
- </T>})}
9
- </T>
10
- <N text={D}search={C}style={O}numberOfLines={1}detectLinks={!1}/>
11
- </T>}return<N text={w}search={C}style={O}numberOfLines={L||2}detectLinks={!1}/>};export const ConsoleLogCard=z.memo(function({item:C,searchStr:O=""}){const{setSelectedLog:F}=Ge(),{t:L}=G(),x=J(C.message),k=C.message.toLowerCase().includes("[analytics error]"),I=z.useMemo(()=>{const S=ee(C.caller);if(!S)return null;const A=Z(C.caller,!0);return{...A,display:S.display,fileName:S.fileName,lineNumber:S.lineNumber||A.lineNumber}},[C.caller]),h=(()=>{const S=(C.type||"log").toLowerCase(),A=(C.sourceMethod||S).toLowerCase();return k||S==="error"||A==="error"?{badgeColor:r.errorColor,border:r.errorColor,badgeBg:`${r.errorColor}18`,badgeText:r.errorColor,label:"ERROR",cardBg:r.errorCardBg,statusPillBg:`${r.errorColor}14`,statusPillBorder:`${r.errorColor}33`,statusPillText:r.errorColor,StatusIcon:Le}:S==="warn"||A==="warn"?{badgeColor:r.darkOrange,border:r.darkOrange,badgeBg:`${r.darkOrange}18`,badgeText:r.darkOrange,label:"WARN",cardBg:r.warnCardBg,statusPillBg:`${r.darkOrange}14`,statusPillBorder:`${r.darkOrange}33`,statusPillText:r.darkOrange,StatusIcon:Ne}:S==="debug"||A==="debug"?{badgeColor:r.purple,border:r.purple,badgeBg:`${r.purple}18`,badgeText:r.purple,label:"DEBUG",cardBg:r.purpleTintBg,statusPillBg:`${r.purple}14`,statusPillBorder:`${r.purple}33`,statusPillText:r.purple,StatusIcon:V}:A==="info"||S==="info"&&A!=="log"?{badgeColor:r.sky600,border:r.sky600,badgeBg:`${r.sky600}18`,badgeText:r.sky600,label:"INFO",cardBg:r.blueTintBg,statusPillBg:`${r.sky600}14`,statusPillBorder:`${r.sky600}33`,statusPillText:r.sky600,StatusIcon:W}:{badgeColor:r.brandPurple,border:r.brandPurple,badgeBg:`${r.brandPurple}15`,badgeText:r.brandPurple,label:"LOG",cardBg:r.white,statusPillBg:`${r.brandPurple}12`,statusPillBorder:`${r.brandPurple}2E`,statusPillText:r.brandPurple,StatusIcon:U}})(),H=h.StatusIcon,P=x?Q(x.data):null,e=()=>{F(C)},R=("sourceMethod"in C?C.sourceMethod:void 0)||C.type||"log";return<T style={o.container}>
12
- <Te onPress={e}style={[o.card,{borderLeftWidth:3.5,borderLeftColor:h.border,backgroundColor:h.cardBg}]}>
13
- <T style={o.cardBody}>
8
+ </I>})}
9
+ </I>
10
+ <L text={T}search={t}style={P}numberOfLines={1}detectLinks={!1}/>
11
+ </I>}return<L text={R}search={t}style={P}numberOfLines={H||2}detectLinks={!1}/>};export const ConsoleLogCard=F.memo(function({item:t,searchStr:P="",onPress:k}){const{setSelectedLog:H}=Ge(),{t:V}=v(),C=J(t.message),w=t.message.toLowerCase().includes("[analytics error]"),T=F.useMemo(()=>{const h=ee(t.caller);if(!h)return null;const A=Z(t.caller,!0);return{...A,display:h.display,fileName:h.fileName,lineNumber:h.lineNumber||A.lineNumber}},[t.caller]),O=(()=>{const h=(t.type||"log").toLowerCase(),A=(t.sourceMethod||h).toLowerCase();return w||h==="error"||A==="error"?{badgeColor:r.errorColor,border:r.errorColor,badgeBg:`${r.errorColor}18`,badgeText:r.errorColor,label:"ERROR",cardBg:r.errorCardBg,statusPillBg:`${r.errorColor}14`,statusPillBorder:`${r.errorColor}33`,statusPillText:r.errorColor,StatusIcon:ke}:h==="warn"||A==="warn"?{badgeColor:r.darkOrange,border:r.darkOrange,badgeBg:`${r.darkOrange}18`,badgeText:r.darkOrange,label:"WARN",cardBg:r.warnCardBg,statusPillBg:`${r.darkOrange}14`,statusPillBorder:`${r.darkOrange}33`,statusPillText:r.darkOrange,StatusIcon:Le}:h==="debug"||A==="debug"?{badgeColor:r.purple,border:r.purple,badgeBg:`${r.purple}18`,badgeText:r.purple,label:"DEBUG",cardBg:r.purpleTintBg,statusPillBg:`${r.purple}14`,statusPillBorder:`${r.purple}33`,statusPillText:r.purple,StatusIcon:D}:A==="info"||h==="info"&&A!=="log"?{badgeColor:r.sky600,border:r.sky600,badgeBg:`${r.sky600}18`,badgeText:r.sky600,label:"INFO",cardBg:r.blueTintBg,statusPillBg:`${r.sky600}14`,statusPillBorder:`${r.sky600}33`,statusPillText:r.sky600,StatusIcon:G}:{badgeColor:r.brandPurple,border:r.brandPurple,badgeBg:`${r.brandPurple}15`,badgeText:r.brandPurple,label:"LOG",cardBg:r.white,statusPillBg:`${r.brandPurple}12`,statusPillBorder:`${r.brandPurple}2E`,statusPillText:r.brandPurple,StatusIcon:W}})(),N=O.StatusIcon,e=C?Q(C.data):null,B=()=>{k?k(t):H(t)},M=("sourceMethod"in t?t.sourceMethod:void 0)||t.type||"log";return<I style={o.container}>
12
+ <Ie onPress={B}style={[o.card,{borderLeftWidth:3.5,borderLeftColor:O.border,backgroundColor:O.cardBg}]}>
13
+ <I style={o.cardBody}>
14
14
 
15
- <T style={o.cardHeaderRow}>
16
- <T style={o.cardHeaderLeft}>
15
+ <I style={o.cardHeaderRow}>
16
+ <I style={o.cardHeaderLeft}>
17
17
  <E style={o.serialNumber}>
18
- #{C.id!=null?C.id+1:1}
18
+ #{t.id!=null?t.id+1:1}
19
19
  </E>
20
20
 
21
21
 
22
- <T style={[o.methodBadge,{backgroundColor:h.badgeColor}]}>
23
- <E style={o.methodBadgeText}>{h.label}</E>
24
- </T>
22
+ <I style={[o.methodBadge,{backgroundColor:O.badgeColor}]}>
23
+ <E style={o.methodBadgeText}>{O.label}</E>
24
+ </I>
25
25
 
26
26
 
27
- <T style={[o.chip,{backgroundColor:`${h.badgeColor}12`,borderColor:`${h.badgeColor}2E`}]}>
28
- <E style={[o.chipText,{color:h.badgeColor}]}numberOfLines={1}>
29
- console.{R}
30
- </E>
31
- </T>
32
-
33
-
34
- {x&&<T style={[o.chip,{backgroundColor:`${r.teal600}14`,borderColor:`${r.teal600}33`}]}>
27
+ {C&&<I style={[o.chip,{backgroundColor:`${r.teal600}12`,borderColor:`${r.teal600}2E`}]}>
35
28
  <E style={[o.chipText,{color:r.teal600}]}>
36
- {Array.isArray(x.data)?`Array[${x.data.length}]`:`Object{${Object.keys(x.data).length}}`}
29
+ {Array.isArray(C.data)?`Array[${C.data.length}]`:`Object{${Object.keys(C.data).length}}`}
37
30
  </E>
38
- </T>}
31
+ </I>}
39
32
 
40
33
 
41
- {"duplicateCount"in C&&C.duplicateCount!=null&&C.duplicateCount>1&&<T style={o.dupBadge}>
34
+ {"duplicateCount"in t&&t.duplicateCount!=null&&t.duplicateCount>1&&<I style={o.dupBadge}>
42
35
  <E style={o.dupBadgeText}>
43
- ×{C.duplicateCount}
36
+ ×{t.duplicateCount}
44
37
  </E>
45
- </T>}
46
- </T>
38
+ </I>}
39
+ </I>
47
40
 
48
41
 
49
- <T style={o.cardHeaderRight}>
50
- <T style={[o.statusPill,{backgroundColor:h.statusPillBg,borderColor:h.statusPillBorder}]}>
51
- <H color={h.statusPillText}size={9.5}/>
52
- <E style={[o.statusPillText,{color:h.statusPillText}]}>
53
- {h.label}
54
- </E>
55
- </T>
56
- <Ce color={r.grayTextWeak}size={13}/>
57
- </T>
58
- </T>
42
+ <I style={o.cardHeaderRight}>
43
+ <Te color={r.slate400}size={13}/>
44
+ </I>
45
+ </I>
59
46
 
60
47
 
61
- <T style={o.messageBox}>
62
- {x?<T style={o.jsonPreviewRow}>
63
- {x.header?<N text={x.header}search={O}style={o.messageText}detectLinks={!1}numberOfLines={1}/>:null}
64
- {P&&<N text={P.text.replace(/\s+/g," ")}search={O}style={o.jsonPreviewText}detectLinks={!1}numberOfLines={x.header?2:3}/>}
65
- </T>:ve(C.message,O,o.messageText,o.highlight,3)}
66
- </T>
48
+ <I style={o.messageBox}>
49
+ {C?<I style={o.jsonPreviewRow}>
50
+ {C.header?<L text={C.header}search={P}style={o.messageText}detectLinks={!1}numberOfLines={1}/>:null}
51
+ {e&&<L text={e.text.replace(/\s+/g," ")}search={P}style={o.jsonPreviewText}detectLinks={!1}numberOfLines={C.header?2:3}/>}
52
+ </I>:ve(t.message,P,o.messageText,o.highlight,3)}
53
+ </I>
67
54
 
68
55
 
69
- <T style={o.cardFooterRow}>
70
- <T style={o.footerLeft}>
71
- <T style={o.cardDateRow}>
72
- <Ue color={r.grayTextWeak}size={10}/>
56
+ <I style={o.cardFooterRow}>
57
+ <I style={o.footerLeft}>
58
+ <I style={o.cardDateRow}>
59
+ <$e color={r.grayTextWeak}size={10}/>
73
60
  <E style={o.cardDateText}numberOfLines={1}>
74
- {X(C.timestamp)}
61
+ {X(t.timestamp)}
75
62
  </E>
76
- </T>
63
+ </I>
77
64
 
78
- {I&&<K onPress={S=>{S.stopPropagation?.(),q(I.rawFilePath||I.fullPath||I.fileName,I.lineNumber,I.columnNumber)}}hitSlop={8}style={o.callerChip}>
79
- {I.fileExt&&I.fileExt!=="other"&&<T style={[o.extBadge,{backgroundColor:I.fileExt==="tsx"||I.fileExt==="ts"?`${r.brandPurple}22`:`${r.teal600}22`}]}>
80
- <E style={[o.extBadgeText,{color:I.fileExt==="tsx"||I.fileExt==="ts"?r.brandPurple:r.teal600}]}>
81
- {I.fileExt.toUpperCase()}
65
+ {T&&<K onPress={h=>{h.stopPropagation?.(),q(T.rawFilePath||T.fullPath||T.fileName,T.lineNumber,T.columnNumber)}}hitSlop={8}style={o.callerChip}>
66
+ {T.fileExt&&T.fileExt!=="other"&&<I style={[o.extBadge,{backgroundColor:T.fileExt==="tsx"||T.fileExt==="ts"?`${r.brandPurple}22`:`${r.teal600}22`}]}>
67
+ <E style={[o.extBadgeText,{color:T.fileExt==="tsx"||T.fileExt==="ts"?r.brandPurple:r.teal600}]}>
68
+ {T.fileExt.toUpperCase()}
82
69
  </E>
83
- </T>}
70
+ </I>}
84
71
  <E style={o.callerChipText}numberOfLines={1}ellipsizeMode="middle">
85
- {I.display}
72
+ {T.display}
86
73
  </E>
87
- <Ie color={r.sky600}size={8}/>
74
+ <Ce color={r.sky600}size={8}/>
88
75
  </K>}
89
- </T>
76
+ </I>
90
77
 
91
- <T style={o.footerRight}>
92
- {x&&<T style={o.metaStatChip}>
78
+ <I style={o.footerRight}>
79
+ {C&&<I style={o.metaStatChip}>
93
80
  <We color={r.purple}size={8.5}/>
94
81
  <E style={o.metaStatText}>
95
- {_(x.data)}
82
+ {_(C.data)}
96
83
  </E>
97
- </T>}
84
+ </I>}
98
85
 
99
- {k&&<T style={[o.chip,{backgroundColor:`${r.skyBlue}15`,borderColor:`${r.skyBlue}30`}]}>
86
+ {w&&<I style={[o.chip,{backgroundColor:`${r.skyBlue}15`,borderColor:`${r.skyBlue}30`}]}>
100
87
  <E style={[o.chipText,{color:r.skyBlue}]}>
101
- {L("console.analyticsBadge")||"ANALYTICS"}
88
+ {V("console.analyticsBadge")||"ANALYTICS"}
102
89
  </E>
103
- </T>}
104
- </T>
105
- </T>
106
-
107
-
108
- <T style={[o.bottomAccentBar,{backgroundColor:`${h.border}35`}]}/>
109
- </T>
110
- </Te>
111
- </T>});const o=Y.create({container:{paddingHorizontal:8,paddingVertical:4,height:148,justifyContent:"center"},card:{height:140,alignSelf:"stretch",borderRadius:10,overflow:"hidden",borderWidth:1,borderColor:r.dividerColor,shadowColor:r.shadowColorString},cardBody:{height:"100%",paddingHorizontal:12,paddingTop:10,paddingBottom:8,justifyContent:"space-between"},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:22,minHeight:22,maxHeight:22},cardHeaderLeft:{flexDirection:"row",alignItems:"center",flex:1,marginRight:8,gap:6,minWidth:0,overflow:"hidden"},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:0},serialNumber:{fontFamily:B.interBold,color:r.grayTextWeak,fontSize:10},methodBadge:{paddingHorizontal:7,paddingVertical:2.5,borderRadius:5,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:B.interBold,fontSize:9.5,lineHeight:12,letterSpacing:.5,color:r.white},chip:{paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1},chipText:{fontFamily:B.interBold,fontSize:9,lineHeight:12},dupBadge:{backgroundColor:`${r.purple}14`,borderColor:`${r.purple}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},dupBadgeText:{fontFamily:B.interBold,fontSize:8.5,color:r.purple},statusPill:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:7,paddingVertical:2.5,borderRadius:6,borderWidth:1,flexShrink:0},statusPillText:{fontFamily:B.interBold,fontSize:10,lineHeight:13},messageBox:{backgroundColor:r.grayBackground,borderRadius:7,borderWidth:1,borderColor:r.dividerColor,paddingHorizontal:10,paddingVertical:6,height:68,minHeight:68,maxHeight:68,justifyContent:"center",gap:2,overflow:"hidden"},messageText:{fontFamily:B.interMedium,fontSize:12,color:r.primaryBlack,lineHeight:17},highlight:{backgroundColor:r.yellowHighlight,color:r.primaryBlack,borderRadius:2},jsonPreviewRow:{flexDirection:"column",justifyContent:"center",gap:2},jsonPreviewText:{fontFamily:B.interMedium,fontSize:11,color:r.teal700,lineHeight:15},cardFooterRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:18,minHeight:18,maxHeight:18,gap:6},footerLeft:{flexDirection:"row",alignItems:"center",gap:6,flex:1,minWidth:0,overflow:"hidden"},footerRight:{flexDirection:"row",alignItems:"center",gap:5,flexShrink:0},cardDateRow:{flexDirection:"row",alignItems:"center",gap:3.5},cardDateText:{fontFamily:B.interRegular,fontSize:10,lineHeight:13,color:r.slate400},callerChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:r.skySoftBg,borderColor:r.skySoftBorder,borderWidth:1,paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,flexShrink:1,minWidth:0},extBadge:{borderRadius:3,paddingHorizontal:3,paddingVertical:.5},extBadgeText:{fontFamily:B.interBold,fontSize:7.5},callerChipText:{color:r.skySoftText,fontSize:9,lineHeight:12,fontFamily:B.interBold},metaStatChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:r.violetSoftBg,borderColor:r.violetSoftBorder,borderWidth:1,paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4},metaStatText:{fontFamily:B.interBold,color:r.violetSoftText,fontSize:9,lineHeight:12},prefixTag:{flexDirection:"row",alignItems:"center",gap:2.5,paddingHorizontal:5,paddingVertical:1.5,borderRadius:3.5,borderWidth:1},prefixTagText:{fontFamily:B.interBold,fontSize:8.5,letterSpacing:.3},bottomAccentBar:{height:2.5,width:"100%",borderRadius:1.5,marginTop:2}});export default ConsoleLogCard;
90
+ </I>}
91
+ </I>
92
+ </I>
93
+ </I>
94
+ </Ie>
95
+ </I>});const o=Y.create({container:{paddingHorizontal:8,paddingVertical:4,height:148,justifyContent:"center"},card:{height:140,alignSelf:"stretch",borderRadius:10,overflow:"hidden",borderWidth:1,borderColor:r.dividerColor,shadowColor:r.shadowColorString},cardBody:{height:"100%",paddingHorizontal:12,paddingTop:10,paddingBottom:8,justifyContent:"space-between"},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:22,minHeight:22,maxHeight:22},cardHeaderLeft:{flexDirection:"row",alignItems:"center",flex:1,marginRight:8,gap:6,minWidth:0,overflow:"hidden"},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:0},serialNumber:{fontFamily:S.interBold,color:r.grayTextWeak,fontSize:10},methodBadge:{paddingHorizontal:7,paddingVertical:2.5,borderRadius:5,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:S.interBold,fontSize:9.5,lineHeight:12,letterSpacing:.5,color:r.white},chip:{paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1},chipText:{fontFamily:S.interBold,fontSize:9,lineHeight:12},dupBadge:{backgroundColor:`${r.purple}14`,borderColor:`${r.purple}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},dupBadgeText:{fontFamily:S.interBold,fontSize:8.5,color:r.purple},statusPill:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:7,paddingVertical:2.5,borderRadius:6,borderWidth:1,flexShrink:0},statusPillText:{fontFamily:S.interBold,fontSize:10,lineHeight:13},messageBox:{backgroundColor:r.grayBackground,borderRadius:7,borderWidth:1,borderColor:r.dividerColor,paddingHorizontal:10,paddingVertical:6,height:68,minHeight:68,maxHeight:68,justifyContent:"center",gap:2,overflow:"hidden"},messageText:{fontFamily:S.interMedium,fontSize:12,color:r.primaryBlack,lineHeight:17},highlight:{backgroundColor:r.yellowHighlight,color:r.primaryBlack,borderRadius:2},jsonPreviewRow:{flexDirection:"column",justifyContent:"center",gap:2},jsonPreviewText:{fontFamily:S.interMedium,fontSize:11,color:r.teal700,lineHeight:15},cardFooterRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:18,minHeight:18,maxHeight:18,gap:6},footerLeft:{flexDirection:"row",alignItems:"center",gap:6,flex:1,minWidth:0,overflow:"hidden"},footerRight:{flexDirection:"row",alignItems:"center",gap:5,flexShrink:0},cardDateRow:{flexDirection:"row",alignItems:"center",gap:3.5},cardDateText:{fontFamily:S.interRegular,fontSize:10,lineHeight:13,color:r.slate400},callerChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:r.skySoftBg,borderColor:r.skySoftBorder,borderWidth:1,paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,flexShrink:1,minWidth:0},extBadge:{borderRadius:3,paddingHorizontal:3,paddingVertical:.5},extBadgeText:{fontFamily:S.interBold,fontSize:7.5},callerChipText:{color:r.skySoftText,fontSize:9,lineHeight:12,fontFamily:S.interBold},metaStatChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:r.violetSoftBg,borderColor:r.violetSoftBorder,borderWidth:1,paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4},metaStatText:{fontFamily:S.interBold,color:r.violetSoftText,fontSize:9,lineHeight:12},prefixTag:{flexDirection:"row",alignItems:"center",gap:2.5,paddingHorizontal:5,paddingVertical:1.5,borderRadius:3.5,borderWidth:1},prefixTagText:{fontFamily:S.interBold,fontSize:8.5,letterSpacing:.3},bottomAccentBar:{height:2.5,width:"100%",borderRadius:1.5,marginTop:2}});function je(R,t){return R.item===t.item&&R.searchStr===t.searchStr&&R.onPress===t.onPress}export const MemoizedConsoleLogCard=F.memo(ConsoleLogCard,je);export default MemoizedConsoleLogCard;
@@ -1,25 +1,23 @@
1
- import"react";import{Platform as z,Linking as B,ScrollView as H,StyleSheet as A,Text as C,View as T}from"react-native";import{AppColors as t}from"../../styles/AppColors";import{AppFonts as V}from"../../styles/AppFonts";import I from"../TouchableScale";import{useInspector as W}from"./InspectorContext";import{LIB_VERSION as F}from"../../constants/version";import{getAppName as L,getBundleIdentifier as $,getAppVersionAndBuild as _,copyToClipboard as v,showToast as P}from"../../helpers";import{PackageIcon as N,GitHubIcon as O,NpmIcon as E,BoltIcon as D,StarIcon as M,BookOpenIcon as U,BugIcon as G,TagIcon as Q,WifiIcon as Z,TerminalIcon as J,AnalyticsIcon as K,DatabaseIcon as X,CameraIcon as Y,CrashIcon as Te,ExternalLinkIcon as S,CopyIcon as Ce}from"../NetworkIcons";export const AboutModal=({onClose:Ve})=>{const{updateAvailable:k,latestNpmVersion:R}=W();return<T style={e.container}>
2
- <H style={e.scrollView}contentContainerStyle={e.scrollContent}showsVerticalScrollIndicator={!1}>
1
+ import"react";import{Platform as P,Linking as B,ScrollView as L,StyleSheet as F,Text as C,View as T}from"react-native";import{AppColors as t}from"../../styles/AppColors";import{AppFonts as I}from"../../styles/AppFonts";import S from"../TouchableScale";import{useInspector as N}from"./InspectorContext";import{t as V}from"../../i18n";import{LIB_VERSION as $}from"../../constants/version";import _ from"../AppHeaderLogo";import{getAppName as O,getBundleIdentifier as E,getAppVersionAndBuild as M,copyToClipboard as H,showToast as A}from"../../helpers";import{GitHubIcon as U,NpmIcon as G,BoltIcon as W,StarIcon as Q,BookOpenIcon as Z,BugIcon as J,TagIcon as K,WifiIcon as X,TerminalIcon as Y,AnalyticsIcon as Te,DatabaseIcon as Ce,CameraIcon as Ve,CrashIcon as Ie,ExternalLinkIcon as R,CopyIcon as Se}from"../NetworkIcons";export const AboutModal=({onClose:Be})=>{const{updateAvailable:z,latestNpmVersion:D}=N();return<T style={e.container}>
2
+ <L style={e.scrollView}contentContainerStyle={e.scrollContent}showsVerticalScrollIndicator={!1}>
3
3
 
4
4
  <T style={e.heroCard}>
5
5
  <T style={e.heroHeaderRow}>
6
6
  <T style={e.heroBrandRow}>
7
- <T style={e.heroIconBox}>
8
- <N color={t.brandPurple}size={24}/>
9
- </T>
7
+ <_ size={46}shape="circle"/>
10
8
  <T style={{flex:1}}>
11
9
  <T style={e.heroTitleRow}>
12
- <C style={e.heroTitle}>In-App Inspector</C>
10
+ <C style={e.heroTitle}>{V("about.heroTitle","In-App Inspector")}</C>
13
11
  <T style={e.versionBadge}>
14
- <C style={e.versionBadgeText}>v{F}</C>
12
+ <C style={e.versionBadgeText}>v{$}</C>
15
13
  </T>
16
- {k?<T style={e.updateBadge}>
14
+ {z?<T style={e.updateBadge}>
17
15
  <C style={e.updateBadgeText}>
18
- v{R} Available
16
+ {V("about.versionAvailable","v{{version}} Available").replace("{{version}}",D||"")}
19
17
  </C>
20
- <D size={9}color={t.amber600}/>
18
+ <W size={9}color={t.amber600}/>
21
19
  </T>:<T style={e.upToDateBadge}>
22
- <C style={e.upToDateBadgeText}>Up to date</C>
20
+ <C style={e.upToDateBadgeText}>{V("about.upToDate","Up to date")}</C>
23
21
  </T>}
24
22
  </T>
25
23
  <C style={e.heroPackageName}>
@@ -30,55 +28,53 @@ import"react";import{Platform as z,Linking as B,ScrollView as H,StyleSheet as A,
30
28
  </T>
31
29
 
32
30
  <C style={e.heroDescription}>
33
- The all-in-one on-device debugging, logging, and QA companion for
34
- React Native & Expo applications. Designed for developers, QA
35
- testers, and product teams.
31
+ {V("about.heroDescription","The all-in-one on-device debugging, logging, and QA companion for React Native & Expo applications. Designed for developers, QA testers, and product teams.")}
36
32
  </C>
37
33
 
38
- {k&&<I onPress={()=>{v("npm install react-native-inapp-inspector@latest","Install Command"),P("Copied npm upgrade command!")}}style={e.upgradeBtn}>
39
- <D size={12}color={t.white}/>
34
+ {z&&<S onPress={()=>{H("npm install react-native-inapp-inspector@latest","Install Command"),A(V("about.copiedUpgradeCommand","Copied npm upgrade command!"))}}style={e.upgradeBtn}>
35
+ <W size={12}color={t.white}/>
40
36
  <C style={e.upgradeBtnText}>
41
- Copy Upgrade Command (v{R})
37
+ {V("about.copyUpgradeCommand","Copy Upgrade Command (v{{version}})").replace("{{version}}",D||"")}
42
38
  </C>
43
- </I>}
39
+ </S>}
44
40
  </T>
45
41
 
46
42
 
47
43
  <T style={e.sectionCard}>
48
- <C style={e.sectionHeader}>APP INFORMATION</C>
44
+ <C style={e.sectionHeader}>{V("about.appInformation","APP INFORMATION")}</C>
49
45
 
50
46
  <T style={{gap:8}}>
51
47
  <T style={e.row}>
52
- <C style={e.rowLabel}>App Name</C>
53
- <C style={e.rowValueBold}>{L()}</C>
48
+ <C style={e.rowLabel}>{V("about.appName","App Name")}</C>
49
+ <C style={e.rowValueBold}>{O()}</C>
54
50
  </T>
55
51
 
56
52
  <T style={e.row}>
57
- <C style={e.rowLabel}>Package Identifier</C>
58
- <C style={e.rowValueRegular}>{$()}</C>
53
+ <C style={e.rowLabel}>{V("about.packageIdentifier","Package Identifier")}</C>
54
+ <C style={e.rowValueRegular}>{E()}</C>
59
55
  </T>
60
56
 
61
57
  <T style={e.row}>
62
- <C style={e.rowLabel}>App Version</C>
58
+ <C style={e.rowLabel}>{V("about.appVersion","App Version")}</C>
63
59
  <C style={e.rowValueBold}>
64
- {_().formatted}
60
+ {M().formatted}
65
61
  </C>
66
62
  </T>
67
63
 
68
64
  <T style={e.row}>
69
- <C style={e.rowLabel}>Environment</C>
65
+ <C style={e.rowLabel}>{V("about.environment","Environment")}</C>
70
66
  <T style={[e.statusTag,{backgroundColor:__DEV__?`${t.amber500}20`:`${t.emerald500}20`,borderColor:__DEV__?`${t.amber500}50`:`${t.emerald500}50`}]}>
71
67
  <C style={[e.statusTagText,{color:__DEV__?t.amber600:t.emerald600}]}>
72
- {__DEV__?"Development (Debug)":"Production (Release)"}
68
+ {__DEV__?V("about.developmentDebug","Development (Debug)"):V("about.productionRelease","Production (Release)")}
73
69
  </C>
74
70
  </T>
75
71
  </T>
76
72
 
77
73
  <T style={e.row}>
78
- <C style={e.rowLabel}>Platform</C>
74
+ <C style={e.rowLabel}>{V("about.platform","Platform")}</C>
79
75
  <C style={e.rowValueRegular}>
80
- {z.OS==="ios"?"Apple iOS":"Google Android"}{" "}
81
- (v{z.Version})
76
+ {P.OS==="ios"?V("about.appleIos","Apple iOS"):V("about.googleAndroid","Google Android")}{" "}
77
+ (v{P.Version})
82
78
  </C>
83
79
  </T>
84
80
  </T>
@@ -86,85 +82,79 @@ import"react";import{Platform as z,Linking as B,ScrollView as H,StyleSheet as A,
86
82
 
87
83
 
88
84
  <T style={e.sectionCard}>
89
- <C style={e.sectionHeader}>WHAT IN-APP INSPECTOR DOES</C>
85
+ <C style={e.sectionHeader}>{V("about.features","WHAT IN-APP INSPECTOR DOES")}</C>
90
86
 
91
87
  <T style={e.featuresList}>
92
88
  <T style={e.featureItem}>
93
89
  <T style={[e.featureIconBox,{backgroundColor:`${t.brandPurple}15`}]}>
94
- <Z color={t.brandPurple}size={18}/>
90
+ <X color={t.brandPurple}size={18}/>
95
91
  </T>
96
92
  <T style={e.featureTextBox}>
97
- <C style={e.featureTitle}>Network Traffic Monitor</C>
93
+ <C style={e.featureTitle}>{V("about.featureNetwork","Network Traffic Monitor")}</C>
98
94
  <C style={e.featureDesc}>
99
- Inspect HTTP and HTTPS API requests, responses, headers, and
100
- server latency with waterfall timing charts.
95
+ {V("about.featureNetworkDesc","Inspect HTTP and HTTPS API requests, responses, headers, and server latency with waterfall timing charts.")}
101
96
  </C>
102
97
  </T>
103
98
  </T>
104
99
 
105
100
  <T style={e.featureItem}>
106
101
  <T style={[e.featureIconBox,{backgroundColor:`${t.blue500}15`}]}>
107
- <J color={t.blue500}size={18}/>
102
+ <Y color={t.blue500}size={18}/>
108
103
  </T>
109
104
  <T style={e.featureTextBox}>
110
- <C style={e.featureTitle}>Console Logger</C>
105
+ <C style={e.featureTitle}>{V("about.featureConsole","Console Logger")}</C>
111
106
  <C style={e.featureDesc}>
112
- View real-time console logs, warnings, and errors with source
113
- file origins and formatted stack traces.
107
+ {V("about.featureConsoleDesc","View real-time console logs, warnings, and errors with source file origins and formatted stack traces.")}
114
108
  </C>
115
109
  </T>
116
110
  </T>
117
111
 
118
112
  <T style={e.featureItem}>
119
113
  <T style={[e.featureIconBox,{backgroundColor:`${t.firebaseOrange}15`}]}>
120
- <K color={t.firebaseOrange}size={18}/>
114
+ <Te color={t.firebaseOrange}size={18}/>
121
115
  </T>
122
116
  <T style={e.featureTextBox}>
123
- <C style={e.featureTitle}>Analytics Telemetry</C>
117
+ <C style={e.featureTitle}>{V("about.featureAnalytics","Analytics Telemetry")}</C>
124
118
  <C style={e.featureDesc}>
125
- Track Firebase and custom analytics events, screen views, and
126
- user properties live on the device.
119
+ {V("about.featureAnalyticsDesc","Track Firebase and custom analytics events, screen views, and user properties live on the device.")}
127
120
  </C>
128
121
  </T>
129
122
  </T>
130
123
 
131
124
  <T style={e.featureItem}>
132
125
  <T style={[e.featureIconBox,{backgroundColor:`${t.violet600}15`}]}>
133
- <X color={t.violet600}size={18}/>
126
+ <Ce color={t.violet600}size={18}/>
134
127
  </T>
135
128
  <T style={e.featureTextBox}>
136
- <C style={e.featureTitle}>Redux State & Actions</C>
129
+ <C style={e.featureTitle}>{V("about.featureRedux","Redux State & Actions")}</C>
137
130
  <C style={e.featureDesc}>
138
- Inspect dispatched actions, payloads, and state tree diffs
139
- without connecting desktop companion tools.
131
+ {V("about.featureReduxDesc","Inspect dispatched actions, payloads, and state tree diffs without connecting desktop companion tools.")}
140
132
  </C>
141
133
  </T>
142
134
  </T>
143
135
 
144
136
  <T style={e.featureItem}>
145
137
  <T style={[e.featureIconBox,{backgroundColor:`${t.teal600}15`}]}>
146
- <Y color={t.teal600}size={18}/>
138
+ <Ve color={t.teal600}size={18}/>
147
139
  </T>
148
140
  <T style={e.featureTextBox}>
149
- <C style={e.featureTitle}>Screen & Video Capture</C>
141
+ <C style={e.featureTitle}>{V("about.featureCapture","Screen & Video Capture")}</C>
150
142
  <C style={e.featureDesc}>
151
- Take screenshots and record test sessions to share with QA and
152
- engineering teams instantly.
143
+ {V("about.featureCaptureDesc","Take screenshots and record test sessions to share with QA and engineering teams instantly.")}
153
144
  </C>
154
145
  </T>
155
146
  </T>
156
147
 
157
148
  <T style={e.featureItem}>
158
149
  <T style={[e.featureIconBox,{backgroundColor:`${t.emerald600}15`}]}>
159
- <Te color={t.emerald600}size={18}/>
150
+ <Ie color={t.emerald600}size={18}/>
160
151
  </T>
161
152
  <T style={e.featureTextBox}>
162
153
  <C style={e.featureTitle}>
163
- Crash Catcher & Diagnostics
154
+ {V("about.featureCrash","Crash Catcher & Diagnostics")}
164
155
  </C>
165
156
  <C style={e.featureDesc}>
166
- Protects against native crashes and provides device health
167
- metrics including RAM, battery, and storage.
157
+ {V("about.featureCrashDesc","Protects against native crashes and provides device health metrics including RAM, battery, and storage.")}
168
158
  </C>
169
159
  </T>
170
160
  </T>
@@ -173,71 +163,71 @@ import"react";import{Platform as z,Linking as B,ScrollView as H,StyleSheet as A,
173
163
 
174
164
 
175
165
  <T style={e.gridContainer}>
176
- <I onPress={()=>{B.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector").catch(()=>{})}}style={[e.gridCard,{backgroundColor:`${t.brandPurple}0F`,borderColor:`${t.brandPurple}30`}]}>
177
- <O color={t.brandPurple}size={18}/>
166
+ <S onPress={()=>{B.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector").catch(()=>{})}}style={[e.gridCard,{backgroundColor:`${t.brandPurple}0F`,borderColor:`${t.brandPurple}30`}]}>
167
+ <U color={t.brandPurple}size={18}/>
178
168
  <T style={{flex:1}}>
179
169
  <T style={{flexDirection:"row",alignItems:"center",gap:5}}>
180
- <M color={t.amber500}size={13}/>
181
- <C style={e.gridCardTitle}>GitHub</C>
170
+ <Q color={t.amber500}size={13}/>
171
+ <C style={e.gridCardTitle}>{V("about.github","GitHub")}</C>
182
172
  </T>
183
- <C style={e.gridCardSub}>Star & source code</C>
173
+ <C style={e.gridCardSub}>{V("about.githubSub","Star & source code")}</C>
184
174
  </T>
185
- <S size={12}color={t.grayTextWeak}/>
186
- </I>
175
+ <R size={12}color={t.grayTextWeak}/>
176
+ </S>
187
177
 
188
- <I onPress={()=>{B.openURL("https://www.npmjs.com/package/react-native-inapp-inspector").catch(()=>{})}}style={e.gridCard}>
189
- <E color={t.npmRed}size={18}/>
178
+ <S onPress={()=>{B.openURL("https://www.npmjs.com/package/react-native-inapp-inspector").catch(()=>{})}}style={e.gridCard}>
179
+ <G color={t.npmRed}size={18}/>
190
180
  <T style={{flex:1}}>
191
- <C style={e.gridCardTitle}>NPM Registry</C>
192
- <C style={e.gridCardSub}>Package updates</C>
181
+ <C style={e.gridCardTitle}>{V("about.npmRegistry","NPM Registry")}</C>
182
+ <C style={e.gridCardSub}>{V("about.npmRegistrySub","Package updates")}</C>
193
183
  </T>
194
- <S size={12}color={t.grayTextWeak}/>
195
- </I>
184
+ <R size={12}color={t.grayTextWeak}/>
185
+ </S>
196
186
 
197
- <I onPress={()=>{B.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector#readme").catch(()=>{})}}style={e.gridCard}>
198
- <U color={t.brandPurple}size={18}/>
187
+ <S onPress={()=>{B.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector#readme").catch(()=>{})}}style={e.gridCard}>
188
+ <Z color={t.brandPurple}size={18}/>
199
189
  <T style={{flex:1}}>
200
- <C style={e.gridCardTitle}>Documentation</C>
201
- <C style={e.gridCardSub}>Integration guide</C>
190
+ <C style={e.gridCardTitle}>{V("about.documentation","Documentation")}</C>
191
+ <C style={e.gridCardSub}>{V("about.documentationSub","Integration guide")}</C>
202
192
  </T>
203
- <S size={12}color={t.grayTextWeak}/>
204
- </I>
193
+ <R size={12}color={t.grayTextWeak}/>
194
+ </S>
205
195
 
206
- <I onPress={()=>{B.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector/issues").catch(()=>{})}}style={e.gridCard}>
207
- <G color={t.errorColor}size={18}/>
196
+ <S onPress={()=>{B.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector/issues").catch(()=>{})}}style={e.gridCard}>
197
+ <J color={t.errorColor}size={18}/>
208
198
  <T style={{flex:1}}>
209
- <C style={e.gridCardTitle}>Report Issue</C>
210
- <C style={e.gridCardSub}>Help & support</C>
199
+ <C style={e.gridCardTitle}>{V("about.reportIssue","Report Issue")}</C>
200
+ <C style={e.gridCardSub}>{V("about.reportIssueSub","Help & support")}</C>
211
201
  </T>
212
- <S size={12}color={t.grayTextWeak}/>
213
- </I>
202
+ <R size={12}color={t.grayTextWeak}/>
203
+ </S>
214
204
 
215
- <I onPress={()=>{B.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector/releases").catch(()=>{})}}style={e.gridCard}>
216
- <Q color={t.successGreen}size={18}/>
205
+ <S onPress={()=>{B.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector/releases").catch(()=>{})}}style={e.gridCard}>
206
+ <K color={t.successGreen}size={18}/>
217
207
  <T style={{flex:1}}>
218
- <C style={e.gridCardTitle}>Release Notes</C>
219
- <C style={e.gridCardSub}>What's new</C>
208
+ <C style={e.gridCardTitle}>{V("about.releaseNotes","Release Notes")}</C>
209
+ <C style={e.gridCardSub}>{V("about.releaseNotesSub","What's new")}</C>
220
210
  </T>
221
- <S size={12}color={t.grayTextWeak}/>
222
- </I>
211
+ <R size={12}color={t.grayTextWeak}/>
212
+ </S>
223
213
 
224
- <I onPress={()=>{v("npm install react-native-inapp-inspector","NPM Command"),P("Copied package install command!")}}style={e.gridCard}>
225
- <Ce color={t.brandPurple}size={16}/>
214
+ <S onPress={()=>{H("npm install react-native-inapp-inspector","NPM Command"),A(V("about.copiedInstallCommand","Copied package install command!"))}}style={e.gridCard}>
215
+ <Se color={t.brandPurple}size={16}/>
226
216
  <T style={{flex:1}}>
227
- <C style={e.gridCardTitle}>Copy Install</C>
228
- <C style={e.gridCardSub}>npm / yarn command</C>
217
+ <C style={e.gridCardTitle}>{V("about.copyInstall","Copy Install")}</C>
218
+ <C style={e.gridCardSub}>{V("about.copyInstallSub","npm / yarn command")}</C>
229
219
  </T>
230
- </I>
220
+ </S>
231
221
  </T>
232
222
 
233
223
 
234
224
  <T style={e.footer}>
235
225
  <C style={e.footerText}>
236
- React Native In-App Inspector · MIT License
226
+ {V("about.footerLicense","React Native In-App Inspector \xB7 MIT License")}
237
227
  </C>
238
228
  <C style={e.footerSubText}>
239
- Zero-config on-device debugging tool
229
+ {V("about.footerTagline","Zero-config on-device debugging tool")}
240
230
  </C>
241
231
  </T>
242
- </H>
243
- </T>};const e=A.create({container:{flex:1,backgroundColor:t.grayBackground},scrollView:{flex:1},scrollContent:{padding:14,paddingBottom:32,gap:12},heroCard:{backgroundColor:t.primaryLight,borderRadius:14,padding:16,borderWidth:1,borderColor:t.dividerColor,shadowColor:t.shadowColorString,shadowOffset:{width:0,height:2},shadowOpacity:.05,shadowRadius:8,elevation:2,gap:12},heroHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},heroBrandRow:{flexDirection:"row",alignItems:"center",gap:12,flex:1},heroIconBox:{width:44,height:44,borderRadius:12,backgroundColor:`${t.brandPurple}15`,alignItems:"center",justifyContent:"center",borderWidth:1,borderColor:`${t.brandPurple}30`},heroTitleRow:{flexDirection:"row",alignItems:"center",gap:6,flexWrap:"wrap"},heroTitle:{fontFamily:V.interBold,fontSize:17,lineHeight:22,color:t.primaryBlack,letterSpacing:-.3},versionBadge:{backgroundColor:`${t.brandPurple}18`,paddingHorizontal:7,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:`${t.brandPurple}30`},versionBadgeText:{fontFamily:V.interBold,fontSize:10,lineHeight:13,color:t.brandPurple},updateBadge:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:`${t.amber500}20`,paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:`${t.amber500}50`},updateBadgeText:{fontFamily:V.interBold,fontSize:9.5,lineHeight:12,color:t.amber600},upToDateBadge:{backgroundColor:`${t.emerald500}18`,paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:`${t.emerald500}35`},upToDateBadgeText:{fontFamily:V.interMedium,fontSize:9.5,lineHeight:12,color:t.emerald600},heroPackageName:{fontFamily:V.interRegular,fontSize:12,lineHeight:16,color:t.grayTextWeak,marginTop:2},heroDescription:{fontFamily:V.interRegular,fontSize:13,lineHeight:18,color:t.grayText},upgradeBtn:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,backgroundColor:t.brandPurple,paddingVertical:9,paddingHorizontal:12,borderRadius:8},upgradeBtnText:{fontFamily:V.interBold,fontSize:12,color:t.white},sectionCard:{backgroundColor:t.primaryLight,borderRadius:14,padding:14,borderWidth:1,borderColor:t.dividerColor,gap:10},sectionHeader:{fontFamily:V.interBold,fontSize:11,lineHeight:15,color:t.grayTextWeak,letterSpacing:.6},row:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingVertical:3},rowLabel:{fontFamily:V.interRegular,fontSize:12.5,lineHeight:17,color:t.grayTextWeak},rowValueBold:{fontFamily:V.interBold,fontSize:12.5,lineHeight:17,color:t.primaryBlack},rowValueRegular:{fontFamily:V.interRegular,fontSize:12.5,lineHeight:17,color:t.grayTextStrong},statusTag:{paddingHorizontal:7,paddingVertical:2,borderRadius:6,borderWidth:1},statusTagText:{fontFamily:V.interSemiBold,fontSize:10.5,lineHeight:14},featuresList:{gap:10},featureItem:{flexDirection:"row",alignItems:"flex-start",gap:12,paddingVertical:4},featureIconBox:{width:36,height:36,borderRadius:10,alignItems:"center",justifyContent:"center"},featureTextBox:{flex:1,gap:2},featureTitle:{fontFamily:V.interBold,fontSize:13,lineHeight:17,color:t.primaryBlack},featureDesc:{fontFamily:V.interRegular,fontSize:11.5,lineHeight:16,color:t.grayTextWeak},gridContainer:{flexDirection:"row",flexWrap:"wrap",gap:8},gridCard:{width:"48.5%",flexGrow:1,backgroundColor:t.primaryLight,borderRadius:10,padding:12,flexDirection:"row",alignItems:"center",gap:9,borderWidth:1,borderColor:t.dividerColor},gridCardTitle:{fontFamily:V.interBold,fontSize:12,lineHeight:16,color:t.primaryBlack},gridCardSub:{fontFamily:V.interRegular,fontSize:10,lineHeight:13,color:t.grayTextWeak},footer:{alignItems:"center",justifyContent:"center",paddingVertical:14,gap:3},footerText:{fontFamily:V.interMedium,fontSize:11,lineHeight:15,color:t.grayTextWeak},footerSubText:{fontFamily:V.interRegular,fontSize:10,lineHeight:14,color:t.slate400}});export default AboutModal;
232
+ </L>
233
+ </T>};const e=F.create({container:{flex:1,backgroundColor:t.grayBackground},scrollView:{flex:1},scrollContent:{padding:14,paddingBottom:32,gap:12},heroCard:{backgroundColor:t.primaryLight,borderRadius:14,padding:16,borderWidth:1,borderColor:t.dividerColor,shadowColor:t.shadowColorString,shadowOffset:{width:0,height:2},shadowOpacity:.05,shadowRadius:8,elevation:2,gap:12},heroHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},heroBrandRow:{flexDirection:"row",alignItems:"center",gap:12,flex:1},heroIconBox:{width:44,height:44,borderRadius:12,backgroundColor:`${t.brandPurple}15`,alignItems:"center",justifyContent:"center",borderWidth:1,borderColor:`${t.brandPurple}30`},heroTitleRow:{flexDirection:"row",alignItems:"center",gap:6,flexWrap:"wrap"},heroTitle:{fontFamily:I.interBold,fontSize:17,lineHeight:22,color:t.primaryBlack,letterSpacing:-.3},versionBadge:{backgroundColor:`${t.brandPurple}18`,paddingHorizontal:7,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:`${t.brandPurple}30`},versionBadgeText:{fontFamily:I.interBold,fontSize:10,lineHeight:13,color:t.brandPurple},updateBadge:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:`${t.amber500}20`,paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:`${t.amber500}50`},updateBadgeText:{fontFamily:I.interBold,fontSize:9.5,lineHeight:12,color:t.amber600},upToDateBadge:{backgroundColor:`${t.emerald500}18`,paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,borderColor:`${t.emerald500}35`},upToDateBadgeText:{fontFamily:I.interMedium,fontSize:9.5,lineHeight:12,color:t.emerald600},heroPackageName:{fontFamily:I.interRegular,fontSize:12,lineHeight:16,color:t.grayTextWeak,marginTop:2},heroDescription:{fontFamily:I.interRegular,fontSize:13,lineHeight:18,color:t.grayText},upgradeBtn:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,backgroundColor:t.brandPurple,paddingVertical:9,paddingHorizontal:12,borderRadius:8},upgradeBtnText:{fontFamily:I.interBold,fontSize:12,color:t.white},sectionCard:{backgroundColor:t.primaryLight,borderRadius:14,padding:14,borderWidth:1,borderColor:t.dividerColor,gap:10},sectionHeader:{fontFamily:I.interBold,fontSize:11,lineHeight:15,color:t.grayTextWeak,letterSpacing:.6},row:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingVertical:3},rowLabel:{fontFamily:I.interRegular,fontSize:12.5,lineHeight:17,color:t.grayTextWeak},rowValueBold:{fontFamily:I.interBold,fontSize:12.5,lineHeight:17,color:t.primaryBlack},rowValueRegular:{fontFamily:I.interRegular,fontSize:12.5,lineHeight:17,color:t.grayTextStrong},statusTag:{paddingHorizontal:7,paddingVertical:2,borderRadius:6,borderWidth:1},statusTagText:{fontFamily:I.interSemiBold,fontSize:10.5,lineHeight:14},featuresList:{gap:10},featureItem:{flexDirection:"row",alignItems:"flex-start",gap:12,paddingVertical:4},featureIconBox:{width:36,height:36,borderRadius:10,alignItems:"center",justifyContent:"center"},featureTextBox:{flex:1,gap:2},featureTitle:{fontFamily:I.interBold,fontSize:13,lineHeight:17,color:t.primaryBlack},featureDesc:{fontFamily:I.interRegular,fontSize:11.5,lineHeight:16,color:t.grayTextWeak},gridContainer:{flexDirection:"row",flexWrap:"wrap",gap:8},gridCard:{width:"48.5%",flexGrow:1,backgroundColor:t.primaryLight,borderRadius:10,padding:12,flexDirection:"row",alignItems:"center",gap:9,borderWidth:1,borderColor:t.dividerColor},gridCardTitle:{fontFamily:I.interBold,fontSize:12,lineHeight:16,color:t.primaryBlack},gridCardSub:{fontFamily:I.interRegular,fontSize:10,lineHeight:13,color:t.grayTextWeak},footer:{alignItems:"center",justifyContent:"center",paddingVertical:14,gap:3},footerText:{fontFamily:I.interMedium,fontSize:11,lineHeight:15,color:t.grayTextWeak},footerSubText:{fontFamily:I.interRegular,fontSize:10,lineHeight:14,color:t.slate400}});export default AboutModal;