react-native-inapp-inspector 2.2.2 → 2.2.3

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 (97) hide show
  1. package/dist/commonjs/constants/version.d.ts +1 -1
  2. package/dist/commonjs/constants/version.js +1 -1
  3. package/dist/esm/constants/version.d.ts +1 -1
  4. package/dist/esm/constants/version.js +1 -1
  5. package/package.json +2 -1
  6. package/src/analytics.ts +35 -0
  7. package/src/bundle.ts +25 -0
  8. package/src/components/AnalyticsDetail.tsx +865 -0
  9. package/src/components/AnalyticsEventCard.tsx +441 -0
  10. package/src/components/AnalyticsGraph.tsx +583 -0
  11. package/src/components/AnimatedEntrance.tsx +64 -0
  12. package/src/components/AppHeaderLogo.tsx +109 -0
  13. package/src/components/BrandCircleIcon.tsx +144 -0
  14. package/src/components/BrandSquareIcon.tsx +144 -0
  15. package/src/components/CodeSnippet.tsx +725 -0
  16. package/src/components/ConsoleLogCard.tsx +628 -0
  17. package/src/components/CopyButton.tsx +87 -0
  18. package/src/components/DiffViewer.tsx +82 -0
  19. package/src/components/DomainHeader.tsx +237 -0
  20. package/src/components/EmptyState.tsx +73 -0
  21. package/src/components/EndOfListFooter.tsx +100 -0
  22. package/src/components/ErrorBoundary.tsx +688 -0
  23. package/src/components/HeadersSection.tsx +192 -0
  24. package/src/components/HighlightText.tsx +100 -0
  25. package/src/components/Inspector/AnalyticsFilterModal.tsx +1250 -0
  26. package/src/components/Inspector/AnalyticsTab.tsx +1336 -0
  27. package/src/components/Inspector/BundleTab.tsx +4731 -0
  28. package/src/components/Inspector/ConsoleTab.tsx +702 -0
  29. package/src/components/Inspector/CrashDetail.tsx +941 -0
  30. package/src/components/Inspector/CrashFilterModal.tsx +721 -0
  31. package/src/components/Inspector/CrashTab.tsx +871 -0
  32. package/src/components/Inspector/FabLauncher.tsx +80 -0
  33. package/src/components/Inspector/InspectorContext.tsx +28 -0
  34. package/src/components/Inspector/InspectorHeader.tsx +973 -0
  35. package/src/components/Inspector/LogDetail.tsx +1427 -0
  36. package/src/components/Inspector/MainScreen.tsx +258 -0
  37. package/src/components/Inspector/NavigationTracker.tsx +13 -0
  38. package/src/components/Inspector/NetworkDetail.tsx +794 -0
  39. package/src/components/Inspector/NetworkTab.tsx +1095 -0
  40. package/src/components/Inspector/NpmUpdateToast.tsx +392 -0
  41. package/src/components/Inspector/PerformanceTab.tsx +1894 -0
  42. package/src/components/Inspector/ReduxDetail.tsx +1651 -0
  43. package/src/components/Inspector/ReduxTab.tsx +954 -0
  44. package/src/components/Inspector/SettingsPanel.tsx +3181 -0
  45. package/src/components/Inspector/TabBar.tsx +187 -0
  46. package/src/components/Inspector/TelemetryConsentModal.tsx +392 -0
  47. package/src/components/Inspector/UpdateAvailableModal.tsx +545 -0
  48. package/src/components/JsonViewer.tsx +486 -0
  49. package/src/components/LogCard.tsx +491 -0
  50. package/src/components/LogSyntaxHighlighter.tsx +178 -0
  51. package/src/components/MetaAccordion.tsx +340 -0
  52. package/src/components/MiniBarChart.tsx +42 -0
  53. package/src/components/MiniLineChart.tsx +33 -0
  54. package/src/components/NetworkIcons.tsx +2118 -0
  55. package/src/components/SectionHeader.tsx +113 -0
  56. package/src/components/SegmentedTabs.tsx +83 -0
  57. package/src/components/Slider.tsx +300 -0
  58. package/src/components/SourcePageCard.tsx +148 -0
  59. package/src/components/Toast.tsx +131 -0
  60. package/src/components/TouchableScale.tsx +91 -0
  61. package/src/components/TreeNode.tsx +186 -0
  62. package/src/console.ts +24 -0
  63. package/src/constants/index.ts +38 -0
  64. package/src/constants/version.ts +3 -0
  65. package/src/crash.ts +32 -0
  66. package/src/customHooks/analyticsLogger.ts +336 -0
  67. package/src/customHooks/bundleAnalyzer.ts +1231 -0
  68. package/src/customHooks/consoleLogger.ts +497 -0
  69. package/src/customHooks/crashHandler.ts +944 -0
  70. package/src/customHooks/logFilters.ts +32 -0
  71. package/src/customHooks/networkLogger.ts +419 -0
  72. package/src/customHooks/performanceTracker.ts +1014 -0
  73. package/src/customHooks/reduxLogger.ts +406 -0
  74. package/src/customHooks/useAccordion.tsx +60 -0
  75. package/src/decorators/index.ts +184 -0
  76. package/src/helpers/gaAnalyticsRegistry.ts +204 -0
  77. package/src/helpers/index.ts +860 -0
  78. package/src/helpers/memoryManager.ts +138 -0
  79. package/src/helpers/searchQueryParser.ts +283 -0
  80. package/src/helpers/settingsStore.ts +171 -0
  81. package/src/helpers/telemetry.ts +505 -0
  82. package/src/helpers/toast.ts +17 -0
  83. package/src/i18n/index.ts +69 -0
  84. package/src/i18n/locales/en.json +1052 -0
  85. package/src/index.tsx +2336 -0
  86. package/src/native/NativeInspector.ts +397 -0
  87. package/src/native/NativeNetworkInspector.ts +24 -0
  88. package/src/network.ts +22 -0
  89. package/src/performance.ts +38 -0
  90. package/src/redux.ts +23 -0
  91. package/src/styles/AppColors.ts +408 -0
  92. package/src/styles/AppFonts.ts +8 -0
  93. package/src/styles/common.ts +209 -0
  94. package/src/styles/index.ts +1570 -0
  95. package/src/types/enums.ts +194 -0
  96. package/src/types/index.ts +34 -0
  97. package/src/types/interfaces.ts +515 -0
