@flowuent-org/diagramming-core 1.3.7 → 1.3.9

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.
@@ -4,15 +4,10 @@ import { Handle, Position, useNodeId } from '@xyflow/react';
4
4
  import { Box, Typography, Chip, IconButton, Card, CardContent, Tooltip } from '@mui/material';
5
5
  import {
6
6
  AccessTime as AccessTimeIcon,
7
- Navigation as MuiNavigationIcon,
8
- OpenInBrowser as OpenInBrowserIcon,
9
- TouchApp as TouchAppIcon,
10
- Search as SearchIcon,
11
7
  ContentCopy as ContentCopyIcon,
12
8
  } from '@mui/icons-material';
13
9
  import { RiCloseLine } from 'react-icons/ri';
14
10
  import ReactJson from 'react-json-view';
15
- import { getIconByName } from '../../utils/iconMapper';
16
11
  import { useTranslation } from 'react-i18next';
17
12
  import { useDiagram } from '../../contexts/DiagramProvider';
18
13
  import { NodeActionButtons } from './NodeActionButtons';
@@ -69,9 +64,6 @@ export const AutomationNavigationNode: React.FC<AutomationNavigationNodeProps> =
69
64
  const nodes = useDiagram((state) => state.nodes);
70
65
  const setNodes = useDiagram((state) => state.setNodes);
71
66
 
72
- // Get the icon component based on the iconName
73
- const IconComponent = getIconByName(data.iconName) || NavigationIcon;
74
-
75
67
  const handleJsonClick = () => {
76
68
  if (nodeId) setSelectedNode(nodeId);
77
69
  if (!enableJson) return;
@@ -205,23 +197,7 @@ export const AutomationNavigationNode: React.FC<AutomationNavigationNodeProps> =
205
197
  }
206
198
  }, [isJsonOpen, data]);
207
199
 
208
- const getNavigationIcon = () => {
209
- const navType = data.formData?.navigationType || data.navigationType || 'navigate';
210
- switch (navType) {
211
- case 'navigate':
212
- return <OpenInBrowserIcon sx={{ fontSize: '18px' }} />;
213
- case 'click':
214
- return <TouchAppIcon sx={{ fontSize: '18px' }} />;
215
- case 'scroll':
216
- return <NavigationIcon size={18} color="#93C5FD" />;
217
- case 'wait':
218
- return <AccessTimeIcon sx={{ fontSize: '18px' }} />;
219
- case 'extract':
220
- return <SearchIcon sx={{ fontSize: '18px' }} />;
221
- default:
222
- return <NavigationIcon size={18} color="#93C5FD" />;
223
- }
224
- };
200
+
225
201
 
226
202
  const getNavigationTypeLabel = () => {
227
203
  const navType = data.formData?.navigationType || data.navigationType || 'navigate';
@@ -323,14 +299,16 @@ export const AutomationNavigationNode: React.FC<AutomationNavigationNodeProps> =
323
299
  sx={{
324
300
  width: '32px',
325
301
  height: '32px',
302
+ minWidth: '32px',
326
303
  backgroundColor: '#8b5cf6',
327
304
  borderRadius: '50%',
328
305
  display: 'flex',
329
306
  alignItems: 'center',
330
307
  justifyContent: 'center',
308
+ flexShrink: 0,
331
309
  }}
332
310
  >
333
- {getNavigationIcon()}
311
+ <NavigationIcon />
334
312
  </Box>
335
313
  <Typography variant="h6" sx={{ fontWeight: 600, fontSize: '16px' }}>
336
314
  {highlightText(data.label)}
@@ -746,6 +746,21 @@ Data: ${JSON.stringify(data, null, 2)}
746
746
  }}
747
747
  onClick={handleJsonClick}
748
748
  >
749
+ {/* Top Header Section */}
750
+ <Box sx={{
751
+ backgroundColor: "rgba(67, 93, 132, 0.1)",
752
+ padding: '8px 16px',
753
+ borderRadius: '12px 12px 0 0'
754
+ }}>
755
+ <Typography variant="body2" sx={{
756
+ color: '#ffffff',
757
+ fontSize: '12px',
758
+ fontWeight: 500
759
+ }}>
760
+ {data.description || 'Export data to Google Sheets'}
761
+ </Typography>
762
+ </Box>
763
+
749
764
  {/* Header */}
