react-native-inapp-inspector 2.3.24 → 2.4.0

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 (207) hide show
  1. package/README.md +26 -5
  2. package/dist/commonjs/components/AnalyticsDetail.js +15 -12
  3. package/dist/commonjs/components/AnalyticsEventCard.js +11 -8
  4. package/dist/commonjs/components/AppHeaderLogo.js +4 -6
  5. package/dist/commonjs/components/ConsoleLogCard.d.ts +1 -0
  6. package/dist/commonjs/components/ConsoleLogCard.js +92 -80
  7. package/dist/commonjs/components/EndOfListFooter.d.ts +5 -1
  8. package/dist/commonjs/components/EndOfListFooter.js +27 -5
  9. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +1 -1
  10. package/dist/commonjs/components/Inspector/AnalyticsTab.js +27 -299
  11. package/dist/commonjs/components/Inspector/ConsoleTab.js +36 -94
  12. package/dist/commonjs/components/Inspector/CrashDetail.js +11 -10
  13. package/dist/commonjs/components/Inspector/CrashTab.js +43 -33
  14. package/dist/commonjs/components/Inspector/DebuggingTab.js +13 -13
  15. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +107 -71
  16. package/dist/commonjs/components/Inspector/FabLauncher.js +8 -9
  17. package/dist/commonjs/components/Inspector/InspectorHeader.js +93 -70
  18. package/dist/commonjs/components/Inspector/LogDetail.js +10 -7
  19. package/dist/commonjs/components/Inspector/MainScreen.js +66 -30
  20. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +1 -1
  21. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +3 -3
  22. package/dist/commonjs/components/Inspector/NetworkDetail.js +29 -28
  23. package/dist/commonjs/components/Inspector/NetworkFilterModal.js +1 -1
  24. package/dist/commonjs/components/Inspector/NetworkTab.js +87 -85
  25. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +3 -3
  26. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +21 -22
  27. package/dist/commonjs/components/Inspector/PushCard.d.ts +4 -0
  28. package/dist/commonjs/components/Inspector/PushCard.js +89 -0
  29. package/dist/commonjs/components/Inspector/PushDetail.d.ts +4 -0
  30. package/dist/commonjs/components/Inspector/PushDetail.js +190 -0
  31. package/dist/commonjs/components/Inspector/PushTab.d.ts +3 -0
  32. package/dist/commonjs/components/Inspector/PushTab.js +45 -0
  33. package/dist/commonjs/components/Inspector/ReduxDetail.js +16 -13
  34. package/dist/commonjs/components/Inspector/ReduxTab.js +109 -106
  35. package/dist/commonjs/components/Inspector/SettingsPanel.js +230 -134
  36. package/dist/commonjs/components/Inspector/StorageTab.js +55 -51
  37. package/dist/commonjs/components/Inspector/TabBar.js +30 -26
  38. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +2 -2
  39. package/dist/commonjs/components/JsonViewer.js +151 -159
  40. package/dist/commonjs/components/LogCard.js +34 -38
  41. package/dist/commonjs/components/LogSyntaxHighlighter.js +3 -3
  42. package/dist/commonjs/components/ModuleErrorBoundary.d.ts +24 -0
  43. package/dist/commonjs/components/ModuleErrorBoundary.js +33 -0
  44. package/dist/commonjs/components/NetworkIcons.d.ts +3 -3
  45. package/dist/commonjs/components/NetworkIcons.js +10 -6
  46. package/dist/commonjs/components/SegmentedTabs.d.ts +8 -2
  47. package/dist/commonjs/components/SegmentedTabs.js +11 -7
  48. package/dist/commonjs/components/ShareButton.d.ts +11 -0
  49. package/dist/commonjs/components/ShareButton.js +6 -0
  50. package/dist/commonjs/constants/index.js +1 -1
  51. package/dist/commonjs/constants/version.d.ts +1 -1
  52. package/dist/commonjs/constants/version.js +1 -1
  53. package/dist/commonjs/customHooks/crashHandler.js +4 -4
  54. package/dist/commonjs/customHooks/networkLogger.js +1 -2
  55. package/dist/commonjs/customHooks/pushNotificationLogger.d.ts +19 -0
  56. package/dist/commonjs/customHooks/pushNotificationLogger.js +1 -0
  57. package/dist/commonjs/helpers/index.d.ts +6 -0
  58. package/dist/commonjs/helpers/index.js +4 -4
  59. package/dist/commonjs/helpers/memoryManager.d.ts +2 -2
  60. package/dist/commonjs/helpers/memoryManager.js +1 -1
  61. package/dist/commonjs/helpers/remoteConfig.js +1 -1
  62. package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
  63. package/dist/commonjs/helpers/settingsStore.js +1 -1
  64. package/dist/commonjs/helpers/shareFormatter.d.ts +13 -0
  65. package/dist/commonjs/helpers/shareFormatter.js +7 -0
  66. package/dist/commonjs/i18n/index.d.ts +35 -0
  67. package/dist/commonjs/i18n/index.js +1 -1
  68. package/dist/commonjs/i18n/locales/ar.json +1 -0
  69. package/dist/commonjs/i18n/locales/de.json +1 -0
  70. package/dist/commonjs/i18n/locales/en.json +1 -1
  71. package/dist/commonjs/i18n/locales/es.json +1 -0
  72. package/dist/commonjs/i18n/locales/fr.json +1 -0
  73. package/dist/commonjs/i18n/locales/hi.json +1 -0
  74. package/dist/commonjs/i18n/locales/ja.json +1 -0
  75. package/dist/commonjs/i18n/locales/ko.json +1 -0
  76. package/dist/commonjs/i18n/locales/pt.json +1 -0
  77. package/dist/commonjs/i18n/locales/ru.json +1 -0
  78. package/dist/commonjs/i18n/locales/zh.json +1 -0
  79. package/dist/commonjs/index.d.ts +6 -5
  80. package/dist/commonjs/index.js +4 -4
  81. package/dist/commonjs/push.d.ts +4 -0
  82. package/dist/commonjs/push.js +1 -0
  83. package/dist/commonjs/styles/AppColors.d.ts +40 -0
  84. package/dist/commonjs/styles/AppColors.js +1 -1
  85. package/dist/commonjs/styles/index.js +1 -1
  86. package/dist/commonjs/types/enums.d.ts +30 -20
  87. package/dist/commonjs/types/enums.js +1 -1
  88. package/dist/commonjs/types/index.d.ts +10 -0
  89. package/dist/commonjs/types/interfaces.d.ts +63 -7
  90. package/dist/esm/components/AnalyticsDetail.js +84 -81
  91. package/dist/esm/components/AnalyticsEventCard.js +20 -17
  92. package/dist/esm/components/AppHeaderLogo.js +5 -7
  93. package/dist/esm/components/ConsoleLogCard.d.ts +1 -0
  94. package/dist/esm/components/ConsoleLogCard.js +98 -86
  95. package/dist/esm/components/EndOfListFooter.d.ts +5 -1
  96. package/dist/esm/components/EndOfListFooter.js +36 -14
  97. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +14 -14
  98. package/dist/esm/components/Inspector/AnalyticsTab.js +44 -316
  99. package/dist/esm/components/Inspector/ConsoleTab.js +55 -113
  100. package/dist/esm/components/Inspector/CrashDetail.js +53 -52
  101. package/dist/esm/components/Inspector/CrashTab.js +74 -64
  102. package/dist/esm/components/Inspector/DebuggingTab.js +33 -33
  103. package/dist/esm/components/Inspector/DeviceInfoTab.js +174 -138
  104. package/dist/esm/components/Inspector/FabLauncher.js +41 -42
  105. package/dist/esm/components/Inspector/InspectorHeader.js +138 -115
  106. package/dist/esm/components/Inspector/LogDetail.js +24 -21
  107. package/dist/esm/components/Inspector/MainScreen.js +98 -62
  108. package/dist/esm/components/Inspector/MediaGalleryTab.js +1 -1
  109. package/dist/esm/components/Inspector/MediaPreviewModal.js +31 -31
  110. package/dist/esm/components/Inspector/NetworkDetail.js +88 -87
  111. package/dist/esm/components/Inspector/NetworkFilterModal.js +8 -8
  112. package/dist/esm/components/Inspector/NetworkTab.js +132 -130
  113. package/dist/esm/components/Inspector/NpmStarPrompt.js +42 -42
  114. package/dist/esm/components/Inspector/NpmUpdateToast.js +45 -46
  115. package/dist/esm/components/Inspector/PushCard.d.ts +4 -0
  116. package/dist/esm/components/Inspector/PushCard.js +89 -0
  117. package/dist/esm/components/Inspector/PushDetail.d.ts +4 -0
  118. package/dist/esm/components/Inspector/PushDetail.js +190 -0
  119. package/dist/esm/components/Inspector/PushTab.d.ts +3 -0
  120. package/dist/esm/components/Inspector/PushTab.js +45 -0
  121. package/dist/esm/components/Inspector/ReduxDetail.js +40 -37
  122. package/dist/esm/components/Inspector/ReduxTab.js +155 -152
  123. package/dist/esm/components/Inspector/SettingsPanel.js +380 -284
  124. package/dist/esm/components/Inspector/StorageTab.js +177 -173
  125. package/dist/esm/components/Inspector/TabBar.js +38 -34
  126. package/dist/esm/components/Inspector/UpdateAvailableModal.js +1 -1
  127. package/dist/esm/components/JsonViewer.js +161 -169
  128. package/dist/esm/components/LogCard.js +38 -42
  129. package/dist/esm/components/LogSyntaxHighlighter.js +1 -1
  130. package/dist/esm/components/ModuleErrorBoundary.d.ts +24 -0
  131. package/dist/esm/components/ModuleErrorBoundary.js +33 -0
  132. package/dist/esm/components/NetworkIcons.d.ts +3 -3
  133. package/dist/esm/components/NetworkIcons.js +7 -3
  134. package/dist/esm/components/SegmentedTabs.d.ts +8 -2
  135. package/dist/esm/components/SegmentedTabs.js +12 -8
  136. package/dist/esm/components/ShareButton.d.ts +11 -0
  137. package/dist/esm/components/ShareButton.js +6 -0
  138. package/dist/esm/constants/index.js +1 -1
  139. package/dist/esm/constants/version.d.ts +1 -1
  140. package/dist/esm/constants/version.js +1 -1
  141. package/dist/esm/customHooks/crashHandler.js +6 -6
  142. package/dist/esm/customHooks/networkLogger.js +1 -2
  143. package/dist/esm/customHooks/pushNotificationLogger.d.ts +19 -0
  144. package/dist/esm/customHooks/pushNotificationLogger.js +1 -0
  145. package/dist/esm/helpers/index.d.ts +6 -0
  146. package/dist/esm/helpers/index.js +4 -4
  147. package/dist/esm/helpers/memoryManager.d.ts +2 -2
  148. package/dist/esm/helpers/memoryManager.js +1 -1
  149. package/dist/esm/helpers/remoteConfig.js +1 -1
  150. package/dist/esm/helpers/settingsStore.d.ts +1 -0
  151. package/dist/esm/helpers/settingsStore.js +1 -1
  152. package/dist/esm/helpers/shareFormatter.d.ts +13 -0
  153. package/dist/esm/helpers/shareFormatter.js +7 -0
  154. package/dist/esm/i18n/index.d.ts +35 -0
  155. package/dist/esm/i18n/index.js +1 -1
  156. package/dist/esm/i18n/locales/ar.json +1 -0
  157. package/dist/esm/i18n/locales/de.json +1 -0
  158. package/dist/esm/i18n/locales/en.json +1 -1
  159. package/dist/esm/i18n/locales/es.json +1 -0
  160. package/dist/esm/i18n/locales/fr.json +1 -0
  161. package/dist/esm/i18n/locales/hi.json +1 -0
  162. package/dist/esm/i18n/locales/ja.json +1 -0
  163. package/dist/esm/i18n/locales/ko.json +1 -0
  164. package/dist/esm/i18n/locales/pt.json +1 -0
  165. package/dist/esm/i18n/locales/ru.json +1 -0
  166. package/dist/esm/i18n/locales/zh.json +1 -0
  167. package/dist/esm/index.d.ts +6 -5
  168. package/dist/esm/index.js +7 -7
  169. package/dist/esm/push.d.ts +4 -0
  170. package/dist/esm/push.js +1 -0
  171. package/dist/esm/styles/AppColors.d.ts +40 -0
  172. package/dist/esm/styles/AppColors.js +1 -1
  173. package/dist/esm/styles/index.js +1 -1
  174. package/dist/esm/types/enums.d.ts +30 -20
  175. package/dist/esm/types/enums.js +1 -1
  176. package/dist/esm/types/index.d.ts +10 -0
  177. package/dist/esm/types/interfaces.d.ts +63 -7
  178. package/package.json +53 -24
  179. package/src/native/NativeInspector.ts +0 -1
  180. package/dist/commonjs/bundle.d.ts +0 -2
  181. package/dist/commonjs/bundle.js +0 -1
  182. package/dist/commonjs/components/BrandSquareIcon.d.ts +0 -5
  183. package/dist/commonjs/components/BrandSquareIcon.js +0 -112
  184. package/dist/commonjs/components/Inspector/BundleTab.d.ts +0 -48
  185. package/dist/commonjs/components/Inspector/BundleTab.js +0 -1297
  186. package/dist/commonjs/components/Inspector/PerformanceTab.d.ts +0 -27
  187. package/dist/commonjs/components/Inspector/PerformanceTab.js +0 -454
  188. package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +0 -115
  189. package/dist/commonjs/customHooks/bundleAnalyzer.js +0 -1
  190. package/dist/commonjs/customHooks/performanceTracker.d.ts +0 -144
  191. package/dist/commonjs/customHooks/performanceTracker.js +0 -63
  192. package/dist/commonjs/performance.d.ts +0 -2
  193. package/dist/commonjs/performance.js +0 -1
  194. package/dist/esm/bundle.d.ts +0 -2
  195. package/dist/esm/bundle.js +0 -1
  196. package/dist/esm/components/BrandSquareIcon.d.ts +0 -5
  197. package/dist/esm/components/BrandSquareIcon.js +0 -112
  198. package/dist/esm/components/Inspector/BundleTab.d.ts +0 -48
  199. package/dist/esm/components/Inspector/BundleTab.js +0 -1297
  200. package/dist/esm/components/Inspector/PerformanceTab.d.ts +0 -27
  201. package/dist/esm/components/Inspector/PerformanceTab.js +0 -454
  202. package/dist/esm/customHooks/bundleAnalyzer.d.ts +0 -115
  203. package/dist/esm/customHooks/bundleAnalyzer.js +0 -1
  204. package/dist/esm/customHooks/performanceTracker.d.ts +0 -144
  205. package/dist/esm/customHooks/performanceTracker.js +0 -63
  206. package/dist/esm/performance.d.ts +0 -2
  207. package/dist/esm/performance.js +0 -1
