@lijian-ui/dsh-file-manager 0.2.2 → 0.2.4
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/LICENSE +38 -38
- package/README.i18n.yaml +6 -6
- package/README.md +66 -66
- package/README.zh.md +66 -66
- package/cordis.patch.yml +13 -13
- package/lib/client.js +27354 -355
- package/lib/client.js.map +1 -1
- package/lib/index.js +474 -42
- package/lib/tsconfig.client.tsbuildinfo +1 -1
- package/lib/tsconfig.host.tsbuildinfo +1 -1
- package/lib/types/client/file-source.d.ts +10 -0
- package/lib/types/client/file-source.d.ts.map +1 -1
- package/lib/types/client/fileType.d.ts +19 -4
- package/lib/types/client/fileType.d.ts.map +1 -1
- package/lib/types/client/index.d.ts +0 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/locales.d.ts +3 -0
- package/lib/types/client/locales.d.ts.map +1 -1
- package/lib/types/client/mount.d.ts +1 -1
- package/lib/types/client/mount.d.ts.map +1 -1
- package/lib/types/client/picker/FilePickerModal.d.ts +8 -6
- package/lib/types/client/picker/FilePickerModal.d.ts.map +1 -1
- package/lib/types/client/preview/PreviewPanel.d.ts +2 -1
- package/lib/types/client/preview/PreviewPanel.d.ts.map +1 -1
- package/lib/types/client/preview/PreviewToolbar.d.ts +3 -1
- package/lib/types/client/preview/PreviewToolbar.d.ts.map +1 -1
- package/lib/types/client/preview/content.d.ts +3 -1
- package/lib/types/client/preview/content.d.ts.map +1 -1
- package/lib/types/client/preview/office.d.ts +23 -0
- package/lib/types/client/preview/office.d.ts.map +1 -0
- package/lib/types/client/reference.d.ts +23 -10
- package/lib/types/client/reference.d.ts.map +1 -1
- package/lib/types/client/store.d.ts.map +1 -1
- package/lib/types/host/fs-service.d.ts.map +1 -1
- package/lib/types/host/office-preview.d.ts +13 -0
- package/lib/types/host/office-preview.d.ts.map +1 -0
- package/lib/types/host/routes.d.ts.map +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/package.json +19 -4
- package/src/client/DockItem.tsx +1 -1
- package/src/client/FileManagerSettingsCard.tsx +117 -117
- package/src/client/PluginSettingsCard.tsx +337 -337
- package/src/client/chat/file-ref.ts +144 -144
- package/src/client/chat/mermaid-chat.tsx +102 -102
- package/src/client/chat/placeholder-hint.tsx +46 -46
- package/src/client/components/ExplorerPanel.tsx +534 -534
- package/src/client/components/FileIcon.tsx +46 -46
- package/src/client/components/ScmPanel.tsx +480 -480
- package/src/client/components/a11y.ts +20 -20
- package/src/client/components/icons.tsx +274 -274
- package/src/client/components/overlay.tsx +225 -225
- package/src/client/drag/DragFileInlay.tsx +89 -89
- package/src/client/drag/file-drag.ts +67 -67
- package/src/client/drag.ts +154 -154
- package/src/client/file-source.ts +34 -0
- package/src/client/fileType.ts +32 -5
- package/src/client/hooks/useResizableSplit.ts +91 -91
- package/src/client/hooks/useStore.ts +15 -15
- package/src/client/index.ts +45 -17
- package/src/client/layout.ts +523 -523
- package/src/client/locales.ts +6 -0
- package/src/client/maximize.ts +34 -34
- package/src/client/mount.tsx +2 -1
- package/src/client/persist.ts +194 -194
- package/src/client/picker/FilePickerModal.tsx +526 -507
- package/src/client/picker/file-picker.ts +86 -86
- package/src/client/preview/PreviewPanel.tsx +8 -1
- package/src/client/preview/PreviewTabs.tsx +159 -159
- package/src/client/preview/PreviewToolbar.tsx +3 -2
- package/src/client/preview/content.tsx +7 -2
- package/src/client/preview/markdown.ts +351 -351
- package/src/client/preview/mermaid.ts +274 -274
- package/src/client/preview/office.tsx +321 -0
- package/src/client/reference.ts +62 -8
- package/src/client/settings-card.module.css +316 -316
- package/src/client/settings-form.ts +451 -451
- package/src/client/store.ts +17 -12
- package/src/client/styles/drag.module.css +30 -30
- package/src/client/styles/explorer.module.css +371 -371
- package/src/client/styles/picker.module.css +344 -344
- package/src/client/styles/preview.module.css +18 -11
- package/src/client/styles/scm.module.css +380 -380
- package/src/client/styles/tokens.module.css +376 -367
- package/src/core/types.ts +162 -162
- package/src/host/fs-service.ts +7 -1
- package/src/host/gate.ts +73 -73
- package/src/host/git-runner.ts +116 -116
- package/src/host/git-service.ts +395 -395
- package/src/host/loopback.ts +63 -63
- package/src/host/office-preview.ts +399 -0
- package/src/host/poll-guard.ts +109 -109
- package/src/host/routes.ts +72 -1
- package/src/index.ts +3 -1
- package/src/mount-once.ts +48 -48
- package/lib/types/client/chat/AttachedFilesDock.d.ts +0 -51
- package/lib/types/client/chat/AttachedFilesDock.d.ts.map +0 -1
- package/lib/types/client/floating.d.ts +0 -27
- package/lib/types/client/floating.d.ts.map +0 -1
- package/lib/types/client/mention.d.ts +0 -44
- package/lib/types/client/mention.d.ts.map +0 -1
- package/src/client/styles/chip.module.css +0 -38
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import type { KeyboardEvent } from 'react'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Keyboard activation parity for focusable rows/divs styled as buttons
|
|
5
|
-
* (role="button" + tabIndex={0}): Enter and Space trigger the same action as
|
|
6
|
-
* a click, and events bubbling out of nested interactive elements (a row's
|
|
7
|
-
* inline action buttons, a tab's close control) are ignored so they never
|
|
8
|
-
* double-activate the row.
|
|
9
|
-
* @param handler - the activation handler (the element's click action).
|
|
10
|
-
* @returns a keydown handler for the focusable element.
|
|
11
|
-
*/
|
|
12
|
-
export function activateOnKey(handler: () => void) {
|
|
13
|
-
return (event: KeyboardEvent<HTMLElement>): void => {
|
|
14
|
-
if (event.target !== event.currentTarget) return
|
|
15
|
-
if (event.key === 'Enter' || event.key === ' ') {
|
|
16
|
-
event.preventDefault()
|
|
17
|
-
handler()
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
1
|
+
import type { KeyboardEvent } from 'react'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Keyboard activation parity for focusable rows/divs styled as buttons
|
|
5
|
+
* (role="button" + tabIndex={0}): Enter and Space trigger the same action as
|
|
6
|
+
* a click, and events bubbling out of nested interactive elements (a row's
|
|
7
|
+
* inline action buttons, a tab's close control) are ignored so they never
|
|
8
|
+
* double-activate the row.
|
|
9
|
+
* @param handler - the activation handler (the element's click action).
|
|
10
|
+
* @returns a keydown handler for the focusable element.
|
|
11
|
+
*/
|
|
12
|
+
export function activateOnKey(handler: () => void) {
|
|
13
|
+
return (event: KeyboardEvent<HTMLElement>): void => {
|
|
14
|
+
if (event.target !== event.currentTarget) return
|
|
15
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
16
|
+
event.preventDefault()
|
|
17
|
+
handler()
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -1,274 +1,274 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Inline 16px icon set for the panel surfaces (outline style, currentColor).
|
|
3
|
-
* No icon package is introduced; the set covers the explorer tree, SCM rows,
|
|
4
|
-
* and the preview toolbar/tabs with plain geometric shapes.
|
|
5
|
-
* @module dsh-filemgr/client/components/icons
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { JSX, SVGProps } from 'react'
|
|
9
|
-
|
|
10
|
-
interface IconProps {
|
|
11
|
-
size?: number
|
|
12
|
-
className?: string
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const base = (size: number): SVGProps<SVGSVGElement> => ({
|
|
16
|
-
width: size,
|
|
17
|
-
height: size,
|
|
18
|
-
viewBox: '0 0 16 16',
|
|
19
|
-
fill: 'none',
|
|
20
|
-
stroke: 'currentColor',
|
|
21
|
-
strokeWidth: 1.3,
|
|
22
|
-
strokeLinecap: 'round',
|
|
23
|
-
strokeLinejoin: 'round',
|
|
24
|
-
'aria-hidden': true,
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
export function FolderIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
28
|
-
return (
|
|
29
|
-
<svg {...base(size)} className={className}>
|
|
30
|
-
<path d="M2 3.5h4l1.5 2H14a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4.5a1 1 0 0 1 1-1Z" />
|
|
31
|
-
</svg>
|
|
32
|
-
)
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export function FolderOpenIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
36
|
-
return (
|
|
37
|
-
<svg {...base(size)} className={className}>
|
|
38
|
-
<path d="M2 3.5h4l1.5 2H14a1 1 0 0 1 1 1v1H3.5a1 1 0 0 0-.96.72L1 13.5V4.5a1 1 0 0 1 1-1Z" />
|
|
39
|
-
<path d="M2.8 11.5 4 7.5h11l-1.4 4a1 1 0 0 1-.96.72H3.76a1 1 0 0 1-.96-.72Z" />
|
|
40
|
-
</svg>
|
|
41
|
-
)
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export function FileIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
45
|
-
return (
|
|
46
|
-
<svg {...base(size)} className={className}>
|
|
47
|
-
<path d="M4 2h5l3 3v9H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1Z" />
|
|
48
|
-
<path d="M9 2v3h3" />
|
|
49
|
-
</svg>
|
|
50
|
-
)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export function FileCodeIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
54
|
-
return (
|
|
55
|
-
<svg {...base(size)} className={className}>
|
|
56
|
-
<path d="M4 2h5l3 3v9H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1Z" />
|
|
57
|
-
<path d="M9 2v3h3" />
|
|
58
|
-
<path d="m6.2 8.6-1.4 1.4 1.4 1.4M9.8 8.6l1.4 1.4-1.4 1.4" />
|
|
59
|
-
</svg>
|
|
60
|
-
)
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export function FileImageIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
64
|
-
return (
|
|
65
|
-
<svg {...base(size)} className={className}>
|
|
66
|
-
<path d="M4 2h5l3 3v9H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1Z" />
|
|
67
|
-
<path d="M9 2v3h3" />
|
|
68
|
-
<circle cx="6.2" cy="6.8" r="1" />
|
|
69
|
-
<path d="m5 11 1.8-1.8 1.4 1.4 1.3-1.3L12 12" />
|
|
70
|
-
</svg>
|
|
71
|
-
)
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export function FileTextIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
75
|
-
return (
|
|
76
|
-
<svg {...base(size)} className={className}>
|
|
77
|
-
<path d="M4 2h5l3 3v9H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1Z" />
|
|
78
|
-
<path d="M9 2v3h3" />
|
|
79
|
-
<path d="M6 9h4M6 11.2h4" />
|
|
80
|
-
</svg>
|
|
81
|
-
)
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export function ChevronRightIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
85
|
-
return (
|
|
86
|
-
<svg {...base(size)} className={className}>
|
|
87
|
-
<path d="m6 3.5 4.5 4.5L6 12.5" />
|
|
88
|
-
</svg>
|
|
89
|
-
)
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export function ChevronDownIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
93
|
-
return (
|
|
94
|
-
<svg {...base(size)} className={className}>
|
|
95
|
-
<path d="m3.5 6 4.5 4.5L12.5 6" />
|
|
96
|
-
</svg>
|
|
97
|
-
)
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export function CloseIcon({ size = 12, className }: IconProps): JSX.Element {
|
|
101
|
-
return (
|
|
102
|
-
<svg {...base(size)} className={className}>
|
|
103
|
-
<path d="m3.5 3.5 9 9M12.5 3.5l-9 9" />
|
|
104
|
-
</svg>
|
|
105
|
-
)
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export function PlusIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
109
|
-
return (
|
|
110
|
-
<svg {...base(size)} className={className}>
|
|
111
|
-
<path d="M8 3v10M3 8h10" />
|
|
112
|
-
</svg>
|
|
113
|
-
)
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export function MinusIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
117
|
-
return (
|
|
118
|
-
<svg {...base(size)} className={className}>
|
|
119
|
-
<path d="M3 8h10" />
|
|
120
|
-
</svg>
|
|
121
|
-
)
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
export function UndoIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
125
|
-
return (
|
|
126
|
-
<svg {...base(size)} className={className}>
|
|
127
|
-
<path d="M5 3.5 2.5 6 5 8.5" />
|
|
128
|
-
<path d="M2.5 6h8a3.5 3.5 0 0 1 0 7h-3" />
|
|
129
|
-
</svg>
|
|
130
|
-
)
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export function RefreshIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
134
|
-
return (
|
|
135
|
-
<svg {...base(size)} className={className}>
|
|
136
|
-
<path d="M13 8a5 5 0 1 1-1.6-3.65" />
|
|
137
|
-
<path d="M13.5 2v2.8h-2.8" />
|
|
138
|
-
</svg>
|
|
139
|
-
)
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
export function SplitIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
143
|
-
return (
|
|
144
|
-
<svg {...base(size)} className={className}>
|
|
145
|
-
<rect x="2" y="2.5" width="12" height="11" rx="1" />
|
|
146
|
-
<path d="M8 2.5v11" />
|
|
147
|
-
</svg>
|
|
148
|
-
)
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
export function CodeIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
152
|
-
return (
|
|
153
|
-
<svg {...base(size)} className={className}>
|
|
154
|
-
<path d="m5.5 4.5-4 3.5 4 3.5M10.5 4.5l4 3.5-4 3.5" />
|
|
155
|
-
</svg>
|
|
156
|
-
)
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
export function EyeIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
160
|
-
return (
|
|
161
|
-
<svg {...base(size)} className={className}>
|
|
162
|
-
<path d="M1.5 8s2.5-4.5 6.5-4.5S14.5 8 14.5 8 12 12.5 8 12.5 1.5 8 1.5 8Z" />
|
|
163
|
-
<circle cx="8" cy="8" r="2" />
|
|
164
|
-
</svg>
|
|
165
|
-
)
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export function SaveIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
169
|
-
return (
|
|
170
|
-
<svg {...base(size)} className={className}>
|
|
171
|
-
<path d="M3 2.5h8l2.5 2.5v8.5a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1Z" />
|
|
172
|
-
<path d="M5 2.5v3.5h4.5V2.5M5 13.5V9.5h6v4" />
|
|
173
|
-
</svg>
|
|
174
|
-
)
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
export function DownloadIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
178
|
-
return (
|
|
179
|
-
<svg {...base(size)} className={className}>
|
|
180
|
-
<path d="M8 2v7.5M4.5 6.5 8 10l3.5-3.5" />
|
|
181
|
-
<path d="M2.5 13h11" />
|
|
182
|
-
</svg>
|
|
183
|
-
)
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
export function ExternalIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
187
|
-
return (
|
|
188
|
-
<svg {...base(size)} className={className}>
|
|
189
|
-
<path d="M9 2.5h4.5V7" />
|
|
190
|
-
<path d="M13.5 2.5 7.5 8.5" />
|
|
191
|
-
<path d="M11.5 9v3.5a1 1 0 0 1-1 1H3.5a1 1 0 0 1-1-1V5.5a1 1 0 0 1 1-1H7" />
|
|
192
|
-
</svg>
|
|
193
|
-
)
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
export function SearchIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
197
|
-
return (
|
|
198
|
-
<svg {...base(size)} className={className}>
|
|
199
|
-
<circle cx="7" cy="7" r="4.5" />
|
|
200
|
-
<path d="m10.5 10.5 3 3" />
|
|
201
|
-
</svg>
|
|
202
|
-
)
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
export function BranchIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
206
|
-
return (
|
|
207
|
-
<svg {...base(size)} className={className}>
|
|
208
|
-
<circle cx="4" cy="3.5" r="1.5" />
|
|
209
|
-
<circle cx="4" cy="12.5" r="1.5" />
|
|
210
|
-
<circle cx="12" cy="6.5" r="1.5" />
|
|
211
|
-
<path d="M4 5v5M4 10.5c0-2 2-2.5 4-2.5s4-.5 4-1.5" />
|
|
212
|
-
</svg>
|
|
213
|
-
)
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
export function ListIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
217
|
-
return (
|
|
218
|
-
<svg {...base(size)} className={className}>
|
|
219
|
-
<path d="M2.5 4h11M2.5 8h11M2.5 12h11" />
|
|
220
|
-
</svg>
|
|
221
|
-
)
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
export function TreeIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
225
|
-
return (
|
|
226
|
-
<svg {...base(size)} className={className}>
|
|
227
|
-
<path d="M2.5 3.5h6M8.5 8h5M2.5 8h2" />
|
|
228
|
-
<path d="M6 3.5v7" />
|
|
229
|
-
<path d="M11 8v4.5h-2.5" />
|
|
230
|
-
</svg>
|
|
231
|
-
)
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
export function ShrinkIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
235
|
-
return (
|
|
236
|
-
<svg {...base(size)} className={className}>
|
|
237
|
-
<path d="M14 14 10 10M10 14v-4h4" />
|
|
238
|
-
<path d="M2 2l4 4M6 2v4H2" />
|
|
239
|
-
</svg>
|
|
240
|
-
)
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
export function ExpandRightIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
244
|
-
return (
|
|
245
|
-
<svg {...base(size)} className={className}>
|
|
246
|
-
<path d="M6 3.5 11.5 8 6 12.5" />
|
|
247
|
-
</svg>
|
|
248
|
-
)
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
export function EmptyFolderIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
252
|
-
return (
|
|
253
|
-
<svg {...base(size)} className={className}>
|
|
254
|
-
<path d="M2 3.5h4l1.5 2H14a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4.5a1 1 0 0 1 1-1Z" opacity="0.55" />
|
|
255
|
-
</svg>
|
|
256
|
-
)
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
export function MaximizeIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
260
|
-
return (
|
|
261
|
-
<svg {...base(size)} className={className}>
|
|
262
|
-
<rect x="3" y="3" width="10" height="10" rx="1" />
|
|
263
|
-
</svg>
|
|
264
|
-
)
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
export function RestoreIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
268
|
-
return (
|
|
269
|
-
<svg {...base(size)} className={className}>
|
|
270
|
-
<rect x="3" y="5" width="8" height="8" rx="1" />
|
|
271
|
-
<path d="M6.5 3.5h5a1 1 0 0 1 1 1V10" />
|
|
272
|
-
</svg>
|
|
273
|
-
)
|
|
274
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Inline 16px icon set for the panel surfaces (outline style, currentColor).
|
|
3
|
+
* No icon package is introduced; the set covers the explorer tree, SCM rows,
|
|
4
|
+
* and the preview toolbar/tabs with plain geometric shapes.
|
|
5
|
+
* @module dsh-filemgr/client/components/icons
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { JSX, SVGProps } from 'react'
|
|
9
|
+
|
|
10
|
+
interface IconProps {
|
|
11
|
+
size?: number
|
|
12
|
+
className?: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const base = (size: number): SVGProps<SVGSVGElement> => ({
|
|
16
|
+
width: size,
|
|
17
|
+
height: size,
|
|
18
|
+
viewBox: '0 0 16 16',
|
|
19
|
+
fill: 'none',
|
|
20
|
+
stroke: 'currentColor',
|
|
21
|
+
strokeWidth: 1.3,
|
|
22
|
+
strokeLinecap: 'round',
|
|
23
|
+
strokeLinejoin: 'round',
|
|
24
|
+
'aria-hidden': true,
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
export function FolderIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
28
|
+
return (
|
|
29
|
+
<svg {...base(size)} className={className}>
|
|
30
|
+
<path d="M2 3.5h4l1.5 2H14a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4.5a1 1 0 0 1 1-1Z" />
|
|
31
|
+
</svg>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function FolderOpenIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
36
|
+
return (
|
|
37
|
+
<svg {...base(size)} className={className}>
|
|
38
|
+
<path d="M2 3.5h4l1.5 2H14a1 1 0 0 1 1 1v1H3.5a1 1 0 0 0-.96.72L1 13.5V4.5a1 1 0 0 1 1-1Z" />
|
|
39
|
+
<path d="M2.8 11.5 4 7.5h11l-1.4 4a1 1 0 0 1-.96.72H3.76a1 1 0 0 1-.96-.72Z" />
|
|
40
|
+
</svg>
|
|
41
|
+
)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function FileIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
45
|
+
return (
|
|
46
|
+
<svg {...base(size)} className={className}>
|
|
47
|
+
<path d="M4 2h5l3 3v9H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1Z" />
|
|
48
|
+
<path d="M9 2v3h3" />
|
|
49
|
+
</svg>
|
|
50
|
+
)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function FileCodeIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
54
|
+
return (
|
|
55
|
+
<svg {...base(size)} className={className}>
|
|
56
|
+
<path d="M4 2h5l3 3v9H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1Z" />
|
|
57
|
+
<path d="M9 2v3h3" />
|
|
58
|
+
<path d="m6.2 8.6-1.4 1.4 1.4 1.4M9.8 8.6l1.4 1.4-1.4 1.4" />
|
|
59
|
+
</svg>
|
|
60
|
+
)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function FileImageIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
64
|
+
return (
|
|
65
|
+
<svg {...base(size)} className={className}>
|
|
66
|
+
<path d="M4 2h5l3 3v9H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1Z" />
|
|
67
|
+
<path d="M9 2v3h3" />
|
|
68
|
+
<circle cx="6.2" cy="6.8" r="1" />
|
|
69
|
+
<path d="m5 11 1.8-1.8 1.4 1.4 1.3-1.3L12 12" />
|
|
70
|
+
</svg>
|
|
71
|
+
)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function FileTextIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
75
|
+
return (
|
|
76
|
+
<svg {...base(size)} className={className}>
|
|
77
|
+
<path d="M4 2h5l3 3v9H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1Z" />
|
|
78
|
+
<path d="M9 2v3h3" />
|
|
79
|
+
<path d="M6 9h4M6 11.2h4" />
|
|
80
|
+
</svg>
|
|
81
|
+
)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function ChevronRightIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
85
|
+
return (
|
|
86
|
+
<svg {...base(size)} className={className}>
|
|
87
|
+
<path d="m6 3.5 4.5 4.5L6 12.5" />
|
|
88
|
+
</svg>
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export function ChevronDownIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
93
|
+
return (
|
|
94
|
+
<svg {...base(size)} className={className}>
|
|
95
|
+
<path d="m3.5 6 4.5 4.5L12.5 6" />
|
|
96
|
+
</svg>
|
|
97
|
+
)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function CloseIcon({ size = 12, className }: IconProps): JSX.Element {
|
|
101
|
+
return (
|
|
102
|
+
<svg {...base(size)} className={className}>
|
|
103
|
+
<path d="m3.5 3.5 9 9M12.5 3.5l-9 9" />
|
|
104
|
+
</svg>
|
|
105
|
+
)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export function PlusIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
109
|
+
return (
|
|
110
|
+
<svg {...base(size)} className={className}>
|
|
111
|
+
<path d="M8 3v10M3 8h10" />
|
|
112
|
+
</svg>
|
|
113
|
+
)
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function MinusIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
117
|
+
return (
|
|
118
|
+
<svg {...base(size)} className={className}>
|
|
119
|
+
<path d="M3 8h10" />
|
|
120
|
+
</svg>
|
|
121
|
+
)
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export function UndoIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
125
|
+
return (
|
|
126
|
+
<svg {...base(size)} className={className}>
|
|
127
|
+
<path d="M5 3.5 2.5 6 5 8.5" />
|
|
128
|
+
<path d="M2.5 6h8a3.5 3.5 0 0 1 0 7h-3" />
|
|
129
|
+
</svg>
|
|
130
|
+
)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export function RefreshIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
134
|
+
return (
|
|
135
|
+
<svg {...base(size)} className={className}>
|
|
136
|
+
<path d="M13 8a5 5 0 1 1-1.6-3.65" />
|
|
137
|
+
<path d="M13.5 2v2.8h-2.8" />
|
|
138
|
+
</svg>
|
|
139
|
+
)
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export function SplitIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
143
|
+
return (
|
|
144
|
+
<svg {...base(size)} className={className}>
|
|
145
|
+
<rect x="2" y="2.5" width="12" height="11" rx="1" />
|
|
146
|
+
<path d="M8 2.5v11" />
|
|
147
|
+
</svg>
|
|
148
|
+
)
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export function CodeIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
152
|
+
return (
|
|
153
|
+
<svg {...base(size)} className={className}>
|
|
154
|
+
<path d="m5.5 4.5-4 3.5 4 3.5M10.5 4.5l4 3.5-4 3.5" />
|
|
155
|
+
</svg>
|
|
156
|
+
)
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export function EyeIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
160
|
+
return (
|
|
161
|
+
<svg {...base(size)} className={className}>
|
|
162
|
+
<path d="M1.5 8s2.5-4.5 6.5-4.5S14.5 8 14.5 8 12 12.5 8 12.5 1.5 8 1.5 8Z" />
|
|
163
|
+
<circle cx="8" cy="8" r="2" />
|
|
164
|
+
</svg>
|
|
165
|
+
)
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export function SaveIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
169
|
+
return (
|
|
170
|
+
<svg {...base(size)} className={className}>
|
|
171
|
+
<path d="M3 2.5h8l2.5 2.5v8.5a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1Z" />
|
|
172
|
+
<path d="M5 2.5v3.5h4.5V2.5M5 13.5V9.5h6v4" />
|
|
173
|
+
</svg>
|
|
174
|
+
)
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export function DownloadIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
178
|
+
return (
|
|
179
|
+
<svg {...base(size)} className={className}>
|
|
180
|
+
<path d="M8 2v7.5M4.5 6.5 8 10l3.5-3.5" />
|
|
181
|
+
<path d="M2.5 13h11" />
|
|
182
|
+
</svg>
|
|
183
|
+
)
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
export function ExternalIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
187
|
+
return (
|
|
188
|
+
<svg {...base(size)} className={className}>
|
|
189
|
+
<path d="M9 2.5h4.5V7" />
|
|
190
|
+
<path d="M13.5 2.5 7.5 8.5" />
|
|
191
|
+
<path d="M11.5 9v3.5a1 1 0 0 1-1 1H3.5a1 1 0 0 1-1-1V5.5a1 1 0 0 1 1-1H7" />
|
|
192
|
+
</svg>
|
|
193
|
+
)
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export function SearchIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
197
|
+
return (
|
|
198
|
+
<svg {...base(size)} className={className}>
|
|
199
|
+
<circle cx="7" cy="7" r="4.5" />
|
|
200
|
+
<path d="m10.5 10.5 3 3" />
|
|
201
|
+
</svg>
|
|
202
|
+
)
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export function BranchIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
206
|
+
return (
|
|
207
|
+
<svg {...base(size)} className={className}>
|
|
208
|
+
<circle cx="4" cy="3.5" r="1.5" />
|
|
209
|
+
<circle cx="4" cy="12.5" r="1.5" />
|
|
210
|
+
<circle cx="12" cy="6.5" r="1.5" />
|
|
211
|
+
<path d="M4 5v5M4 10.5c0-2 2-2.5 4-2.5s4-.5 4-1.5" />
|
|
212
|
+
</svg>
|
|
213
|
+
)
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export function ListIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
217
|
+
return (
|
|
218
|
+
<svg {...base(size)} className={className}>
|
|
219
|
+
<path d="M2.5 4h11M2.5 8h11M2.5 12h11" />
|
|
220
|
+
</svg>
|
|
221
|
+
)
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export function TreeIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
225
|
+
return (
|
|
226
|
+
<svg {...base(size)} className={className}>
|
|
227
|
+
<path d="M2.5 3.5h6M8.5 8h5M2.5 8h2" />
|
|
228
|
+
<path d="M6 3.5v7" />
|
|
229
|
+
<path d="M11 8v4.5h-2.5" />
|
|
230
|
+
</svg>
|
|
231
|
+
)
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
export function ShrinkIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
235
|
+
return (
|
|
236
|
+
<svg {...base(size)} className={className}>
|
|
237
|
+
<path d="M14 14 10 10M10 14v-4h4" />
|
|
238
|
+
<path d="M2 2l4 4M6 2v4H2" />
|
|
239
|
+
</svg>
|
|
240
|
+
)
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
export function ExpandRightIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
244
|
+
return (
|
|
245
|
+
<svg {...base(size)} className={className}>
|
|
246
|
+
<path d="M6 3.5 11.5 8 6 12.5" />
|
|
247
|
+
</svg>
|
|
248
|
+
)
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export function EmptyFolderIcon({ size = 16, className }: IconProps): JSX.Element {
|
|
252
|
+
return (
|
|
253
|
+
<svg {...base(size)} className={className}>
|
|
254
|
+
<path d="M2 3.5h4l1.5 2H14a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4.5a1 1 0 0 1 1-1Z" opacity="0.55" />
|
|
255
|
+
</svg>
|
|
256
|
+
)
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
export function MaximizeIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
260
|
+
return (
|
|
261
|
+
<svg {...base(size)} className={className}>
|
|
262
|
+
<rect x="3" y="3" width="10" height="10" rx="1" />
|
|
263
|
+
</svg>
|
|
264
|
+
)
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
export function RestoreIcon({ size = 14, className }: IconProps): JSX.Element {
|
|
268
|
+
return (
|
|
269
|
+
<svg {...base(size)} className={className}>
|
|
270
|
+
<rect x="3" y="5" width="8" height="8" rx="1" />
|
|
271
|
+
<path d="M6.5 3.5h5a1 1 0 0 1 1 1V10" />
|
|
272
|
+
</svg>
|
|
273
|
+
)
|
|
274
|
+
}
|