react-native-inapp-inspector 1.1.21 → 1.1.23

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 (49) hide show
  1. package/dist/commonjs/components/AnalyticsDetail.js +5 -3
  2. package/dist/commonjs/components/AnalyticsEventCard.d.ts +0 -1
  3. package/dist/commonjs/components/AnalyticsEventCard.js +89 -97
  4. package/dist/commonjs/components/ErrorBoundary.js +17 -8
  5. package/dist/commonjs/components/Inspector/BundleTab.d.ts +1 -0
  6. package/dist/commonjs/components/Inspector/BundleTab.js +607 -685
  7. package/dist/commonjs/components/Inspector/LogDetail.js +12 -6
  8. package/dist/commonjs/components/Inspector/PerformanceTab.js +195 -254
  9. package/dist/commonjs/components/Inspector/ReduxDetail.js +2 -2
  10. package/dist/commonjs/components/Inspector/ReduxTab.js +9 -6
  11. package/dist/commonjs/components/NetworkIcons.d.ts +12 -0
  12. package/dist/commonjs/components/NetworkIcons.js +92 -1
  13. package/dist/commonjs/components/TreeNode.js +1 -1
  14. package/dist/commonjs/constants/version.d.ts +1 -1
  15. package/dist/commonjs/constants/version.js +1 -1
  16. package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +115 -0
  17. package/dist/commonjs/customHooks/bundleAnalyzer.js +561 -0
  18. package/dist/commonjs/customHooks/performanceTracker.d.ts +84 -0
  19. package/dist/commonjs/customHooks/performanceTracker.js +541 -0
  20. package/dist/commonjs/helpers/index.d.ts +15 -0
  21. package/dist/commonjs/helpers/index.js +112 -1
  22. package/dist/commonjs/i18n/locales/en.json +225 -2
  23. package/dist/commonjs/styles/AppColors.d.ts +110 -0
  24. package/dist/commonjs/styles/AppColors.js +114 -0
  25. package/dist/esm/components/AnalyticsDetail.js +5 -3
  26. package/dist/esm/components/AnalyticsEventCard.d.ts +0 -1
  27. package/dist/esm/components/AnalyticsEventCard.js +89 -96
  28. package/dist/esm/components/ErrorBoundary.js +17 -8
  29. package/dist/esm/components/Inspector/BundleTab.d.ts +1 -0
  30. package/dist/esm/components/Inspector/BundleTab.js +612 -690
  31. package/dist/esm/components/Inspector/LogDetail.js +13 -7
  32. package/dist/esm/components/Inspector/PerformanceTab.js +196 -255
  33. package/dist/esm/components/Inspector/ReduxDetail.js +2 -2
  34. package/dist/esm/components/Inspector/ReduxTab.js +10 -7
  35. package/dist/esm/components/NetworkIcons.d.ts +12 -0
  36. package/dist/esm/components/NetworkIcons.js +79 -0
  37. package/dist/esm/components/TreeNode.js +2 -2
  38. package/dist/esm/constants/version.d.ts +1 -1
  39. package/dist/esm/constants/version.js +1 -1
  40. package/dist/esm/customHooks/bundleAnalyzer.d.ts +115 -0
  41. package/dist/esm/customHooks/bundleAnalyzer.js +554 -0
  42. package/dist/esm/customHooks/performanceTracker.d.ts +84 -0
  43. package/dist/esm/customHooks/performanceTracker.js +537 -0
  44. package/dist/esm/helpers/index.d.ts +15 -0
  45. package/dist/esm/helpers/index.js +107 -0
  46. package/dist/esm/i18n/locales/en.json +225 -2
  47. package/dist/esm/styles/AppColors.d.ts +110 -0
  48. package/dist/esm/styles/AppColors.js +114 -0
  49. package/package.json +1 -1
@@ -10,8 +10,12 @@
10
10
  "failed": "Failed",
11
11
  "copy": "Copy",
12
12
  "copied": "Copied!",
13
+ "copyJson": "Copy JSON",
14
+ "collapseAll": "Collapse All",
15
+ "expandAll": "Expand All",
13
16
  "viewOnNpm": "View on NPM",
14
- "later": "Later"
17
+ "later": "Later",
18
+ "source": "SOURCE"
15
19
  },
