react-native-inapp-inspector 2.0.0 → 2.0.1

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 (63) hide show
  1. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +10 -24
  2. package/dist/commonjs/components/ConsoleLogCard.js +5 -5
  3. package/dist/commonjs/components/EndOfListFooter.js +1 -1
  4. package/dist/commonjs/components/Inspector/AnalyticsTab.js +19 -71
  5. package/dist/commonjs/components/Inspector/BundleTab.js +670 -188
  6. package/dist/commonjs/components/Inspector/ConsoleTab.js +109 -98
  7. package/dist/commonjs/components/Inspector/CrashTab.js +2 -1
  8. package/dist/commonjs/components/Inspector/InspectorHeader.js +102 -19
  9. package/dist/commonjs/components/Inspector/MainScreen.js +147 -17
  10. package/dist/commonjs/components/Inspector/NetworkTab.js +104 -20
  11. package/dist/commonjs/components/Inspector/SettingsPanel.js +1111 -1385
  12. package/dist/commonjs/components/Inspector/TabBar.js +3 -4
  13. package/dist/commonjs/components/JsonViewer.js +9 -4
  14. package/dist/commonjs/components/LogCard.js +31 -1
  15. package/dist/commonjs/components/LogSyntaxHighlighter.d.ts +16 -0
  16. package/dist/commonjs/components/LogSyntaxHighlighter.js +130 -0
  17. package/dist/commonjs/components/NetworkIcons.d.ts +2 -0
  18. package/dist/commonjs/components/NetworkIcons.js +10 -1
  19. package/dist/commonjs/components/Slider.d.ts +13 -0
  20. package/dist/commonjs/components/Slider.js +261 -0
  21. package/dist/commonjs/constants/version.d.ts +1 -1
  22. package/dist/commonjs/constants/version.js +1 -1
  23. package/dist/commonjs/customHooks/analyticsLogger.js +1 -1
  24. package/dist/commonjs/customHooks/crashHandler.js +1 -1
  25. package/dist/commonjs/helpers/index.d.ts +1 -0
  26. package/dist/commonjs/helpers/index.js +15 -0
  27. package/dist/commonjs/helpers/searchQueryParser.d.ts +6 -0
  28. package/dist/commonjs/helpers/searchQueryParser.js +236 -0
  29. package/dist/commonjs/helpers/settingsStore.js +13 -13
  30. package/dist/commonjs/index.js +7 -20
  31. package/dist/commonjs/styles/index.js +35 -35
  32. package/dist/esm/components/ConsoleLogCard.js +5 -5
  33. package/dist/esm/components/EndOfListFooter.js +2 -2
  34. package/dist/esm/components/Inspector/AnalyticsTab.js +21 -73
  35. package/dist/esm/components/Inspector/BundleTab.js +670 -188
  36. package/dist/esm/components/Inspector/ConsoleTab.js +110 -99
  37. package/dist/esm/components/Inspector/CrashTab.js +2 -1
  38. package/dist/esm/components/Inspector/InspectorHeader.js +103 -20
  39. package/dist/esm/components/Inspector/MainScreen.js +115 -18
  40. package/dist/esm/components/Inspector/NetworkTab.js +105 -21
  41. package/dist/esm/components/Inspector/SettingsPanel.js +1114 -1388
  42. package/dist/esm/components/Inspector/TabBar.js +4 -5
  43. package/dist/esm/components/JsonViewer.js +9 -4
  44. package/dist/esm/components/LogCard.js +32 -2
  45. package/dist/esm/components/LogSyntaxHighlighter.d.ts +16 -0
  46. package/dist/esm/components/LogSyntaxHighlighter.js +123 -0
  47. package/dist/esm/components/NetworkIcons.d.ts +2 -0
  48. package/dist/esm/components/NetworkIcons.js +7 -0
  49. package/dist/esm/components/Slider.d.ts +13 -0
  50. package/dist/esm/components/Slider.js +222 -0
  51. package/dist/esm/constants/version.d.ts +1 -1
  52. package/dist/esm/constants/version.js +1 -1
  53. package/dist/esm/customHooks/analyticsLogger.js +1 -1
  54. package/dist/esm/customHooks/crashHandler.js +1 -1
  55. package/dist/esm/helpers/index.d.ts +1 -0
  56. package/dist/esm/helpers/index.js +1 -0
  57. package/dist/esm/helpers/searchQueryParser.d.ts +6 -0
  58. package/dist/esm/helpers/searchQueryParser.js +233 -0
  59. package/dist/esm/helpers/settingsStore.js +13 -13
  60. package/dist/esm/index.js +8 -21
  61. package/dist/esm/styles/index.js +35 -35
  62. package/ios/NetworkInspectorModule.m +81 -41
  63. package/package.json +1 -1
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Parses query strings like `method:POST is:error slow:>1s status:200 auth`
3
+ * and checks whether a given NetworkLog matches all tokens.
4
+ */
5
+ export function matchNetworkLogQuery(log, searchQuery, routePath) {
6
+ if (!searchQuery || searchQuery.trim().length === 0)
7
+ return true;
8
+ const rawTokens = searchQuery
9
+ .trim()
10
+ .match(/(?:[^\s"']+|"[^"]*"|'[^']*')+/g) || [];
11
+ if (rawTokens.length === 0)
12
+ return true;
13
+ const methodStr = (log.method || '').toLowerCase();
14
+ const urlStr = (log.url || '').toLowerCase();
15
+ const statusNum = typeof log.status === 'number' ? log.status : parseInt(String(log.status || 0), 10);
16
+ const statusStr = String(log.status ?? '');
17
+ const durationNum = log.duration || 0;
18
+ const clientStr = (log.client || '').toLowerCase();
19
+ const reqStr = typeof log.request === 'string' ? log.request : JSON.stringify(log.request || '');
20
+ const resStr = typeof log.response === 'string' ? log.response : JSON.stringify(log.response || '');
21
+ const reqHeadersStr = JSON.stringify(log.requestHeaders || '').toLowerCase();
22
+ const resHeadersStr = JSON.stringify(log.responseHeaders || '').toLowerCase();
23
+ const pathStr = routePath ? routePath.toLowerCase() : '';
24
+ const fullSearchCorpus = [
25
+ methodStr,
26
+ urlStr,
27
+ statusStr,
28
+ pathStr,
29
+ clientStr,
30
+ reqStr.toLowerCase(),
31
+ resStr.toLowerCase(),
32
+ reqHeadersStr,
33
+ resHeadersStr,
34
+ ].join(' ');
35
+ for (const rawToken of rawTokens) {
36
+ const token = rawToken.replace(/^["']|["']$/g, '').trim();
37
+ if (!token)
38
+ continue;
39
+ const lowerToken = token.toLowerCase();
40
+ // 1. method:<VAL> or m:<VAL>
41
+ if (lowerToken.startsWith('method:') || lowerToken.startsWith('m:')) {
42
+ const targetMethod = lowerToken.replace(/^(method:|m:)/, '').trim();
43
+ if (targetMethod.startsWith('!')) {
44
+ if (methodStr === targetMethod.slice(1))
45
+ return false;
46
+ }
47
+ else {
48
+ if (methodStr !== targetMethod)
49
+ return false;
50
+ }
51
+ continue;
52
+ }
53
+ // 2. status:<VAL> or s:<VAL>
54
+ if (lowerToken.startsWith('status:') || lowerToken.startsWith('s:')) {
55
+ const val = lowerToken.replace(/^(status:|s:)/, '').trim();
56
+ if (val.startsWith('>=')) {
57
+ const threshold = parseInt(val.slice(2), 10);
58
+ if (isNaN(threshold) || statusNum < threshold)
59
+ return false;
60
+ }
61
+ else if (val.startsWith('>')) {
62
+ const threshold = parseInt(val.slice(1), 10);
63
+ if (isNaN(threshold) || statusNum <= threshold)
64
+ return false;
65
+ }
66
+ else if (val.startsWith('<=')) {
67
+ const threshold = parseInt(val.slice(2), 10);
68
+ if (isNaN(threshold) || statusNum > threshold)
69
+ return false;
70
+ }
71
+ else if (val.startsWith('<')) {
72
+ const threshold = parseInt(val.slice(1), 10);
73
+ if (isNaN(threshold) || statusNum >= threshold)
74
+ return false;
75
+ }
76
+ else if (val.endsWith('xx') || val.endsWith('x')) {
77
+ const prefix = val.replace(/x/g, '');
78
+ if (!statusStr.startsWith(prefix))
79
+ return false;
80
+ }
81
+ else {
82
+ const targetCode = parseInt(val, 10);
83
+ if (!isNaN(targetCode)) {
84
+ if (statusNum !== targetCode)
85
+ return false;
86
+ }
87
+ else if (!statusStr.includes(val)) {
88
+ return false;
89
+ }
90
+ }
91
+ continue;
92
+ }
93
+ // 3. is:<FLAG>
94
+ if (lowerToken.startsWith('is:')) {
95
+ const flag = lowerToken.slice(3).trim();
96
+ if (flag === 'error' || flag === 'failed' || flag === 'err' || flag === 'fail') {
97
+ const isErr = log.status === 0 || log.status == null || statusNum >= 400;
98
+ if (!isErr)
99
+ return false;
100
+ }
101
+ else if (flag === 'success' || flag === 'ok' || flag === '2xx') {
102
+ const isSuccess = statusNum >= 200 && statusNum < 300;
103
+ if (!isSuccess)
104
+ return false;
105
+ }
106
+ else if (flag === 'slow') {
107
+ if (durationNum < 1000)
108
+ return false;
109
+ }
110
+ else if (flag === 'fast') {
111
+ if (durationNum >= 200)
112
+ return false;
113
+ }
114
+ else if (flag === 'graphql' || flag === 'gql') {
115
+ const isGql = urlStr.includes('graphql') ||
116
+ clientStr === 'graphql' ||
117
+ clientStr === 'apollo';
118
+ if (!isGql)
119
+ return false;
120
+ }
121
+ else if (flag === 'https') {
122
+ if (!urlStr.startsWith('https'))
123
+ return false;
124
+ }
125
+ else if (flag === 'http') {
126
+ if (urlStr.startsWith('https') || !urlStr.startsWith('http'))
127
+ return false;
128
+ }
129
+ else if (flag === 'json') {
130
+ const isJson = reqHeadersStr.includes('application/json') ||
131
+ resHeadersStr.includes('application/json') ||
132
+ urlStr.includes('.json');
133
+ if (!isJson)
134
+ return false;
135
+ }
136
+ continue;
137
+ }
138
+ // 4. slow:<DURATION> or dur:<DURATION> or duration:<DURATION>
139
+ if (lowerToken.startsWith('slow:') ||
140
+ lowerToken.startsWith('dur:') ||
141
+ lowerToken.startsWith('duration:')) {
142
+ const val = lowerToken.replace(/^(slow:|dur:|duration:)/, '').trim();
143
+ let thresholdMs = 0;
144
+ let isGreater = true;
145
+ let cleanVal = val;
146
+ if (val.startsWith('>=')) {
147
+ isGreater = true;
148
+ cleanVal = val.slice(2);
149
+ }
150
+ else if (val.startsWith('>')) {
151
+ isGreater = true;
152
+ cleanVal = val.slice(1);
153
+ }
154
+ else if (val.startsWith('<=')) {
155
+ isGreater = false;
156
+ cleanVal = val.slice(2);
157
+ }
158
+ else if (val.startsWith('<')) {
159
+ isGreater = false;
160
+ cleanVal = val.slice(1);
161
+ }
162
+ if (cleanVal.endsWith('s') && !cleanVal.endsWith('ms')) {
163
+ thresholdMs = parseFloat(cleanVal.slice(0, -1)) * 1000;
164
+ }
165
+ else if (cleanVal.endsWith('ms')) {
166
+ thresholdMs = parseFloat(cleanVal.slice(0, -2));
167
+ }
168
+ else {
169
+ thresholdMs = parseFloat(cleanVal);
170
+ }
171
+ if (!isNaN(thresholdMs)) {
172
+ if (isGreater) {
173
+ if (durationNum < thresholdMs)
174
+ return false;
175
+ }
176
+ else {
177
+ if (durationNum > thresholdMs)
178
+ return false;
179
+ }
180
+ }
181
+ continue;
182
+ }
183
+ // 5. client:<CLIENT> or c:<CLIENT>
184
+ if (lowerToken.startsWith('client:') || lowerToken.startsWith('c:')) {
185
+ const targetClient = lowerToken.replace(/^(client:|c:)/, '').trim();
186
+ if (!clientStr.includes(targetClient))
187
+ return false;
188
+ continue;
189
+ }
190
+ // 6. domain:<DOMAIN> or d:<DOMAIN>
191
+ if (lowerToken.startsWith('domain:') || lowerToken.startsWith('d:')) {
192
+ const targetDomain = lowerToken.replace(/^(domain:|d:)/, '').trim();
193
+ if (!urlStr.includes(targetDomain))
194
+ return false;
195
+ continue;
196
+ }
197
+ // 7. path:<PATH> or p:<PATH>
198
+ if (lowerToken.startsWith('path:') || lowerToken.startsWith('p:')) {
199
+ const targetPath = lowerToken.replace(/^(path:|p:)/, '').trim();
200
+ if (!urlStr.includes(targetPath) && !pathStr.includes(targetPath)) {
201
+ return false;
202
+ }
203
+ continue;
204
+ }
205
+ // 8. req:<TERM> or body:<TERM>
206
+ if (lowerToken.startsWith('req:') || lowerToken.startsWith('body:')) {
207
+ const target = lowerToken.replace(/^(req:|body:)/, '').trim();
208
+ if (!reqStr.toLowerCase().includes(target))
209
+ return false;
210
+ continue;
211
+ }
212
+ // 9. res:<TERM>
213
+ if (lowerToken.startsWith('res:')) {
214
+ const target = lowerToken.slice(4).trim();
215
+ if (!resStr.toLowerCase().includes(target))
216
+ return false;
217
+ continue;
218
+ }
219
+ // 10. header:<TERM> or h:<TERM>
220
+ if (lowerToken.startsWith('header:') || lowerToken.startsWith('h:')) {
221
+ const target = lowerToken.replace(/^(header:|h:)/, '').trim();
222
+ if (!reqHeadersStr.includes(target) && !resHeadersStr.includes(target)) {
223
+ return false;
224
+ }
225
+ continue;
226
+ }
227
+ // 11. Generic Plain Substring Match
228
+ if (!fullSearchCorpus.includes(lowerToken)) {
229
+ return false;
230
+ }
231
+ }
232
+ return true;
233
+ }
@@ -101,19 +101,19 @@ export function getCustomStorage() {
101
101
  export function calculateRamBasedLimits(freeRamMb) {
102
102
  if (freeRamMb >= 3000) {
103
103
  return {
104
- maxNetworkLogs: 1000,
105
- maxConsoleLogs: 1500,
106
- maxAnalyticsEvents: 500,
107
- maxCrashRecords: 100,
104
+ maxNetworkLogs: 100,
105
+ maxConsoleLogs: 100,
106
+ maxAnalyticsEvents: 75,
107
+ maxCrashRecords: 50,
108
108
  profileName: 'High-End',
109
109
  freeRamMb,
110
110
  };
111
111
  }
112
112
  else if (freeRamMb >= 1500) {
113
113
  return {
114
- maxNetworkLogs: 500,
115
- maxConsoleLogs: 750,
116
- maxAnalyticsEvents: 250,
114
+ maxNetworkLogs: 100,
115
+ maxConsoleLogs: 100,
116
+ maxAnalyticsEvents: 75,
117
117
  maxCrashRecords: 50,
118
118
  profileName: 'Standard',
119
119
  freeRamMb,
@@ -121,9 +121,9 @@ export function calculateRamBasedLimits(freeRamMb) {
121
121
  }
122
122
  else if (freeRamMb >= 600) {
123
123
  return {
124
- maxNetworkLogs: 200,
125
- maxConsoleLogs: 300,
126
- maxAnalyticsEvents: 100,
124
+ maxNetworkLogs: 100,
125
+ maxConsoleLogs: 100,
126
+ maxAnalyticsEvents: 50,
127
127
  maxCrashRecords: 25,
128
128
  profileName: 'Compact',
129
129
  freeRamMb,
@@ -131,9 +131,9 @@ export function calculateRamBasedLimits(freeRamMb) {
131
131
  }
132
132
  else {
133
133
  return {
134
- maxNetworkLogs: 100,
135
- maxConsoleLogs: 150,
136
- maxAnalyticsEvents: 50,
134
+ maxNetworkLogs: 50,
135
+ maxConsoleLogs: 50,
136
+ maxAnalyticsEvents: 25,
137
137
  maxCrashRecords: 15,
138
138
  profileName: 'Ultra-Light',
139
139
  freeRamMb,
package/dist/esm/index.js CHANGED
@@ -8,7 +8,7 @@ import ErrorBoundary from './components/ErrorBoundary';
8
8
  import MainScreen from './components/Inspector/MainScreen';
9
9
  import { InspectorContext, animateNextLayout, } from './components/Inspector/InspectorContext';
10
10
  // Helpers
11
- import { formatDisplayUrl, getNavigationInfo, deduplicateLogs, getDomainColor, getEventCategory, } from './helpers';
11
+ import { formatDisplayUrl, getNavigationInfo, deduplicateLogs, getDomainColor, getEventCategory, matchNetworkLogQuery, } from './helpers';
12
12
  // #5 — settings persistence
13
13
  import { loadSettings, saveSettings, setCustomStorage, clearPersistedSettings, calculateRamBasedLimits, } from './helpers/settingsStore';
14
14
  import { getNativeSystemMetrics, pushNativeLogRecord, fetchNativeCachedPage, } from './native/NativeInspector';
@@ -99,7 +99,7 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
99
99
  // ─── Crash state ───────────────────────────────────────────────────────────
100
100
  const [crashRecords, setCrashRecords] = useState(() => getCrashRecords());
101
101
  const [selectedCrash, setSelectedCrash] = useState(null);
102
- const [maxCrashLogs, setMaxCrashLogs] = useState(100);
102
+ const [maxCrashLogs, setMaxCrashLogs] = useState(50);
103
103
  useEffect(() => {
104
104
  setMaxCrashLogsLimit(maxCrashLogs);
105
105
  }, [maxCrashLogs]);
@@ -131,7 +131,7 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
131
131
  setLastReadCrashesCount(crashRecords.length);
132
132
  }
133
133
  }, [activeTab, crashRecords.length]);
134
- const [maxConsoleLogs, setMaxConsoleLogs] = useState(200);
134
+ const [maxConsoleLogs, setMaxConsoleLogs] = useState(100);
135
135
  const [showConsoleLevels, setShowConsoleLevels] = useState({
136
136
  info: true,
137
137
  warn: false,
@@ -176,7 +176,7 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
176
176
  crash: false,
177
177
  });
178
178
  const [maxNetworkLogs, setMaxNetworkLogs] = useState(100);
179
- const [maxAnalyticsEventsLimit, setMaxAnalyticsEventsLimit] = useState(250);
179
+ const [maxAnalyticsEventsLimit, setMaxAnalyticsEventsLimit] = useState(75);
180
180
  const [isAutoRamLimitEnabled, setIsAutoRamLimitEnabled] = useState(true);
181
181
  const [deviceFreeRamMb, setDeviceFreeRamMb] = useState(1800);
182
182
  const [reduxAutoRefresh, setReduxAutoRefreshState] = useState(true);
@@ -1006,23 +1006,10 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
1006
1006
  if (!matchedMethod)
1007
1007
  return false;
1008
1008
  }
1009
- // Comprehensive Search Bar Check
1009
+ // Advanced Search Query Engine Check (Supports method:POST, is:error, slow:>1s, status:200, headers, body, etc.)
1010
1010
  if (search && search.trim().length > 0) {
1011
- const queryTokens = search.trim().toLowerCase().split(/\s+/).filter(Boolean);
1012
1011
  const routePath = logRouteMapRef.current.get(log.id)?.path || '';
1013
- const reqStr = typeof log.request === 'string' ? log.request : JSON.stringify(log.request || '');
1014
- const resStr = typeof log.response === 'string' ? log.response : JSON.stringify(log.response || '');
1015
- const searchTarget = [
1016
- log.method || '',
1017
- log.url || '',
1018
- String(log.status ?? ''),
1019
- routePath,
1020
- reqStr,
1021
- resStr,
1022
- JSON.stringify(log.requestHeaders || ''),
1023
- JSON.stringify(log.responseHeaders || ''),
1024
- ].join(' ').toLowerCase();
1025
- const isMatch = queryTokens.every(token => searchTarget.includes(token));
1012
+ const isMatch = matchNetworkLogQuery(log, search, routePath);
1026
1013
  if (!isMatch)
1027
1014
  return false;
1028
1015
  }
@@ -1326,8 +1313,8 @@ const NetworkInspector = ({ enabled = true, isEnabled = true, storage, navigatio
1326
1313
  else if (analyticsFilters.sortBy === 'count_desc') {
1327
1314
  result = [...result].sort((a, b) => (b.count || 1) - (a.count || 1));
1328
1315
  }
1329
- return result;
1330
- }, [analyticsEvents, analyticsSearch, analyticsFilters]);
1316
+ return result.slice(0, maxAnalyticsEventsLimit);
1317
+ }, [analyticsEvents, analyticsSearch, analyticsFilters, maxAnalyticsEventsLimit]);
1331
1318
  const filteredConsoleLogs = useMemo(() => {
1332
1319
  let result = visibleConsoleLogs;
1333
1320
  // Filters check
@@ -7,10 +7,10 @@ export const getRawStyles = (colors) => ({
7
7
  header: {
8
8
  flexDirection: 'row',
9
9
  alignItems: 'center',
10
- paddingHorizontal: 12,
11
- paddingVertical: 10,
10
+ paddingHorizontal: 10,
11
+ paddingVertical: 8,
12
12
  zIndex: 10,
13
- minHeight: 56,
13
+ minHeight: 52,
14
14
  shadowColor: colors.black,
15
15
  shadowOffset: { width: 0, height: 2 },
16
16
  shadowOpacity: 0.08,
@@ -34,7 +34,7 @@ export const getRawStyles = (colors) => ({
34
34
  flexDirection: 'row',
35
35
  alignItems: 'center',
36
36
  justifyContent: 'flex-end',
37
- gap: 6,
37
+ gap: 5,
38
38
  },
39
39
  headerTitle: {
40
40
  fontFamily: AppFonts.interBold,
@@ -136,7 +136,7 @@ export const getRawStyles = (colors) => ({
136
136
  fontSize: 12,
137
137
  letterSpacing: 0.2,
138
138
  },
139
- listContent: { paddingBottom: 12 },
139
+ listContent: { paddingBottom: Platform.OS === 'ios' ? 44 : 32 },
140
140
  // #2 — scroll-to-top button, always shown at the bottom right.
141
141
  scrollTopBtn: {
142
142
  position: 'absolute',
@@ -157,9 +157,9 @@ export const getRawStyles = (colors) => ({
157
157
  },
158
158
  detailScroll: { flex: 1 },
159
159
  closeButtonSquare: {
160
- width: 32,
161
- height: 32,
162
- borderRadius: 8,
160
+ width: 30,
161
+ height: 30,
162
+ borderRadius: 7,
163
163
  backgroundColor: `${colors.white}2B`,
164
164
  alignItems: 'center',
165
165
  justifyContent: 'center',
@@ -378,12 +378,12 @@ export const getRawStyles = (colors) => ({
378
378
  },
379
379
  clearBtn: { padding: 4 },
380
380
  domainHeaderCard: {
381
- marginHorizontal: 12,
382
- marginTop: 12,
381
+ marginHorizontal: 8,
382
+ marginTop: 10,
383
383
  marginBottom: 4,
384
- paddingHorizontal: 12,
385
- paddingVertical: 8,
386
- borderRadius: 10,
384
+ paddingHorizontal: 8,
385
+ paddingVertical: 7,
386
+ borderRadius: 9,
387
387
  backgroundColor: colors.grayBackground,
388
388
  borderWidth: 1,
389
389
  borderColor: colors.grayBorderSecondary,
@@ -405,18 +405,18 @@ export const getRawStyles = (colors) => ({
405
405
  flex: 1,
406
406
  minWidth: 0,
407
407
  marginRight: 6,
408
- gap: 8,
408
+ gap: 6,
409
409
  },
410
410
  domainIconWrap: {
411
- width: 26,
412
- height: 26,
413
- borderRadius: 6,
411
+ width: 22,
412
+ height: 22,
413
+ borderRadius: 5,
414
414
  alignItems: 'center',
415
415
  justifyContent: 'center',
416
416
  },
417
417
  domainTitleText: {
418
418
  fontFamily: AppFonts.interBold,
419
- fontSize: 13.5,
419
+ fontSize: 13,
420
420
  fontWeight: '700',
421
421
  color: colors.primaryBlack,
422
422
  textTransform: 'capitalize',
@@ -478,23 +478,23 @@ export const getRawStyles = (colors) => ({
478
478
  flexDirection: 'row',
479
479
  alignItems: 'center',
480
480
  gap: 3,
481
- paddingHorizontal: 6,
482
- paddingVertical: 3,
483
- borderRadius: 6,
481
+ paddingHorizontal: 5,
482
+ paddingVertical: 2.5,
483
+ borderRadius: 5,
484
484
  borderWidth: 1,
485
485
  borderColor: colors.grayBorderSecondary,
486
486
  backgroundColor: colors.primaryLight,
487
487
  },
488
488
  domainStatText: {
489
489
  fontFamily: AppFonts.interBold,
490
- fontSize: 10,
490
+ fontSize: 9.5,
491
491
  },
492
492
  treeNodeRow: {
493
493
  flexDirection: 'row',
494
494
  alignItems: 'stretch',
495
- marginHorizontal: 12,
496
- paddingRight: 8,
497
- paddingLeft: 4,
495
+ marginHorizontal: 8,
496
+ paddingRight: 4,
497
+ paddingLeft: 0,
498
498
  backgroundColor: colors.grayBackground,
499
499
  borderLeftWidth: 1,
500
500
  borderRightWidth: 1,
@@ -508,14 +508,14 @@ export const getRawStyles = (colors) => ({
508
508
  paddingBottom: 6,
509
509
  },
510
510
  treeLines: {
511
- width: 28,
511
+ width: 14,
512
512
  position: 'relative',
513
513
  },
514
514
  modernTreeLine: {
515
515
  position: 'absolute',
516
- left: 14,
516
+ left: 7,
517
517
  top: 0,
518
- width: 14,
518
+ width: 7,
519
519
  height: '100%',
520
520
  borderLeftWidth: 1.5,
521
521
  opacity: 0.5,
@@ -523,19 +523,19 @@ export const getRawStyles = (colors) => ({
523
523
  modernTreeLineLast: {
524
524
  height: '50%',
525
525
  borderBottomWidth: 1.5,
526
- borderBottomLeftRadius: 10,
526
+ borderBottomLeftRadius: 8,
527
527
  },
528
528
  modernTreeBranch: {
529
529
  position: 'absolute',
530
- left: 14,
530
+ left: 7,
531
531
  top: '50%',
532
- width: 14,
532
+ width: 7,
533
533
  borderTopWidth: 1.5,
534
534
  opacity: 0.5,
535
535
  },
536
536
  treeCardWrapper: {
537
537
  flex: 1,
538
- paddingVertical: 3.5,
538
+ paddingVertical: 3,
539
539
  },
540
540
  card: {
541
541
  marginHorizontal: 0,
@@ -575,10 +575,10 @@ export const getRawStyles = (colors) => ({
575
575
  gap: 5,
576
576
  },
577
577
  smallCheckbox: {
578
- width: 13,
579
- height: 13,
578
+ width: 15,
579
+ height: 15,
580
580
  borderRadius: 4,
581
- borderWidth: 1.5,
581
+ borderWidth: 1.8,
582
582
  borderColor: colors.grayTextWeak,
583
583
  alignItems: 'center',
584
584
  justifyContent: 'center',