@@ -0,0 +1,2118 @@
1
+ import React from 'react';
2
+ import Svg, {Circle, Ellipse, Line, Path, Rect} from 'react-native-svg';
3
+
4
+ // Stylesheet
5
+ import {AppColors} from '../styles/AppColors';
6
+
7
+ export interface IconProps {
8
+ color?: string;
9
+ size?: number;
10
+ strokeWidth?: number;
11
+ isExpanded?: boolean;
12
+ isPaused?: boolean;
13
+ active?: boolean;
14
+ direction?: 'up' | 'down' | string;
15
+ ascending?: boolean;
16
+ }
17
+
18
+ export const EmptyRadarIcon = ({color = AppColors.purple, size = 32}: IconProps) => {
19
+ return (
20
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
21
+ <Path
22
+ d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"
23
+ stroke={color}
24
+ strokeWidth="1.5"
25
+ strokeLinecap="round"
26
+ strokeLinejoin="round"
27
+ />
28
+ <Circle cx="12" cy="11" r="3" stroke={color} strokeWidth="1.5" />
29
+ <Path
30
+ d="M12 14v3"
31
+ stroke={color}
32
+ strokeWidth="1.5"
33
+ strokeLinecap="round"
34
+ />
35
+ </Svg>
36
+ );
37
+ };
38
+
39
+ export const MapPinIcon = ({
40
+ color = AppColors.grayTextWeak,
41
+ size = 14,
42
+ }: IconProps) => {
43
+ return (
44
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
45
+ <Path
46
+ d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"
47
+ stroke={color}
48
+ strokeWidth="2"
49
+ strokeLinecap="round"
50
+ strokeLinejoin="round"
51
+ />
52
+ <Circle
53
+ cx="12"
54
+ cy="10"
55
+ r="3"
56
+ stroke={color}
57
+ strokeWidth="2"
58
+ strokeLinecap="round"
59
+ strokeLinejoin="round"
60
+ />
61
+ </Svg>
62
+ );
63
+ };
64
+
65
+ export const ScreenIcon = ({
66
+ color = AppColors.grayTextWeak,
67
+ size = 14,
68
+ }: IconProps) => {
69
+ return (
70
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
71
+ <Rect
72
+ x="3"
73
+ y="4"
74
+ width="18"
75
+ height="16"
76
+ rx="2"
77
+ stroke={color}
78
+ strokeWidth="2"
79
+ strokeLinecap="round"
80
+ strokeLinejoin="round"
81
+ />
82
+ <Path
83
+ d="M3 8h18M8 20V8"
84
+ stroke={color}
85
+ strokeWidth="2"
86
+ strokeLinecap="round"
87
+ strokeLinejoin="round"
88
+ />
89
+ </Svg>
90
+ );
91
+ };
92
+
93
+ export const ExpandCollapseIcon = ({
94
+ isExpanded,
95
+ color = AppColors.grayTextWeak,
96
+ size = 14,
97
+ }: IconProps) => {
98
+ return (
99
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
100
+ {isExpanded ? (
101
+ <Path
102
+ d="M4 14h6v6M20 10h-6V4M14 10l7-7M10 14l-7 7"
103
+ stroke={color}
104
+ strokeWidth="2"
105
+ strokeLinecap="round"
106
+ strokeLinejoin="round"
107
+ />
108
+ ) : (
109
+ <Path
110
+ d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7"
111
+ stroke={color}
112
+ strokeWidth="2"
113
+ strokeLinecap="round"
114
+ strokeLinejoin="round"
115
+ />
116
+ )}
117
+ </Svg>
118
+ );
119
+ };
120
+
121
+ export const SearchIcon = ({
122
+ color = AppColors.primaryLight,
123
+ size = 18,
124
+ }: IconProps) => {
125
+ return (
126
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
127
+ <Circle cx="11" cy="11" r="8" stroke={color} strokeWidth="2" />
128
+ <Line
129
+ x1="16.5"
130
+ y1="16.5"
131
+ x2="22"
132
+ y2="22"
133
+ stroke={color}
134
+ strokeWidth="2"
135
+ strokeLinecap="round"
136
+ />
137
+ </Svg>
138
+ );
139
+ };
140
+
141
+ export const ClearIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
142
+ return (
143
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
144
+ <Path
145
+ d="M18 6L6 18M6 6l12 12"
146
+ stroke={color}
147
+ strokeWidth="2.5"
148
+ strokeLinecap="round"
149
+ strokeLinejoin="round"
150
+ />
151
+ </Svg>
152
+ );
153
+ };
154
+
155
+ export const ClockIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
156
+ return (
157
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
158
+ <Circle cx="12" cy="12" r="10" stroke={color} strokeWidth="2" />
159
+ <Line
160
+ x1="12"
161
+ y1="12"
162
+ x2="12"
163
+ y2="7"
164
+ stroke={color}
165
+ strokeWidth="2"
166
+ strokeLinecap="round"
167
+ />
168
+ <Line
169
+ x1="12"
170
+ y1="12"
171
+ x2="16"
172
+ y2="14"
173
+ stroke={color}
174
+ strokeWidth="2"
175
+ strokeLinecap="round"
176
+ />
177
+ </Svg>
178
+ );
179
+ };
180
+
181
+ export const CalendarIcon = ({
182
+ color = AppColors.grayTextWeak,
183
+ size = 14,
184
+ }: IconProps) => {
185
+ return (
186
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
187
+ <Rect
188
+ x="3"
189
+ y="4"
190
+ width="18"
191
+ height="18"
192
+ rx="2"
193
+ stroke={color}
194
+ strokeWidth="2"
195
+ />
196
+ <Line
197
+ x1="3"
198
+ y1="9"
199
+ x2="21"
200
+ y2="9"
201
+ stroke={color}
202
+ strokeWidth="2"
203
+ strokeLinecap="round"
204
+ />
205
+ <Line
206
+ x1="8"
207
+ y1="2"
208
+ x2="8"
209
+ y2="6"
210
+ stroke={color}
211
+ strokeWidth="2"
212
+ strokeLinecap="round"
213
+ />
214
+ <Line
215
+ x1="16"
216
+ y1="2"
217
+ x2="16"
218
+ y2="6"
219
+ stroke={color}
220
+ strokeWidth="2"
221
+ strokeLinecap="round"
222
+ />
223
+ </Svg>
224
+ );
225
+ };
226
+
227
+ export const StatusIcon = ({color = AppColors.grayTextWeak}: IconProps) => {
228
+ return (
229
+ <Svg width={14} height={14} viewBox="0 0 24 24" fill="none">
230
+ <Circle cx="12" cy="12" r="10" stroke={color} strokeWidth="2" />
231
+ <Line
232
+ x1="12"
233
+ y1="8"
234
+ x2="12"
235
+ y2="12"
236
+ stroke={color}
237
+ strokeWidth="2"
238
+ strokeLinecap="round"
239
+ />
240
+ <Circle cx="12" cy="16" r="1" fill={color} />
241
+ </Svg>
242
+ );
243
+ };
244
+
245
+ export const SizeIcon = ({color = AppColors.grayTextWeak}: IconProps) => {
246
+ return (
247
+ <Svg width={14} height={14} viewBox="0 0 24 24" fill="none">
248
+ <Path
249
+ d="M4 6h16M4 10h10M4 14h13M4 18h7"
250
+ stroke={color}
251
+ strokeWidth="2"
252
+ strokeLinecap="round"
253
+ />
254
+ </Svg>
255
+ );
256
+ };
257
+
258
+ export const RequestIcon = ({color = AppColors.offerPurple}: IconProps) => {
259
+ return (
260
+ <Svg width={14} height={14} viewBox="0 0 24 24" fill="none">
261
+ <Path
262
+ d="M5 12h14M13 6l6 6-6 6"
263
+ stroke={color}
264
+ strokeWidth="2"
265
+ strokeLinecap="round"
266
+ strokeLinejoin="round"
267
+ />
268
+ </Svg>
269
+ );
270
+ };
271
+
272
+ export const ResponseIcon = ({color = AppColors.greenColor}: IconProps) => {
273
+ return (
274
+ <Svg width={14} height={14} viewBox="0 0 24 24" fill="none">
275
+ <Path
276
+ d="M19 12H5M11 18l-6-6 6-6"
277
+ stroke={color}
278
+ strokeWidth="2"
279
+ strokeLinecap="round"
280
+ strokeLinejoin="round"
281
+ />
282
+ </Svg>
283
+ );
284
+ };
285
+
286
+ export const HeadersIcon = ({color = AppColors.skyBlue}: IconProps) => {
287
+ return (
288
+ <Svg width={14} height={14} viewBox="0 0 24 24" fill="none">
289
+ <Path
290
+ d="M4 6h16M4 12h16M4 18h10"
291
+ stroke={color}
292
+ strokeWidth="2"
293
+ strokeLinecap="round"
294
+ />
295
+ </Svg>
296
+ );
297
+ };
298
+
299
+ export const CopyIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
300
+ return (
301
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
302
+ <Path
303
+ d="M9 9V5a2 2 0 0 1 2-2h7a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-4"
304
+ stroke={color}
305
+ strokeWidth="2"
306
+ strokeLinecap="round"
307
+ strokeLinejoin="round"
308
+ />
309
+ <Rect
310
+ x="3"
311
+ y="7"
312
+ width="10"
313
+ height="14"
314
+ rx="2"
315
+ stroke={color}
316
+ strokeWidth="2"
317
+ />
318
+ </Svg>
319
+ );
320
+ };
321
+
322
+ export const FetchIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
323
+ return (
324
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
325
+ <Path
326
+ d="M8 9l3 3-3 3M13 15h3"
327
+ stroke={color}
328
+ strokeWidth="2"
329
+ strokeLinecap="round"
330
+ strokeLinejoin="round"
331
+ />
332
+ <Rect
333
+ x="3"
334
+ y="3"
335
+ width="18"
336
+ height="18"
337
+ rx="2"
338
+ stroke={color}
339
+ strokeWidth="2"
340
+ />
341
+ </Svg>
342
+ );
343
+ };
344
+
345
+ export const TerminalIcon = ({
346
+ color = AppColors.grayTextWeak,
347
+ size = 14,
348
+ }: IconProps) => {
349
+ return (
350
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
351
+ <Path
352
+ d="M4 17l6-6-6-6M12 19h8"
353
+ stroke={color}
354
+ strokeWidth="2"
355
+ strokeLinecap="round"
356
+ strokeLinejoin="round"
357
+ />
358
+ </Svg>
359
+ );
360
+ };
361
+
362
+ export const CheckIcon = ({color = AppColors.greenColor, size = 14}: IconProps) => {
363
+ return (
364
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
365
+ <Path
366
+ d="M20 6L9 17l-5-5"
367
+ stroke={color}
368
+ strokeWidth="2.5"
369
+ strokeLinecap="round"
370
+ strokeLinejoin="round"
371
+ />
372
+ </Svg>
373
+ );
374
+ };
375
+
376
+ export const CircleCheckIcon = ({color = AppColors.greenColor, size = 14}: IconProps) => {
377
+ return (
378
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
379
+ <Circle cx="12" cy="12" r="9" stroke={color} strokeWidth="2" />
380
+ <Path
381
+ d="M8.5 12.5l2.5 2.5 5-5.5"
382
+ stroke={color}
383
+ strokeWidth="2"
384
+ strokeLinecap="round"
385
+ strokeLinejoin="round"
386
+ />
387
+ </Svg>
388
+ );
389
+ };
390
+
391
+ export const CircleXIcon = ({color = AppColors.errorColor, size = 14}: IconProps) => {
392
+ return (
393
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
394
+ <Circle cx="12" cy="12" r="9" stroke={color} strokeWidth="2" />
395
+ <Path
396
+ d="M9.5 9.5l5 5M14.5 9.5l-5 5"
397
+ stroke={color}
398
+ strokeWidth="2"
399
+ strokeLinecap="round"
400
+ />
401
+ </Svg>
402
+ );
403
+ };
404
+
405
+ export const CircleAlertIcon = ({color = AppColors.warningIconGold, size = 14}: IconProps) => {
406
+ return (
407
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
408
+ <Circle cx="12" cy="12" r="9" stroke={color} strokeWidth="2" />
409
+ <Path
410
+ d="M12 7.5v5.5"
411
+ stroke={color}
412
+ strokeWidth="2"
413
+ strokeLinecap="round"
414
+ />
415
+ <Circle cx="12" cy="16.5" r="1.1" fill={color} />
416
+ </Svg>
417
+ );
418
+ };
419
+
420
+ export const FailIcon = ({color = AppColors.errorColor, size = 10}: IconProps) => {
421
+ return (
422
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
423
+ <Path
424
+ d="M18 6L6 18M6 6l12 12"
425
+ stroke={color}
426
+ strokeWidth="3"
427
+ strokeLinecap="round"
428
+ strokeLinejoin="round"
429
+ />
430
+ </Svg>
431
+ );
432
+ };
433
+
434
+ export const TrashIcon = ({color = AppColors.primaryLight, size = 18}: IconProps) => {
435
+ return (
436
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
437
+ <Path
438
+ d="M3 6h18M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2"
439
+ stroke={color}
440
+ strokeWidth="2"
441
+ strokeLinecap="round"
442
+ strokeLinejoin="round"
443
+ />
444
+ </Svg>
445
+ );
446
+ };
447
+
448
+ export const HeaderPauseIcon = ({
449
+ isPaused,
450
+ color = AppColors.primaryLight,
451
+ size = 20,
452
+ }: IconProps) => {
453
+ return (
454
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
455
+ {isPaused ? (
456
+ <Path d="M5 3l14 9-14 9V3z" fill={color} />
457
+ ) : (
458
+ <Path d="M6 5h3v14H6V5zm9 0h3v14h-3V5z" fill={color} />
459
+ )}
460
+ </Svg>
461
+ );
462
+ };
463
+
464
+ export const ExportIcon = ({
465
+ color = AppColors.primaryLight,
466
+ size = 18,
467
+ }: IconProps) => {
468
+ return (
469
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
470
+ <Path
471
+ d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12"
472
+ stroke={color}
473
+ strokeWidth="2"
474
+ strokeLinecap="round"
475
+ strokeLinejoin="round"
476
+ />
477
+ </Svg>
478
+ );
479
+ };
480
+
481
+ export const SignalIcon = ({
482
+ color = AppColors.primaryLight,
483
+ size = 18,
484
+ }: IconProps) => {
485
+ return (
486
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
487
+ <Path
488
+ d="M2 20h.01M7 20v-4M12 20v-8M17 20V8M22 20V4"
489
+ stroke={color}
490
+ strokeWidth="2"
491
+ strokeLinecap="round"
492
+ strokeLinejoin="round"
493
+ />
494
+ </Svg>
495
+ );
496
+ };
497
+
498
+ export const DiffIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
499
+ return (
500
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
501
+ <Path
502
+ d="M7 8h10M12 3v10"
503
+ stroke={color}
504
+ strokeWidth="2"
505
+ strokeLinecap="round"
506
+ />
507
+ <Path d="M7 19h10" stroke={color} strokeWidth="2" strokeLinecap="round" />
508
+ </Svg>
509
+ );
510
+ };
511
+
512
+ export const GlobeIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
513
+ return (
514
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
515
+ <Circle cx="12" cy="12" r="10" stroke={color} strokeWidth="2" />
516
+ <Path
517
+ d="M12 2C8 7 8 17 12 22M12 2c4 5 4 15 0 20M2 12h20"
518
+ stroke={color}
519
+ strokeWidth="2"
520
+ strokeLinecap="round"
521
+ />
522
+ </Svg>
523
+ );
524
+ };
525
+
526
+ export const SortArrowIcon = ({
527
+ color = AppColors.primaryLight,
528
+ size = 20,
529
+ direction = 'down',
530
+ }: IconProps) => {
531
+ return (
532
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
533
+ {direction === 'down' ? (
534
+ <>
535
+ <Path
536
+ d="M4 6h10M4 12h7M4 18h4"
537
+ stroke={color}
538
+ strokeWidth="2"
539
+ strokeLinecap="round"
540
+ />
541
+ <Path
542
+ d="M18 6v12m0 0l-3-3m3 3l3-3"
543
+ stroke={color}
544
+ strokeWidth="2"
545
+ strokeLinecap="round"
546
+ strokeLinejoin="round"
547
+ />
548
+ </>
549
+ ) : (
550
+ <>
551
+ <Path
552
+ d="M4 6h4M4 12h7M4 18h10"
553
+ stroke={color}
554
+ strokeWidth="2"
555
+ strokeLinecap="round"
556
+ />
557
+ <Path
558
+ d="M18 18V6m0 0l-3 3m3-3l3 3"
559
+ stroke={color}
560
+ strokeWidth="2"
561
+ strokeLinecap="round"
562
+ strokeLinejoin="round"
563
+ />
564
+ </>
565
+ )}
566
+ </Svg>
567
+ );
568
+ };
569
+
570
+ export const ChevronIcon = ({
571
+ color = AppColors.grayTextWeak,
572
+ size = 14,
573
+ }: IconProps) => {
574
+ return (
575
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
576
+ <Path
577
+ d="M6 9l6 6 6-6"
578
+ stroke={color}
579
+ strokeWidth="2.5"
580
+ strokeLinecap="round"
581
+ strokeLinejoin="round"
582
+ />
583
+ </Svg>
584
+ );
585
+ };
586
+
587
+ export const FilterIcon = ({
588
+ color = AppColors.grayTextWeak,
589
+ size = 18,
590
+ }: IconProps) => {
591
+ return (
592
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
593
+ <Path
594
+ d="M4 6h16M7 12h10M10 18h4"
595
+ stroke={color}
596
+ strokeWidth="2"
597
+ strokeLinecap="round"
598
+ strokeLinejoin="round"
599
+ />
600
+ </Svg>
601
+ );
602
+ };
603
+
604
+ export const DownloadIcon = ({
605
+ color = AppColors.primaryLight,
606
+ size = 18,
607
+ }: IconProps) => {
608
+ return (
609
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
610
+ <Path
611
+ d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3"
612
+ stroke={color}
613
+ strokeWidth="2"
614
+ strokeLinecap="round"
615
+ strokeLinejoin="round"
616
+ />
617
+ </Svg>
618
+ );
619
+ };
620
+
621
+ export const CloseWhite = ({color = AppColors.white, size = 20}: IconProps) => {
622
+ return (
623
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
624
+ <Path
625
+ d="M18 6L6 18M6 6l12 12"
626
+ stroke={color}
627
+ strokeWidth="2"
628
+ strokeLinecap="round"
629
+ strokeLinejoin="round"
630
+ />
631
+ </Svg>
632
+ );
633
+ };
634
+
635
+ export const WhiteBackNavigation = ({color = AppColors.white, size = 20}: IconProps) => {
636
+ return (
637
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
638
+ <Path
639
+ d="M19 12H5M12 19l-7-7 7-7"
640
+ stroke={color}
641
+ strokeWidth="2"
642
+ strokeLinecap="round"
643
+ strokeLinejoin="round"
644
+ />
645
+ </Svg>
646
+ );
647
+ };
648
+
649
+ export const AnalyticsIcon = ({
650
+ color = AppColors.grayTextWeak,
651
+ size = 14,
652
+ }: IconProps) => {
653
+ return (
654
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
655
+ <Path
656
+ d="M18 20V10M12 20V4M6 20v-6"
657
+ stroke={color}
658
+ strokeWidth="2.5"
659
+ strokeLinecap="round"
660
+ strokeLinejoin="round"
661
+ />
662
+ </Svg>
663
+ );
664
+ };
665
+
666
+ export const InsightsIcon = ({
667
+ color = AppColors.grayTextWeak,
668
+ size = 14,
669
+ }: IconProps) => {
670
+ return (
671
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
672
+ <Path
673
+ d="M2 17l6-6 4 4 10-10M22 12V7h-5"
674
+ stroke={color}
675
+ strokeWidth="2"
676
+ strokeLinecap="round"
677
+ strokeLinejoin="round"
678
+ />
679
+ </Svg>
680
+ );
681
+ };
682
+
683
+ export const DebugIcon = ({color = AppColors.white, size = 18}: IconProps) => {
684
+ return (
685
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
686
+ {/* Hammer: diagonal from bottom-left to top-right */}
687
+ {/* Handle */}
688
+ <Path
689
+ d="M6 18l8-8"
690
+ stroke={color}
691
+ strokeWidth="2.5"
692
+ strokeLinecap="round"
693
+ />
694
+ {/* Head */}
695
+ <Path d="M13.5 10.5l2-2 1.5 1.5-2 2-1.5-1.5z" fill={color} />
696
+ <Path
697
+ d="M15.5 8.5L19 5c.5-.5 1.2-.5 1.7 0s.5 1.2 0 1.7L17.2 10.2"
698
+ stroke={color}
699
+ strokeWidth="2"
700
+ strokeLinecap="round"
701
+ />
702
+
703
+ {/* Screwdriver: diagonal from bottom-right to top-left */}
704
+ {/* Handle */}
705
+ <Path
706
+ d="M15 15l4 4"
707
+ stroke={color}
708
+ strokeWidth="3.5"
709
+ strokeLinecap="round"
710
+ />
711
+ {/* Shaft */}
712
+ <Path
713
+ d="M15 15L8.5 8.5"
714
+ stroke={color}
715
+ strokeWidth="2"
716
+ strokeLinecap="round"
717
+ />
718
+ {/* Flat tip */}
719
+ <Path
720
+ d="M9 9L5 5M4.5 6.5l2-2"
721
+ stroke={color}
722
+ strokeWidth="2"
723
+ strokeLinecap="round"
724
+ />
725
+ </Svg>
726
+ );
727
+ };
728
+
729
+ export const SunIcon = ({color = AppColors.white, size = 16}: IconProps) => {
730
+ return (
731
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
732
+ <Circle cx="12" cy="12" r="5" stroke={color} strokeWidth="2" />
733
+ <Path
734
+ d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"
735
+ stroke={color}
736
+ strokeWidth="2"
737
+ strokeLinecap="round"
738
+ />
739
+ </Svg>
740
+ );
741
+ };
742
+
743
+ export const MoonIcon = ({color = AppColors.white, size = 16}: IconProps) => {
744
+ return (
745
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
746
+ <Path
747
+ d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"
748
+ fill={color}
749
+ stroke={color}
750
+ strokeWidth="1.5"
751
+ strokeLinecap="round"
752
+ strokeLinejoin="round"
753
+ />
754
+ </Svg>
755
+ );
756
+ };
757
+
758
+ export {BrandCircleIcon} from './BrandCircleIcon';
759
+ export {BrandSquareIcon} from './BrandSquareIcon';
760
+
761
+ export const HtmlIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
762
+ return (
763
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
764
+ <Path
765
+ d="M17.5 8.5L21 12l-3.5 3.5M6.5 8.5L3 12l3.5 3.5M14 4.5l-4 15"
766
+ stroke={color}
767
+ strokeWidth="2.5"
768
+ strokeLinecap="round"
769
+ strokeLinejoin="round"
770
+ />
771
+ </Svg>
772
+ );
773
+ };
774
+
775
+ export const CssIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
776
+ return (
777
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
778
+ <Path
779
+ d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"
780
+ stroke={color}
781
+ strokeWidth="2"
782
+ strokeLinecap="round"
783
+ strokeLinejoin="round"
784
+ />
785
+ </Svg>
786
+ );
787
+ };
788
+
789
+ export const JsIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
790
+ return (
791
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
792
+ <Rect
793
+ x="3"
794
+ y="3"
795
+ width="18"
796
+ height="18"
797
+ rx="4"
798
+ stroke={color}
799
+ strokeWidth="2"
800
+ />
801
+ <Path
802
+ d="M8 12v2.5a1.5 1.5 0 003 0V11M13 15.5a1 1 0 001.5.8h.5a1 1 0 001-1v-.5a1 1 0 00-1-1h-1a1 1 0 01-1-1v-.5a1 1 0 011-1h.5a1 1 0 011.5.8"
803
+ stroke={color}
804
+ strokeWidth="2"
805
+ strokeLinecap="round"
806
+ />
807
+ </Svg>
808
+ );
809
+ };
810
+
811
+ export const EyeIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
812
+ return (
813
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
814
+ <Path
815
+ d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"
816
+ stroke={color}
817
+ strokeWidth="2"
818
+ strokeLinecap="round"
819
+ strokeLinejoin="round"
820
+ />
821
+ <Circle
822
+ cx="12"
823
+ cy="12"
824
+ r="3"
825
+ stroke={color}
826
+ strokeWidth="2"
827
+ strokeLinecap="round"
828
+ strokeLinejoin="round"
829
+ />
830
+ </Svg>
831
+ );
832
+ };
833
+
834
+ export const SettingsIcon = ({
835
+ color = AppColors.grayTextWeak,
836
+ size = 14,
837
+ }: IconProps) => {
838
+ return (
839
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
840
+ <Path
841
+ d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"
842
+ stroke={color}
843
+ strokeWidth="2"
844
+ strokeLinecap="round"
845
+ strokeLinejoin="round"
846
+ />
847
+ <Circle cx="12" cy="12" r="3" stroke={color} strokeWidth="2" />
848
+ </Svg>
849
+ );
850
+ };
851
+
852
+ export const FolderIcon = ({
853
+ color = AppColors.grayTextWeak,
854
+ size = 14,
855
+ }: IconProps) => {
856
+ return (
857
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
858
+ <Path
859
+ d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"
860
+ stroke={color}
861
+ strokeWidth="2"
862
+ strokeLinecap="round"
863
+ strokeLinejoin="round"
864
+ />
865
+ </Svg>
866
+ );
867
+ };
868
+
869
+ // #3 — Broom/sweep "wipe" icon used by the header Clear-Everything button.
870
+ export const WipeIcon = ({color = AppColors.white, size = 16}: IconProps) => {
871
+ return (
872
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
873
+ {/* Handle */}
874
+ <Path
875
+ d="M19.5 3.5L12.7 10.3"
876
+ stroke={color}
877
+ strokeWidth="2"
878
+ strokeLinecap="round"
879
+ />
880
+ {/* Brush head */}
881
+ <Path
882
+ d="M13.5 9.5l1.5 1.5c.8.8.8 2 0 2.8L10 19l-5-5 5.2-5.5c.8-.8 2-.8 2.8 0z"
883
+ stroke={color}
884
+ strokeWidth="2"
885
+ strokeLinejoin="round"
886
+ />
887
+ {/* Bristle strokes */}
888
+ <Path
889
+ d="M7.5 16.5L5.5 18.5M10 19l-1.5 1.5"
890
+ stroke={color}
891
+ strokeWidth="2"
892
+ strokeLinecap="round"
893
+ />
894
+ {/* Dust sparks */}
895
+ <Path
896
+ d="M3 11.5h.01M5.5 8.5h.01"
897
+ stroke={color}
898
+ strokeWidth="2.4"
899
+ strokeLinecap="round"
900
+ />
901
+ </Svg>
902
+ );
903
+ };
904
+
905
+ // #7 — Icons for the inner filter chips / sub tabs.
906
+ export const LayersIcon = ({
907
+ color = AppColors.grayTextWeak,
908
+ size = 12,
909
+ }: IconProps) => {
910
+ return (
911
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
912
+ <Path
913
+ d="M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5"
914
+ stroke={color}
915
+ strokeWidth="2"
916
+ strokeLinecap="round"
917
+ strokeLinejoin="round"
918
+ />
919
+ </Svg>
920
+ );
921
+ };
922
+
923
+ export const UserIcon = ({color = AppColors.grayTextWeak, size = 12}: IconProps) => {
924
+ return (
925
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
926
+ <Path
927
+ d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"
928
+ stroke={color}
929
+ strokeWidth="2"
930
+ strokeLinecap="round"
931
+ strokeLinejoin="round"
932
+ />
933
+ <Circle cx="12" cy="7" r="4" stroke={color} strokeWidth="2" />
934
+ </Svg>
935
+ );
936
+ };
937
+
938
+ export const InfoCircleIcon = ({
939
+ color = AppColors.grayTextWeak,
940
+ size = 12,
941
+ }: IconProps) => {
942
+ return (
943
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
944
+ <Circle cx="12" cy="12" r="10" stroke={color} strokeWidth="2" />
945
+ <Path
946
+ d="M12 16v-4M12 8h.01"
947
+ stroke={color}
948
+ strokeWidth="2"
949
+ strokeLinecap="round"
950
+ />
951
+ </Svg>
952
+ );
953
+ };
954
+
955
+ export const WarningTriangleIcon = ({
956
+ color = AppColors.grayTextWeak,
957
+ size = 12,
958
+ }: IconProps) => {
959
+ return (
960
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
961
+ <Path
962
+ d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"
963
+ stroke={color}
964
+ strokeWidth="2"
965
+ strokeLinecap="round"
966
+ strokeLinejoin="round"
967
+ />
968
+ <Path
969
+ d="M12 9v4M12 17h.01"
970
+ stroke={color}
971
+ strokeWidth="2"
972
+ strokeLinecap="round"
973
+ />
974
+ </Svg>
975
+ );
976
+ };
977
+
978
+ export const ErrorCircleIcon = ({
979
+ color = AppColors.grayTextWeak,
980
+ size = 12,
981
+ }: IconProps) => {
982
+ return (
983
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
984
+ <Circle cx="12" cy="12" r="10" stroke={color} strokeWidth="2" />
985
+ <Path
986
+ d="M15 9l-6 6M9 9l6 6"
987
+ stroke={color}
988
+ strokeWidth="2"
989
+ strokeLinecap="round"
990
+ />
991
+ </Svg>
992
+ );
993
+ };
994
+
995
+ export const TrendingUpIcon = ({
996
+ color = AppColors.grayTextWeak,
997
+ size = 12,
998
+ }: IconProps) => {
999
+ return (
1000
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1001
+ <Path
1002
+ d="M23 6l-9.5 9.5-5-5L1 18"
1003
+ stroke={color}
1004
+ strokeWidth="2"
1005
+ strokeLinecap="round"
1006
+ strokeLinejoin="round"
1007
+ />
1008
+ <Path
1009
+ d="M17 6h6v6"
1010
+ stroke={color}
1011
+ strokeWidth="2"
1012
+ strokeLinecap="round"
1013
+ strokeLinejoin="round"
1014
+ />
1015
+ </Svg>
1016
+ );
1017
+ };
1018
+
1019
+ export const MotionIcon = ({
1020
+ color = AppColors.grayTextWeak,
1021
+ size = 14,
1022
+ }: IconProps) => {
1023
+ return (
1024
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1025
+ <Path
1026
+ d="M5 3l14 9-14 9V3z"
1027
+ stroke={color}
1028
+ strokeWidth="2"
1029
+ strokeLinecap="round"
1030
+ strokeLinejoin="round"
1031
+ />
1032
+ </Svg>
1033
+ );
1034
+ };
1035
+
1036
+ export const SortIcon = ({
1037
+ ascending,
1038
+ color = AppColors.purple,
1039
+ size = 14,
1040
+ }: IconProps) => {
1041
+ return (
1042
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1043
+ <Path
1044
+ d="M12 4l-6 6h12z"
1045
+ fill={ascending ? color : AppColors.grayTextWeak}
1046
+ />
1047
+ <Path
1048
+ d="M12 20l6-6H6z"
1049
+ fill={!ascending ? color : AppColors.grayTextWeak}
1050
+ />
1051
+ </Svg>
1052
+ );
1053
+ };
1054
+
1055
+ export const PrettyIcon = ({
1056
+ color = AppColors.grayTextWeak,
1057
+ size = 14,
1058
+ }: IconProps) => {
1059
+ return (
1060
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1061
+ <Path
1062
+ d="M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1"
1063
+ stroke={color}
1064
+ strokeWidth="2"
1065
+ strokeLinecap="round"
1066
+ strokeLinejoin="round"
1067
+ />
1068
+ <Path
1069
+ d="M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1"
1070
+ stroke={color}
1071
+ strokeWidth="2"
1072
+ strokeLinecap="round"
1073
+ strokeLinejoin="round"
1074
+ />
1075
+ </Svg>
1076
+ );
1077
+ };
1078
+
1079
+ export const RawIcon = ({
1080
+ color = AppColors.grayTextWeak,
1081
+ size = 14,
1082
+ }: IconProps) => {
1083
+ return (
1084
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1085
+ <Line x1="21" y1="6" x2="3" y2="6" stroke={color} strokeWidth="2" strokeLinecap="round" />
1086
+ <Line x1="21" y1="12" x2="3" y2="12" stroke={color} strokeWidth="2" strokeLinecap="round" />
1087
+ <Line x1="17" y1="18" x2="3" y2="18" stroke={color} strokeWidth="2" strokeLinecap="round" />
1088
+ </Svg>
1089
+ );
1090
+ };
1091
+
1092
+ export const TableIcon = ({
1093
+ color = AppColors.grayTextWeak,
1094
+ size = 14,
1095
+ }: IconProps) => {
1096
+ return (
1097
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1098
+ <Rect x="3" y="3" width="7" height="7" rx="1.5" stroke={color} strokeWidth="2" />
1099
+ <Rect x="14" y="3" width="7" height="7" rx="1.5" stroke={color} strokeWidth="2" />
1100
+ <Rect x="14" y="14" width="7" height="7" rx="1.5" stroke={color} strokeWidth="2" />
1101
+ <Rect x="3" y="14" width="7" height="7" rx="1.5" stroke={color} strokeWidth="2" />
1102
+ </Svg>
1103
+ );
1104
+ };
1105
+
1106
+ export const PackageIcon = ({
1107
+ color = AppColors.grayTextWeak,
1108
+ size = 14,
1109
+ }: IconProps) => {
1110
+ return (
1111
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1112
+ <Path
1113
+ d="M16.5 9.4 7.55 4.24a1.78 1.78 0 0 0-2.5 1.55v12.42a1.78 1.78 0 0 0 .86 1.52l8.95 5.16a1.78 1.78 0 0 0 1.78 0l8.95-5.16a1.78 1.78 0 0 0 .86-1.52V5.79a1.78 1.78 0 0 0-2.5-1.55L16.5 9.4z"
1114
+ stroke={color}
1115
+ strokeWidth="1.8"
1116
+ strokeLinecap="round"
1117
+ strokeLinejoin="round"
1118
+ />
1119
+ <Path
1120
+ d="M3.29 7 12 12.01 20.71 7M12 22.08V12"
1121
+ stroke={color}
1122
+ strokeWidth="1.8"
1123
+ strokeLinecap="round"
1124
+ strokeLinejoin="round"
1125
+ />
1126
+ </Svg>
1127
+ );
1128
+ };
1129
+
1130
+ export const ForwardChevronIcon = ({
1131
+ color = AppColors.grayTextWeak,
1132
+ size = 14,
1133
+ }: IconProps) => {
1134
+ return (
1135
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1136
+ <Path
1137
+ d="M9 18l6-6-6-6"
1138
+ stroke={color}
1139
+ strokeWidth="2"
1140
+ strokeLinecap="round"
1141
+ strokeLinejoin="round"
1142
+ />
1143
+ </Svg>
1144
+ );
1145
+ };
1146
+
1147
+ export const BundleIcon = PackageIcon;
1148
+
1149
+ export const LiveStateIcon = ({
1150
+ color = AppColors.purple,
1151
+ size = 14,
1152
+ }: IconProps) => {
1153
+ return (
1154
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1155
+ <Circle cx="12" cy="12" r="9" stroke={color} strokeWidth="1.8" strokeDasharray="3 3" opacity={0.6} />
1156
+ <Circle cx="12" cy="12" r="4.5" stroke={color} strokeWidth="1.8" />
1157
+ <Circle cx="12" cy="12" r="2" fill={color} />
1158
+ <Path d="M12 2v2.5M12 19.5V22M2 12h2.5M19.5 12H22" stroke={color} strokeWidth="1.8" strokeLinecap="round" />
1159
+ </Svg>
1160
+ );
1161
+ };
1162
+
1163
+ export const TimelineIcon = ({
1164
+ color = AppColors.purple,
1165
+ size = 14,
1166
+ }: IconProps) => {
1167
+ return (
1168
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1169
+ <Path d="M6 3v18" stroke={color} strokeWidth="1.8" strokeLinecap="round" />
1170
+ <Circle cx="6" cy="6" r="2.5" stroke={color} strokeWidth="1.8" fill={`${color}25`} />
1171
+ <Path d="M6 12h5a3 3 0 0 0 3-3V6" stroke={color} strokeWidth="1.8" strokeLinecap="round" />
1172
+ <Circle cx="14" cy="6" r="2.5" stroke={color} strokeWidth="1.8" fill={color} />
1173
+ <Circle cx="6" cy="18" r="2.5" stroke={color} strokeWidth="1.8" fill={color} />
1174
+ <Path d="M6 18h8" stroke={color} strokeWidth="1.8" strokeLinecap="round" />
1175
+ <Circle cx="17" cy="18" r="2.5" stroke={color} strokeWidth="1.8" fill={`${color}25`} />
1176
+ </Svg>
1177
+ );
1178
+ };
1179
+
1180
+ export const RefreshCcwIcon = ({
1181
+ color = AppColors.grayTextWeak,
1182
+ size = 14,
1183
+ }: IconProps) => {
1184
+ return (
1185
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1186
+ <Path
1187
+ d="M3 12a9 9 0 0 1 15-6.7L21 8M21 3v5h-5M21 12a9 9 0 0 1-15 6.7L3 16M3 21v-5h5"
1188
+ stroke={color}
1189
+ strokeWidth="2"
1190
+ strokeLinecap="round"
1191
+ strokeLinejoin="round"
1192
+ />
1193
+ </Svg>
1194
+ );
1195
+ };
1196
+
1197
+ export const StorageIcon = ({
1198
+ color = AppColors.purple,
1199
+ size = 14,
1200
+ }: IconProps) => {
1201
+ return (
1202
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1203
+ <Ellipse cx="12" cy="5" rx="8" ry="2.5" stroke={color} strokeWidth="1.8" />
1204
+ <Path
1205
+ d="M4 5v4.5c0 1.38 3.58 2.5 8 2.5s8-1.12 8-2.5V5"
1206
+ stroke={color}
1207
+ strokeWidth="1.8"
1208
+ strokeLinecap="round"
1209
+ />
1210
+ <Path
1211
+ d="M4 9.5v4.5c0 1.38 3.58 2.5 8 2.5s8-1.12 8-2.5v-4.5"
1212
+ stroke={color}
1213
+ strokeWidth="1.8"
1214
+ strokeLinecap="round"
1215
+ />
1216
+ <Path
1217
+ d="M4 14v4.5c0 1.38 3.58 2.5 8 2.5s8-1.12 8-2.5V14"
1218
+ stroke={color}
1219
+ strokeWidth="1.8"
1220
+ strokeLinecap="round"
1221
+ />
1222
+ </Svg>
1223
+ );
1224
+ };
1225
+
1226
+ export const MetadataIcon = ({
1227
+ color = AppColors.purple,
1228
+ size = 14,
1229
+ }: IconProps) => {
1230
+ return (
1231
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1232
+ <Rect x="3" y="3" width="18" height="18" rx="4" stroke={color} strokeWidth="1.8" />
1233
+ <Path d="M7 8h10M7 12h6M7 16h7" stroke={color} strokeWidth="1.8" strokeLinecap="round" />
1234
+ <Circle cx="16.5" cy="12" r="1.5" fill={color} />
1235
+ <Circle cx="16.5" cy="16" r="1.5" fill={color} />
1236
+ </Svg>
1237
+ );
1238
+ };
1239
+
1240
+ export const ReduxIcon = ({
1241
+ color = AppColors.purple,
1242
+ size = 14,
1243
+ }: IconProps) => {
1244
+ return (
1245
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1246
+ <Circle cx="12" cy="12" r="4" stroke={color} strokeWidth="1.8" />
1247
+ <Path
1248
+ d="M12 3a9 9 0 0 1 9 9M12 21a9 9 0 0 1-9-9"
1249
+ stroke={color}
1250
+ strokeWidth="1.8"
1251
+ strokeLinecap="round"
1252
+ />
1253
+ <Circle cx="21" cy="12" r="1.5" fill={color} />
1254
+ <Circle cx="3" cy="12" r="1.5" fill={color} />
1255
+ </Svg>
1256
+ );
1257
+ };
1258
+
1259
+ export const PerformanceIcon = ({
1260
+ color = AppColors.purple,
1261
+ size = 14,
1262
+ }: IconProps) => {
1263
+ return (
1264
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1265
+ <Path
1266
+ d="M12 3v2M5.636 5.636l1.414 1.414M18.364 5.636l-1.414 1.414M3 12h2M19 12h2"
1267
+ stroke={color}
1268
+ strokeWidth="1.8"
1269
+ strokeLinecap="round"
1270
+ />
1271
+ <Path
1272
+ d="M12 19a7 7 0 1 0-7-7c0 1.93.784 3.68 2.05 4.95"
1273
+ stroke={color}
1274
+ strokeWidth="1.8"
1275
+ strokeLinecap="round"
1276
+ />
1277
+ <Path
1278
+ d="M12 12l3.5-3.5"
1279
+ stroke={color}
1280
+ strokeWidth="2"
1281
+ strokeLinecap="round"
1282
+ />
1283
+ <Circle cx="12" cy="12" r="1.5" fill={color} />
1284
+ </Svg>
1285
+ );
1286
+ };
1287
+
1288
+ // ─── App-wide Vector Icons (emoji-free, render on every device) ─────────────
1289
+
1290
+ export const BoltIcon = ({color = AppColors.amber500, size = 14}: IconProps) => {
1291
+ return (
1292
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1293
+ <Path
1294
+ d="M13 2 4.5 13.5 H10.5 L9 22 19.5 9.5 H13.5 Z"
1295
+ stroke={color}
1296
+ strokeWidth="1.8"
1297
+ strokeLinejoin="round"
1298
+ />
1299
+ </Svg>
1300
+ );
1301
+ };
1302
+
1303
+ export const BanIcon = ({color = AppColors.errorColor, size = 14}: IconProps) => {
1304
+ return (
1305
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1306
+ <Circle cx="12" cy="12" r="8.5" stroke={color} strokeWidth="1.8" />
1307
+ <Path d="M5.5 5.5 18.5 18.5" stroke={color} strokeWidth="1.8" strokeLinecap="round" />
1308
+ </Svg>
1309
+ );
1310
+ };
1311
+
1312
+ export const FolderOpenIcon = ({color = AppColors.amber500, size = 14}: IconProps) => {
1313
+ return (
1314
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1315
+ <Path
1316
+ d="M8.4 11 10 5.5a2 2 0 0 1 1.9-1.5h3.7a1.5 1.5 0 0 1 1.4 2L15.5 11"
1317
+ stroke={color}
1318
+ strokeWidth="1.8"
1319
+ strokeLinejoin="round"
1320
+ />
1321
+ <Path
1322
+ d="M6.7 20.4 4.3 12.9A1.6 1.6 0 0 1 5.8 11h14.6a1.6 1.6 0 0 1 1.6 1.9l-2.4 7.5a2 2 0 0 1-2 1.4H8.7a2 2 0 0 1-2-1.4Z"
1323
+ stroke={color}
1324
+ strokeWidth="1.8"
1325
+ strokeLinejoin="round"
1326
+ />
1327
+ </Svg>
1328
+ );
1329
+ };
1330
+
1331
+ export const DocIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
1332
+ return (
1333
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1334
+ <Path
1335
+ d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"
1336
+ stroke={color}
1337
+ strokeWidth="1.8"
1338
+ strokeLinejoin="round"
1339
+ />
1340
+ <Path d="M14 2v4a2 2 0 0 0 2 2h4" stroke={color} strokeWidth="1.8" strokeLinejoin="round" />
1341
+ <Path d="M8 13h8 M8 17h8" stroke={color} strokeWidth="1.8" strokeLinecap="round" />
1342
+ </Svg>
1343
+ );
1344
+ };
1345
+
1346
+ export const LightbulbIcon = ({color = AppColors.amber500, size = 14}: IconProps) => {
1347
+ return (
1348
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1349
+ <Path
1350
+ d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1.3.5 2.6 1.5 3.5.8.8 1.3 1.5 1.5 2.5"
1351
+ stroke={color}
1352
+ strokeWidth="1.8"
1353
+ strokeLinecap="round"
1354
+ strokeLinejoin="round"
1355
+ />
1356
+ <Path d="M9 18h6" stroke={color} strokeWidth="1.8" strokeLinecap="round" />
1357
+ <Path d="M10 22h4" stroke={color} strokeWidth="1.8" strokeLinecap="round" />
1358
+ </Svg>
1359
+ );
1360
+ };
1361
+
1362
+ export const SparkleIcon = ({color = AppColors.amber500, size = 14}: IconProps) => {
1363
+ return (
1364
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1365
+ <Path
1366
+ d="M11.1 3.9c.2-.6 1-.6 1.2 0l1.2 4.2 4.2 1.2c.6.2.6 1 0 1.2l-4.2 1.2-1.2 4.2c-.2.6-1 .6-1.2 0l-1.2-4.2-4.2-1.2c-.6-.2-.6-1 0-1.2l4.2-1.2Z"
1367
+ fill={color}
1368
+ />
1369
+ <Path d="M18.5 3.5v4 M16.5 5.5h4" stroke={color} strokeWidth="1.8" strokeLinecap="round" />
1370
+ </Svg>
1371
+ );
1372
+ };
1373
+
1374
+ export const MapIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
1375
+ return (
1376
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1377
+ <Path
1378
+ d="M3 5.5 9 3.5l6 2 6-2v15l-6 2-6-2-6 2Z"
1379
+ stroke={color}
1380
+ strokeWidth="1.8"
1381
+ strokeLinejoin="round"
1382
+ />
1383
+ <Path d="M9 3.5v15M15 5.5v15" stroke={color} strokeWidth="1.8" />
1384
+ <Circle cx="12" cy="11" r="1.9" stroke={color} strokeWidth="1.6" />
1385
+ </Svg>
1386
+ );
1387
+ };
1388
+
1389
+ export const AtomIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
1390
+ return (
1391
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1392
+ <Ellipse cx="12" cy="12" rx="9" ry="3.8" stroke={color} strokeWidth="1.6" />
1393
+ <Ellipse
1394
+ cx="12"
1395
+ cy="12"
1396
+ rx="9"
1397
+ ry="3.8"
1398
+ stroke={color}
1399
+ strokeWidth="1.6"
1400
+ transform="rotate(60 12 12)"
1401
+ />
1402
+ <Ellipse
1403
+ cx="12"
1404
+ cy="12"
1405
+ rx="9"
1406
+ ry="3.8"
1407
+ stroke={color}
1408
+ strokeWidth="1.6"
1409
+ transform="rotate(120 12 12)"
1410
+ />
1411
+ <Circle cx="12" cy="12" r="1.6" fill={color} />
1412
+ </Svg>
1413
+ );
1414
+ };
1415
+
1416
+ export const BrainIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
1417
+ return (
1418
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1419
+ <Path
1420
+ d="M9.5 2a2.5 2.5 0 0 0-2.5 2.5v.5a2.5 2.5 0 0 0-3 3.17A2.5 2.5 0 0 0 2 10.5c0 .76.34 1.44.88 1.9A2.5 2.5 0 0 0 2 15.5c0 .76.34 1.44.88 1.9A2.5 2.5 0 0 0 5 19.75c0 .75.5 1.5 1.25 1.75A2.5 2.5 0 0 0 8.5 23h.25a2.5 2.5 0 0 0 2.5-2.5V4a2.5 2.5 0 0 0-1.75-2ZM14.5 2a2.5 2.5 0 0 1 2.5 2.5v.5a2.5 2.5 0 0 1 3 3.17A2.5 2.5 0 0 1 22 10.5c0 .76-.34 1.44-.88 1.9a2.5 2.5 0 0 1 .88 1.9c0 .76-.34 1.44-.88 1.9A2.5 2.5 0 0 1 19 19.75c0 .75-.5 1.5-1.25 1.75A2.5 2.5 0 0 1 15.5 23h-.25a2.5 2.5 0 0 1-2.5-2.5V4a2.5 2.5 0 0 1 1.75-2Z"
1421
+ stroke={color}
1422
+ strokeWidth="1.6"
1423
+ strokeLinejoin="round"
1424
+ />
1425
+ </Svg>
1426
+ );
1427
+ };
1428
+
1429
+ export const TextAaIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => {
1430
+ return (
1431
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1432
+ <Path d="M4 19 7.5 7 11 19" stroke={color} strokeWidth="1.8" strokeLinejoin="round" />
1433
+ <Path d="M5.5 15h4" stroke={color} strokeWidth="1.8" strokeLinecap="round" />
1434
+ <Path d="M16 19l1.7-6.6 1.7 6.6" stroke={color} strokeWidth="1.8" strokeLinejoin="round" />
1435
+ <Path d="M16.9 15.8h1.6" stroke={color} strokeWidth="1.8" strokeLinecap="round" />
1436
+ </Svg>
1437
+ );
1438
+ };
1439
+
1440
+ export const CartIcon = ({color = AppColors.amber500, size = 14}: IconProps) => {
1441
+ return (
1442
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1443
+ <Circle cx="9.5" cy="20" r="1.3" stroke={color} strokeWidth="1.8" />
1444
+ <Circle cx="18.5" cy="20" r="1.3" stroke={color} strokeWidth="1.8" />
1445
+ <Path
1446
+ d="M3 3.5h1.8a1 1 0 0 1 .97.75l3.1 9.75a1.5 1.5 0 0 0 1.44 1.1h9.2a1 1 0 0 0 .95-.7l2.5-7.5a.8.8 0 0 0-.75-1.05H7"
1447
+ stroke={color}
1448
+ strokeWidth="1.8"
1449
+ strokeLinecap="round"
1450
+ strokeLinejoin="round"
1451
+ />
1452
+ </Svg>
1453
+ );
1454
+ };
1455
+
1456
+ export const MoneyIcon = ({color = AppColors.emerald500, size = 14}: IconProps) => {
1457
+ return (
1458
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1459
+ <Circle cx="12" cy="12" r="8.5" stroke={color} strokeWidth="1.8" />
1460
+ <Path
1461
+ d="M12 7v10M14.5 9.5c-.6-1-1.5-1.5-2.5-1.5-1.5 0-2.5.9-2.5 2s1 1.8 2.5 2 2.5.8 2.5 2-1 2-2.5 2c-1 0-1.9-.5-2.5-1.5"
1462
+ stroke={color}
1463
+ strokeWidth="1.8"
1464
+ strokeLinecap="round"
1465
+ />
1466
+ </Svg>
1467
+ );
1468
+ };
1469
+
1470
+ export const ExternalLinkIcon = ({
1471
+ color = AppColors.grayTextWeak,
1472
+ size = 14,
1473
+ }: IconProps) => {
1474
+ return (
1475
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1476
+ <Path
1477
+ d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"
1478
+ stroke={color}
1479
+ strokeWidth="2"
1480
+ strokeLinecap="round"
1481
+ strokeLinejoin="round"
1482
+ />
1483
+ <Path
1484
+ d="M15 3h6v6M10 14L21 3"
1485
+ stroke={color}
1486
+ strokeWidth="2"
1487
+ strokeLinecap="round"
1488
+ strokeLinejoin="round"
1489
+ />
1490
+ </Svg>
1491
+ );
1492
+ };
1493
+
1494
+ export const PackageBoxIcon = ({
1495
+ color = AppColors.grayTextWeak,
1496
+ size = 14,
1497
+ }: IconProps) => {
1498
+ return (
1499
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1500
+ <Path
1501
+ d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"
1502
+ stroke={color}
1503
+ strokeWidth="1.8"
1504
+ strokeLinecap="round"
1505
+ strokeLinejoin="round"
1506
+ />
1507
+ <Path
1508
+ d="M3.27 6.96L12 12.01l8.73-5.05M12 22.08V12"
1509
+ stroke={color}
1510
+ strokeWidth="1.8"
1511
+ strokeLinecap="round"
1512
+ strokeLinejoin="round"
1513
+ />
1514
+ </Svg>
1515
+ );
1516
+ };
1517
+
1518
+ export const GitHubIcon = ({
1519
+ color = AppColors.grayTextWeak,
1520
+ size = 14,
1521
+ }: IconProps) => {
1522
+ return (
1523
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1524
+ <Path
1525
+ d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"
1526
+ stroke={color}
1527
+ strokeWidth="1.8"
1528
+ strokeLinecap="round"
1529
+ strokeLinejoin="round"
1530
+ />
1531
+ </Svg>
1532
+ );
1533
+ };
1534
+
1535
+ export const LinkChainIcon = ({
1536
+ color = AppColors.grayTextWeak,
1537
+ size = 14,
1538
+ }: IconProps) => {
1539
+ return (
1540
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1541
+ <Path
1542
+ d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"
1543
+ stroke={color}
1544
+ strokeWidth="2"
1545
+ strokeLinecap="round"
1546
+ strokeLinejoin="round"
1547
+ />
1548
+ <Path
1549
+ d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"
1550
+ stroke={color}
1551
+ strokeWidth="2"
1552
+ strokeLinecap="round"
1553
+ strokeLinejoin="round"
1554
+ />
1555
+ </Svg>
1556
+ );
1557
+ };
1558
+
1559
+ export const AppleIcon = ({
1560
+ color = AppColors.white,
1561
+ size = 12,
1562
+ }: IconProps) => {
1563
+ return (
1564
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill={color}>
1565
+ <Path d="M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.81-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M15.97 6.37c.61-.75 1.04-1.8 0.92-2.87-.9.04-1.99.6-2.63 1.35-.56.65-1.06 1.71-.93 2.74 1.01.08 2.03-.47 2.64-1.22z" />
1566
+ </Svg>
1567
+ );
1568
+ };
1569
+
1570
+ export const AndroidIcon = ({
1571
+ color = AppColors.white,
1572
+ size = 12,
1573
+ }: IconProps) => {
1574
+ return (
1575
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill={color}>
1576
+ <Path d="M6 18c0 .55.45 1 1 1h1v3.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5V19h2v3.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5V19h1c.55 0 1-.45 1-1V8H6v10zM3.5 8C2.67 8 2 8.67 2 9.5v6c0 .83.67 1.5 1.5 1.5S5 16.33 5 15.5v-6C5 8.67 4.33 8 3.5 8zm17 0c-.83 0-1.5.67-1.5 1.5v6c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5v-6c0-.83-.67-1.5-1.5-1.5zm-4.97-4.84l1.3-1.3c.2-.2.2-.51 0-.71-.2-.2-.51-.2-.71 0l-1.48 1.48C13.85 2.23 12.95 2 12 2c-.96 0-1.86.23-2.66.63L7.85 1.15c-.2-.2-.51-.2-.71 0-.2.2-.2.51 0 .71l1.31 1.31C6.73 4.26 5.54 6 5.16 8h13.68c-.38-2-1.57-3.74-3.31-4.84zM9 6c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm6 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z" />
1577
+ </Svg>
1578
+ );
1579
+ };
1580
+
1581
+ export const CodeBracketsIcon = ({
1582
+ color = AppColors.grayTextWeak,
1583
+ size = 14,
1584
+ }: IconProps) => {
1585
+ return (
1586
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1587
+ <Path
1588
+ d="M16 18l6-6-6-6M8 6l-6 6 6 6"
1589
+ stroke={color}
1590
+ strokeWidth="2"
1591
+ strokeLinecap="round"
1592
+ strokeLinejoin="round"
1593
+ />
1594
+ </Svg>
1595
+ );
1596
+ };
1597
+
1598
+ export const FlameIcon = ({
1599
+ color = AppColors.darkOrange,
1600
+ size = 14,
1601
+ }: IconProps) => {
1602
+ return (
1603
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1604
+ <Path
1605
+ d="M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 3z"
1606
+ stroke={color}
1607
+ strokeWidth="1.8"
1608
+ strokeLinecap="round"
1609
+ strokeLinejoin="round"
1610
+ />
1611
+ </Svg>
1612
+ );
1613
+ };
1614
+
1615
+ export const HourglassIcon = ({
1616
+ color = AppColors.grayTextWeak,
1617
+ size = 14,
1618
+ }: IconProps) => {
1619
+ return (
1620
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1621
+ <Path
1622
+ d="M5 22h14M5 2h14M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2"
1623
+ stroke={color}
1624
+ strokeWidth="1.8"
1625
+ strokeLinecap="round"
1626
+ strokeLinejoin="round"
1627
+ />
1628
+ </Svg>
1629
+ );
1630
+ };
1631
+
1632
+ export const PinIcon = ({
1633
+ color = AppColors.grayTextWeak,
1634
+ size = 14,
1635
+ }: IconProps) => {
1636
+ return (
1637
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1638
+ <Path
1639
+ d="M12 21s-6-5.333-6-10a6 6 0 0 1 12 0c0 4.667-6 10-6 10z"
1640
+ stroke={color}
1641
+ strokeWidth="1.8"
1642
+ strokeLinecap="round"
1643
+ strokeLinejoin="round"
1644
+ />
1645
+ <Circle cx="12" cy="11" r="2" fill={color} />
1646
+ </Svg>
1647
+ );
1648
+ };
1649
+
1650
+ export const RepeatIcon = ({
1651
+ color = AppColors.grayTextWeak,
1652
+ size = 14,
1653
+ }: IconProps) => {
1654
+ return (
1655
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1656
+ <Path
1657
+ d="M17 2l4 4-4 4M3 11v-1a4 4 0 0 1 4-4h14M7 22l-4-4 4-4M21 13v1a4 4 0 0 1-4 4H3"
1658
+ stroke={color}
1659
+ strokeWidth="1.8"
1660
+ strokeLinecap="round"
1661
+ strokeLinejoin="round"
1662
+ />
1663
+ </Svg>
1664
+ );
1665
+ };
1666
+
1667
+ export const TargetGoalIcon = ({
1668
+ color = AppColors.brandPurple,
1669
+ size = 14,
1670
+ }: IconProps) => {
1671
+ return (
1672
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1673
+ <Circle cx="12" cy="12" r="10" stroke={color} strokeWidth="1.8" />
1674
+ <Circle cx="12" cy="12" r="6" stroke={color} strokeWidth="1.8" />
1675
+ <Circle cx="12" cy="12" r="2" fill={color} />
1676
+ </Svg>
1677
+ );
1678
+ };
1679
+
1680
+ export const UserCheckIcon = ({
1681
+ color = AppColors.grayTextWeak,
1682
+ size = 14,
1683
+ }: IconProps) => {
1684
+ return (
1685
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1686
+ <Path
1687
+ d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"
1688
+ stroke={color}
1689
+ strokeWidth="1.8"
1690
+ strokeLinecap="round"
1691
+ strokeLinejoin="round"
1692
+ />
1693
+ <Circle cx="9" cy="7" r="4" stroke={color} strokeWidth="1.8" />
1694
+ <Path
1695
+ d="M16 11l2 2 4-4"
1696
+ stroke={color}
1697
+ strokeWidth="1.8"
1698
+ strokeLinecap="round"
1699
+ strokeLinejoin="round"
1700
+ />
1701
+ </Svg>
1702
+ );
1703
+ };
1704
+
1705
+ export const CrashIcon = ({
1706
+ color = AppColors.errorColor,
1707
+ size = 14,
1708
+ }: IconProps) => {
1709
+ return (
1710
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1711
+ {/* Bug / Crash Hybrid Icon */}
1712
+ <Path
1713
+ d="M12 2v3M4.93 4.93l2.12 2.12M19.07 4.93l-2.12 2.12M9 10h6M8 14h8M9 18h6"
1714
+ stroke={color}
1715
+ strokeWidth="1.8"
1716
+ strokeLinecap="round"
1717
+ />
1718
+ <Path
1719
+ d="M12 8a6 6 0 0 1 6 6v3a6 6 0 0 1-12 0v-3a6 6 0 0 1 6-6z"
1720
+ stroke={color}
1721
+ strokeWidth="1.8"
1722
+ strokeLinecap="round"
1723
+ strokeLinejoin="round"
1724
+ />
1725
+ <Path
1726
+ d="M3 13h3M18 13h3M4 19l2.5-1.5M20 19l-2.5-1.5M4 9l2.5 1.5M20 9l-2.5 1.5"
1727
+ stroke={color}
1728
+ strokeWidth="1.8"
1729
+ strokeLinecap="round"
1730
+ />
1731
+ </Svg>
1732
+ );
1733
+ };
1734
+
1735
+ export const ShieldAlertIcon = ({
1736
+ color = AppColors.errorColor,
1737
+ size = 14,
1738
+ }: IconProps) => {
1739
+ return (
1740
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1741
+ <Path
1742
+ d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"
1743
+ stroke={color}
1744
+ strokeWidth="1.8"
1745
+ strokeLinecap="round"
1746
+ strokeLinejoin="round"
1747
+ />
1748
+ <Line
1749
+ x1="12"
1750
+ y1="8"
1751
+ x2="12"
1752
+ y2="12"
1753
+ stroke={color}
1754
+ strokeWidth="2"
1755
+ strokeLinecap="round"
1756
+ />
1757
+ <Circle cx="12" cy="16" r="1" fill={color} />
1758
+ </Svg>
1759
+ );
1760
+ };
1761
+
1762
+
1763
+
1764
+ export const SkullIcon = ({
1765
+ color = AppColors.errorColor,
1766
+ size = 14,
1767
+ }: IconProps) => {
1768
+ return (
1769
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1770
+ <Circle cx="12" cy="12" r="9" stroke={color} strokeWidth="1.8" />
1771
+ <Circle cx="9" cy="11" r="1.6" fill={color} />
1772
+ <Circle cx="15" cy="11" r="1.6" fill={color} />
1773
+ <Path
1774
+ d="M8 16c1.2 1 3.2 1.2 4 1.2.8 0 2.8-.2 4-1.2"
1775
+ stroke={color}
1776
+ strokeWidth="1.8"
1777
+ strokeLinecap="round"
1778
+ />
1779
+ <Line x1="12" y1="16" x2="12" y2="18" stroke={color} strokeWidth="1.8" strokeLinecap="round" />
1780
+ </Svg>
1781
+ );
1782
+ };
1783
+
1784
+ export const ChipIcon = ({
1785
+ color = AppColors.grayTextWeak,
1786
+ size = 14,
1787
+ }: IconProps) => {
1788
+ return (
1789
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1790
+ <Rect x="7" y="7" width="10" height="10" rx="2" stroke={color} strokeWidth="1.8" />
1791
+ <Rect x="10" y="10" width="4" height="4" fill={color} />
1792
+ <Line x1="9" y1="3" x2="9" y2="7" stroke={color} strokeWidth="1.6" strokeLinecap="round" />
1793
+ <Line x1="15" y1="3" x2="15" y2="7" stroke={color} strokeWidth="1.6" strokeLinecap="round" />
1794
+ <Line x1="9" y1="17" x2="9" y2="21" stroke={color} strokeWidth="1.6" strokeLinecap="round" />
1795
+ <Line x1="15" y1="17" x2="15" y2="21" stroke={color} strokeWidth="1.6" strokeLinecap="round" />
1796
+ <Line x1="3" y1="9" x2="7" y2="9" stroke={color} strokeWidth="1.6" strokeLinecap="round" />
1797
+ <Line x1="3" y1="15" x2="7" y2="15" stroke={color} strokeWidth="1.6" strokeLinecap="round" />
1798
+ <Line x1="17" y1="9" x2="21" y2="9" stroke={color} strokeWidth="1.6" strokeLinecap="round" />
1799
+ <Line x1="17" y1="15" x2="21" y2="15" stroke={color} strokeWidth="1.6" strokeLinecap="round" />
1800
+ </Svg>
1801
+ );
1802
+ };
1803
+
1804
+ export const LayoutIcon = ({
1805
+ color = AppColors.grayTextWeak,
1806
+ size = 14,
1807
+ }: IconProps) => {
1808
+ return (
1809
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1810
+ <Rect x="3" y="3" width="18" height="18" rx="2" stroke={color} strokeWidth="1.8" />
1811
+ <Line x1="3" y1="9" x2="21" y2="9" stroke={color} strokeWidth="1.8" />
1812
+ <Line x1="9" y1="9" x2="9" y2="21" stroke={color} strokeWidth="1.8" />
1813
+ <Rect x="12" y="12" width="6" height="6" fill={color} />
1814
+ </Svg>
1815
+ );
1816
+ };
1817
+
1818
+ export const StackTraceIcon = ({
1819
+ color = AppColors.grayTextWeak,
1820
+ size = 14,
1821
+ }: IconProps) => {
1822
+ return (
1823
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1824
+ <Path
1825
+ d="M4 6h16M4 10h11M4 14h16M4 18h9"
1826
+ stroke={color}
1827
+ strokeWidth="2"
1828
+ strokeLinecap="round"
1829
+ />
1830
+ <Path
1831
+ d="M7.5 12.5 4 14l3.5 1.5"
1832
+ stroke={color}
1833
+ strokeWidth="1.4"
1834
+ strokeLinecap="round"
1835
+ strokeLinejoin="round"
1836
+ />
1837
+ </Svg>
1838
+ );
1839
+ };
1840
+
1841
+ export const DiagnosticsIcon = ({
1842
+ color = AppColors.grayTextWeak,
1843
+ size = 14,
1844
+ }: IconProps) => {
1845
+ return (
1846
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1847
+ <Path
1848
+ d="M3 12h3l2-5 3 9 2-6 1.5 2H21"
1849
+ stroke={color}
1850
+ strokeWidth="2"
1851
+ strokeLinecap="round"
1852
+ strokeLinejoin="round"
1853
+ />
1854
+ <Line x1="4" y1="19" x2="20" y2="19" stroke={color} strokeWidth="1.6" strokeLinecap="round" />
1855
+ </Svg>
1856
+ );
1857
+ };
1858
+
1859
+ export const TrailIcon = ({
1860
+ color = AppColors.grayTextWeak,
1861
+ size = 14,
1862
+ }: IconProps) => {
1863
+ return (
1864
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1865
+ <Circle cx="5" cy="18" r="2" fill={color} />
1866
+ <Circle cx="12" cy="12" r="2" fill={color} />
1867
+ <Circle cx="19" cy="6" r="2" fill={color} />
1868
+ <Path
1869
+ d="M6.5 16.5 10.5 13.5M13.5 10.5 17.5 7.5"
1870
+ stroke={color}
1871
+ strokeWidth="1.6"
1872
+ strokeLinecap="round"
1873
+ />
1874
+ </Svg>
1875
+ );
1876
+ };
1877
+
1878
+ export const RawJsonIcon = ({
1879
+ color = AppColors.grayTextWeak,
1880
+ size = 14,
1881
+ }: IconProps) => {
1882
+ return (
1883
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1884
+ <Path
1885
+ d="M8 3c-2 1-3 2.5-3 5 0 2-1 3.5-2 4 1 .5 2 2 2 4 0 2.5 1 4 3 5M16 3c2 1 3 2.5 3 5 0 2 1 3.5 2 4-1 .5-2 2-2 4 0 2.5-1 4-3 5"
1886
+ stroke={color}
1887
+ strokeWidth="1.8"
1888
+ strokeLinecap="round"
1889
+ strokeLinejoin="round"
1890
+ />
1891
+ </Svg>
1892
+ );
1893
+ };
1894
+
1895
+ export const AppFramesIcon = ({
1896
+ color = AppColors.grayTextWeak,
1897
+ size = 14,
1898
+ }: IconProps) => {
1899
+ return (
1900
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1901
+ <Path
1902
+ d="M4 6h16M4 10h11M4 14h16M4 18h9"
1903
+ stroke={color}
1904
+ strokeWidth="2"
1905
+ strokeLinecap="round"
1906
+ />
1907
+ <Path
1908
+ d="M18 12.5l2 2 3-3.5"
1909
+ stroke="#059669"
1910
+ strokeWidth="1.8"
1911
+ strokeLinecap="round"
1912
+ strokeLinejoin="round"
1913
+ />
1914
+ </Svg>
1915
+ );
1916
+ };
1917
+
1918
+ export const AllFramesIcon = ({
1919
+ color = AppColors.grayTextWeak,
1920
+ size = 14,
1921
+ }: IconProps) => {
1922
+ return (
1923
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1924
+ <Path
1925
+ d="M4 4h16M4 8h16M4 12h16M4 16h16M4 20h10"
1926
+ stroke={color}
1927
+ strokeWidth="1.8"
1928
+ strokeLinecap="round"
1929
+ />
1930
+ <Rect x="16" y="16" width="4" height="4" rx="1" fill={color} />
1931
+ </Svg>
1932
+ );
1933
+ };
1934
+
1935
+ export const ListenerIcon = ({
1936
+ color = AppColors.grayTextWeak,
1937
+ size = 14,
1938
+ }: IconProps) => {
1939
+ return (
1940
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1941
+ <Path
1942
+ d="M3 18v-6a9 9 0 0 1 18 0v6"
1943
+ stroke={color}
1944
+ strokeWidth="2"
1945
+ strokeLinecap="round"
1946
+ />
1947
+ <Path
1948
+ d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3v5zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3v5z"
1949
+ stroke={color}
1950
+ strokeWidth="1.8"
1951
+ strokeLinecap="round"
1952
+ strokeLinejoin="round"
1953
+ />
1954
+ </Svg>
1955
+ );
1956
+ };
1957
+
1958
+ export const LoadingSpinnerIcon = ({
1959
+ color = AppColors.amber800Warm,
1960
+ size = 12,
1961
+ }: IconProps) => {
1962
+ return (
1963
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1964
+ <Path
1965
+ d="M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83"
1966
+ stroke={color}
1967
+ strokeWidth="2.2"
1968
+ strokeLinecap="round"
1969
+ />
1970
+ </Svg>
1971
+ );
1972
+ };
1973
+
1974
+ export const FlaskIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => (
1975
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1976
+ <Path
1977
+ d="M10 2v5.5L4.4 18.2A2 2 0 0 0 6.2 21h11.6a2 2 0 0 0 1.8-2.8L14 7.5V2M8.5 2h7M7 15h10"
1978
+ stroke={color}
1979
+ strokeWidth="1.8"
1980
+ strokeLinecap="round"
1981
+ strokeLinejoin="round"
1982
+ />
1983
+ <Circle cx="12" cy="18" r="1" fill={color} />
1984
+ </Svg>
1985
+ );
1986
+
1987
+ export const ZapIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => (
1988
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
1989
+ <Path
1990
+ d="M13 2 3 14h9l-1 8 10-12h-9l1-8z"
1991
+ stroke={color}
1992
+ strokeWidth="1.8"
1993
+ strokeLinecap="round"
1994
+ strokeLinejoin="round"
1995
+ />
1996
+ </Svg>
1997
+ );
1998
+
1999
+ export const DiceIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => (
2000
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
2001
+ <Rect x="3" y="3" width="18" height="18" rx="4" stroke={color} strokeWidth="1.8" />
2002
+ <Circle cx="8.5" cy="8.5" r="1.5" fill={color} />
2003
+ <Circle cx="15.5" cy="8.5" r="1.5" fill={color} />
2004
+ <Circle cx="12" cy="12" r="1.5" fill={color} />
2005
+ <Circle cx="8.5" cy="15.5" r="1.5" fill={color} />
2006
+ <Circle cx="15.5" cy="15.5" r="1.5" fill={color} />
2007
+ </Svg>
2008
+ );
2009
+
2010
+ export const BarChartIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => (
2011
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
2012
+ <Path
2013
+ d="M18 20V10M12 20V4M6 20v-6"
2014
+ stroke={color}
2015
+ strokeWidth="2"
2016
+ strokeLinecap="round"
2017
+ strokeLinejoin="round"
2018
+ />
2019
+ </Svg>
2020
+ );
2021
+
2022
+ export const KeyIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => (
2023
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
2024
+ <Circle cx="7.5" cy="15.5" r="4.5" stroke={color} strokeWidth="1.8" />
2025
+ <Path
2026
+ d="m11 12 8.5-8.5M16 4.5l3 3M19 7.5l2-2"
2027
+ stroke={color}
2028
+ strokeWidth="1.8"
2029
+ strokeLinecap="round"
2030
+ strokeLinejoin="round"
2031
+ />
2032
+ </Svg>
2033
+ );
2034
+
2035
+ export const SmartphoneIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => (
2036
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
2037
+ <Rect x="5" y="2" width="14" height="20" rx="3" stroke={color} strokeWidth="1.8" />
2038
+ <Path d="M12 18h.01" stroke={color} strokeWidth="2.5" strokeLinecap="round" />
2039
+ </Svg>
2040
+ );
2041
+
2042
+ export const AlertTriangleIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => (
2043
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
2044
+ <Path
2045
+ d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"
2046
+ stroke={color}
2047
+ strokeWidth="1.8"
2048
+ strokeLinecap="round"
2049
+ strokeLinejoin="round"
2050
+ />
2051
+ <Path d="M12 9v4M12 17h.01" stroke={color} strokeWidth="2" strokeLinecap="round" />
2052
+ </Svg>
2053
+ );
2054
+
2055
+ export const BugIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => (
2056
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
2057
+ <Rect width="8" height="12" x="8" y="8" rx="4" stroke={color} strokeWidth="1.8" />
2058
+ <Path
2059
+ d="m19 7-3 2M5 7l3 2M19 19l-3-2M5 19l3-2M20 13h-4M4 13h4M10 4l2 2 2-2"
2060
+ stroke={color}
2061
+ strokeWidth="1.8"
2062
+ strokeLinecap="round"
2063
+ strokeLinejoin="round"
2064
+ />
2065
+ </Svg>
2066
+ );
2067
+
2068
+ export const TagIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => (
2069
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
2070
+ <Path
2071
+ d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8 8a2 2 0 0 0 2.828 0l7.172-7.172a2 2 0 0 0 0-2.828l-8-8z"
2072
+ stroke={color}
2073
+ strokeWidth="1.8"
2074
+ strokeLinecap="round"
2075
+ strokeLinejoin="round"
2076
+ />
2077
+ <Circle cx="7.5" cy="7.5" r="1.5" fill={color} />
2078
+ </Svg>
2079
+ );
2080
+
2081
+ export const NpmIcon = ({color = '#CB3837', size = 14}: IconProps) => (
2082
+ <Svg width={size} height={size} viewBox="0 0 256 256" fill="none">
2083
+ <Rect width="256" height="256" rx="32" fill={color} />
2084
+ <Path d="M48 48h160v160h-32V96h-32v112H48V48z" fill="#FFFFFF" />
2085
+ </Svg>
2086
+ );
2087
+
2088
+ export const ResetIcon = ({color = AppColors.white, size = 16}: IconProps) => (
2089
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
2090
+ <Path
2091
+ d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"
2092
+ stroke={color}
2093
+ strokeWidth="2"
2094
+ strokeLinecap="round"
2095
+ strokeLinejoin="round"
2096
+ />
2097
+ <Path
2098
+ d="M3 3v5h5"
2099
+ stroke={color}
2100
+ strokeWidth="2"
2101
+ strokeLinecap="round"
2102
+ strokeLinejoin="round"
2103
+ />
2104
+ </Svg>
2105
+ );
2106
+
2107
+ export const ChevronDownIcon = ({color = AppColors.grayTextWeak, size = 14}: IconProps) => (
2108
+ <Svg width={size} height={size} viewBox="0 0 24 24" fill="none">
2109
+ <Path
2110
+ d="M6 9l6 6 6-6"
2111
+ stroke={color}
2112
+ strokeWidth="2"
2113
+ strokeLinecap="round"
2114
+ strokeLinejoin="round"
2115
+ />
2116
+ </Svg>
2117
+ );
2118
+