750
765
  <Box sx={{
751
766
  display: 'flex',
@@ -759,11 +774,13 @@ Data: ${JSON.stringify(data, null, 2)}
759
774
  sx={{
760
775
  width: '32px',
761
776
  height: '32px',
762
- backgroundColor: '#3b82f6', // Blue color like in image
763
- borderRadius: '6px',
777
+ minWidth: '32px',
778
+ backgroundColor: '#1E3A8A',
779
+ borderRadius: '50%',
764
780
  display: 'flex',
765
781
  alignItems: 'center',
766
782
  justifyContent: 'center',
783
+ flexShrink: 0,
767
784
  }}
768
785
  >
769
786
  <IconComponent sx={{ color: 'white', fontSize: '18px' }} />
@@ -457,11 +457,26 @@ export const AutomationSlackNode: React.FC<AutomationSlackNodeProps> = ({
457
457
  }}
458
458
  />
459
459
 
460
+ {/* Top Header Section */}
461
+ <Box sx={{
462
+ backgroundColor: "rgba(67, 93, 132, 0.1)",
463
+ padding: '8px 16px',
464
+ borderRadius: '12px 12px 0 0'
465
+ }}>
466
+ <Typography variant="body2" sx={{
467
+ color: '#ffffff',
468
+ fontSize: '12px',
469
+ fontWeight: 500
470
+ }}>
471
+ {data.description || operationConfig.description}
472
+ </Typography>
473
+ </Box>
474
+
460
475
  {/* Header */}
461
476
  <Box
462
477
  sx={{
463
- bgcolor: `${operationConfig.color}15`,
464
- borderBottom: `1px solid ${operationConfig.color}30`,
478
+ bgcolor: "rgba(67, 93, 132, 0.1)",
479
+ borderBottom: `1px solid rgba(67, 93, 132, 0.2)`,
465
480
  px: 2,
466
481
  py: 1.5,
467
482
  display: 'flex',
@@ -472,12 +487,15 @@ export const AutomationSlackNode: React.FC<AutomationSlackNodeProps> = ({
472
487
  <Box sx={{ display: 'flex', alignItems: 'center', gap: 1.5 }}>
473
488
  <Box
474
489
  sx={{
475
- bgcolor: operationConfig.color,
476
- borderRadius: 1,
477
- p: 0.75,
490
+ width: '32px',
491
+ height: '32px',
492
+ minWidth: '32px',
493
+ backgroundColor: '#1E3A8A',
494
+ borderRadius: '50%',
478
495
  display: 'flex',
479
496
  alignItems: 'center',
480
497
  justifyContent: 'center',
498
+ flexShrink: 0,
481
499
  }}
482
500
  >
483
501
  <OperationIcon sx={{ fontSize: 18, color: '#fff' }} />
@@ -489,12 +507,6 @@ export const AutomationSlackNode: React.FC<AutomationSlackNodeProps> = ({
489
507
  >
490
508
  {highlightText(data.label || operationConfig.label)}
491
509
  </Typography>
492
- <Typography
493
- variant="caption"
494
- sx={{ color: '#9CA3AF', fontSize: 10 }}
495
- >
496
- {data.description || operationConfig.description}
497
- </Typography>
498
510
  </Box>
499
511
  </Box>
500
512
  {renderStatusBadge()}
@@ -5,13 +5,13 @@ import { Box, Typography, Chip, IconButton, Card, CardContent } from '@mui/mater
5
5
  import { AccessTime as AccessTimeIcon } from '@mui/icons-material';
6
6
  import { RiCloseLine, RiUser2Line } from 'react-icons/ri';
7
7
  import ReactJson from 'react-json-view';
8
- import { getIconByName } from '../../utils/iconMapper';
9
8
  import { useTranslation } from 'react-i18next';
10
9
  import { useDiagram } from '../../contexts/DiagramProvider';
11
10
  import { NodeActionButtons } from './NodeActionButtons';
12
11
  import { showNodeAIAssistantPopup } from './NodeAIAssistantPopup';
13
12
  import { useSearch } from '../../contexts/SearchContext';
14
13
  import { getStatusColor } from './statusColors';
14
+ import { StartNodeIcon } from '../../../../../molecules/src/lib/SvgIcons/icons';
15
15
 
16
16
  interface AutomationStartNodeProps {
17
17
  data: {
@@ -48,11 +48,6 @@ export const AutomationStartNode: React.FC<AutomationStartNodeProps> = ({ data,
48
48
  const nodes = useDiagram((state) => state.nodes);
49
49
  const setNodes = useDiagram((state) => state.setNodes);
50
50
 
51
- // Get the icon component based on the iconName
52
- const IconComponent = getIconByName(data.iconName);
53
-
54
-
55
-
56
51
  const handleJsonClick = () => {
57
52
  if (nodeId) setSelectedNode(nodeId);
58
53
  if (!enableJson) return;
@@ -259,19 +254,9 @@ export const AutomationStartNode: React.FC<AutomationStartNodeProps> = ({ data,
259
254
  {/* Title Section */}
260
255
  <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 2 }}>
261
256
  <Box sx={{ display: 'flex', alignItems: 'center', gap: 1.5 }}>
262
- <Box
263
- sx={{
264
- width: '32px',
265
- height: '32px',
266
- backgroundColor: '#0ea5e9',
267
- borderRadius: '50%',
268
- display: 'flex',
269
- alignItems: 'center',
270
- justifyContent: 'center',
271
- }}
272
- >
273
- <IconComponent sx={{ color: 'white', fontSize: '18px' }} />
274
- </Box>
257
+
258
+ <StartNodeIcon />
259
+
275
260
  <Typography variant="h6" sx={{ fontWeight: 600, fontSize: '16px' }}>
276
261
  {highlightText(data.label)}
277
262
  </Typography>
@@ -450,11 +450,26 @@ export const AutomationTelegramNode: React.FC<AutomationTelegramNodeProps> = ({
450
450
  }}
451
451
  />
452
452
 
453
+ {/* Top Header Section */}
454
+ <Box sx={{
455
+ backgroundColor: "rgba(67, 93, 132, 0.1)",
456
+ padding: '8px 16px',
457
+ borderRadius: '12px 12px 0 0'
458
+ }}>
459
+ <Typography variant="body2" sx={{
460
+ color: '#ffffff',
461
+ fontSize: '12px',
462
+ fontWeight: 500
463
+ }}>
464
+ {data.description || operationConfig.description}
465
+ </Typography>
466
+ </Box>
467
+
453
468
  {/* Header */}
454
469
  <Box
455
470
  sx={{
456
- bgcolor: `${operationConfig.color}15`,
457
- borderBottom: `1px solid ${operationConfig.color}30`,
471
+ bgcolor: "rgba(67, 93, 132, 0.1)",
472
+ borderBottom: `1px solid rgba(67, 93, 132, 0.2)`,
458
473
  px: 2,
459
474
  py: 1.5,
460
475
  display: 'flex',
@@ -465,12 +480,15 @@ export const AutomationTelegramNode: React.FC<AutomationTelegramNodeProps> = ({
465
480
  <Box sx={{ display: 'flex', alignItems: 'center', gap: 1.5 }}>
466
481
  <Box
467
482
  sx={{
468
- bgcolor: operationConfig.color,
469
- borderRadius: 1,
470
- p: 0.75,
483
+ width: '32px',
484
+ height: '32px',
485
+ minWidth: '32px',
486
+ backgroundColor: '#1E3A8A',
487
+ borderRadius: '50%',
471
488
  display: 'flex',
472
489
  alignItems: 'center',
473
490
  justifyContent: 'center',
491
+ flexShrink: 0,
474
492
  }}
475
493
  >
476
494
  <OperationIcon sx={{ fontSize: 18, color: '#fff' }} />
@@ -482,12 +500,6 @@ export const AutomationTelegramNode: React.FC<AutomationTelegramNodeProps> = ({
482
500
  >
483
501
  {highlightText(data.label || operationConfig.label)}
484
502
  </Typography>
485
- <Typography
486
- variant="caption"
487
- sx={{ color: '#9CA3AF', fontSize: 10 }}
488
- >
489
- {data.description || operationConfig.description}
490
- </Typography>
491
503
  </Box>
492
504
  </Box>
493
505
  {renderStatusBadge()}
@@ -566,50 +566,9 @@ export const DiagramContent: React.FC<DiagramContentProps> = ({
566
566
  ref={setNodeRef}
567
567
  sx={{ height: '100svh', width: '100svw', position: 'relative' }}
568
568
  >
569
- {/* Undo/Redo Toolbar */}
570
- <Box
571
- sx={{
572
- position: 'absolute',
573
- top: 16,
574
- left: 16,
575
- zIndex: 10,
576
- display: 'flex',
577
- gap: 0.5,
578
- backgroundColor: 'background.paper',
579
- borderRadius: 2,
580
- boxShadow: 2,
581
- padding: 0.5,
582
- }}
583
- >
584
- <Tooltip title="Undo (Ctrl+Z)" placement="bottom">
585
- <span>
586
- <IconButton
587
- onClick={undo}
588
- disabled={!canUndo}
589
- size="small"
590
- sx={{
591
- color: canUndo ? 'primary.main' : 'action.disabled',
592
- }}
593
- >
594
- <UndoIcon fontSize="small" />
595
- </IconButton>
596
- </span>
597
- </Tooltip>
598
- <Tooltip title="Redo (Ctrl+Y)" placement="bottom">
599
- <span>
600
- <IconButton
601
- onClick={redo}
602
- disabled={!canRedo}
603
- size="small"
604
- sx={{
605
- color: canRedo ? 'primary.main' : 'action.disabled',
606
- }}
607
- >
608
- <RedoIcon fontSize="small" />
609
- </IconButton>
610
- </span>
611
- </Tooltip>
612
- </Box>
569
+ {/* Redo Toolbar */}
570
+
571
+
613
572
  <ReactFlow
614
573
  panOnDrag={isPannable}
615
574
  nodesDraggable={isPannable}
@@ -64,46 +64,40 @@ export const ArticleAnalyzerIcon: React.FC<SvgIconProps> = ({ size = 15, color =
64
64
  );
65
65
 
66
66
  // Start Node Icon
67
- export const StartNodeIcon: React.FC<SvgIconProps> = ({ size = 15, color = '#86EFAC', style }) => (
68
- <BaseIcon size={size} color={color} style={style}>
69
- <path
70
- d="M7.16667 13.8333C10.8486 13.8333 13.8333 10.8486 13.8333 7.16667C13.8333 3.48477 10.8486 0.5 7.16667 0.5C3.48477 0.5 0.5 3.48477 0.5 7.16667C0.5 10.8486 3.48477 13.8333 7.16667 13.8333Z"
71
- stroke={color}
72
- strokeLinecap="round"
73
- strokeLinejoin="round"
74
- />
75
- <path
76
- d="M5.83203 4.5L9.83203 7.16667L5.83203 9.83333V4.5Z"
77
- stroke={color}
78
- strokeLinecap="round"
79
- strokeLinejoin="round"
80
- />
81
- </BaseIcon>
67
+ export const StartNodeIcon: React.FC<SvgIconProps> = ({ size, color, style }) => (
68
+ <svg width="35" height="35" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
69
+ <path d="M0 14C0 6.26801 6.26801 0 14 0C21.732 0 28 6.26801 28 14C28 21.732 21.732 28 14 28C6.26801 28 0 21.732 0 14Z" fill="#1E3A8A"/>
70
+ <g clipPath="url(#clip0_8650_35616)">
71
+ <path d="M14.0007 20.6663C17.6825 20.6663 20.6673 17.6816 20.6673 13.9997C20.6673 10.3178 17.6825 7.33301 14.0007 7.33301C10.3188 7.33301 7.33398 10.3178 7.33398 13.9997C7.33398 17.6816 10.3188 20.6663 14.0007 20.6663Z" stroke="#86EFAC" strokeLinecap="round" strokeLinejoin="round"/>
72
+ <path d="M12.666 11.333L16.666 13.9997L12.666 16.6663V11.333Z" stroke="#86EFAC" strokeLinecap="round" strokeLinejoin="round"/>
73
+ </g>
74
+ <defs>
75
+ <clipPath id="clip0_8650_35616">
76
+ <rect width="16" height="16" fill="white" transform="translate(6 6)"/>
77
+ </clipPath>
78
+ </defs>
79
+ </svg>
80
+
81
+
82
82
  );
83
83
 
84
84
  // Navigation Icon
85
- export const NavigationIcon: React.FC<SvgIconProps> = ({ size = 15, color = '#93C5FD', style }) => (
86
- <BaseIcon size={size} color={color} style={style}>
87
- <path
88
- d="M7.16667 13.8333C10.8486 13.8333 13.8333 10.8486 13.8333 7.16667C13.8333 3.48477 10.8486 0.5 7.16667 0.5C3.48477 0.5 0.5 3.48477 0.5 7.16667C0.5 10.8486 3.48477 13.8333 7.16667 13.8333Z"
89
- stroke={color}
90
- strokeLinecap="round"
91
- strokeLinejoin="round"
92
- />
93
- <path
94
- d="M7.16667 0.5C5.45482 2.29744 4.5 4.68449 4.5 7.16667C4.5 9.64884 5.45482 12.0359 7.16667 13.8333C8.87851 12.0359 9.83333 9.64884 9.83333 7.16667C9.83333 4.68449 8.87851 2.29744 7.16667 0.5Z"
95
- stroke={color}
96
- strokeLinecap="round"
97
- strokeLinejoin="round"
98
- />
99
- <path
100
- d="M0.5 7.16699H13.8333"
101
- stroke={color}
102
- strokeLinecap="round"
103
- strokeLinejoin="round"
104
- />
105
- </BaseIcon>
106
- );
85
+ export const NavigationIcon: React.FC<SvgIconProps> = ({ size, color, style }) => (
86
+ <svg width="35" height="35" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
87
+ <path d="M0 14C0 6.26801 6.26801 0 14 0C21.732 0 28 6.26801 28 14C28 21.732 21.732 28 14 28C6.26801 28 0 21.732 0 14Z" fill="#1E3A8A"/>
88
+ <g clipPath="url(#clip0_8650_35642)">
89
+ <path d="M14.0007 20.6663C17.6825 20.6663 20.6673 17.6816 20.6673 13.9997C20.6673 10.3178 17.6825 7.33301 14.0007 7.33301C10.3188 7.33301 7.33398 10.3178 7.33398 13.9997C7.33398 17.6816 10.3188 20.6663 14.0007 20.6663Z" stroke="#93C5FD" strokeLinecap="round" strokeLinejoin="round"/>
90
+ <path d="M14.0007 7.33301C12.2888 9.13044 11.334 11.5175 11.334 13.9997C11.334 16.4818 12.2888 18.8689 14.0007 20.6663C15.7125 18.8689 16.6673 16.4818 16.6673 13.9997C16.6673 11.5175 15.7125 9.13044 14.0007 7.33301Z" stroke="#93C5FD" strokeLinecap="round" strokeLinejoin="round"/>
91
+ <path d="M7.33398 14H20.6673" stroke="#93C5FD" strokeLinecap="round" strokeLinejoin="round"/>
92
+ </g>
93
+ <defs>
94
+ <clipPath id="clip0_8650_35642">
95
+ <rect width="16" height="16" fill="white" transform="translate(6 6)"/>
96
+ </clipPath>
97
+ </defs>
98
+ </svg>
99
+
100
+ );
107
101
 
108
102
  // Workflow node type icons
109
103
  export const ParallelIcon: React.FC<SvgIconProps> = ({ size = 15, color = '#86EFAC', style }) => (
@@ -260,7 +254,7 @@ export const EmptyNodeIcon: React.FC<SvgIconProps> = ({ size = 15, color = '#86E
260
254
  </BaseIcon>
261
255
  );
262
256
 
263
- export const EntityIcon: React.FC<SvgIconProps> = ({ size = 15, color = '#86EFAC', style }) => (
257
+ export const EntityIcon: React.FC<SvgIconProps> = ({ size, color = '#86EFAC', style }) => (
264
258
  <BaseIcon size={size} color={color} style={style}>
265
259
  <path
266
260
  d="M7.16667 13.8333C10.8486 13.8333 13.8333 10.8486 13.8333 7.16667C13.8333 3.48477 10.8486 0.5 7.16667 0.5C3.48477 0.5 0.5 3.48477 0.5 7.16667C0.5 10.8486 3.48477 13.8333 7.16667 13.8333Z"
@@ -272,20 +266,27 @@ export const EntityIcon: React.FC<SvgIconProps> = ({ size = 15, color = '#86EFAC
272
266
  );
273
267
 
274
268
  // End Node Icon
275
- export const EndNodeIcon: React.FC<SvgIconProps> = ({ size = 13, color = '#FCA5A5', style }) => (
276
- <svg
277
- width={size}
278
- height={size}
279
- viewBox="0 0 13 13"
280
- fill="none"
281
- xmlns="http://www.w3.org/2000/svg"
282
- style={style}
283
- >
284
- <path
285
- d="M11.1667 0.5H1.83333C1.09695 0.5 0.5 1.09695 0.5 1.83333V11.1667C0.5 11.903 1.09695 12.5 1.83333 12.5H11.1667C11.903 12.5 12.5 11.903 12.5 11.1667V1.83333C12.5 1.09695 11.903 0.5 11.1667 0.5Z"
286
- stroke={color}
287
- strokeLinecap="round"
288
- strokeLinejoin="round"
289
- />
290
- </svg>
269
+ export const EndNodeIcon: React.FC<SvgIconProps> = ({ size, color , style }) => (
270
+ <svg width="35" height="35" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
271
+ <path d="M0 14C0 6.26801 6.26801 0 14 0C21.732 0 28 6.26801 28 14C28 21.732 21.732 28 14 28C6.26801 28 0 21.732 0 14Z" fill="#1E3A8A"/>
272
+ <path d="M18.6667 8H9.33333C8.59695 8 8 8.59695 8 9.33333V18.6667C8 19.403 8.59695 20 9.33333 20H18.6667C19.403 20 20 19.403 20 18.6667V9.33333C20 8.59695 19.403 8 18.6667 8Z" stroke="#FCA5A5" strokeLinecap="round" strokeLinejoin="round"/>
273
+ </svg>
274
+
291
275
  );
276
+
277
+ export const FormattingNodeIcon: React.FC<SvgIconProps> = ({ size, color , style }) => (
278
+ <svg width="35" height="35" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
279
+ <path d="M0 14C0 6.26801 6.26801 0 14 0C21.732 0 28 6.26801 28 14C28 21.732 21.732 28 14 28C6.26801 28 0 21.732 0 14Z" fill="#1E3A8A"/>
280
+ <path d="M15.9993 7.33301H9.99935C9.64573 7.33301 9.30659 7.47348 9.05654 7.72353C8.80649 7.97358 8.66602 8.31272 8.66602 8.66634V19.333C8.66602 19.6866 8.80649 20.0258 9.05654 20.2758C9.30659 20.5259 9.64573 20.6663 9.99935 20.6663H17.9993C18.353 20.6663 18.6921 20.5259 18.9422 20.2758C19.1922 20.0258 19.3327 19.6866 19.3327 19.333V10.6663L15.9993 7.33301Z" stroke="#D8B4FE" strokeLinecap="round" strokeLinejoin="round"/>
281
+ <path d="M15.334 7.33301V9.99967C15.334 10.3533 15.4745 10.6924 15.7245 10.9425C15.9746 11.1925 16.3137 11.333 16.6673 11.333H19.334" stroke="#D8B4FE" strokeLinecap="round" strokeLinejoin="round"/>
282
+ <path d="M12.6673 12H11.334" stroke="#D8B4FE" strokeLinecap="round" strokeLinejoin="round"/>
283
+ <path d="M16.6673 14.667H11.334" stroke="#D8B4FE" strokeLinecap="round" strokeLinejoin="round"/>
284
+ <path d="M16.6673 17.333H11.334" stroke="#D8B4FE" strokeLinecap="round" strokeLinejoin="round"/>
285
+ </svg>
286
+ );
287
+
288
+ export const ApiNodeIcon: React.FC<SvgIconProps> = ({ size, color , style }) => (
289
+ <svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
290
+ <path d="M3.89167 3.92167L2.66667 2.68583M10.4242 3.92167L11.6492 2.68583M2.66583 11.7525L3.89083 10.5158M7.1575 2.27417V0.625M2.2575 7.21917H0.625M12.1875 12.155L15.3658 10.9C15.4425 10.8693 15.5083 10.8164 15.5546 10.748C15.6009 10.6796 15.6256 10.5988 15.6256 10.5162C15.6256 10.4337 15.6009 10.3529 15.5546 10.2845C15.5083 10.2161 15.4425 10.1632 15.3658 10.1325L7.72833 7.12C7.65398 7.09123 7.57285 7.08475 7.49488 7.10138C7.4169 7.118 7.34547 7.157 7.28931 7.21359C7.23316 7.27019 7.19472 7.34193 7.17871 7.42003C7.1627 7.49813 7.16981 7.57921 7.19917 7.65333L10.1842 15.3625C10.3192 15.7125 10.8092 15.7125 10.9442 15.3625L12.1875 12.155Z" stroke="#FCFAFF" strokeWidth="1.25" strokeLinecap="round" strokeLinejoin="round"/>
291
+ </svg>
292
+ );