16
20
  "header": {
17
21
  "updateAvailableTitle": "Update Available",
@@ -227,7 +231,16 @@
227
231
  "parameters": "Parameters",
228
232
  "noParams": "No parameters",
229
233
  "recentEvents": "Recent Events",
230
- "analyticsError": "Analytics Error"
234
+ "analyticsError": "Analytics Error",
235
+ "duplicate": "Duplicate",
236
+ "params": "params",
237
+ "props": "props",
238
+ "item": "item",
239
+ "items": "items",
240
+ "pageViewCategory": "Page View",
241
+ "ecommerceCategory": "Ecommerce",
242
+ "systemCategory": "System",
243
+ "customCategory": "Custom"
231
244
  },
232
245
  "redux": {
233
246
  "title": "Redux",
@@ -255,6 +268,216 @@
255
268
  "autoRefresh": "Auto-refresh",
256
269
  "paused": "Paused"
257
270
  },
271
+ "performance": {
272
+ "title": "Performance",
273
+ "fpsTarget": "60 FPS Target Monitor",
274
+ "healthScore": "FPS Health Score",
275
+ "excellent": "Excellent (60 FPS)",
276
+ "good": "Good (Minor Janks)",
277
+ "needsOptimization": "Needs Optimization",
278
+ "liveFps": "Live FPS & Refresh Cycle",
279
+ "realtimeWindow": "Real-Time (1s window)",
280
+ "uiRenderThread": "UI Render Thread",
281
+ "optimalFrame": "Optimal (<16.6ms)",
282
+ "slowFrame": "Slow Frame (>16.6ms)",
283
+ "budgetUsage": "60 FPS Budget Usage",
284
+ "avgFrameTime": "Avg Frame Time",
285
+ "peakTime": "Peak Time",
286
+ "jsThread": "JS Thread",
287
+ "uiThread": "UI Thread",
288
+ "jsiLatency": "JSI Latency",
289
+ "heapImpact": "Heap Impact",
290
+ "optimizationTip": "Optimization Tip:",
291
+ "recordedEvents": "Recorded Events & Interactions",
292
+ "liveStream": "Live Session Stream",
293
+ "emptyTitle": "No performance events captured yet",
294
+ "emptySubtitle": "Perform actions in your app to see thread timings, render cost, and FPS tracking.",
295
+ "tabOverview": "Overview",
296
+ "tabRenders": "Renders",
297
+ "tabInteractions": "Interactions",
298
+ "tabMemory": "Memory",
299
+ "filterAll": "All",
300
+ "filterSlow": "Slow (>16ms)",
301
+ "filterCritical": "Critical (>33ms)",
302
+ "searchPlaceholder": "Search component, interaction...",
303
+ "avgRenderTime": "Avg Render",
304
+ "totalRenders": "Total Renders",
305
+ "renderCost": "Render Cost",
306
+ "slowRenders": "Slow Renders",
307
+ "unnecessaryRenders": "Wasteful Renders",
308
+ "heapAllocated": "Heap Allocated",
309
+ "heapLimit": "Heap Limit",
310
+ "gcEvents": "GC Events",
311
+ "leakRisk": "Leak Risk",
312
+ "lowRisk": "Low Risk",
313
+ "mediumRisk": "Medium Risk",
314
+ "highRisk": "High Risk",
315
+ "memoryTimeline": "Memory Timeline",
316
+ "clearPerformance": "Clear Performance Data",
317
+ "clearConfirmation": "Are you sure you want to clear all performance tracking data?",
318
+ "liveFpsDip": "Live Frame Rate Dip ({{fps}} FPS)",
319
+ "liveFpsDipDetail": "Main thread frame duration extended to {{duration}}ms during view update.",
320
+ "liveFpsDipAdvice": "Heavy JavaScript execution during frame pass delayed display presentation.",
321
+ "yogaLayout": "Yoga Flexbox Layout",
322
+ "hermesGc": "Hermes Garbage Collection",
323
+ "jsEngine": "JS Engine",
324
+ "uiReconciler": "UI Reconciler",
325
+ "memoryHeap": "Memory Heap",
326
+ "allLogs": "All Logs",
327
+ "jankySlow": "Janky / Slow",
328
+ "navigation": "Navigation",
329
+ "components": "Components",
330
+ "memoryGc": "Memory & GC",
331
+ "networkIo": "Network & I/O",
332
+ "budgetHeadroom": "~{{time}}ms Headroom ({{percent}}%)",
333
+ "jsExec": "JS Exec: {{time}}ms",
334
+ "yogaLayoutTime": "Yoga Layout: {{time}}ms",
335
+ "uiRenderTime": "UI Render: {{time}}ms",
336
+ "freeTime": "Free: {{time}}ms",
337
+ "heapAllocatedSub": "{{allocated}} MB allocated",
338
+ "hermesAot": "Hermes (AOT)",
339
+ "v8Jit": "V8 (JIT)",
340
+ "jscEngine": "JSC",
341
+ "bytecodeCompiled": "Bytecode compiled",
342
+ "jitEngine": "JIT Engine",
343
+ "webkitEngine": "Webkit Engine",
344
+ "fabricJsi": "Fabric / JSI",
345
+ "paperBridge": "Paper / Bridge",
346
+ "directCppBindings": "Direct C++ bindings",
347
+ "asyncJsonBridge": "Async JSON Bridge",
348
+ "fpsUnit": "FPS",
349
+ "jsLag": "JS Lag",
350
+ "jankRate": "Jank Rate",
351
+ "live": "Live",
352
+ "msTotal": "{{duration}}ms total • {{time}}"
353
+ },
354
+ "bundle": {
355
+ "heroTitle": "Bundle & Asset Architecture",
356
+ "heroSubtitle": "Real-time size breakdown across all assets, code, and dependencies",
357
+ "heroSubtitleLive": "Live analysis of {{scriptUrl}}",
358
+ "bundleOverviewJson": "Bundle Overview JSON",
359
+ "devBundleSize": "DEV BUNDLE SIZE",
360
+ "devBundleHint": "{{kb}} KB • {{modules}} modules",
361
+ "trackedFilesHint": "{{count}} Tracked files",
362
+ "imagesMedia": "IMAGES & MEDIA",
363
+ "pctOfTrackedAssets": "{{pct}}% of tracked assets",
364
+ "tsJsSource": "TS / JS SOURCE",
365
+ "jsEngine": "JS ENGINE",
366
+ "bytecodeAot": "Bytecode AOT",
367
+ "standard": "Standard",
368
+ "splitUpTitle": "Development Bundle Split-Up",
369
+ "splitUpSub": "Measured {{mb}} MB JS bundle • {{files}} files • {{packages}} packages",
370
+ "splitUpJson": "Split-Up JSON",
371
+ "splitAppSource": "App Source Code",
372
+ "splitNodeModules": "node_modules Dependencies",
373
+ "splitAssetsMedia": "Assets & Media",
374
+ "splitMetroOverhead": "Metro Dev Overhead",
375
+ "splitSize": "{{kb}} KB • {{mb}} MB",
376
+ "productionFootprint": "PRODUCTION FOOTPRINT",
377
+ "productionValue": "iOS {{ios}} MB • Android {{android}} MB",
378
+ "productionDownload": "Download: iOS ~{{ios}} MB • AAB ~{{aab}} MB • APK ~{{apk}} MB",
379
+ "treemapTitle": "Asset & File Type Ratio Treemap",
380
+ "treemapSub": "Total ~{{mb}} MB",
381
+ "treemapJson": "Ratio Treemap JSON",
382
+ "legendImages": "Images:",
383
+ "legendTs": "TS/TSX:",
384
+ "legendJs": "JS Libs:",
385
+ "legendFonts": "Fonts:",
386
+ "legendJson": "JSON:",
387
+ "categoryBreakdown": "Category Breakdown",
388
+ "categoriesJson": "Categories Breakdown JSON",
389
+ "catImagesTitle": "Images & Media Assets",
390
+ "catImagesDesc": "PNG, WebP, SVG, and JPG assets in bundle",
391
+ "catJsTitle": "Compiled Node Modules & JS",
392
+ "catJsDesc": "Third-party dependencies and native bridges",
393
+ "catFontsTitle": "Custom Fonts & Vector Glyphs",
394
+ "catFontsDesc": "Font assets in bundle",
395
+ "catTsTitle": "TypeScript & JSX Components",
396
+ "catTsDesc": "App screen components, hooks, and business logic",
397
+ "catJsonTitle": "JSON Data & Localizations",
398
+ "catJsonDesc": "i18n translation dictionaries and static configs",
399
+ "catRowSub": "{{count}} items • {{desc}}",
400
+ "totalBundleAssets": "TOTAL BUNDLE ASSETS",
401
+ "totalBundleValue": "{{kb}} KB (~{{mb}} MB)",
402
+ "totalFormula": "Sum: {{images}} KB + {{js}} KB + {{fonts}} KB + {{ts}} KB + {{json}} KB = {{total}} KB ({{count}} items • 100%)",
403
+ "tabOverview": "Overview",
404
+ "tabFiles": "Files ({{count}})",
405
+ "tabPackages": "Packages ({{count}})",
406
+ "tabMedia": "Media ({{count}})",
407
+ "tabOptimizer": "Optimizer",
408
+ "analyzingTitle": "Analyzing host app bundle from Metro…",
409
+ "analyzingHint": "Fetching bundle & extracting real modules",
410
+ "searchFilesPlaceholder": "Search by file name (.png, .tsx, .ttf, path)...",
411
+ "filteredFilesJson": "Filtered Files JSON",
412
+ "catAll": "All Files",
413
+ "catUnused": "Not Consumed (Dead)",
414
+ "catConsumed": "In-Use / Active",
415
+ "catImages": "Images & Media",
416
+ "catTypescript": "TypeScript / TSX",
417
+ "catJavascript": "JS & Node Modules",
418
+ "catFonts": "Fonts & Glyphs",
419
+ "catJson": "JSON & Data",
420
+ "treeView": "Tree View",
421
+ "flatList": "Flat List",
422
+ "expand": "Expand",
423
+ "collapse": "Collapse",
424
+ "showingFilesOf": "Showing {{shown}} of {{total}} files",
425
+ "filesOf": "{{count}} of {{total}} Files",
426
+ "notConsumed": "Not Consumed",
427
+ "consumed": "Consumed",
428
+ "copyFileInfo": "Copy {{name}} Info",
429
+ "fileDetailsJson": "File Details JSON",
430
+ "file": "file",
431
+ "files": "files",
432
+ "fileSizeKb": "{{size}} KB",
433
+ "fileSizeMb": "{{size}} MB",
434
+ "mbValue": "~{{size}} MB",
435
+ "kbMbValue": "{{kb}} KB ({{mb}} MB)",
436
+ "legendValue": "{{kb}} KB ({{pct}}%)",
437
+ "mediaSavings": "{{size}} KB",
438
+ "searchPackagesPlaceholder": "Search package (react-native, axios, navigation)...",
439
+ "dependenciesJson": "Dependencies JSON",
440
+ "showingDependencies": "Showing {{count}} dependencies",
441
+ "versionPrefix": "v{{version}}",
442
+ "bundled": "bundled",
443
+ "deprecated": "DEPRECATED",
444
+ "updateAvailable": "Update: v{{version}}",
445
+ "upToDate": "Up to date",
446
+ "bundledBadge": "Bundled",
447
+ "packageDetailsJson": "Package Details JSON",
448
+ "direct": "Direct",
449
+ "transitive": "Transitive",
450
+ "minified": "~{{size}} KB minified",
451
+ "npmLink": "npm ↗",
452
+ "dependenciesCount": "{{count}} Dependencies",
453
+ "mediaAuditorTitle": "Media Compression Auditor",
454
+ "mediaAssetsJson": "Media Assets JSON",
455
+ "mediaAuditorPrefix": "Images & Fonts constitute",
456
+ "mediaAuditorMid": "of total assets (~{{kb}} KB). Converting PNGs to WebP and font subsetting can reduce size by up to",
457
+ "mediaAuditorSuffix": "KB.",
458
+ "mediaAssetsList": "Media Assets & Fonts ({{count}} items)",
459
+ "mediaItemJson": "Media Item JSON",
460
+ "mediaAndFonts": "{{count}} Media & Fonts",
461
+ "optimizerTitle": "React Native Bundle Optimization Checklist",
462
+ "optimizationChecklist": "Optimization Checklist",
463
+ "optTip1Title": "Convert Heavy PNGs to WebP / SVGs",
464
+ "optTip1Desc": "Images account for >40% of final app download size. Converting 2x/3x raster PNGs to WebP saves 60-70% size with no visible fidelity loss.",
465
+ "optTip2Title": "Enable Hermes Bytecode Engine",
466
+ "optTip2DescActive": "Hermes is active! JavaScript is compiled into optimized bytecode Ahead-Of-Time.",
467
+ "optTip2DescInactive": "Hermes is disabled. Enable hermes in your app config for ~40% smaller payload and instant TTI startup.",
468
+ "optTip3Title": "Font Subsetting & Weight Pruning",
469
+ "optTip3Desc": "Include only the font weights you actively use (e.g. Regular & Bold). Remove unused glyph ranges to save 100KB+ per font file.",
470
+ "optTip4Title": "Selective Path Imports (Tree-shaking)",
471
+ "optTip4Desc": "Import from specific subpaths (e.g. lodash/get or specific vector icon sets) instead of importing large monolithic packages.",
472
+ "optTip5Title": "Screen Lazy-Loading",
473
+ "optTip5Desc": "Lazy load secondary screens and heavy modal sheets using dynamic imports and InteractionManager to reduce initial bundle evaluation.",
474
+ "highImpact": "High Impact",
475
+ "mediumImpact": "Medium Impact",
476
+ "bestPractice": "Best Practice",
477
+ "actionRequired": "Action Required",
478
+ "active": "Active",
479
+ "tipDetails": "Tip Details"
480
+ },
258
481
  "errors": {
259
482
  "title": "Something went wrong",
260
483
  "message": "An unexpected error occurred.",
@@ -74,6 +74,61 @@ declare const LightColors: {
74
74
  googleRed: string;
75
75
  googlePurple: string;
76
76
  googleTeal: string;
77
+ npmRed: string;
78
+ npmRedTint: string;
79
+ npmRedBorder: string;
80
+ npmDark: string;
81
+ reactCyan: string;
82
+ pink500: string;
83
+ pink400: string;
84
+ rose500: string;
85
+ sky500: string;
86
+ sky400: string;
87
+ indigo500: string;
88
+ purple500: string;
89
+ purple400: string;
90
+ fuchsia500: string;
91
+ emerald400: string;
92
+ amber400: string;
93
+ orange500: string;
94
+ red500: string;
95
+ teal400: string;
96
+ teal500: string;
97
+ lime500: string;
98
+ yellow400: string;
99
+ yellow500: string;
100
+ slate800: string;
101
+ slate850: string;
102
+ reanimatedNavy: string;
103
+ expoViolet: string;
104
+ hermesPurple: string;
105
+ cyan500: string;
106
+ indigo400: string;
107
+ indigo600Alt: string;
108
+ purple800: string;
109
+ purple900: string;
110
+ purple50: string;
111
+ purple100: string;
112
+ purple200: string;
113
+ rose700: string;
114
+ red600: string;
115
+ red50: string;
116
+ red100: string;
117
+ amber100: string;
118
+ amber200: string;
119
+ amber800Warm: string;
120
+ yellow200: string;
121
+ yellow800: string;
122
+ green100: string;
123
+ emerald100: string;
124
+ emerald700: string;
125
+ pink100: string;
126
+ sky100: string;
127
+ indigo50: string;
128
+ gray100: string;
129
+ gray200: string;
130
+ gray500: string;
131
+ gray600: string;
77
132
  errorCardBg: string;
78
133
  warnCardBg: string;
79
134
  blueTintBg: string;
@@ -174,6 +229,61 @@ export declare const getThemeColors: (isDark: boolean) => {
174
229
  googleRed: string;
175
230
  googlePurple: string;
176
231
  googleTeal: string;
232
+ npmRed: string;
233
+ npmRedTint: string;
234
+ npmRedBorder: string;
235
+ npmDark: string;
236
+ reactCyan: string;
237
+ pink500: string;
238
+ pink400: string;
239
+ rose500: string;
240
+ sky500: string;
241
+ sky400: string;
242
+ indigo500: string;
243
+ purple500: string;
244
+ purple400: string;
245
+ fuchsia500: string;
246
+ emerald400: string;
247
+ amber400: string;
248
+ orange500: string;
249
+ red500: string;
250
+ teal400: string;
251
+ teal500: string;
252
+ lime500: string;
253
+ yellow400: string;
254
+ yellow500: string;
255
+ slate800: string;
256
+ slate850: string;
257
+ reanimatedNavy: string;
258
+ expoViolet: string;
259
+ hermesPurple: string;
260
+ cyan500: string;
261
+ indigo400: string;
262
+ indigo600Alt: string;
263
+ purple800: string;
264
+ purple900: string;
265
+ purple50: string;
266
+ purple100: string;
267
+ purple200: string;
268
+ rose700: string;
269
+ red600: string;
270
+ red50: string;
271
+ red100: string;
272
+ amber100: string;
273
+ amber200: string;
274
+ amber800Warm: string;
275
+ yellow200: string;
276
+ yellow800: string;
277
+ green100: string;
278
+ emerald100: string;
279
+ emerald700: string;
280
+ pink100: string;
281
+ sky100: string;
282
+ indigo50: string;
283
+ gray100: string;
284
+ gray200: string;
285
+ gray500: string;
286
+ gray600: string;
177
287
  errorCardBg: string;
178
288
  warnCardBg: string;
179
289
  blueTintBg: string;
@@ -81,6 +81,63 @@ const LightColors = {
81
81
  googleRed: '#E53935',
82
82
  googlePurple: '#5C2D91',
83
83
  googleTeal: '#00897B',
84
+ // ─── NPM / Package / Tailwind Spectrum Helpers ───
85
+ npmRed: '#CB3837',
86
+ npmRedTint: '#CB383714',
87
+ npmRedBorder: '#CB383733',
88
+ npmDark: '#20232A',
89
+ reactCyan: '#61DAFB',
90
+ pink500: '#EC4899',
91
+ pink400: '#F472B6',
92
+ rose500: '#F43F5E',
93
+ sky500: '#0EA5E9',
94
+ sky400: '#38BDF8',
95
+ indigo500: '#6366F1',
96
+ purple500: '#8B5CF6',
97
+ purple400: '#A78BFA',
98
+ fuchsia500: '#D946EF',
99
+ emerald400: '#34D399',
100
+ amber400: '#FBBF24',
101
+ orange500: '#F97316',
102
+ red500: '#EF4444',
103
+ teal400: '#2DD4BF',
104
+ teal500: '#14B8A6',
105
+ lime500: '#84CC16',
106
+ yellow400: '#FACC15',
107
+ yellow500: '#EAB308',
108
+ slate800: '#1E293B',
109
+ slate850: '#0F172A',
110
+ // ─── Bundle / Extended Spectrum ───
111
+ reanimatedNavy: '#001A72',
112
+ expoViolet: '#5A29E4',
113
+ hermesPurple: '#5B44E0',
114
+ cyan500: '#06B6D4',
115
+ indigo400: '#818CF8',
116
+ indigo600Alt: '#4F46E5',
117
+ purple800: '#6B21A8',
118
+ purple900: '#581C87',
119
+ purple50: '#FAF5FF',
120
+ purple100: '#F3E8FF',
121
+ purple200: '#E9D5FF',
122
+ rose700: '#BE123C',
123
+ red600: '#DC2626',
124
+ red50: '#FFFBFB',
125
+ red100: '#FEE2E2',
126
+ amber100: '#FEF3C7',
127
+ amber200: '#FDE68A',
128
+ amber800Warm: '#B45309',
129
+ yellow200: '#FEF08A',
130
+ yellow800: '#854D0E',
131
+ green100: '#DCFCE7',
132
+ emerald100: '#D1FAE5',
133
+ emerald700: '#047857',
134
+ pink100: '#FCE7F3',
135
+ sky100: '#E0F2FE',
136
+ indigo50: '#EEF2FF',
137
+ gray100: '#F3F4F6',
138
+ gray200: '#E5E7EB',
139
+ gray500: '#6B7280',
140
+ gray600: '#4B5563',
84
141
  // ─── Tint Backgrounds / Borders (Theme-Aware) ───
85
142
  errorCardBg: '#FFF1F3',
86
143
  warnCardBg: '#FDFBF4',
@@ -194,6 +251,63 @@ const DarkColors = {
194
251
  googleRed: '#F87171',
195
252
  googlePurple: '#C084FC',
196
253
  googleTeal: '#2DD4BF',
254
+ // ─── NPM / Package / Tailwind Spectrum Helpers ───
255
+ npmRed: '#CB3837',
256
+ npmRedTint: '#CB383714',
257
+ npmRedBorder: '#CB383733',
258
+ npmDark: '#20232A',
259
+ reactCyan: '#61DAFB',
260
+ pink500: '#EC4899',
261
+ pink400: '#F472B6',
262
+ rose500: '#F43F5E',
263
+ sky500: '#0EA5E9',
264
+ sky400: '#38BDF8',
265
+ indigo500: '#6366F1',
266
+ purple500: '#8B5CF6',
267
+ purple400: '#A78BFA',
268
+ fuchsia500: '#D946EF',
269
+ emerald400: '#34D399',
270
+ amber400: '#FBBF24',
271
+ orange500: '#F97316',
272
+ red500: '#EF4444',
273
+ teal400: '#2DD4BF',
274
+ teal500: '#14B8A6',
275
+ lime500: '#84CC16',
276
+ yellow400: '#FACC15',
277
+ yellow500: '#EAB308',
278
+ slate800: '#1E293B',
279
+ slate850: '#0F172A',
280
+ // ─── Bundle / Extended Spectrum ───
281
+ reanimatedNavy: '#6B8CFF',
282
+ expoViolet: '#A78BFA',
283
+ hermesPurple: '#9B8AFF',
284
+ cyan500: '#22D3EE',
285
+ indigo400: '#A5B4FC',
286
+ indigo600Alt: '#818CF8',
287
+ purple800: '#C084FC',
288
+ purple900: '#A855F7',
289
+ purple50: '#2D1B40',
290
+ purple100: '#3B2252',
291
+ purple200: '#4C2D6B',
292
+ rose700: '#FB7185',
293
+ red600: '#F87171',
294
+ red50: '#34151B',
295
+ red100: '#451A1A',
296
+ amber100: '#422D0D',
297
+ amber200: '#5C3D0F',
298
+ amber800Warm: '#FBBF24',
299
+ yellow200: '#5C3D0F',
300
+ yellow800: '#FBBF24',
301
+ green100: '#122D1B',
302
+ emerald100: '#122D25',
303
+ emerald700: '#34D399',
304
+ pink100: '#341626',
305
+ sky100: '#0C2744',
306
+ indigo50: '#1E1B3A',
307
+ gray100: '#2A2438',
308
+ gray200: '#362C4E',
309
+ gray500: '#A197B8',
310
+ gray600: '#8F8A9E',
197
311
  errorCardBg: '#34151B',
198
312
  warnCardBg: '#342B16',
199
313
  blueTintBg: '#15243B',
@@ -9,7 +9,9 @@ import { AppFonts } from '../styles/AppFonts';
9
9
  import { getSize } from '../helpers';
10
10
  // Stylesheet
11
11
  import { AppColors } from '../styles/AppColors';
12
+ import { useTranslation } from '../i18n';
12
13
  const AnalyticsDetail = ({ event, }) => {
14
+ const { t } = useTranslation();
13
15
  const [expandDepth, setExpandDepth] = useState(1);
14
16
  const [treeKey, setTreeKey] = useState(0);
15
17
  const params = event.params ?? {};
@@ -29,7 +31,7 @@ const AnalyticsDetail = ({ event, }) => {
29
31
  }
30
32
  else if (isArray) {
31
33
  typeLabel = 'array';
32
- countLabel = `${jsonData.length} items`;
34
+ countLabel = `${jsonData.length} ${t('analytics.items')}`;
33
35
  }
34
36
  else if (isObject) {
35
37
  typeLabel = 'object';
@@ -69,7 +71,7 @@ const AnalyticsDetail = ({ event, }) => {
69
71
  fontSize: 12,
70
72
  color: AppColors.purple,
71
73
  }}>
72
- {expandDepth === 99 ? 'Collapse All' : 'Expand All'}
74
+ {expandDepth === 99 ? t('common.collapseAll') : t('common.expandAll')}
73
75
  </Text>
74
76
  </TouchableScale>
75
77
  <View style={{
@@ -106,7 +108,7 @@ const AnalyticsDetail = ({ event, }) => {
106
108
  </View>
107
109
  </View>
108
110
 
109
- <CopyButton value={JSON.stringify(jsonData, null, 2)} label="Copy JSON"/>
111
+ <CopyButton value={JSON.stringify(jsonData, null, 2)} label={t('common.copyJson')}/>
110
112
  </View>
111
113
 
112
114
  {/* Direct JSON Viewer View */}
@@ -1,5 +1,4 @@
1
1
  import React from 'react';
2
2
  import { AnalyticsEventCardProps } from '../types';
3
- export declare function getEventColor(name: string): string;
4
3
  declare const AnalyticsEventCard: React.NamedExoticComponent<AnalyticsEventCardProps>;
5
4
  export default AnalyticsEventCard;