react-native-inapp-inspector 2.0.5 → 2.0.6
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.
- package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +11 -0
- package/dist/commonjs/components/Inspector/AuditTab.d.ts +3 -0
- package/dist/commonjs/components/Inspector/AuditTab.js +741 -0
- package/dist/commonjs/components/Inspector/DeviceTab.d.ts +3 -0
- package/dist/commonjs/components/Inspector/DeviceTab.js +717 -0
- package/dist/commonjs/components/Inspector/InspectorHeader.js +28 -25
- package/dist/commonjs/components/Inspector/MainScreen.js +15 -2
- package/dist/commonjs/components/Inspector/NetworkDetail.js +15 -0
- package/dist/commonjs/components/Inspector/PerformanceHud.d.ts +7 -0
- package/dist/commonjs/components/Inspector/PerformanceHud.js +210 -0
- package/dist/commonjs/components/Inspector/PerformanceTab.js +30 -18
- package/dist/commonjs/components/Inspector/RequestReplayModal.d.ts +9 -0
- package/dist/commonjs/components/Inspector/RequestReplayModal.js +792 -0
- package/dist/commonjs/components/Inspector/RequestReplayView.d.ts +8 -0
- package/dist/commonjs/components/Inspector/RequestReplayView.js +871 -0
- package/dist/commonjs/components/Inspector/SettingsPanel.js +326 -15
- package/dist/commonjs/components/Inspector/StorageTab.d.ts +3 -0
- package/dist/commonjs/components/Inspector/StorageTab.js +610 -0
- package/dist/commonjs/components/Inspector/TabBar.js +23 -2
- package/dist/commonjs/components/NetworkIcons.d.ts +12 -0
- package/dist/commonjs/components/NetworkIcons.js +72 -3
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/customHooks/storageInspector.d.ts +13 -0
- package/dist/commonjs/customHooks/storageInspector.js +179 -0
- package/dist/commonjs/helpers/deviceInfo.d.ts +4 -0
- package/dist/commonjs/helpers/deviceInfo.js +94 -0
- package/dist/commonjs/helpers/index.d.ts +2 -0
- package/dist/commonjs/helpers/index.js +12 -1
- package/dist/commonjs/helpers/packageAuditor.d.ts +5 -0
- package/dist/commonjs/helpers/packageAuditor.js +182 -0
- package/dist/commonjs/i18n/locales/en.json +3 -2
- package/dist/commonjs/index.d.ts +1 -0
- package/dist/commonjs/index.js +113 -9
- package/dist/commonjs/native/NativeInspector.d.ts +1 -0
- package/dist/commonjs/types/enums.d.ts +7 -0
- package/dist/commonjs/types/enums.js +7 -0
- package/dist/commonjs/types/interfaces.d.ts +73 -0
- package/dist/esm/components/Inspector/AuditTab.d.ts +3 -0
- package/dist/esm/components/Inspector/AuditTab.js +702 -0
- package/dist/esm/components/Inspector/DeviceTab.d.ts +3 -0
- package/dist/esm/components/Inspector/DeviceTab.js +678 -0
- package/dist/esm/components/Inspector/InspectorHeader.js +28 -25
- package/dist/esm/components/Inspector/MainScreen.js +15 -2
- package/dist/esm/components/Inspector/NetworkDetail.js +16 -1
- package/dist/esm/components/Inspector/PerformanceHud.d.ts +7 -0
- package/dist/esm/components/Inspector/PerformanceHud.js +170 -0
- package/dist/esm/components/Inspector/PerformanceTab.js +31 -19
- package/dist/esm/components/Inspector/RequestReplayModal.d.ts +9 -0
- package/dist/esm/components/Inspector/RequestReplayModal.js +752 -0
- package/dist/esm/components/Inspector/RequestReplayView.d.ts +8 -0
- package/dist/esm/components/Inspector/RequestReplayView.js +831 -0
- package/dist/esm/components/Inspector/SettingsPanel.js +327 -16
- package/dist/esm/components/Inspector/StorageTab.d.ts +3 -0
- package/dist/esm/components/Inspector/StorageTab.js +571 -0
- package/dist/esm/components/Inspector/TabBar.js +24 -3
- package/dist/esm/components/NetworkIcons.d.ts +12 -0
- package/dist/esm/components/NetworkIcons.js +57 -0
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/customHooks/storageInspector.d.ts +13 -0
- package/dist/esm/customHooks/storageInspector.js +170 -0
- package/dist/esm/helpers/deviceInfo.d.ts +4 -0
- package/dist/esm/helpers/deviceInfo.js +89 -0
- package/dist/esm/helpers/index.d.ts +2 -0
- package/dist/esm/helpers/index.js +10 -0
- package/dist/esm/helpers/packageAuditor.d.ts +5 -0
- package/dist/esm/helpers/packageAuditor.js +173 -0
- package/dist/esm/i18n/locales/en.json +3 -2
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +109 -8
- package/dist/esm/native/NativeInspector.d.ts +1 -0
- package/dist/esm/types/enums.d.ts +7 -0
- package/dist/esm/types/enums.js +7 -0
- package/dist/esm/types/interfaces.d.ts +73 -0
- package/ios/NetworkInspectorModule.mm +12 -5
- package/package.json +4 -1
|
@@ -0,0 +1,610 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.StorageTab = void 0;
|
|
40
|
+
const react_1 = __importStar(require("react"));
|
|
41
|
+
const react_native_1 = require("react-native");
|
|
42
|
+
const InspectorContext_1 = require("./InspectorContext");
|
|
43
|
+
const TouchableScale_1 = __importDefault(require("../TouchableScale"));
|
|
44
|
+
const AppColors_1 = require("../../styles/AppColors");
|
|
45
|
+
const AppFonts_1 = require("../../styles/AppFonts");
|
|
46
|
+
const helpers_1 = require("../../helpers");
|
|
47
|
+
const toast_1 = require("../../helpers/toast");
|
|
48
|
+
const NetworkIcons_1 = require("../NetworkIcons");
|
|
49
|
+
exports.StorageTab = react_1.default.memo(() => {
|
|
50
|
+
const { storageEntries, refreshStorageEntries, updateStorageEntry, deleteStorageEntry, clearAllStorageEntries, } = (0, InspectorContext_1.useInspector)();
|
|
51
|
+
const [search, setSearch] = (0, react_1.useState)('');
|
|
52
|
+
const [editingItem, setEditingItem] = (0, react_1.useState)(null);
|
|
53
|
+
const [editValue, setEditValue] = (0, react_1.useState)('');
|
|
54
|
+
const [isAddingNew, setIsAddingNew] = (0, react_1.useState)(false);
|
|
55
|
+
const [newKey, setNewKey] = (0, react_1.useState)('');
|
|
56
|
+
const [newValue, setNewValue] = (0, react_1.useState)('');
|
|
57
|
+
const [expandedKeys, setExpandedKeys] = (0, react_1.useState)(new Set());
|
|
58
|
+
const filteredEntries = (0, react_1.useMemo)(() => {
|
|
59
|
+
if (!search || search.trim().length === 0)
|
|
60
|
+
return storageEntries;
|
|
61
|
+
const term = search.toLowerCase().trim();
|
|
62
|
+
return storageEntries.filter(item => item.key.toLowerCase().includes(term) ||
|
|
63
|
+
item.value.toLowerCase().includes(term));
|
|
64
|
+
}, [storageEntries, search]);
|
|
65
|
+
const totalBytes = (0, react_1.useMemo)(() => storageEntries.reduce((acc, cur) => acc + (cur.sizeBytes || 0), 0), [storageEntries]);
|
|
66
|
+
const toggleExpand = (key) => {
|
|
67
|
+
setExpandedKeys(prev => {
|
|
68
|
+
const next = new Set(prev);
|
|
69
|
+
if (next.has(key)) {
|
|
70
|
+
next.delete(key);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
next.add(key);
|
|
74
|
+
}
|
|
75
|
+
return next;
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
const handleStartEdit = (item) => {
|
|
79
|
+
setEditingItem(item);
|
|
80
|
+
setEditValue(item.value);
|
|
81
|
+
};
|
|
82
|
+
const handleSaveEdit = async () => {
|
|
83
|
+
if (!editingItem)
|
|
84
|
+
return;
|
|
85
|
+
try {
|
|
86
|
+
await updateStorageEntry(editingItem.key, editValue);
|
|
87
|
+
(0, toast_1.showToast)(`Updated "${editingItem.key}"`);
|
|
88
|
+
setEditingItem(null);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
react_native_1.Alert.alert('Error', 'Failed to save value to storage.');
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const handleCreateNew = async () => {
|
|
95
|
+
if (!newKey.trim()) {
|
|
96
|
+
react_native_1.Alert.alert('Invalid Key', 'Please enter a non-empty storage key.');
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
try {
|
|
100
|
+
await updateStorageEntry(newKey.trim(), newValue);
|
|
101
|
+
(0, toast_1.showToast)(`Saved key "${newKey.trim()}"`);
|
|
102
|
+
setIsAddingNew(false);
|
|
103
|
+
setNewKey('');
|
|
104
|
+
setNewValue('');
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
react_native_1.Alert.alert('Error', 'Failed to create storage item.');
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
const handleDelete = (key) => {
|
|
111
|
+
react_native_1.Alert.alert('Delete Storage Key', `Are you sure you want to delete "${key}"?`, [
|
|
112
|
+
{ text: 'Cancel', style: 'cancel' },
|
|
113
|
+
{
|
|
114
|
+
text: 'Delete',
|
|
115
|
+
style: 'destructive',
|
|
116
|
+
onPress: async () => {
|
|
117
|
+
await deleteStorageEntry(key);
|
|
118
|
+
(0, toast_1.showToast)(`Deleted "${key}"`);
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
]);
|
|
122
|
+
};
|
|
123
|
+
const handleClearAll = () => {
|
|
124
|
+
react_native_1.Alert.alert('Clear All Storage', 'This will erase all saved keys and values in local storage. Are you sure?', [
|
|
125
|
+
{ text: 'Cancel', style: 'cancel' },
|
|
126
|
+
{
|
|
127
|
+
text: 'Clear All',
|
|
128
|
+
style: 'destructive',
|
|
129
|
+
onPress: async () => {
|
|
130
|
+
await clearAllStorageEntries();
|
|
131
|
+
(0, toast_1.showToast)('All storage cleared');
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
]);
|
|
135
|
+
};
|
|
136
|
+
return (<react_native_1.View style={styles.container}>
|
|
137
|
+
{/* Top Metrics & Actions Header */}
|
|
138
|
+
<react_native_1.View style={styles.metricsBar}>
|
|
139
|
+
<react_native_1.View style={styles.metricsLeft}>
|
|
140
|
+
<react_native_1.View style={styles.metricItem}>
|
|
141
|
+
<NetworkIcons_1.DatabaseIcon size={13} color={AppColors_1.AppColors.purple}/>
|
|
142
|
+
<react_native_1.Text style={styles.metricBold}>{storageEntries.length}</react_native_1.Text>
|
|
143
|
+
<react_native_1.Text style={styles.metricLabel}>Keys</react_native_1.Text>
|
|
144
|
+
</react_native_1.View>
|
|
145
|
+
<react_native_1.View style={styles.metricDivider}/>
|
|
146
|
+
<react_native_1.View style={styles.metricItem}>
|
|
147
|
+
<react_native_1.Text style={styles.metricBold}>{(0, helpers_1.formatBytes)(totalBytes)}</react_native_1.Text>
|
|
148
|
+
<react_native_1.Text style={styles.metricLabel}>Stored</react_native_1.Text>
|
|
149
|
+
</react_native_1.View>
|
|
150
|
+
</react_native_1.View>
|
|
151
|
+
|
|
152
|
+
<react_native_1.View style={styles.actionsRight}>
|
|
153
|
+
<TouchableScale_1.default onPress={refreshStorageEntries} hitSlop={8} style={styles.actionBtn}>
|
|
154
|
+
<NetworkIcons_1.ResetIcon size={14} color={AppColors_1.AppColors.purple}/>
|
|
155
|
+
</TouchableScale_1.default>
|
|
156
|
+
<TouchableScale_1.default onPress={() => setIsAddingNew(true)} hitSlop={8} style={[styles.actionBtn, { backgroundColor: AppColors_1.AppColors.purple }]}>
|
|
157
|
+
<NetworkIcons_1.PlusIcon size={14} color={AppColors_1.AppColors.white}/>
|
|
158
|
+
</TouchableScale_1.default>
|
|
159
|
+
<TouchableScale_1.default onPress={handleClearAll} hitSlop={8} style={[styles.actionBtn, { borderColor: `${AppColors_1.AppColors.errorColor}40` }]}>
|
|
160
|
+
<NetworkIcons_1.TrashIcon size={14} color={AppColors_1.AppColors.errorColor}/>
|
|
161
|
+
</TouchableScale_1.default>
|
|
162
|
+
</react_native_1.View>
|
|
163
|
+
</react_native_1.View>
|
|
164
|
+
|
|
165
|
+
{/* Search Input */}
|
|
166
|
+
<react_native_1.View style={styles.searchRow}>
|
|
167
|
+
<react_native_1.View style={styles.searchBox}>
|
|
168
|
+
<NetworkIcons_1.SearchIcon size={14} color={AppColors_1.AppColors.grayTextWeak}/>
|
|
169
|
+
<react_native_1.TextInput style={styles.searchInput} placeholder="Search storage key or value..." placeholderTextColor={AppColors_1.AppColors.grayTextWeak} value={search} onChangeText={setSearch} autoCapitalize="none" autoCorrect={false}/>
|
|
170
|
+
{search.length > 0 && (<react_native_1.Pressable onPress={() => setSearch('')} hitSlop={8}>
|
|
171
|
+
<NetworkIcons_1.ClearIcon size={14} color={AppColors_1.AppColors.grayTextWeak}/>
|
|
172
|
+
</react_native_1.Pressable>)}
|
|
173
|
+
</react_native_1.View>
|
|
174
|
+
</react_native_1.View>
|
|
175
|
+
|
|
176
|
+
{/* Storage Entries List */}
|
|
177
|
+
<react_native_1.FlatList data={filteredEntries} keyExtractor={item => item.key} contentContainerStyle={styles.listContent} ListEmptyComponent={<react_native_1.View style={styles.emptyState}>
|
|
178
|
+
<NetworkIcons_1.DatabaseIcon size={36} color={AppColors_1.AppColors.grayTextWeak}/>
|
|
179
|
+
<react_native_1.Text style={styles.emptyTitle}>No Storage Entries</react_native_1.Text>
|
|
180
|
+
<react_native_1.Text style={styles.emptySub}>
|
|
181
|
+
{search
|
|
182
|
+
? `No keys matched "${search}"`
|
|
183
|
+
: 'No AsyncStorage or local key-value pairs stored yet.'}
|
|
184
|
+
</react_native_1.Text>
|
|
185
|
+
</react_native_1.View>} renderItem={({ item }) => {
|
|
186
|
+
const isExpanded = expandedKeys.has(item.key);
|
|
187
|
+
return (<react_native_1.View style={styles.card}>
|
|
188
|
+
{/* Card Header */}
|
|
189
|
+
<react_native_1.View style={styles.cardHeader}>
|
|
190
|
+
<react_native_1.View style={styles.keyRow}>
|
|
191
|
+
<NetworkIcons_1.KeyIcon size={13} color={AppColors_1.AppColors.purple}/>
|
|
192
|
+
<react_native_1.Text style={styles.keyText} numberOfLines={1}>
|
|
193
|
+
{item.key}
|
|
194
|
+
</react_native_1.Text>
|
|
195
|
+
</react_native_1.View>
|
|
196
|
+
|
|
197
|
+
<react_native_1.View style={styles.badgeRow}>
|
|
198
|
+
<react_native_1.View style={[
|
|
199
|
+
styles.typeBadge,
|
|
200
|
+
{
|
|
201
|
+
backgroundColor: item.isJson
|
|
202
|
+
? `${AppColors_1.AppColors.purple}18`
|
|
203
|
+
: `${AppColors_1.AppColors.emerald500}18`,
|
|
204
|
+
borderColor: item.isJson
|
|
205
|
+
? `${AppColors_1.AppColors.purple}40`
|
|
206
|
+
: `${AppColors_1.AppColors.emerald500}40`,
|
|
207
|
+
},
|
|
208
|
+
]}>
|
|
209
|
+
<react_native_1.Text style={[
|
|
210
|
+
styles.typeBadgeText,
|
|
211
|
+
{
|
|
212
|
+
color: item.isJson
|
|
213
|
+
? AppColors_1.AppColors.purple
|
|
214
|
+
: AppColors_1.AppColors.emerald600,
|
|
215
|
+
},
|
|
216
|
+
]}>
|
|
217
|
+
{item.isJson ? 'JSON' : 'STRING'}
|
|
218
|
+
</react_native_1.Text>
|
|
219
|
+
</react_native_1.View>
|
|
220
|
+
<react_native_1.Text style={styles.sizeText}>
|
|
221
|
+
{(0, helpers_1.formatBytes)(item.sizeBytes)}
|
|
222
|
+
</react_native_1.Text>
|
|
223
|
+
</react_native_1.View>
|
|
224
|
+
</react_native_1.View>
|
|
225
|
+
|
|
226
|
+
{/* Value Box */}
|
|
227
|
+
<react_native_1.Pressable onPress={() => toggleExpand(item.key)} style={styles.valueContainer}>
|
|
228
|
+
<react_native_1.Text style={styles.valueText} numberOfLines={isExpanded ? undefined : 3}>
|
|
229
|
+
{item.value}
|
|
230
|
+
</react_native_1.Text>
|
|
231
|
+
</react_native_1.Pressable>
|
|
232
|
+
|
|
233
|
+
{/* Card Actions */}
|
|
234
|
+
<react_native_1.View style={styles.cardFooter}>
|
|
235
|
+
<react_native_1.Text style={styles.footerHint}>
|
|
236
|
+
{isExpanded ? 'Tap to collapse' : 'Tap to expand full value'}
|
|
237
|
+
</react_native_1.Text>
|
|
238
|
+
<react_native_1.View style={styles.cardActions}>
|
|
239
|
+
<TouchableScale_1.default onPress={() => {
|
|
240
|
+
(0, helpers_1.copyToClipboard)(item.value, 'Storage Value');
|
|
241
|
+
(0, toast_1.showToast)('Copied value!');
|
|
242
|
+
}} hitSlop={6} style={styles.cardActionBtn}>
|
|
243
|
+
<NetworkIcons_1.CopyIcon size={12} color={AppColors_1.AppColors.grayText}/>
|
|
244
|
+
<react_native_1.Text style={styles.cardActionText}>Copy</react_native_1.Text>
|
|
245
|
+
</TouchableScale_1.default>
|
|
246
|
+
|
|
247
|
+
<TouchableScale_1.default onPress={() => handleStartEdit(item)} hitSlop={6} style={styles.cardActionBtn}>
|
|
248
|
+
<NetworkIcons_1.EditIcon size={12} color={AppColors_1.AppColors.purple}/>
|
|
249
|
+
<react_native_1.Text style={[
|
|
250
|
+
styles.cardActionText,
|
|
251
|
+
{ color: AppColors_1.AppColors.purple },
|
|
252
|
+
]}>
|
|
253
|
+
Edit
|
|
254
|
+
</react_native_1.Text>
|
|
255
|
+
</TouchableScale_1.default>
|
|
256
|
+
|
|
257
|
+
<TouchableScale_1.default onPress={() => handleDelete(item.key)} hitSlop={6} style={styles.cardActionBtn}>
|
|
258
|
+
<NetworkIcons_1.TrashIcon size={12} color={AppColors_1.AppColors.errorColor}/>
|
|
259
|
+
<react_native_1.Text style={[
|
|
260
|
+
styles.cardActionText,
|
|
261
|
+
{ color: AppColors_1.AppColors.errorColor },
|
|
262
|
+
]}>
|
|
263
|
+
Delete
|
|
264
|
+
</react_native_1.Text>
|
|
265
|
+
</TouchableScale_1.default>
|
|
266
|
+
</react_native_1.View>
|
|
267
|
+
</react_native_1.View>
|
|
268
|
+
</react_native_1.View>);
|
|
269
|
+
}}/>
|
|
270
|
+
|
|
271
|
+
{/* Edit Storage Key Modal */}
|
|
272
|
+
<react_native_1.Modal visible={editingItem !== null} transparent animationType="fade">
|
|
273
|
+
<react_native_1.View style={styles.modalBackdrop}>
|
|
274
|
+
<react_native_1.View style={styles.modalCard}>
|
|
275
|
+
<react_native_1.View style={styles.modalHeader}>
|
|
276
|
+
<react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
|
|
277
|
+
<NetworkIcons_1.EditIcon size={16} color={AppColors_1.AppColors.purple}/>
|
|
278
|
+
<react_native_1.Text style={styles.modalTitle}>Edit Storage Value</react_native_1.Text>
|
|
279
|
+
</react_native_1.View>
|
|
280
|
+
<react_native_1.Pressable onPress={() => setEditingItem(null)} hitSlop={10} style={styles.modalCloseBtn}>
|
|
281
|
+
<NetworkIcons_1.ClearIcon size={14} color={AppColors_1.AppColors.grayText}/>
|
|
282
|
+
</react_native_1.Pressable>
|
|
283
|
+
</react_native_1.View>
|
|
284
|
+
|
|
285
|
+
<react_native_1.Text style={styles.modalKeyLabel} numberOfLines={1}>
|
|
286
|
+
Key: <react_native_1.Text style={{ color: AppColors_1.AppColors.purple }}>{editingItem?.key}</react_native_1.Text>
|
|
287
|
+
</react_native_1.Text>
|
|
288
|
+
|
|
289
|
+
<react_native_1.TextInput style={styles.modalInput} multiline value={editValue} onChangeText={setEditValue} placeholder="Enter new string or JSON value..." placeholderTextColor={AppColors_1.AppColors.grayTextWeak} autoCapitalize="none" autoCorrect={false}/>
|
|
290
|
+
|
|
291
|
+
<react_native_1.View style={styles.modalActions}>
|
|
292
|
+
<TouchableScale_1.default onPress={() => setEditingItem(null)} style={styles.modalCancelBtn}>
|
|
293
|
+
<react_native_1.Text style={styles.modalCancelText}>Cancel</react_native_1.Text>
|
|
294
|
+
</TouchableScale_1.default>
|
|
295
|
+
<TouchableScale_1.default onPress={handleSaveEdit} style={styles.modalSaveBtn}>
|
|
296
|
+
<react_native_1.Text style={styles.modalSaveText}>Save Changes</react_native_1.Text>
|
|
297
|
+
</TouchableScale_1.default>
|
|
298
|
+
</react_native_1.View>
|
|
299
|
+
</react_native_1.View>
|
|
300
|
+
</react_native_1.View>
|
|
301
|
+
</react_native_1.Modal>
|
|
302
|
+
|
|
303
|
+
{/* Add New Key Modal */}
|
|
304
|
+
<react_native_1.Modal visible={isAddingNew} transparent animationType="fade">
|
|
305
|
+
<react_native_1.View style={styles.modalBackdrop}>
|
|
306
|
+
<react_native_1.View style={styles.modalCard}>
|
|
307
|
+
<react_native_1.View style={styles.modalHeader}>
|
|
308
|
+
<react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
|
|
309
|
+
<NetworkIcons_1.PlusIcon size={16} color={AppColors_1.AppColors.purple}/>
|
|
310
|
+
<react_native_1.Text style={styles.modalTitle}>Add New Storage Key</react_native_1.Text>
|
|
311
|
+
</react_native_1.View>
|
|
312
|
+
<react_native_1.Pressable onPress={() => setIsAddingNew(false)} hitSlop={10} style={styles.modalCloseBtn}>
|
|
313
|
+
<NetworkIcons_1.ClearIcon size={14} color={AppColors_1.AppColors.grayText}/>
|
|
314
|
+
</react_native_1.Pressable>
|
|
315
|
+
</react_native_1.View>
|
|
316
|
+
|
|
317
|
+
<react_native_1.TextInput style={styles.modalSingleInput} value={newKey} onChangeText={setNewKey} placeholder="@storage_key_name" placeholderTextColor={AppColors_1.AppColors.grayTextWeak} autoCapitalize="none" autoCorrect={false}/>
|
|
318
|
+
|
|
319
|
+
<react_native_1.TextInput style={[styles.modalInput, { height: 110 }]} multiline value={newValue} onChangeText={setNewValue} placeholder="Value (string, number, or JSON)..." placeholderTextColor={AppColors_1.AppColors.grayTextWeak} autoCapitalize="none" autoCorrect={false}/>
|
|
320
|
+
|
|
321
|
+
<react_native_1.View style={styles.modalActions}>
|
|
322
|
+
<TouchableScale_1.default onPress={() => setIsAddingNew(false)} style={styles.modalCancelBtn}>
|
|
323
|
+
<react_native_1.Text style={styles.modalCancelText}>Cancel</react_native_1.Text>
|
|
324
|
+
</TouchableScale_1.default>
|
|
325
|
+
<TouchableScale_1.default onPress={handleCreateNew} style={styles.modalSaveBtn}>
|
|
326
|
+
<react_native_1.Text style={styles.modalSaveText}>Save Key</react_native_1.Text>
|
|
327
|
+
</TouchableScale_1.default>
|
|
328
|
+
</react_native_1.View>
|
|
329
|
+
</react_native_1.View>
|
|
330
|
+
</react_native_1.View>
|
|
331
|
+
</react_native_1.Modal>
|
|
332
|
+
</react_native_1.View>);
|
|
333
|
+
});
|
|
334
|
+
const styles = react_native_1.StyleSheet.create({
|
|
335
|
+
container: {
|
|
336
|
+
flex: 1,
|
|
337
|
+
backgroundColor: AppColors_1.AppColors.grayBackground,
|
|
338
|
+
},
|
|
339
|
+
metricsBar: {
|
|
340
|
+
flexDirection: 'row',
|
|
341
|
+
alignItems: 'center',
|
|
342
|
+
justifyContent: 'space-between',
|
|
343
|
+
paddingHorizontal: 14,
|
|
344
|
+
paddingVertical: 10,
|
|
345
|
+
backgroundColor: AppColors_1.AppColors.primaryLight,
|
|
346
|
+
borderBottomWidth: 1,
|
|
347
|
+
borderColor: AppColors_1.AppColors.grayBorderSecondary,
|
|
348
|
+
},
|
|
349
|
+
metricsLeft: {
|
|
350
|
+
flexDirection: 'row',
|
|
351
|
+
alignItems: 'center',
|
|
352
|
+
gap: 12,
|
|
353
|
+
},
|
|
354
|
+
metricItem: {
|
|
355
|
+
flexDirection: 'row',
|
|
356
|
+
alignItems: 'center',
|
|
357
|
+
gap: 5,
|
|
358
|
+
},
|
|
359
|
+
metricBold: {
|
|
360
|
+
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
361
|
+
fontSize: 12.5,
|
|
362
|
+
color: AppColors_1.AppColors.primaryBlack,
|
|
363
|
+
},
|
|
364
|
+
metricLabel: {
|
|
365
|
+
fontFamily: AppFonts_1.AppFonts.interRegular,
|
|
366
|
+
fontSize: 11,
|
|
367
|
+
color: AppColors_1.AppColors.grayTextWeak,
|
|
368
|
+
},
|
|
369
|
+
metricDivider: {
|
|
370
|
+
width: 1,
|
|
371
|
+
height: 14,
|
|
372
|
+
backgroundColor: AppColors_1.AppColors.grayBorderSecondary,
|
|
373
|
+
},
|
|
374
|
+
actionsRight: {
|
|
375
|
+
flexDirection: 'row',
|
|
376
|
+
alignItems: 'center',
|
|
377
|
+
gap: 8,
|
|
378
|
+
},
|
|
379
|
+
actionBtn: {
|
|
380
|
+
width: 30,
|
|
381
|
+
height: 30,
|
|
382
|
+
borderRadius: 7,
|
|
383
|
+
backgroundColor: `${AppColors_1.AppColors.purple}14`,
|
|
384
|
+
borderWidth: 1,
|
|
385
|
+
borderColor: `${AppColors_1.AppColors.purple}30`,
|
|
386
|
+
alignItems: 'center',
|
|
387
|
+
justifyContent: 'center',
|
|
388
|
+
},
|
|
389
|
+
searchRow: {
|
|
390
|
+
paddingHorizontal: 12,
|
|
391
|
+
paddingVertical: 8,
|
|
392
|
+
},
|
|
393
|
+
searchBox: {
|
|
394
|
+
flexDirection: 'row',
|
|
395
|
+
alignItems: 'center',
|
|
396
|
+
backgroundColor: AppColors_1.AppColors.primaryLight,
|
|
397
|
+
borderRadius: 8,
|
|
398
|
+
borderWidth: 1,
|
|
399
|
+
borderColor: AppColors_1.AppColors.grayBorderSecondary,
|
|
400
|
+
paddingHorizontal: 10,
|
|
401
|
+
height: 36,
|
|
402
|
+
gap: 8,
|
|
403
|
+
},
|
|
404
|
+
searchInput: {
|
|
405
|
+
flex: 1,
|
|
406
|
+
fontFamily: AppFonts_1.AppFonts.interRegular,
|
|
407
|
+
fontSize: 12,
|
|
408
|
+
color: AppColors_1.AppColors.primaryBlack,
|
|
409
|
+
padding: 0,
|
|
410
|
+
},
|
|
411
|
+
listContent: {
|
|
412
|
+
paddingHorizontal: 12,
|
|
413
|
+
paddingBottom: 40,
|
|
414
|
+
gap: 8,
|
|
415
|
+
},
|
|
416
|
+
card: {
|
|
417
|
+
backgroundColor: AppColors_1.AppColors.primaryLight,
|
|
418
|
+
borderRadius: 10,
|
|
419
|
+
borderWidth: 1,
|
|
420
|
+
borderColor: AppColors_1.AppColors.grayBorderSecondary,
|
|
421
|
+
padding: 12,
|
|
422
|
+
gap: 8,
|
|
423
|
+
},
|
|
424
|
+
cardHeader: {
|
|
425
|
+
flexDirection: 'row',
|
|
426
|
+
alignItems: 'center',
|
|
427
|
+
justifyContent: 'space-between',
|
|
428
|
+
},
|
|
429
|
+
keyRow: {
|
|
430
|
+
flexDirection: 'row',
|
|
431
|
+
alignItems: 'center',
|
|
432
|
+
gap: 6,
|
|
433
|
+
flex: 1,
|
|
434
|
+
marginRight: 8,
|
|
435
|
+
},
|
|
436
|
+
keyText: {
|
|
437
|
+
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
438
|
+
fontSize: 12.5,
|
|
439
|
+
color: AppColors_1.AppColors.primaryBlack,
|
|
440
|
+
},
|
|
441
|
+
badgeRow: {
|
|
442
|
+
flexDirection: 'row',
|
|
443
|
+
alignItems: 'center',
|
|
444
|
+
gap: 6,
|
|
445
|
+
},
|
|
446
|
+
typeBadge: {
|
|
447
|
+
paddingHorizontal: 6,
|
|
448
|
+
paddingVertical: 2,
|
|
449
|
+
borderRadius: 4,
|
|
450
|
+
borderWidth: 1,
|
|
451
|
+
},
|
|
452
|
+
typeBadgeText: {
|
|
453
|
+
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
454
|
+
fontSize: 9.5,
|
|
455
|
+
letterSpacing: 0.5,
|
|
456
|
+
},
|
|
457
|
+
sizeText: {
|
|
458
|
+
fontFamily: AppFonts_1.AppFonts.interRegular,
|
|
459
|
+
fontSize: 10.5,
|
|
460
|
+
color: AppColors_1.AppColors.grayTextWeak,
|
|
461
|
+
},
|
|
462
|
+
valueContainer: {
|
|
463
|
+
backgroundColor: `${AppColors_1.AppColors.grayBackground}`,
|
|
464
|
+
borderRadius: 6,
|
|
465
|
+
padding: 8,
|
|
466
|
+
borderWidth: 1,
|
|
467
|
+
borderColor: `${AppColors_1.AppColors.grayBorderSecondary}80`,
|
|
468
|
+
},
|
|
469
|
+
valueText: {
|
|
470
|
+
fontFamily: AppFonts_1.AppFonts.interRegular,
|
|
471
|
+
fontSize: 11,
|
|
472
|
+
color: AppColors_1.AppColors.grayText,
|
|
473
|
+
lineHeight: 16,
|
|
474
|
+
},
|
|
475
|
+
cardFooter: {
|
|
476
|
+
flexDirection: 'row',
|
|
477
|
+
alignItems: 'center',
|
|
478
|
+
justifyContent: 'space-between',
|
|
479
|
+
marginTop: 2,
|
|
480
|
+
},
|
|
481
|
+
footerHint: {
|
|
482
|
+
fontFamily: AppFonts_1.AppFonts.interRegular,
|
|
483
|
+
fontSize: 10,
|
|
484
|
+
color: AppColors_1.AppColors.grayTextWeak,
|
|
485
|
+
},
|
|
486
|
+
cardActions: {
|
|
487
|
+
flexDirection: 'row',
|
|
488
|
+
alignItems: 'center',
|
|
489
|
+
gap: 12,
|
|
490
|
+
},
|
|
491
|
+
cardActionBtn: {
|
|
492
|
+
flexDirection: 'row',
|
|
493
|
+
alignItems: 'center',
|
|
494
|
+
gap: 4,
|
|
495
|
+
},
|
|
496
|
+
cardActionText: {
|
|
497
|
+
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
498
|
+
fontSize: 10.5,
|
|
499
|
+
color: AppColors_1.AppColors.grayText,
|
|
500
|
+
},
|
|
501
|
+
emptyState: {
|
|
502
|
+
alignItems: 'center',
|
|
503
|
+
justifyContent: 'center',
|
|
504
|
+
paddingVertical: 60,
|
|
505
|
+
gap: 8,
|
|
506
|
+
},
|
|
507
|
+
emptyTitle: {
|
|
508
|
+
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
509
|
+
fontSize: 14,
|
|
510
|
+
color: AppColors_1.AppColors.primaryBlack,
|
|
511
|
+
},
|
|
512
|
+
emptySub: {
|
|
513
|
+
fontFamily: AppFonts_1.AppFonts.interRegular,
|
|
514
|
+
fontSize: 11.5,
|
|
515
|
+
color: AppColors_1.AppColors.grayTextWeak,
|
|
516
|
+
textAlign: 'center',
|
|
517
|
+
maxWidth: 260,
|
|
518
|
+
},
|
|
519
|
+
modalBackdrop: {
|
|
520
|
+
flex: 1,
|
|
521
|
+
backgroundColor: 'rgba(0,0,0,0.5)',
|
|
522
|
+
justifyContent: 'center',
|
|
523
|
+
alignItems: 'center',
|
|
524
|
+
paddingHorizontal: 20,
|
|
525
|
+
},
|
|
526
|
+
modalCard: {
|
|
527
|
+
width: '100%',
|
|
528
|
+
backgroundColor: AppColors_1.AppColors.primaryLight,
|
|
529
|
+
borderRadius: 14,
|
|
530
|
+
padding: 16,
|
|
531
|
+
gap: 12,
|
|
532
|
+
borderWidth: 1,
|
|
533
|
+
borderColor: AppColors_1.AppColors.grayBorderSecondary,
|
|
534
|
+
shadowColor: '#000',
|
|
535
|
+
shadowOpacity: 0.2,
|
|
536
|
+
shadowRadius: 10,
|
|
537
|
+
elevation: 8,
|
|
538
|
+
},
|
|
539
|
+
modalHeader: {
|
|
540
|
+
flexDirection: 'row',
|
|
541
|
+
alignItems: 'center',
|
|
542
|
+
justifyContent: 'space-between',
|
|
543
|
+
},
|
|
544
|
+
modalTitle: {
|
|
545
|
+
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
546
|
+
fontSize: 14,
|
|
547
|
+
color: AppColors_1.AppColors.primaryBlack,
|
|
548
|
+
},
|
|
549
|
+
modalCloseBtn: {
|
|
550
|
+
padding: 4,
|
|
551
|
+
},
|
|
552
|
+
modalKeyLabel: {
|
|
553
|
+
fontFamily: AppFonts_1.AppFonts.interMedium,
|
|
554
|
+
fontSize: 12,
|
|
555
|
+
color: AppColors_1.AppColors.grayText,
|
|
556
|
+
},
|
|
557
|
+
modalSingleInput: {
|
|
558
|
+
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
559
|
+
fontSize: 12.5,
|
|
560
|
+
color: AppColors_1.AppColors.primaryBlack,
|
|
561
|
+
backgroundColor: AppColors_1.AppColors.grayBackground,
|
|
562
|
+
borderRadius: 8,
|
|
563
|
+
borderWidth: 1,
|
|
564
|
+
borderColor: AppColors_1.AppColors.grayBorderSecondary,
|
|
565
|
+
paddingHorizontal: 10,
|
|
566
|
+
height: 38,
|
|
567
|
+
},
|
|
568
|
+
modalInput: {
|
|
569
|
+
fontFamily: AppFonts_1.AppFonts.interRegular,
|
|
570
|
+
fontSize: 12,
|
|
571
|
+
color: AppColors_1.AppColors.primaryBlack,
|
|
572
|
+
backgroundColor: AppColors_1.AppColors.grayBackground,
|
|
573
|
+
borderRadius: 8,
|
|
574
|
+
borderWidth: 1,
|
|
575
|
+
borderColor: AppColors_1.AppColors.grayBorderSecondary,
|
|
576
|
+
padding: 10,
|
|
577
|
+
height: 140,
|
|
578
|
+
textAlignVertical: 'top',
|
|
579
|
+
},
|
|
580
|
+
modalActions: {
|
|
581
|
+
flexDirection: 'row',
|
|
582
|
+
alignItems: 'center',
|
|
583
|
+
justifyContent: 'flex-end',
|
|
584
|
+
gap: 10,
|
|
585
|
+
marginTop: 4,
|
|
586
|
+
},
|
|
587
|
+
modalCancelBtn: {
|
|
588
|
+
paddingHorizontal: 14,
|
|
589
|
+
paddingVertical: 8,
|
|
590
|
+
borderRadius: 8,
|
|
591
|
+
backgroundColor: `${AppColors_1.AppColors.grayBorderSecondary}40`,
|
|
592
|
+
},
|
|
593
|
+
modalCancelText: {
|
|
594
|
+
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
595
|
+
fontSize: 12,
|
|
596
|
+
color: AppColors_1.AppColors.grayText,
|
|
597
|
+
},
|
|
598
|
+
modalSaveBtn: {
|
|
599
|
+
paddingHorizontal: 14,
|
|
600
|
+
paddingVertical: 8,
|
|
601
|
+
borderRadius: 8,
|
|
602
|
+
backgroundColor: AppColors_1.AppColors.purple,
|
|
603
|
+
},
|
|
604
|
+
modalSaveText: {
|
|
605
|
+
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
606
|
+
fontSize: 12,
|
|
607
|
+
color: AppColors_1.AppColors.white,
|
|
608
|
+
},
|
|
609
|
+
});
|
|
610
|
+
exports.default = exports.StorageTab;
|
|
@@ -13,7 +13,7 @@ const NetworkIcons_1 = require("../NetworkIcons");
|
|
|
13
13
|
const reduxLogger_1 = require("../../customHooks/reduxLogger");
|
|
14
14
|
const analyticsLogger_1 = require("../../customHooks/analyticsLogger");
|
|
15
15
|
const TabBar = react_1.default.memo(() => {
|
|
16
|
-
const { activeTab, switchActiveTab, tabVisibility, logs, consoleLogs, analyticsEvents, crashRecords, lastReadApisCount, lastReadLogsCount, lastReadCrashesCount, unreadPulseAnim, } = (0, InspectorContext_1.useInspector)();
|
|
16
|
+
const { activeTab, switchActiveTab, tabVisibility, logs, consoleLogs, analyticsEvents, crashRecords, storageEntries, auditReport, lastReadApisCount, lastReadLogsCount, lastReadCrashesCount, unreadPulseAnim, } = (0, InspectorContext_1.useInspector)();
|
|
17
17
|
const isReduxAvail = (0, reduxLogger_1.isReduxConnected)();
|
|
18
18
|
const isAnalyticsAvail = (0, analyticsLogger_1.isAnalyticsConnected)();
|
|
19
19
|
return (<react_native_1.View style={styles_1.default.tabBarContainer}>
|
|
@@ -43,6 +43,24 @@ const TabBar = react_1.default.memo(() => {
|
|
|
43
43
|
count: 0,
|
|
44
44
|
icon: 'redux',
|
|
45
45
|
},
|
|
46
|
+
{
|
|
47
|
+
key: 'storage',
|
|
48
|
+
label: 'Storage',
|
|
49
|
+
count: storageEntries.length,
|
|
50
|
+
icon: 'storage',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
key: 'device',
|
|
54
|
+
label: 'Device',
|
|
55
|
+
count: 0,
|
|
56
|
+
icon: 'device',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
key: 'audit',
|
|
60
|
+
label: 'Audit',
|
|
61
|
+
count: auditReport?.totalIssues || 0,
|
|
62
|
+
icon: 'audit',
|
|
63
|
+
},
|
|
46
64
|
{
|
|
47
65
|
key: 'bundle',
|
|
48
66
|
label: 'Bundle',
|
|
@@ -63,7 +81,7 @@ const TabBar = react_1.default.memo(() => {
|
|
|
63
81
|
},
|
|
64
82
|
]
|
|
65
83
|
.filter(tab => {
|
|
66
|
-
if (!tabVisibility?.[tab.key])
|
|
84
|
+
if (!tabVisibility?.[tab.key] && activeTab !== tab.key)
|
|
67
85
|
return false;
|
|
68
86
|
if (tab.key === 'redux' && !isReduxAvail)
|
|
69
87
|
return false;
|
|
@@ -100,6 +118,9 @@ const TabBar = react_1.default.memo(() => {
|
|
|
100
118
|
{tab.icon === 'logs' && (<NetworkIcons_1.TerminalIcon color={iconColor} size={14}/>)}
|
|
101
119
|
{tab.icon === 'analytics' && (<NetworkIcons_1.AnalyticsIcon color={iconColor} size={14}/>)}
|
|
102
120
|
{tab.icon === 'redux' && (<NetworkIcons_1.ReduxIcon color={iconColor} size={14}/>)}
|
|
121
|
+
{tab.icon === 'storage' && (<NetworkIcons_1.DatabaseIcon color={iconColor} size={14}/>)}
|
|
122
|
+
{tab.icon === 'device' && (<NetworkIcons_1.DevicePhoneIcon color={iconColor} size={14}/>)}
|
|
123
|
+
{tab.icon === 'audit' && (<NetworkIcons_1.ShieldCheckIcon color={iconColor} size={14}/>)}
|
|
103
124
|
{tab.icon === 'bundle' && (<NetworkIcons_1.PackageIcon color={iconColor} size={14}/>)}
|
|
104
125
|
{tab.icon === 'performance' && (<NetworkIcons_1.PerformanceIcon color={iconColor} size={14}/>)}
|
|
105
126
|
{tab.icon === 'crash' && (<NetworkIcons_1.CrashIcon color={iconColor} size={14}/>)}
|
|
@@ -22,6 +22,7 @@ export declare const SizeIcon: ({ color }: IconProps) => React.JSX.Element;
|
|
|
22
22
|
export declare const RequestIcon: ({ color }: IconProps) => React.JSX.Element;
|
|
23
23
|
export declare const ResponseIcon: ({ color }: IconProps) => React.JSX.Element;
|
|
24
24
|
export declare const HeadersIcon: ({ color }: IconProps) => React.JSX.Element;
|
|
25
|
+
export declare const ReplayIcon: ({ color, size, }: IconProps) => React.JSX.Element;
|
|
25
26
|
export declare const CopyIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
26
27
|
export declare const FetchIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
27
28
|
export declare const TerminalIcon: ({ color, size, }: IconProps) => React.JSX.Element;
|
|
@@ -127,3 +128,14 @@ export declare const TagIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
|
127
128
|
export declare const NpmIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
128
129
|
export declare const ResetIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
129
130
|
export declare const ChevronDownIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
131
|
+
export declare const DatabaseIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
132
|
+
export declare const DevicePhoneIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
133
|
+
export declare const FlagIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
134
|
+
export declare const EditIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
135
|
+
export declare const PlusIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
136
|
+
export declare const CodeIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
137
|
+
export declare const CpuIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
138
|
+
export declare const FingerprintIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
139
|
+
export declare const MonitorIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
140
|
+
export declare const ShieldCheckIcon: ({ color, size }: IconProps) => React.JSX.Element;
|
|
141
|
+
export declare const SparklesIcon: ({ color, size }: IconProps) => React.JSX.Element;
|