@@ -1,170 +1,173 @@
1
- import Pe,{useCallback as Q,useMemo as O,useRef as Le,useState as X}from"react";import{FlatList as Fe,Platform as We,Pressable as Y,StyleSheet as He,Text as C,TextInput as De,TouchableOpacity as _,View as T}from"react-native";import{useTranslation as Oe}from"../../i18n";import{useInspector as Ee}from"./InspectorContext";import Me from"../TouchableScale";import $e from"../AnimatedEntrance";import Ne from"../EmptyState";import Ue from"../EndOfListFooter";import Te from"../HighlightText";import{getSize as we,openInVSCode as Ge}from"../../helpers";import B from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as S}from"../../styles/AppFonts";import{getActionHistory as Ke,getReduxAutoRefresh as Ze,setReduxAutoRefresh as qe}from"../../customHooks/reduxLogger";import{TerminalIcon as Je,SearchIcon as Qe,ClearIcon as Xe,LayersIcon as Ye,ClockIcon as _e,ForwardChevronIcon as Tt,SortArrowIcon as Ct,BoltIcon as U,AtomIcon as St,ScreenIcon as At,ListenerIcon as Rt,DocIcon as Vt,LoadingSpinnerIcon as It,CircleAlertIcon as Bt,TextAaIcon as Pt,HeaderPauseIcon as Lt}from"../NetworkIcons";const Ce=E=>{switch(E){case"saga":return{label:"SAGA",renderIcon:(A,R=9)=><U color={A}size={R}/>,bg:e.purple100,text:e.brandPurple,border:e.purple200};case"thunk":return{label:"THUNK",renderIcon:(A,R=9)=><St color={A}size={R}/>,bg:e.amber100,text:e.amber800Warm,border:e.amber200};case"ui":return{label:"UI",renderIcon:(A,R=9)=><At color={A}size={R}/>,bg:e.sky100,text:e.sky600,border:e.sky400};case"listener":return{label:"LISTENER",renderIcon:(A,R=9)=><Rt color={A}size={R}/>,bg:e.teal100,text:e.teal700,border:e.teal400};default:return{label:"DIRECT",renderIcon:(A,R=9)=><U color={A}size={R}/>,bg:e.slate100,text:e.slate700,border:e.slate200}}},vt=Pe.memo(()=>{const{t:E}=Oe(),{reduxState:A,reduxLastActionMap:R,reduxSearch:k,setReduxSearch:G,setSelectedReduxSlice:K}=Ee(),Se=Le(null),[P,Ae]=X("latest"),[D,ze]=X(!Ze()),Re=Q(()=>{ze(r=>{const z=!r;return qe(!z),z})},[]),ke=O(()=>we(A),[A]),Z=O(()=>Ke(),[R]),M=O(()=>!A||typeof A!="object"?[]:Object.keys(A).map(z=>{const o=A[z],I=Array.isArray(o),$=o&&typeof o=="object";let H="Primitive",L=0;I?(L=o.length,H=`Array [${L}]`):$?(L=Object.keys(o).length,H=`Object {${L}}`):typeof o<"u"&&(L=1,H=typeof o);let j="live",N;$&&(o.loading===!0||o.isLoading===!0||o.status==="loading"||o.status==="pending"?(j="loading",N="Loading"):o.error||o.hasError||o.status==="error"||o.status==="failed"?(j="error",N=typeof o.error=="string"?o.error:"Error"):L===0&&(j="empty",N="Empty"));const V=R[z],Ie=V?.updatedAt||0,Be=Z.filter(v=>!v.affectedSlices||v.affectedSlices.length===0?!0:v.affectedSlices.includes(z)).length;let q;if(V){let v;if(V.payload!==void 0&&V.payload!==null)try{if(typeof V.payload=="object"){const J=Object.keys(V.payload);v=`{ ${J.slice(0,3).join(", ")}${J.length>3?"...":""} }`}else v=String(V.payload)}catch{}q={type:V.type,timestamp:V.timestamp,updatedAt:V.updatedAt,payloadPreview:v,originType:V.originType,callerFile:V.callerFile,callerLine:V.callerLine,callerCol:V.callerCol}}return{id:`slice-${z}`,name:z,keysCount:L,sizeStr:we(o),typeLabel:H,status:j,statusMessage:N,timelineCount:Be,lastAction:q,updatedAt:Ie}}),[A,R,Z]),F=O(()=>{let r=M;if(k&&k.trim().length>0){const z=k.trim().toLowerCase().split(/\s+/).filter(Boolean);r=r.filter(o=>{const I=A?A[o.name]:null,$=[o.name||"",o.lastAction?.type||"",o.lastAction?.payloadPreview||"",o.lastAction?.originType||"",o.status||"",o.statusMessage||"",I?typeof I=="string"?I:JSON.stringify(I):""].join(" ").toLowerCase();return z.every(H=>$.includes(H))})}return[...r].sort((z,o)=>P==="latest"&&o.updatedAt!==z.updatedAt?o.updatedAt-z.updatedAt:z.name.localeCompare(o.name))},[M,k,P,A]),W=O(()=>{const r=Object.values(R);return r.length===0?null:r.reduce((z,o)=>z?(o.updatedAt||0)>(z.updatedAt||0)?o:z:o,null)},[R]),Ve=Q(({item:r,index:z})=>{const o=r.updatedAt>0&&Date.now()-r.updatedAt<5e3;return<$e index={z}distance={8}>
2
- <Me onPress={()=>{K(r.name)}}style={[t.card,o&&t.cardRecentlyUpdated]}>
3
-
4
- <T style={t.cardHeader}>
5
- <T style={t.sliceBadge}>
6
- <C style={t.sliceBadgeText}>SLICE</C>
7
- </T>
1
+ import Le,{useCallback as Pe,useMemo as N,useRef as De,useState as _}from"react";import{FlatList as Fe,Platform as Y,Pressable as Ce,StyleSheet as We,Text as S,TextInput as Oe,TouchableOpacity as Ee,View as C}from"react-native";import{useTranslation as je}from"../../i18n";import{useInspector as Me}from"./InspectorContext";import Ne from"../TouchableScale";import $e from"../AnimatedEntrance";import Ue from"../EmptyState";import Ge from"../EndOfListFooter";import Te from"../HighlightText";import{getSize as Se,openInVSCode as Ke,getCleanCallerDisplay as Ze}from"../../helpers";import E from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as z}from"../../styles/AppFonts";import{getActionHistory as qe}from"../../customHooks/reduxLogger";import{TerminalIcon as Ie,SearchIcon as Je,ClearIcon as Qe,LayersIcon as Xe,ClockIcon as _e,SizeIcon as Ye,ForwardChevronIcon as Ct,SortArrowIcon as Tt,BoltIcon as U,AtomIcon as St,ScreenIcon as It,ListenerIcon as Rt,DocIcon as At,LoadingSpinnerIcon as Vt,CircleAlertIcon as Ht,TextAaIcon as Bt}from"../NetworkIcons";const Re=L=>{switch(L){case"saga":return{label:"SAGA",renderIcon:(R,A=9)=><U color={R}size={A}/>,bg:e.purple100,text:e.brandPurple,border:e.purple200};case"thunk":return{label:"THUNK",renderIcon:(R,A=9)=><St color={R}size={A}/>,bg:e.amber100,text:e.amber800Warm,border:e.amber200};case"ui":return{label:"UI",renderIcon:(R,A=9)=><It color={R}size={A}/>,bg:e.sky100,text:e.sky600,border:e.sky400};case"listener":return{label:"LISTENER",renderIcon:(R,A=9)=><Rt color={R}size={A}/>,bg:e.teal100,text:e.teal700,border:e.teal400};default:return{label:"DIRECT",renderIcon:(R,A=9)=><U color={R}size={A}/>,bg:e.slate100,text:e.slate700,border:e.slate200}}},Lt=Le.memo(()=>{const{t:L}=je(),{reduxState:R,reduxLastActionMap:A,reduxSearch:k,setReduxSearch:G,setSelectedReduxSlice:Z}=Me(),ze=De(null),[q,Ae]=_(100),[F,ke]=_("latest"),Ve=N(()=>Se(R),[R]),J=N(()=>qe(),[A]),$=N(()=>!R||typeof R!="object"?[]:Object.keys(R).map(I=>{const T=R[I],H=Array.isArray(T),M=T&&typeof T=="object";let D="Primitive",B=0;H?(B=T.length,D=`Array [${B}]`):M?(B=Object.keys(T).length,D=`Object {${B}}`):typeof T<"u"&&(B=1,D=typeof T);let W="live",v;M&&(T.loading===!0||T.isLoading===!0||T.status==="loading"||T.status==="pending"?(W="loading",v="Loading"):T.error||T.hasError||T.status==="error"||T.status==="failed"?(W="error",v=typeof T.error=="string"?T.error:"Error"):B===0&&(W="empty",v="Empty"));const V=A[I],He=V?.updatedAt||0,Be=J.filter(O=>!O.affectedSlices||O.affectedSlices.length===0?!0:O.affectedSlices.includes(I)).length;let Q;if(V){let O;if(V.payload!==void 0&&V.payload!==null)try{if(typeof V.payload=="object"){const X=Object.keys(V.payload);O=`{ ${X.slice(0,3).join(", ")}${X.length>3?"...":""} }`}else O=String(V.payload)}catch{}Q={type:V.type,timestamp:V.timestamp,updatedAt:V.updatedAt,payloadPreview:O,originType:V.originType,callerFile:V.callerFile,callerLine:V.callerLine,callerCol:V.callerCol}}return{id:`slice-${I}`,name:I,keysCount:B,sizeStr:Se(T),typeLabel:D,status:W,statusMessage:v,timelineCount:Be,lastAction:Q,updatedAt:He}}),[R,A,J]),P=N(()=>{let t=$;if(k&&k.trim().length>0){const I=k.trim().toLowerCase().split(/\s+/).filter(Boolean);t=t.filter(T=>{const H=R?R[T.name]:null,M=[T.name||"",T.lastAction?.type||"",T.lastAction?.payloadPreview||"",T.lastAction?.originType||"",T.status||"",T.statusMessage||"",H?typeof H=="string"?H:JSON.stringify(H):""].join(" ").toLowerCase();return I.every(D=>M.includes(D))})}return[...t].sort((I,T)=>F==="latest"&&T.updatedAt!==I.updatedAt?T.updatedAt-I.updatedAt:I.name.localeCompare(T.name))},[$,k,F,R]),K=N(()=>P.slice(0,q),[P,q]),j=N(()=>{const t=Object.values(A);return t.length===0?null:t.reduce((I,T)=>I?(T.updatedAt||0)>(I.updatedAt||0)?T:I:T,null)},[A]),ve=Pe(({item:t,index:I})=>{const T=t.updatedAt>0&&Date.now()-t.updatedAt<5e3,H=t.status==="error"?e.errorColor:t.status==="loading"?e.warningIconGold:t.status==="empty"?e.grayTextWeak:e.greenColor,M=t.status==="error"?e.red100:t.status==="loading"?e.amber100:t.status==="empty"?e.grayBackground:e.emeraldBg,D=t.status==="error"?e.errorBorder:t.status==="loading"?e.amber200:t.status==="empty"?e.dividerColor:e.emeraldBorder,B=t.status==="error"?e.red600:t.status==="loading"?e.amber800Warm:t.status==="empty"?e.grayTextWeak:e.emerald700,W=t.lastAction?.callerFile?Ze(t.lastAction.callerFile):null;return<$e index={I}distance={8}>
2
+ <C style={o.cardContainer}>
3
+ <Ne onPress={()=>{Z(t.name)}}style={[o.card,{borderLeftWidth:3.5,borderLeftColor:H,backgroundColor:t.status==="error"?e.errorCardBg:e.white},T&&o.cardRecentlyUpdated]}>
4
+ <C style={o.cardBody}>
5
+
6
+ <C style={o.cardHeaderRow}>
7
+ <C style={o.cardHeaderLeft}>
8
+ <S style={o.serialNumber}>#{I+1}</S>
9
+ <C style={[o.methodBadge,{backgroundColor:e.violet600}]}>
10
+ <S style={o.methodBadgeText}>REDUX</S>
11
+ </C>
12
+ <C style={[o.chip,{backgroundColor:`${e.violet600}14`,borderColor:`${e.violet600}2E`}]}>
13
+ <S style={[o.chipText,{color:e.violet600}]}>
14
+ {t.typeLabel.toUpperCase()}
15
+ </S>
16
+ </C>
8
17
 
9
- <Te text={r.name}search={k}style={t.sliceName}highlightStyle={t.highlight}/>
10
-
11
-
12
- {r.status==="loading"?<T style={t.loadingPill}>
13
- <It color={e.amber800Warm}size={10}/>
14
- <C style={t.loadingPillText}>Loading</C>
15
- </T>:r.status==="error"?<T style={t.errorPill}>
16
- <Bt color={e.red600}size={10}/>
17
- <C style={t.errorPillText}>Error</C>
18
- </T>:r.status==="empty"?<T style={t.emptyPill}>
19
- <C style={t.emptyPillText}>Empty</C>
20
- </T>:<T style={t.livePill}>
21
- <T style={t.liveDot}/>
22
- <C style={t.livePillText}>Live</C>
23
- </T>}
24
-
25
- {r.lastAction?.timestamp&&<T style={t.timePill}>
26
- <_e color={e.purple}size={10}/>
27
- <C style={t.timeText}>
28
- {r.lastAction.timestamp}
18
+ {t.lastAction?.originType&&(()=>{const v=Re(t.lastAction.originType);return<C style={[o.chip,{backgroundColor:v.bg,borderColor:v.border}]}>
19
+ {v.renderIcon(v.text,8.5)}
20
+ <S style={[o.chipText,{color:v.text}]}>
21
+ {v.label}
22
+ </S>
23
+ </C>})()}
29
24
  </C>
30
- </T>}
31
-
32
- <Tt color={e.grayTextWeak}size={13}/>
33
- </T>
34
25
 
35
-
36
- <T style={t.statsRow}>
37
- <T style={t.pill}>
38
- <Ye color={e.grayTextWeak}size={11}/>
39
- <C style={t.pillValue}>{r.typeLabel}</C>
40
- </T>
41
- <T style={t.pill}>
42
- <C style={t.pillLabel}>Size:</C>
43
- <C style={t.pillValue}>{r.sizeStr}</C>
44
- </T>
45
- {r.timelineCount>0&&<T style={t.pill}>
46
- <C style={t.pillLabel}>Actions:</C>
47
- <C style={t.pillValue}>{r.timelineCount}</C>
48
- </T>}
49
- </T>
50
-
51
-
52
- {r.lastAction&&<T style={t.lastActionRow}>
53
- <T style={{flexDirection:"row",alignItems:"center",gap:5,flex:1,minWidth:0,flexWrap:"wrap"}}>
54
- <U color={e.brandPurple}size={12}/>
55
- <C style={t.lastActionLabel}>{E("redux.last","Last")}:</C>
26
+ <C style={o.cardHeaderRight}>
27
+ <C style={[o.statusPill,{backgroundColor:M,borderColor:D}]}>
28
+ {t.status==="loading"?<Vt color={e.amber800Warm}size={10}/>:t.status==="error"?<Ht color={e.red600}size={10}/>:t.status==="empty"?null:<C style={o.liveDot}/>}
29
+ <S style={[o.statusPillText,{color:B}]}>
30
+ {t.status==="loading"?"Loading":t.status==="error"?t.statusMessage||"Error":t.status==="empty"?"Empty":"Live"}
31
+ </S>
32
+ </C>
33
+ <Ct color={e.grayTextWeak}size={13}/>
34
+ </C>
35
+ </C>
56
36
 
57
-
58
- {r.lastAction.originType&&(()=>{const I=Ce(r.lastAction.originType);return<T style={{flexDirection:"row",alignItems:"center",gap:2.5,backgroundColor:I.bg,paddingHorizontal:4.5,paddingVertical:1.5,borderRadius:3.5,borderWidth:1,borderColor:I.border}}>
59
- {I.renderIcon(I.text,8.5)}
60
- <C style={{fontFamily:S.interBold,fontSize:8,color:I.text,letterSpacing:.3}}>
61
- {I.label}
62
- </C>
63
- </T>})()}
37
+
38
+ <C style={o.cardMainRow}>
39
+ <C style={o.sliceNameRow}>
40
+ <Te text={t.name}search={k}style={o.sliceNameText}highlightStyle={o.highlight}numberOfLines={1}/>
41
+ {t.timelineCount>0&&<C style={o.actionCountChip}>
42
+ <U color={e.violet600}size={9}/>
43
+ <S style={o.actionCountChipText}>
44
+ {t.timelineCount}
45
+ </S>
46
+ </C>}
47
+ </C>
48
+ <C style={o.actionPreviewRow}>
49
+ <Ie color={e.grayTextWeak}size={10}/>
50
+ {t.lastAction?<Te text={t.lastAction.type+(t.lastAction.payloadPreview?` \xB7 ${t.lastAction.payloadPreview}`:"")}search={k}style={o.actionPreviewText}highlightStyle={o.highlight}numberOfLines={1}/>:<S style={o.actionPreviewEmptyText}numberOfLines={1}>
51
+ Initial state (no actions dispatched yet)
52
+ </S>}
53
+ </C>
54
+ </C>
64
55
 
65
- <Te text={r.lastAction.type}search={k}style={t.lastActionValue}highlightStyle={t.highlight}numberOfLines={1}/>
56
+
57
+ <C style={o.cardFooterRow}>
58
+ <C style={o.footerLeft}>
59
+ <_e color={e.grayTextWeak}size={10}/>
60
+ <S style={o.footerTimestampText}numberOfLines={1}>
61
+ {t.lastAction?.timestamp||"Initial state"}
62
+ </S>
63
+ {W&&<Ce onPress={()=>Ke(t.lastAction.callerFile,t.lastAction.callerLine,t.lastAction.callerCol)}hitSlop={6}style={o.callerChip}>
64
+ <At color={e.sky600}size={9}/>
65
+ <S style={o.callerChipText}>
66
+ {W.display}
67
+ </S>
68
+ </Ce>}
69
+ </C>
66
70
 
67
-
68
- {r.lastAction.callerFile&&<Y onPress={()=>Ge(r.lastAction.callerFile,r.lastAction.callerLine,r.lastAction.callerCol)}hitSlop={6}style={{flexDirection:"row",alignItems:"center",gap:2.5,backgroundColor:e.sky100,paddingHorizontal:4.5,paddingVertical:1.5,borderRadius:3,borderWidth:.5,borderColor:e.sky400}}>
69
- <Vt color={e.sky600}size={9}/>
70
- <C style={{fontFamily:S.interMedium,fontSize:8.5,color:e.sky600}}>
71
- {r.lastAction.callerFile.split("/").pop()}:{r.lastAction.callerLine||1}
72
- </C>
73
- </Y>}
71
+ <C style={o.footerRight}>
72
+ <C style={o.metaStatChip}>
73
+ <Ye color={e.violet600}size={9.5}/>
74
+ <S style={o.metaStatText}>
75
+ {t.sizeStr}
76
+ </S>
77
+ </C>
78
+ <C style={o.metaStatChip}>
79
+ <Xe color={e.violet600}size={9.5}/>
80
+ <S style={o.metaStatText}>
81
+ {t.keysCount} keys
82
+ </S>
83
+ </C>
84
+ </C>
85
+ </C>
86
+ </C>
74
87
 
75
- {r.lastAction.payloadPreview&&<C style={t.payloadPreviewText}numberOfLines={1}>
76
- {r.lastAction.payloadPreview}
77
- </C>}
78
- </T>
79
- </T>}
80
- </Me>
81
- </$e>},[k,K,E]);return A?<T style={{flex:1,backgroundColor:e.grayBackground}}>
88
+
89
+ <C style={o.waterfallContainer}>
90
+ <C style={[o.waterfallBar,{backgroundColor:H,width:T?"100%":"35%"}]}/>
91
+ </C>
92
+ </Ne>
93
+ </C>
94
+ </$e>},[k,Z]);return R?<C style={{flex:1,backgroundColor:e.grayBackground}}>
82
95
 
83
- <T style={t.overviewCard}>
84
- <T style={t.statCol}>
85
- <C style={t.statHeading}>ACTIVE SLICES</C>
86
- <C style={t.statBigVal}>{M.length}</C>
87
- </T>
88
- <T style={t.statDivider}/>
89
- <T style={t.statCol}>
90
- <C style={t.statHeading}>TOTAL STATE</C>
91
- <C style={t.statBigVal}>{ke}</C>
92
- </T>
93
- <T style={t.statDivider}/>
94
- <T style={[t.statCol,{flex:1.6}]}>
95
- <T style={{flexDirection:"row",alignItems:"center",gap:4}}>
96
- <C style={t.statHeading}>LAST ACTION</C>
97
- {W?.originType&&(()=>{const r=Ce(W.originType);return<T style={{flexDirection:"row",alignItems:"center",gap:2,backgroundColor:r.bg,paddingHorizontal:4,paddingVertical:1,borderRadius:3}}>
98
- {r.renderIcon(r.text,8)}
99
- <C style={{fontFamily:S.interBold,fontSize:7.5,color:r.text}}>
100
- {r.label}
101
- </C>
102
- </T>})()}
103
- </T>
104
- <C style={t.statLastAction}numberOfLines={1}>
105
- {W?W.type:"Initial"}
96
+ <C style={o.overviewCard}>
97
+ <C style={o.statCol}>
98
+ <S style={o.statHeading}>{L("redux.activeSlices","ACTIVE SLICES")}</S>
99
+ <S style={o.statBigVal}>{$.length}</S>
100
+ </C>
101
+ <C style={o.statDivider}/>
102
+ <C style={o.statCol}>
103
+ <S style={o.statHeading}>{L("redux.totalState","TOTAL STATE")}</S>
104
+ <S style={o.statBigVal}>{Ve}</S>
105
+ </C>
106
+ <C style={o.statDivider}/>
107
+ <C style={[o.statCol,{flex:1.6}]}>
108
+ <C style={{flexDirection:"row",alignItems:"center",gap:4}}>
109
+ <S style={o.statHeading}>{L("redux.lastActionHeader","LAST ACTION")}</S>
110
+ {j?.originType&&(()=>{const t=Re(j.originType);return<C style={{flexDirection:"row",alignItems:"center",gap:2,backgroundColor:t.bg,paddingHorizontal:4,paddingVertical:1,borderRadius:3}}>
111
+ {t.renderIcon(t.text,8)}
112
+ <S style={{fontFamily:z.interBold,fontSize:7.5,color:t.text}}>
113
+ {t.label}
114
+ </S>
115
+ </C>})()}
106
116
  </C>
107
- {W?.timestamp&&<C style={t.statLastTime}>
108
- {W.timestamp}
109
- </C>}
110
- </T>
111
- </T>
117
+ <S style={o.statLastAction}numberOfLines={1}>
118
+ {j?j.type:"Initial"}
119
+ </S>
120
+ {j?.timestamp&&<S style={o.statLastTime}>
121
+ {j.timestamp}
122
+ </S>}
123
+ </C>
124
+ </C>
112
125
 
113
126
 
114
- <T style={t.toolbarContainer}>
115
- <T style={t.searchRow}>
116
- <T style={B.searchContainer}>
117
- <Qe color={e.grayTextWeak}size={15}/>
118
- <De accessible={!0}accessibilityRole="search"accessibilityLabel="Search Redux slices or actions"accessibilityHint="Type to filter state slices in real time"placeholder="Search Redux slices or actions..."placeholderTextColor={e.grayTextWeak}value={k}onChangeText={G}style={B.searchInput}autoCorrect={!1}autoCapitalize="none"/>
119
- {k.length>0&&<T style={{flexDirection:"row",alignItems:"center",gap:4}}>
120
- <T style={{backgroundColor:`${e.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:1.5}}>
121
- <C style={{color:e.purple,fontSize:9.5,fontFamily:S.interBold}}>
122
- {F.length}
123
- </C>
124
- </T>
125
- <Y accessible={!0}accessibilityRole="button"accessibilityLabel="Clear search input"onPress={()=>G("")}hitSlop={10}>
126
- <Xe color={e.grayTextWeak}size={14}/>
127
- </Y>
128
- </T>}
129
- </T>
130
-
131
-
132
- <_ accessible={!0}accessibilityRole="button"accessibilityLabel={D?"Resume live Redux updates":"Pause live Redux updates"}accessibilityHint="Toggles automatic recording of Redux state updates"style={[B.toolbarBtn,D&&{backgroundColor:`${e.darkOrange}1F`,borderColor:e.darkOrange}]}onPress={Re}hitSlop={6}>
133
- <Lt isPaused={D}color={D?e.darkOrange:e.grayTextStrong}size={16}/>
134
- </_>
127
+ <C style={o.toolbarContainer}>
128
+ <C style={o.searchRow}>
129
+ <C style={E.searchContainer}>
130
+ <Je color={e.grayTextWeak}size={15}/>
131
+ <Oe accessible={!0}accessibilityRole="search"accessibilityLabel="Search Redux slices or actions"accessibilityHint="Type to filter state slices in real time"placeholder={L("redux.searchPlaceholder","Search state or actions...")}placeholderTextColor={e.grayTextWeak}value={k}onChangeText={G}style={E.searchInput}autoCorrect={!1}autoCapitalize="none"/>
132
+ {k.length>0&&<C style={{flexDirection:"row",alignItems:"center",gap:4}}>
133
+ <C style={{backgroundColor:`${e.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:1.5}}>
134
+ <S style={{color:e.purple,fontSize:9.5,fontFamily:z.interBold}}>
135
+ {P.length}
136
+ </S>
137
+ </C>
138
+ <Ce accessible={!0}accessibilityRole="button"accessibilityLabel="Clear search input"onPress={()=>G("")}hitSlop={10}>
139
+ <Qe color={e.grayTextWeak}size={14}/>
140
+ </Ce>
141
+ </C>}
142
+ </C>
135
143
 
136
144
 
137
- <_ accessible={!0}accessibilityRole="button"accessibilityLabel={`Sort order: ${P==="latest"?"Recently updated first":"Alphabetical A to Z"}`}accessibilityHint="Switches sorting between recently updated and alphabetical"style={[B.toolbarBtn,P==="latest"&&{backgroundColor:`${e.brandPurple}1F`,borderColor:e.brandPurple}]}onPress={()=>Ae(r=>r==="latest"?"alpha":"latest")}hitSlop={6}>
138
- <Ct color={P==="latest"?e.brandPurple:e.grayTextStrong}size={16}/>
139
- </_>
140
- </T>
145
+ <Ee accessible={!0}accessibilityRole="button"accessibilityLabel={`Sort order: ${F==="latest"?"Recently updated first":"Alphabetical A to Z"}`}accessibilityHint="Switches sorting between recently updated and alphabetical"style={[E.toolbarBtn,F==="latest"&&{backgroundColor:`${e.brandPurple}1F`,borderColor:e.brandPurple}]}onPress={()=>ke(t=>t==="latest"?"alpha":"latest")}hitSlop={6}>
146
+ <Tt color={F==="latest"?e.brandPurple:e.grayTextStrong}size={16}/>
147
+ </Ee>
148
+ </C>
141
149
 
142
- <T style={t.headerSubRow}>
143
- <C style={t.resultCount}>
144
- Showing {F.length} of {M.length} state slices
150
+ <C style={o.headerSubRow}>
151
+ <S style={o.resultCount}>
152
+ Showing {P.length} of {$.length} state slices
153
+ </S>
154
+ <C style={{flexDirection:"row",alignItems:"center",gap:4}}>
155
+ {F==="latest"?<U color={e.brandPurple}size={11}/>:<Bt color={e.brandPurple}size={11}/>}
156
+ <S style={o.sortLabel}>
157
+ {F==="latest"?"Newest Updates First":"Alphabetical (A-Z)"}
158
+ </S>
145
159
  </C>
146
- <T style={{flexDirection:"row",alignItems:"center",gap:8}}>
147
- {D&&<T style={t.pausedBannerPill}>
148
- <C style={t.pausedBannerText}>PAUSED</C>
149
- </T>}
150
- <T style={{flexDirection:"row",alignItems:"center",gap:4}}>
151
- {P==="latest"?<U color={e.brandPurple}size={11}/>:<Pt color={e.brandPurple}size={11}/>}
152
- <C style={t.sortLabel}>
153
- {P==="latest"?"Newest Updates First":"Alphabetical (A-Z)"}
154
- </C>
155
- </T>
156
- </T>
157
- </T>
158
- </T>
160
+ </C>
161
+ </C>
159
162
 
160
163
 
161
- <Fe ref={Se}data={F}keyExtractor={r=>r.id}renderItem={Ve}initialNumToRender={12}maxToRenderPerBatch={8}windowSize={5}removeClippedSubviews={We.OS==="android"}renderToHardwareTextureAndroid={!0}ListEmptyComponent={<Ne isSearch={k.trim().length>0}searchQuery={k}onClearSearch={()=>G("")}customTitle={k.trim().length>0?"No Matching Slices":"No Redux State Detected"}customSub={k.trim().length>0?`No Redux slices match "${k}"`:"Attach the Redux store or dispatch actions to see state slices."}/>}ListFooterComponent={F.length>0?<Ue count={F.length}label="slices"/>:null}contentContainerStyle={[t.listContent,F.length===0&&{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
162
- </T>:<T style={B.emptyContainer}>
163
- <T style={B.emptyIconWrap}>
164
- <Je color={e.purple}size={32}/>
165
- </T>
166
- <C style={B.emptyTitle}>No Redux Store Connected</C>
167
- <C style={B.emptySub}>
168
- Call connectReduxStore(store) or use inspectorReduxMiddleware at app initialization.
164
+ <Fe ref={ze}data={K}keyExtractor={t=>t.id}renderItem={ve}getItemLayout={(t,I)=>({length:126,offset:126*I,index:I})}initialNumToRender={12}maxToRenderPerBatch={8}windowSize={5}removeClippedSubviews={Y.OS==="android"}renderToHardwareTextureAndroid={!0}ListEmptyComponent={<Ue isSearch={k.trim().length>0}searchQuery={k}onClearSearch={()=>G("")}customTitle={k.trim().length>0?"No Matching Slices":"No Redux State Detected"}customSub={k.trim().length>0?`No Redux slices match "${k}"`:"Attach the Redux store or dispatch actions to see state slices."}/>}ListFooterComponent={P.length>0?<Ge count={K.length}totalCount={P.length}label="slices"hasMore={K.length<P.length}onLoadMore={()=>Ae(t=>t+10)}/>:null}contentContainerStyle={[o.listContent,P.length===0&&{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
165
+ </C>:<C style={E.emptyContainer}>
166
+ <C style={E.emptyIconWrap}>
167
+ <Ie color={e.purple}size={32}/>
169
168
  </C>
170
- </T>}),t=He.create({overviewCard:{flexDirection:"row",alignItems:"center",backgroundColor:e.white,marginHorizontal:12,marginTop:10,borderRadius:12,padding:12,borderWidth:1,borderColor:e.dividerColor,shadowColor:e.primaryBlack,shadowOffset:{width:0,height:1},shadowOpacity:.03,shadowRadius:3,elevation:1},statCol:{flex:1},statDivider:{width:1,height:28,backgroundColor:e.dividerColor,marginHorizontal:8},statHeading:{fontFamily:S.interBold,fontSize:9,color:e.grayTextWeak,letterSpacing:.5},statBigVal:{fontFamily:S.interBold,fontSize:14,color:e.primaryBlack,marginTop:2},statLastAction:{fontFamily:S.interBold,fontSize:11,color:e.purple,marginTop:2},statLastTime:{fontFamily:S.interRegular,fontSize:9.5,color:e.grayTextWeak},toolbarContainer:{backgroundColor:e.white,borderBottomWidth:1,borderBottomColor:e.dividerColor,paddingHorizontal:12,paddingTop:8,paddingBottom:6,marginTop:8},searchRow:{flexDirection:"row",alignItems:"center",gap:8},headerSubRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginTop:6,paddingHorizontal:2},resultCount:{fontFamily:S.interMedium,fontSize:11,color:e.grayTextWeak},sortLabel:{fontFamily:S.interMedium,fontSize:10.5,color:e.brandPurple},listContent:{padding:12,paddingBottom:36},card:{backgroundColor:e.white,borderRadius:12,padding:12,marginBottom:10,borderWidth:1,borderColor:e.dividerColor,shadowColor:e.primaryBlack,shadowOffset:{width:0,height:1},shadowOpacity:.04,shadowRadius:4,elevation:2},cardRecentlyUpdated:{borderColor:`${e.brandPurple}66`,backgroundColor:e.purpleTintBg},cardHeader:{flexDirection:"row",alignItems:"center",gap:8,marginBottom:8},sliceBadge:{backgroundColor:e.violetSoftBg,paddingHorizontal:6,paddingVertical:3,borderRadius:5,borderWidth:1,borderColor:e.violetSoftBorder},sliceBadgeText:{fontFamily:S.interBold,fontSize:9.5,color:e.purple700,letterSpacing:.4},sliceName:{flex:1,fontFamily:S.interBold,fontSize:13.5,color:e.primaryBlack},timePill:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:`${e.purple}14`,paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1,borderColor:`${e.purple}2E`},timeText:{fontFamily:S.interMedium,fontSize:10,color:e.purple},statsRow:{flexDirection:"row",alignItems:"center",gap:6,flexWrap:"wrap",marginBottom:6},pill:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:e.grayBackground,paddingHorizontal:7,paddingVertical:3,borderRadius:5,borderWidth:1,borderColor:e.dividerColor},pillLabel:{fontFamily:S.interMedium,fontSize:10.5,color:e.grayTextWeak},pillValue:{fontFamily:S.interBold,fontSize:10.5,color:e.primaryBlack},livePill:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:e.emeraldBg,paddingHorizontal:6,paddingVertical:3,borderRadius:5,borderWidth:1,borderColor:e.emeraldBorder},liveDot:{width:6,height:6,borderRadius:3,backgroundColor:e.emerald500},livePillText:{fontFamily:S.interBold,fontSize:10,color:e.emerald700},loadingPill:{backgroundColor:e.amber100,paddingHorizontal:6,paddingVertical:3,borderRadius:5,borderWidth:1,borderColor:e.amber200},loadingPillText:{fontFamily:S.interBold,fontSize:9.5,color:e.amber800Warm},errorPill:{backgroundColor:e.red100,paddingHorizontal:6,paddingVertical:3,borderRadius:5,borderWidth:1,borderColor:e.errorBorder},errorPillText:{fontFamily:S.interBold,fontSize:9.5,color:e.red600},emptyPill:{backgroundColor:e.grayBackground,paddingHorizontal:6,paddingVertical:3,borderRadius:5,borderWidth:1,borderColor:e.dividerColor},emptyPillText:{fontFamily:S.interMedium,fontSize:9.5,color:e.grayTextWeak},lastActionRow:{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:e.grayBackground,borderRadius:6,paddingHorizontal:8,paddingVertical:5,marginTop:4,borderWidth:1,borderColor:e.dividerColor},lastActionLabel:{fontFamily:S.interMedium,fontSize:10.5,color:e.grayTextWeak},lastActionValue:{fontFamily:S.interBold,fontSize:11,color:e.primaryBlack},payloadPreviewText:{flex:1,fontFamily:S.interRegular,fontSize:10,color:e.grayTextWeak,marginLeft:4},highlight:{backgroundColor:e.yellow200,color:e.yellow800,fontFamily:S.interBold},pausedBannerPill:{backgroundColor:e.amber100,paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1,borderColor:e.amber200},pausedBannerText:{fontFamily:S.interBold,fontSize:9,color:e.amber800Warm,letterSpacing:.5}});export default vt;
169
+ <S style={E.emptyTitle}>{L("redux.noStoreConnected","No Redux Store Connected")}</S>
170
+ <S style={E.emptySub}>
171
+ {L("redux.connectStoreTip","Call connectReduxStore(store) or use inspectorReduxMiddleware at app initialization.")}
172
+ </S>
173
+ </C>}),o=We.create({overviewCard:{flexDirection:"row",alignItems:"center",backgroundColor:e.white,marginHorizontal:12,marginTop:10,borderRadius:12,padding:12,borderWidth:1,borderColor:e.dividerColor,shadowColor:e.primaryBlack,shadowOffset:{width:0,height:1},shadowOpacity:.03,shadowRadius:3,elevation:1},statCol:{flex:1},statDivider:{width:1,height:28,backgroundColor:e.dividerColor,marginHorizontal:8},statHeading:{fontFamily:z.interBold,fontSize:9,color:e.grayTextWeak,letterSpacing:.5},statBigVal:{fontFamily:z.interBold,fontSize:14,color:e.primaryBlack,marginTop:2},statLastAction:{fontFamily:z.interBold,fontSize:11,color:e.purple,marginTop:2},statLastTime:{fontFamily:z.interRegular,fontSize:9.5,color:e.grayTextWeak},toolbarContainer:{backgroundColor:e.white,borderBottomWidth:1,borderBottomColor:e.dividerColor,paddingHorizontal:12,paddingTop:8,paddingBottom:6,marginTop:8},searchRow:{flexDirection:"row",alignItems:"center",gap:8},headerSubRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginTop:6,paddingHorizontal:2},resultCount:{fontFamily:z.interMedium,fontSize:11,color:e.grayTextWeak},sortLabel:{fontFamily:z.interMedium,fontSize:10.5,color:e.brandPurple},listContent:{paddingVertical:8,paddingBottom:36},cardContainer:{paddingHorizontal:10,paddingVertical:4,height:126},card:{backgroundColor:e.white,borderRadius:10,borderWidth:1,borderColor:e.grayBorderSecondary,shadowColor:e.shadowColorString,shadowOffset:{width:0,height:1},shadowOpacity:.05,shadowRadius:2.5,elevation:1.5,height:118,overflow:"hidden"},cardRecentlyUpdated:{borderColor:`${e.brandPurple}66`,backgroundColor:e.purpleTintBg},cardBody:{paddingHorizontal:12,paddingTop:9,paddingBottom:7,flex:1,justifyContent:"space-between"},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:22,minHeight:22,maxHeight:22,gap:6},cardHeaderLeft:{flexDirection:"row",alignItems:"center",gap:6,flex:1,minWidth:0},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:0},serialNumber:{fontFamily:z.interBold,fontSize:10.5,lineHeight:13,color:e.grayTextWeak},methodBadge:{paddingHorizontal:5.5,paddingVertical:2,borderRadius:4,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:z.interBold,color:e.white,fontSize:9,lineHeight:12,letterSpacing:.4},chip:{flexDirection:"row",alignItems:"center",gap:3,paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,borderWidth:1},chipText:{fontFamily:z.interBold,fontSize:8.5,lineHeight:11,letterSpacing:.3},statusPill:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1},liveDot:{width:6,height:6,borderRadius:3,backgroundColor:e.emerald500},statusPillText:{fontFamily:z.interBold,fontSize:9.5,lineHeight:12},cardMainRow:{height:48,minHeight:48,maxHeight:48,justifyContent:"space-between",gap:3},sliceNameRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:6},sliceNameText:{fontFamily:z.interBold,fontSize:12.5,lineHeight:16,color:e.primaryBlack,flex:1},actionCountChip:{flexDirection:"row",alignItems:"center",gap:2.5,backgroundColor:`${e.violet600}14`,borderColor:`${e.violet600}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},actionCountChipText:{fontFamily:z.interBold,fontSize:8.5,lineHeight:11,color:e.violet600},actionPreviewRow:{flexDirection:"row",alignItems:"center",gap:4.5,minHeight:15},actionPreviewText:{fontFamily:Y.select({ios:"Menlo",default:"monospace"}),fontSize:10,lineHeight:13,color:e.grayTextWeak,flex:1},actionPreviewEmptyText:{fontFamily:z.interRegular,fontSize:10,lineHeight:13,color:e.slate400,fontStyle:"italic",flex:1},cardFooterRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:18,minHeight:18,maxHeight:18,gap:6},footerLeft:{flexDirection:"row",alignItems:"center",gap:5,flex:1,minWidth:0,overflow:"hidden"},footerRight:{flexDirection:"row",alignItems:"center",gap:5,flexShrink:0},footerTimestampText:{fontFamily:z.interRegular,fontSize:10,lineHeight:13,color:e.slate400},callerChip:{flexDirection:"row",alignItems:"center",gap:2.5,backgroundColor:e.sky100,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3,borderWidth:.5,borderColor:e.sky400,marginLeft:4},callerChipText:{fontFamily:z.interMedium,fontSize:8.5,lineHeight:11,color:e.sky600},metaStatChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:e.violetSoftBg,borderColor:e.violetSoftBorder,borderWidth:1,paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4},metaStatText:{fontFamily:z.interBold,color:e.violetSoftText,fontSize:9,lineHeight:12},waterfallContainer:{height:2.5,width:"100%",backgroundColor:e.graySurface,borderRadius:1.5,overflow:"hidden"},waterfallBar:{height:"100%",borderRadius:1.5},highlight:{backgroundColor:e.yellowHighlight,color:e.primaryBlack,borderRadius:2}});export default Lt;