radtools 0.1.0
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/README.md +108 -0
- package/bin/radtools.js +5 -0
- package/dist/cli/index.js +427 -0
- package/package.json +55 -0
- package/templates/api-routes/assets/optimize/route.ts +94 -0
- package/templates/api-routes/assets/route.ts +159 -0
- package/templates/api-routes/components/create-folder/route.ts +55 -0
- package/templates/api-routes/components/route.ts +156 -0
- package/templates/api-routes/fonts/route.ts +96 -0
- package/templates/api-routes/fonts/upload/route.ts +79 -0
- package/templates/api-routes/read-css/route.ts +29 -0
- package/templates/api-routes/write-css/route.ts +423 -0
- package/templates/components/Rad_os/AppWindow.tsx +423 -0
- package/templates/components/Rad_os/MobileAppModal.tsx +76 -0
- package/templates/components/Rad_os/WindowTitleBar.tsx +290 -0
- package/templates/components/icons/Icon.tsx +224 -0
- package/templates/components/icons/README.md +85 -0
- package/templates/components/icons/index.ts +20 -0
- package/templates/components/icons.tsx +164 -0
- package/templates/components/ui/Accordion.tsx +268 -0
- package/templates/components/ui/Alert.tsx +111 -0
- package/templates/components/ui/Badge.tsx +87 -0
- package/templates/components/ui/Breadcrumbs.tsx +88 -0
- package/templates/components/ui/Button.tsx +249 -0
- package/templates/components/ui/Card.tsx +137 -0
- package/templates/components/ui/Checkbox.tsx +137 -0
- package/templates/components/ui/ContextMenu.tsx +220 -0
- package/templates/components/ui/Dialog.tsx +264 -0
- package/templates/components/ui/Divider.tsx +70 -0
- package/templates/components/ui/DropdownMenu.tsx +301 -0
- package/templates/components/ui/HelpPanel.tsx +119 -0
- package/templates/components/ui/Input.tsx +176 -0
- package/templates/components/ui/Popover.tsx +211 -0
- package/templates/components/ui/Progress.tsx +158 -0
- package/templates/components/ui/Select.tsx +134 -0
- package/templates/components/ui/Sheet.tsx +316 -0
- package/templates/components/ui/Slider.tsx +223 -0
- package/templates/components/ui/Switch.tsx +155 -0
- package/templates/components/ui/Tabs.tsx +253 -0
- package/templates/components/ui/Toast.tsx +192 -0
- package/templates/components/ui/Tooltip.tsx +129 -0
- package/templates/components/ui/hooks/useModalBehavior.ts +66 -0
- package/templates/components/ui/index.ts +84 -0
- package/templates/devtools/DevToolsPanel.tsx +261 -0
- package/templates/devtools/DevToolsProvider.tsx +43 -0
- package/templates/devtools/components/BreakpointIndicator.tsx +49 -0
- package/templates/devtools/components/ColorPicker.tsx +33 -0
- package/templates/devtools/components/ComponentsSecondaryNav.tsx +44 -0
- package/templates/devtools/components/ContextualFooter.tsx +56 -0
- package/templates/devtools/components/DraggablePanel.tsx +43 -0
- package/templates/devtools/components/PrimaryNavigationFooter.tsx +254 -0
- package/templates/devtools/components/SearchableColorDropdown.tsx +253 -0
- package/templates/devtools/components/SecondaryNavigation.tsx +36 -0
- package/templates/devtools/components/TokenDropdown.tsx +47 -0
- package/templates/devtools/components/TypographyFooter.tsx +145 -0
- package/templates/devtools/hooks/useMockState.ts +16 -0
- package/templates/devtools/index.ts +17 -0
- package/templates/devtools/lib/componentScanner.ts +78 -0
- package/templates/devtools/lib/cssParser.ts +465 -0
- package/templates/devtools/lib/searchIndexes.ts +45 -0
- package/templates/devtools/lib/selectorGenerator.ts +86 -0
- package/templates/devtools/store/index.ts +66 -0
- package/templates/devtools/store/slices/assetsSlice.ts +106 -0
- package/templates/devtools/store/slices/componentsSlice.ts +59 -0
- package/templates/devtools/store/slices/mockStatesSlice.ts +77 -0
- package/templates/devtools/store/slices/panelSlice.ts +17 -0
- package/templates/devtools/store/slices/typographySlice.ts +538 -0
- package/templates/devtools/store/slices/variablesSlice.ts +167 -0
- package/templates/devtools/tabs/AssetsTab/AssetGrid.tsx +76 -0
- package/templates/devtools/tabs/AssetsTab/FolderTree.tsx +53 -0
- package/templates/devtools/tabs/AssetsTab/UploadDropzone.tsx +76 -0
- package/templates/devtools/tabs/AssetsTab/index.tsx +182 -0
- package/templates/devtools/tabs/ComponentsTab/AddTabButton.tsx +63 -0
- package/templates/devtools/tabs/ComponentsTab/ComponentList.tsx +153 -0
- package/templates/devtools/tabs/ComponentsTab/DesignSystemTab.tsx +1515 -0
- package/templates/devtools/tabs/ComponentsTab/DynamicFolderTab.tsx +113 -0
- package/templates/devtools/tabs/ComponentsTab/PropDisplay.tsx +55 -0
- package/templates/devtools/tabs/ComponentsTab/index.tsx +167 -0
- package/templates/devtools/tabs/ComponentsTab/previews/.gitkeep +4 -0
- package/templates/devtools/tabs/ComponentsTab/previews/Rad_os.tsx +262 -0
- package/templates/devtools/tabs/ComponentsTab/tabConfig.ts +53 -0
- package/templates/devtools/tabs/MockStatesTab/index.tsx +29 -0
- package/templates/devtools/tabs/TypographyTab/FontManager.tsx +421 -0
- package/templates/devtools/tabs/TypographyTab/TypographyStylesDisplay.tsx +290 -0
- package/templates/devtools/tabs/TypographyTab/index.tsx +98 -0
- package/templates/devtools/tabs/VariablesTab/BaseColorEditor.tsx +267 -0
- package/templates/devtools/tabs/VariablesTab/BorderRadiusEditor.tsx +37 -0
- package/templates/devtools/tabs/VariablesTab/ColorModeSelector.tsx +235 -0
- package/templates/devtools/tabs/VariablesTab/index.tsx +100 -0
- package/templates/devtools/types/index.ts +99 -0
- package/templates/globals.css +574 -0
- package/templates/hooks/index.ts +1 -0
- package/templates/hooks/useWindowManager.ts +212 -0
- package/templates/public/assets/icons/avatar.svg +18 -0
- package/templates/public/assets/icons/checkmark-filled.svg +14 -0
- package/templates/public/assets/icons/checkmark.svg +14 -0
- package/templates/public/assets/icons/chevron-down.svg +14 -0
- package/templates/public/assets/icons/close.svg +14 -0
- package/templates/public/assets/icons/copy.svg +14 -0
- package/templates/public/assets/icons/download.svg +14 -0
- package/templates/public/assets/icons/expand.svg +31 -0
- package/templates/public/assets/icons/file-blank.svg +17 -0
- package/templates/public/assets/icons/file-image.svg +19 -0
- package/templates/public/assets/icons/file-written.svg +17 -0
- package/templates/public/assets/icons/folder-closed.svg +17 -0
- package/templates/public/assets/icons/folder-open.svg +17 -0
- package/templates/public/assets/icons/hamburger.svg +18 -0
- package/templates/public/assets/icons/home-outline.svg +28 -0
- package/templates/public/assets/icons/home.svg +30 -0
- package/templates/public/assets/icons/hourglass.svg +25 -0
- package/templates/public/assets/icons/information-circle.svg +14 -0
- package/templates/public/assets/icons/information.svg +17 -0
- package/templates/public/assets/icons/lightning.svg +14 -0
- package/templates/public/assets/icons/locked.svg +17 -0
- package/templates/public/assets/icons/not-allowed.svg +14 -0
- package/templates/public/assets/icons/plus.svg +5 -0
- package/templates/public/assets/icons/power-thin.svg +17 -0
- package/templates/public/assets/icons/power.svg +17 -0
- package/templates/public/assets/icons/question-block.svg +14 -0
- package/templates/public/assets/icons/question.svg +17 -0
- package/templates/public/assets/icons/refresh-block.svg +14 -0
- package/templates/public/assets/icons/refresh.svg +17 -0
- package/templates/public/assets/icons/save.svg +14 -0
- package/templates/public/assets/icons/search.svg +25 -0
- package/templates/public/assets/icons/settings.svg +14 -0
- package/templates/public/assets/icons/trash-full.svg +21 -0
- package/templates/public/assets/icons/trash-open.svg +23 -0
- package/templates/public/assets/icons/trash.svg +18 -0
- package/templates/public/assets/icons/unlocked.svg +17 -0
- package/templates/public/assets/icons/waring-triangle-filled.svg +17 -0
- package/templates/public/assets/icons/warning-triangle-filled-2.svg +30 -0
- package/templates/public/assets/icons/warning-triangle-lines.svg +29 -0
- package/templates/public/assets/icons/wrench.svg +17 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useState, useCallback, useMemo } from 'react';
|
|
4
|
+
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// Types
|
|
7
|
+
// ============================================================================
|
|
8
|
+
|
|
9
|
+
interface WindowPosition {
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface WindowSize {
|
|
15
|
+
width: string;
|
|
16
|
+
height: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
interface WindowState {
|
|
20
|
+
id: string;
|
|
21
|
+
isOpen: boolean;
|
|
22
|
+
isMinimized: boolean;
|
|
23
|
+
position: WindowPosition;
|
|
24
|
+
size: WindowSize;
|
|
25
|
+
zIndex: number;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface WindowManagerState {
|
|
29
|
+
windows: Map<string, WindowState>;
|
|
30
|
+
topZIndex: number;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// ============================================================================
|
|
34
|
+
// Hook
|
|
35
|
+
// ============================================================================
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Hook for managing window state in a desktop-like interface
|
|
39
|
+
*
|
|
40
|
+
* Provides:
|
|
41
|
+
* - Window open/close state
|
|
42
|
+
* - Position tracking
|
|
43
|
+
* - Size tracking
|
|
44
|
+
* - Z-index management for focus
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* const { openWindow, closeWindow, focusWindow, getWindowState } = useWindowManager();
|
|
48
|
+
*/
|
|
49
|
+
export function useWindowManager() {
|
|
50
|
+
const [state, setState] = useState<WindowManagerState>({
|
|
51
|
+
windows: new Map(),
|
|
52
|
+
topZIndex: 100,
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// Get window state by ID
|
|
56
|
+
const getWindowState = useCallback((id: string): WindowState | undefined => {
|
|
57
|
+
return state.windows.get(id);
|
|
58
|
+
}, [state.windows]);
|
|
59
|
+
|
|
60
|
+
// Open a window
|
|
61
|
+
const openWindow = useCallback((
|
|
62
|
+
id: string,
|
|
63
|
+
options?: {
|
|
64
|
+
position?: WindowPosition;
|
|
65
|
+
size?: WindowSize;
|
|
66
|
+
}
|
|
67
|
+
) => {
|
|
68
|
+
setState(prev => {
|
|
69
|
+
const newWindows = new Map(prev.windows);
|
|
70
|
+
const newZIndex = prev.topZIndex + 1;
|
|
71
|
+
|
|
72
|
+
newWindows.set(id, {
|
|
73
|
+
id,
|
|
74
|
+
isOpen: true,
|
|
75
|
+
isMinimized: false,
|
|
76
|
+
position: options?.position || { x: 100, y: 50 },
|
|
77
|
+
size: options?.size || { width: '900px', height: '700px' },
|
|
78
|
+
zIndex: newZIndex,
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
return {
|
|
82
|
+
windows: newWindows,
|
|
83
|
+
topZIndex: newZIndex,
|
|
84
|
+
};
|
|
85
|
+
});
|
|
86
|
+
}, []);
|
|
87
|
+
|
|
88
|
+
// Close a window
|
|
89
|
+
const closeWindow = useCallback((id: string) => {
|
|
90
|
+
setState(prev => {
|
|
91
|
+
const newWindows = new Map(prev.windows);
|
|
92
|
+
const windowState = newWindows.get(id);
|
|
93
|
+
|
|
94
|
+
if (windowState) {
|
|
95
|
+
newWindows.set(id, { ...windowState, isOpen: false });
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return { ...prev, windows: newWindows };
|
|
99
|
+
});
|
|
100
|
+
}, []);
|
|
101
|
+
|
|
102
|
+
// Focus a window (bring to front)
|
|
103
|
+
const focusWindow = useCallback((id: string) => {
|
|
104
|
+
setState(prev => {
|
|
105
|
+
const newWindows = new Map(prev.windows);
|
|
106
|
+
const windowState = newWindows.get(id);
|
|
107
|
+
|
|
108
|
+
if (windowState) {
|
|
109
|
+
const newZIndex = prev.topZIndex + 1;
|
|
110
|
+
newWindows.set(id, { ...windowState, zIndex: newZIndex });
|
|
111
|
+
return { windows: newWindows, topZIndex: newZIndex };
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return prev;
|
|
115
|
+
});
|
|
116
|
+
}, []);
|
|
117
|
+
|
|
118
|
+
// Update window position
|
|
119
|
+
const updateWindowPosition = useCallback((id: string, position: WindowPosition) => {
|
|
120
|
+
setState(prev => {
|
|
121
|
+
const newWindows = new Map(prev.windows);
|
|
122
|
+
const windowState = newWindows.get(id);
|
|
123
|
+
|
|
124
|
+
if (windowState) {
|
|
125
|
+
newWindows.set(id, { ...windowState, position });
|
|
126
|
+
} else {
|
|
127
|
+
// Auto-create window state if it doesn't exist
|
|
128
|
+
newWindows.set(id, {
|
|
129
|
+
id,
|
|
130
|
+
isOpen: true,
|
|
131
|
+
isMinimized: false,
|
|
132
|
+
position,
|
|
133
|
+
size: { width: '900px', height: '700px' },
|
|
134
|
+
zIndex: prev.topZIndex + 1,
|
|
135
|
+
});
|
|
136
|
+
return { windows: newWindows, topZIndex: prev.topZIndex + 1 };
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return { ...prev, windows: newWindows };
|
|
140
|
+
});
|
|
141
|
+
}, []);
|
|
142
|
+
|
|
143
|
+
// Update window size
|
|
144
|
+
const updateWindowSize = useCallback((id: string, size: WindowSize) => {
|
|
145
|
+
setState(prev => {
|
|
146
|
+
const newWindows = new Map(prev.windows);
|
|
147
|
+
const windowState = newWindows.get(id);
|
|
148
|
+
|
|
149
|
+
if (windowState) {
|
|
150
|
+
newWindows.set(id, { ...windowState, size });
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return { ...prev, windows: newWindows };
|
|
154
|
+
});
|
|
155
|
+
}, []);
|
|
156
|
+
|
|
157
|
+
// Minimize a window
|
|
158
|
+
const minimizeWindow = useCallback((id: string) => {
|
|
159
|
+
setState(prev => {
|
|
160
|
+
const newWindows = new Map(prev.windows);
|
|
161
|
+
const windowState = newWindows.get(id);
|
|
162
|
+
|
|
163
|
+
if (windowState) {
|
|
164
|
+
newWindows.set(id, { ...windowState, isMinimized: true });
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
return { ...prev, windows: newWindows };
|
|
168
|
+
});
|
|
169
|
+
}, []);
|
|
170
|
+
|
|
171
|
+
// Restore a minimized window
|
|
172
|
+
const restoreWindow = useCallback((id: string) => {
|
|
173
|
+
setState(prev => {
|
|
174
|
+
const newWindows = new Map(prev.windows);
|
|
175
|
+
const windowState = newWindows.get(id);
|
|
176
|
+
|
|
177
|
+
if (windowState) {
|
|
178
|
+
const newZIndex = prev.topZIndex + 1;
|
|
179
|
+
newWindows.set(id, { ...windowState, isMinimized: false, zIndex: newZIndex });
|
|
180
|
+
return { windows: newWindows, topZIndex: newZIndex };
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return prev;
|
|
184
|
+
});
|
|
185
|
+
}, []);
|
|
186
|
+
|
|
187
|
+
// Check if window is open
|
|
188
|
+
const isWindowOpen = useCallback((id: string): boolean => {
|
|
189
|
+
const windowState = state.windows.get(id);
|
|
190
|
+
return windowState?.isOpen ?? false;
|
|
191
|
+
}, [state.windows]);
|
|
192
|
+
|
|
193
|
+
// Get all open windows
|
|
194
|
+
const openWindows = useMemo(() => {
|
|
195
|
+
return Array.from(state.windows.values()).filter(w => w.isOpen);
|
|
196
|
+
}, [state.windows]);
|
|
197
|
+
|
|
198
|
+
return {
|
|
199
|
+
getWindowState,
|
|
200
|
+
openWindow,
|
|
201
|
+
closeWindow,
|
|
202
|
+
focusWindow,
|
|
203
|
+
minimizeWindow,
|
|
204
|
+
restoreWindow,
|
|
205
|
+
updateWindowPosition,
|
|
206
|
+
updateWindowSize,
|
|
207
|
+
isWindowOpen,
|
|
208
|
+
openWindows,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
export default useWindowManager;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<g>
|
|
13
|
+
<path class="st0" d="M13,3v-1H3v1h-1v10h1v1h3v-3h1v-1h-1v-2h-1v-4h1v-1h5v1h1v5h-1v2h-4v1h2v2h4v-1h1V3h-1Z"/>
|
|
14
|
+
<rect class="st0" x="8" y="6" width="1" height="1"/>
|
|
15
|
+
<rect class="st0" x="10" y="6" width="1" height="1"/>
|
|
16
|
+
</g>
|
|
17
|
+
</g>
|
|
18
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<path class="st0" d="M14,6v-2h-1v-1h-1v-1h-2v-1h-4v1h-2v1h-1v1h-1v2h-1v4h1v2h1v1h1v1h2v1h4v-1h2v-1h1v-1h1v-2h1v-4h-1ZM3,9v-1h2v1h2v-1h1v-1h1v-1h1v-1h2v2h-1v1h-1v1h-1v1h-1v1h-1v1h-2v-1h-1v-1h-1v-1Z"/>
|
|
13
|
+
</g>
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<path class="st0" d="M13,4h-1v1h-1v1h-1v1h-1v1h-1v1h-1v1h-2v-1h-1v-1h-2v2h1v1h1v1h1v1h2v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-2h-1Z"/>
|
|
13
|
+
</g>
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<path class="st0" d="M14,6h-1v1h-1v1h-1v1h-1v1h-1v1h-2v-1h-1v-1h-1v-1h-1v-1h-1v-1H1v2h1v1h1v1h1v1h1v1h1v1h1v1h2v-1h1v-1h1v-1h1v-1h1v-1h1v-1h1v-2h-1Z"/>
|
|
13
|
+
</g>
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<path class="st0" d="M12,3h-1v1h-1v1h-1v1h-2v-1h-1v-1h-1v-1h-2v2h1v1h1v1h1v2h-1v1h-1v1h-1v2h2v-1h1v-1h1v-1h2v1h1v1h1v1h2v-2h-1v-1h-1v-1h-1v-2h1v-1h1v-1h1v-2h-1Z"/>
|
|
13
|
+
</g>
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<path class="st0" d="M13,3H5v4h-3v7h9v-4h3V3h-1ZM10,11v2H3v-4h7v2ZM13,6v3h-2v-2h-5v-2h7v1Z"/>
|
|
13
|
+
</g>
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 20 24">
|
|
3
|
+
<defs>
|
|
4
|
+
<style>
|
|
5
|
+
.st0 {
|
|
6
|
+
fill: currentColor;
|
|
7
|
+
}
|
|
8
|
+
</style>
|
|
9
|
+
</defs>
|
|
10
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
11
|
+
<path class="st0" d="M11 0H9V2V4V6V8V10H7H5H3V12H5V14H7V16H9V18H11V16H13V14H15V12H17V10H15H13H11V8V6V4V2V0ZM0 24V22V20V18V16H2V18V20V22H4H6H8H10H12H14H16H18V20V18V16H20V18V20V22V24H18H16H14H12H10H8H6H4H2H0Z"/>
|
|
12
|
+
</g>
|
|
13
|
+
</svg>
|
|
14
|
+
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<g>
|
|
13
|
+
<path class="st0" d="M13,2h-4v2h2v1h1v2h2V2h-1Z"/>
|
|
14
|
+
<rect class="st0" x="3" y="3" width="1" height="1"/>
|
|
15
|
+
<rect class="st0" x="5" y="3" width="1" height="1"/>
|
|
16
|
+
<rect class="st0" x="7" y="3" width="1" height="1"/>
|
|
17
|
+
<rect class="st0" x="3" y="5" width="1" height="1"/>
|
|
18
|
+
<rect class="st0" x="10" y="5" width="1" height="1"/>
|
|
19
|
+
<rect class="st0" x="9" y="6" width="1" height="1"/>
|
|
20
|
+
<rect class="st0" x="3" y="7" width="1" height="1"/>
|
|
21
|
+
<rect class="st0" x="12" y="8" width="1" height="1"/>
|
|
22
|
+
<rect class="st0" x="6" y="9" width="1" height="1"/>
|
|
23
|
+
<path class="st0" d="M4,10v-1h-2v5h5v-2h-2v-1h-1v-1Z"/>
|
|
24
|
+
<rect class="st0" x="5" y="10" width="1" height="1"/>
|
|
25
|
+
<rect class="st0" x="12" y="10" width="1" height="1"/>
|
|
26
|
+
<rect class="st0" x="8" y="12" width="1" height="1"/>
|
|
27
|
+
<rect class="st0" x="10" y="12" width="1" height="1"/>
|
|
28
|
+
<rect class="st0" x="12" y="12" width="1" height="1"/>
|
|
29
|
+
</g>
|
|
30
|
+
</g>
|
|
31
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<g>
|
|
13
|
+
<rect class="st0" x="11" y="3" width="1" height="1"/>
|
|
14
|
+
<path class="st0" d="M12,4v1h-2v-2h1v-1H3v12h10V4h-1ZM12,7v6H4V3h5v3h3v1Z"/>
|
|
15
|
+
</g>
|
|
16
|
+
</g>
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<g>
|
|
13
|
+
<path class="st0" d="M12,4v-1h-1v-1h-1v3h3v-1h-1Z"/>
|
|
14
|
+
<path class="st0" d="M11,6h-2V2H3v12h10V6h-2ZM5,5v-1h2v2h-2v-1ZM12,11v1H4v-3h1v-1h1v-1h1v1h1v1h1v-1h1v1h1v1h1v1Z"/>
|
|
15
|
+
<rect class="st0" x="7" y="9" width="1" height="1"/>
|
|
16
|
+
<rect class="st0" x="6" y="10" width="1" height="1"/>
|
|
17
|
+
</g>
|
|
18
|
+
</g>
|
|
19
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<g>
|
|
13
|
+
<path class="st0" d="M12,4v-1h-1v-1h-1v3h3v-1h-1Z"/>
|
|
14
|
+
<path class="st0" d="M11,6h-2V2H3v12h10V6h-2ZM10,7h1v1h-6v-1h5ZM11,10h-6v-1h6v1ZM11,12h-6v-1h6v1ZM8,6h-3v-1h3v1Z"/>
|
|
15
|
+
</g>
|
|
16
|
+
</g>
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<g>
|
|
13
|
+
<path class="st0" d="M4,5h9v-1h-5v-1H2v3h1v-1h1Z"/>
|
|
14
|
+
<path class="st0" d="M13,6H3v1h-1v6h12v-7h-1Z"/>
|
|
15
|
+
</g>
|
|
16
|
+
</g>
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<g>
|
|
13
|
+
<path class="st0" d="M14,6H5v2h-1v2h-1v2h-1v1h10v-2h1v-2h1v-2h1v-1h-1Z"/>
|
|
14
|
+
<path class="st0" d="M2,10h1v-2h1v-2h1v-1h7v-1h-5v-1H1v9h1v-2Z"/>
|
|
15
|
+
</g>
|
|
16
|
+
</g>
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<g>
|
|
13
|
+
<path class="st0" d="M13,3H2v2h12v-2h-1Z"/>
|
|
14
|
+
<path class="st0" d="M12,7H2v2h12v-2h-2Z"/>
|
|
15
|
+
<path class="st0" d="M12,11H2v2h12v-2h-2Z"/>
|
|
16
|
+
</g>
|
|
17
|
+
</g>
|
|
18
|
+
</svg>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<g>
|
|
13
|
+
<path class="st0" d="M5,4v1h1v-2h3v-1h-5v1h1v1Z"/>
|
|
14
|
+
<path class="st0" d="M12,4V1h-2v3h2Z"/>
|
|
15
|
+
<path class="st0" d="M4,4v-1h-1v2h1v-1Z"/>
|
|
16
|
+
<path class="st0" d="M14,5h-1v2h1v-2Z"/>
|
|
17
|
+
<path class="st0" d="M3,6v-1h-1v2h1v-1Z"/>
|
|
18
|
+
<path class="st0" d="M6,7h1v-2h-1v2Z"/>
|
|
19
|
+
<path class="st0" d="M2,7h-1v2h1v-2Z"/>
|
|
20
|
+
<path class="st0" d="M14,7v1h-6v-1h-1v2h8v-2h-1Z"/>
|
|
21
|
+
<path class="st0" d="M6,8v-1h-1v-2h-1v2h-1v2h-1v3h2v-3h1v3h2v-3h-1v-1Z"/>
|
|
22
|
+
<rect class="st0" x="8" y="10" width="1" height="1"/>
|
|
23
|
+
<rect class="st0" x="11" y="10" width="1" height="1"/>
|
|
24
|
+
<path class="st0" d="M14,11v-1h-1v2h1v-1Z"/>
|
|
25
|
+
<path class="st0" d="M13,13H1v1h14v-1h-2Z"/>
|
|
26
|
+
</g>
|
|
27
|
+
</g>
|
|
28
|
+
</svg>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<g>
|
|
13
|
+
<path class="st0" d="M9,4v-1h-2v1h2Z"/>
|
|
14
|
+
<path class="st0" d="M5,5v-2h-2v3h1v-1h1Z"/>
|
|
15
|
+
<rect class="st0" x="6" y="4" width="1" height="1"/>
|
|
16
|
+
<rect class="st0" x="9" y="4" width="1" height="1"/>
|
|
17
|
+
<rect class="st0" x="5" y="5" width="1" height="1"/>
|
|
18
|
+
<rect class="st0" x="10" y="5" width="1" height="1"/>
|
|
19
|
+
<rect class="st0" x="4" y="6" width="1" height="1"/>
|
|
20
|
+
<rect class="st0" x="11" y="6" width="1" height="1"/>
|
|
21
|
+
<rect class="st0" x="3" y="7" width="1" height="1"/>
|
|
22
|
+
<rect class="st0" x="12" y="7" width="1" height="1"/>
|
|
23
|
+
<rect class="st0" x="2" y="8" width="1" height="1"/>
|
|
24
|
+
<path class="st0" d="M12,8h-1v-1h-1v-1h-1v-1h-2v1h-1v1h-1v1h-1v1h-1v5h4v-4h2v4h4v-5h-1v-1ZM6,12v1h-2v-2h2v1ZM12,12v1h-2v-2h2v1Z"/>
|
|
25
|
+
<rect class="st0" x="13" y="8" width="1" height="1"/>
|
|
26
|
+
<rect class="st0" x="1" y="9" width="1" height="1"/>
|
|
27
|
+
<rect class="st0" x="14" y="9" width="1" height="1"/>
|
|
28
|
+
</g>
|
|
29
|
+
</g>
|
|
30
|
+
</svg>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<g>
|
|
13
|
+
<path class="st0" d="M11,2h-7v1h8v-1h-1Z"/>
|
|
14
|
+
<path class="st0" d="M7,6v-1h-1v-1h-1v3h1v-1h1Z"/>
|
|
15
|
+
<rect class="st0" x="7" y="6" width="1" height="1"/>
|
|
16
|
+
<rect class="st0" x="6" y="7" width="1" height="1"/>
|
|
17
|
+
<path class="st0" d="M8,9h1v-1h1v-1h1v-3h-1v1h-2v1h1v1h-1v1h-1v1h1Z"/>
|
|
18
|
+
<rect class="st0" x="6" y="9" width="1" height="1"/>
|
|
19
|
+
<rect class="st0" x="9" y="9" width="1" height="1"/>
|
|
20
|
+
<path class="st0" d="M5,11v2h1v-3h-1v1Z"/>
|
|
21
|
+
<path class="st0" d="M10,12v1h1v-3h-1v2Z"/>
|
|
22
|
+
<path class="st0" d="M10,14h-6v1h8v-1h-2Z"/>
|
|
23
|
+
</g>
|
|
24
|
+
</g>
|
|
25
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<path class="st0" d="M13,6v-2h-1v-1h-2v-1h-4v1h-2v1h-1v2h-1v4h1v2h1v1h2v1h4v-1h2v-1h1v-2h1v-4h-1ZM7,5v-1h2v2h-2v-1ZM9,12h-2v-4h-1v-1h3v4h1v1h-1Z"/>
|
|
13
|
+
</g>
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<g>
|
|
13
|
+
<path class="st0" d="M9,3v-1h-2v1h-1v1h1v1h2v-1h1v-1h-1Z"/>
|
|
14
|
+
<path class="st0" d="M9,12v-5h-3v1h1v6h3v-1h-1v-1Z"/>
|
|
15
|
+
</g>
|
|
16
|
+
</g>
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<path class="st0" d="M11,2h-4v1h-1v2h-1v2h-1v2h4v1h-1v2h-1v2h1v-1h1v-1h1v-1h1v-1h1v-1h1v-2h-3v-1h1v-1h1v-1h1v-2h-1Z"/>
|
|
13
|
+
</g>
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<g>
|
|
13
|
+
<path class="st0" d="M6,6v-2h1v-1h2v1h1v3h1V3h-1v-1h-4v1h-1v4h1v-1Z"/>
|
|
14
|
+
<path class="st0" d="M12,8H3v5h1v1h8v-1h1v-5h-1ZM8,13v-1h-1v-2h2v3h-1Z"/>
|
|
15
|
+
</g>
|
|
16
|
+
</g>
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 16 16">
|
|
3
|
+
<!-- Generator: Adobe Illustrator 30.0.0, SVG Export Plug-In . SVG Version: 2.1.1 Build 123) -->
|
|
4
|
+
<defs>
|
|
5
|
+
<style>
|
|
6
|
+
.st0 {
|
|
7
|
+
fill: currentColor;
|
|
8
|
+
}
|
|
9
|
+
</style>
|
|
10
|
+
</defs>
|
|
11
|
+
<g id="Layer_1" shape-rendering="crispEdges">
|
|
12
|
+
<path class="st0" d="M14,6v-2h-1v-1h-1v-1h-2v-1h-4v1h-2v1h-1v1h-1v2h-1v4h1v2h1v1h1v1h2v1h4v-1h2v-1h1v-1h1v-2h1v-4h-1ZM11,12h-1v-1h-1v-1h-2v1h-1v1h-2v-2h1v-1h1v-2h-1v-1h-1v-2h2v1h1v1h2v-1h1v-1h2v2h-1v1h-1v2h1v1h1v2h-1Z"/>
|
|
13
|
+
</g>
|
|
14
|
+
</svg>
|