-1
index.html
-1
index.html
···
5
5
<meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
<meta name="theme-color" content="#000000" />
7
7
<link rel="icon" type="image/svg+xml" href="/src/assets/logo.png" />
8
-
<script src="https://kit.fontawesome.com/9a203e5ff1.js" crossorigin="anonymous"></script>
9
8
<title>VRChat Photo Manager</title>
10
9
</head>
11
10
+1
public/icon/angle-down-solid.svg
+1
public/icon/angle-down-solid.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"/></svg>
+1
public/icon/angle-up-solid.svg
+1
public/icon/angle-up-solid.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z"/></svg>
+1
public/icon/arrow-left-solid.svg
+1
public/icon/arrow-left-solid.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"/></svg>
+1
public/icon/arrow-right-solid.svg
+1
public/icon/arrow-right-solid.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"/></svg>
+1
public/icon/arrows-rotate-solid.svg
+1
public/icon/arrows-rotate-solid.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H352c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V80c0-17.7-14.3-32-32-32s-32 14.3-32 32v35.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V432c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H160c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z"/></svg>
+1
public/icon/caret-down-solid.svg
+1
public/icon/caret-down-solid.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"/></svg>
+1
public/icon/check-solid.svg
+1
public/icon/check-solid.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"/></svg>
+1
public/icon/copy-solid.svg
+1
public/icon/copy-solid.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M208 0H332.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128h80v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z"/></svg>
+1
public/icon/minus-solid.svg
+1
public/icon/minus-solid.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"/></svg>
+1
public/icon/square-regular.svg
+1
public/icon/square-regular.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M384 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H384zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"/></svg>
+1
public/icon/trash-solid.svg
+1
public/icon/trash-solid.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>
+1
public/icon/x-solid.svg
+1
public/icon/x-solid.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z"/></svg>
+1
-1
src-tauri/Cargo.lock
+1
-1
src-tauri/Cargo.lock
+1
-1
src-tauri/Cargo.toml
+1
-1
src-tauri/Cargo.toml
+10
-2
src/Components/PhotoList.tsx
+10
-2
src/Components/PhotoList.tsx
···
493
493
</div>
494
494
</div>
495
495
496
-
<div class="scroll-to-top" ref={( el ) => scrollToTop = el} onClick={() => targetScroll = 0}><i class="fa-solid fa-angle-up"></i></div>
497
-
<div class="reload-photos" onClick={() => props.setConfirmationBox("Are you sure you want to reload all photos? This can cause the application to slow down while it is loading...", reloadPhotos)}><i class="fa-solid fa-arrows-rotate"></i></div>
496
+
<div class="scroll-to-top" ref={( el ) => scrollToTop = el} onClick={() => targetScroll = 0}>
497
+
<div class="icon">
498
+
<img draggable="false" src="/icon/angle-up-solid.svg"></img>
499
+
</div>
500
+
</div>
501
+
<div class="reload-photos" onClick={() => props.setConfirmationBox("Are you sure you want to reload all photos? This can cause the application to slow down while it is loading...", reloadPhotos)}>
502
+
<div class="icon" style={{ width: '17px' }}>
503
+
<img draggable="false" src="/icon/arrows-rotate-solid.svg"></img>
504
+
</div>
505
+
</div>
498
506
499
507
<canvas class="photo-container" ref={( el ) => photoContainer = el}></canvas>
500
508
<canvas class="photo-container-bg" ref={( el ) => photoContainerBG = el}></canvas>
+30
-7
src/Components/PhotoViewer.tsx
+30
-7
src/Components/PhotoViewer.tsx
···
275
275
276
276
return (
277
277
<div class="photo-viewer" ref={( el ) => viewer = el}>
278
-
<div class="viewer-close viewer-button" onClick={() => props.setCurrentPhotoView(null)}><i class="fa-solid fa-x"></i></div>
278
+
<div class="viewer-close viewer-button" onClick={() => props.setCurrentPhotoView(null)}>
279
+
<div class="icon" style={{ width: '10px', margin: '0' }}>
280
+
<img draggable="false" src="/icon/x-solid.svg"></img>
281
+
</div>
282
+
</div>
279
283
<div class="image-container" ref={( el ) => imageViewer = el}></div>
280
284
281
-
<div class="prev-button" onClick={() => props.setPhotoNavChoice('prev')}><i class="fa-solid fa-arrow-left"></i></div>
282
-
<div class="next-button" onClick={() => props.setPhotoNavChoice('next')}><i class="fa-solid fa-arrow-right"></i></div>
285
+
<div class="prev-button" onClick={() => props.setPhotoNavChoice('prev')}>
286
+
<div class="icon" style={{ width: '15px', margin: '0' }}>
287
+
<img draggable="false" src="/icon/arrow-left-solid.svg"></img>
288
+
</div>
289
+
</div>
290
+
291
+
<div class="next-button" onClick={() => props.setPhotoNavChoice('next')}>
292
+
<div class="icon" style={{ width: '15px', margin: '0' }}>
293
+
<img draggable="false" src="/icon/arrow-right-solid.svg"></img>
294
+
</div>
295
+
</div>
283
296
284
297
<div class="photo-tray" ref={( el ) => photoTray = el}></div>
285
298
286
299
<div class="photo-tray-close"
287
300
onClick={() => closeTray()}
288
301
ref={( el ) => photoTrayCloseBtn = el}
289
-
><i class="fa-solid fa-angle-down"></i></div>
302
+
>
303
+
<div class="icon" style={{ width: '12px', margin: '0' }}>
304
+
<img draggable="false" src="/icon/angle-down-solid.svg"></img>
305
+
</div>
306
+
</div>
290
307
291
308
<div class="control-buttons" ref={( el ) => photoControls = el}>
292
309
<div class="viewer-button"
···
327
344
});
328
345
}}
329
346
>
330
-
<i class="fa-solid fa-copy"></i>
347
+
<div class="icon" style={{ width: '12px', margin: '0' }}>
348
+
<img draggable="false" src="/icon/copy-solid.svg"></img>
349
+
</div>
331
350
</div>
332
351
<div class="viewer-button" style={{ width: '50px' }}
333
352
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '70px', height: '30px', 'margin-left': '10px', 'margin-right': '10px' })}
···
335
354
ref={( el ) => trayButton = el}
336
355
onClick={() => openTray()}
337
356
>
338
-
<i class="fa-solid fa-angle-up"></i>
357
+
<div class="icon" style={{ width: '12px', margin: '0' }}>
358
+
<img draggable="false" src="/icon/angle-up-solid.svg"></img>
359
+
</div>
339
360
</div>
340
361
<div class="viewer-button"
341
362
onMouseOver={( el ) => anime({ targets: el.currentTarget, width: '40px', height: '40px', 'margin-left': '15px', 'margin-right': '15px', 'margin-top': '-10px' })}
342
363
onMouseLeave={( el ) => anime({ targets: el.currentTarget, width: '30px', height: '30px', 'margin-left': '20px', 'margin-right': '20px', 'margin-top': '0px' })}
343
364
onClick={() => props.setConfirmationBox("Are you sure you want to delete this photo?", () => { invoke("delete_photo", { path: props.currentPhotoView().path, token: localStorage.getItem("token")! }); })}
344
365
>
345
-
<i class="fa-solid fa-trash"></i>
366
+
<div class="icon" style={{ width: '12px', margin: '0' }}>
367
+
<img draggable="false" src="/icon/trash-solid.svg"></img>
368
+
</div>
346
369
</div>
347
370
</div>
348
371
</div>
+14
-4
src/Components/SettingsMenu.tsx
+14
-4
src/Components/SettingsMenu.tsx
···
212
212
213
213
<label for="start-in-bg-check">
214
214
<div class="selection-box">
215
-
<i class="fa-solid fa-check"></i>
215
+
<div class="icon" style={{ width: '10px', margin: '0', display: 'inline-flex' }}>
216
+
<img draggable="false" src="/icon/check-solid.svg"></img>
217
+
</div>
216
218
</div>
217
219
</label>
218
220
</div>
···
233
235
234
236
<label for="start-with-win-check">
235
237
<div class="selection-box">
236
-
<i class="fa-solid fa-check"></i>
238
+
<div class="icon" style={{ width: '10px', margin: '0', display: 'inline-flex' }}>
239
+
<img draggable="false" src="/icon/check-solid.svg"></img>
240
+
</div>
237
241
</div>
238
242
</label>
239
243
</div>
···
258
262
259
263
<label for="transparent-check">
260
264
<div class="selection-box">
261
-
<i class="fa-solid fa-check"></i>
265
+
<div class="icon" style={{ width: '10px', margin: '0', display: 'inline-flex' }}>
266
+
<img draggable="false" src="/icon/check-solid.svg"></img>
267
+
</div>
262
268
</div>
263
269
</label>
264
270
</div>
···
337
343
<div class="account-profile">
338
344
<div class="account-pfp" style={{ background: `url('https://cdn.phazed.xyz/id/avatars/${props.loggedIn().id}/${props.loggedIn().avatar}.png')` }}></div>
339
345
<div class="account-desc">
340
-
<div class="reload-photos" onClick={() => refreshAccount()} style={{ opacity: 1 }}><i class="fa-solid fa-arrows-rotate"></i></div>
346
+
<div class="reload-photos" onClick={() => refreshAccount()} style={{ opacity: 1 }}>
347
+
<div class="icon" style={{ width: '17px' }}>
348
+
<img draggable="false" src="/icon/arrows-rotate-solid.svg"></img>
349
+
</div>
350
+
</div>
341
351
<h2>{ props.loggedIn().username }</h2>
342
352
343
353
<Show when={props.storageInfo().sync}>
+17
-3
src/styles.css
+17
-3
src/styles.css
···
68
68
align-items: center;
69
69
}
70
70
71
-
.control-lights i{
71
+
.control-lights .light{
72
72
font-size: 20px;
73
73
text-align: center;
74
74
color: white;
···
78
78
justify-content: center;
79
79
align-items: center;
80
80
height: 50px;
81
+
filter: invert(100%);
81
82
}
82
83
83
-
.control-lights i:hover{
84
-
background: #0005;
84
+
.control-lights .light:hover{
85
+
background: #fff5;
86
+
}
87
+
88
+
.control-lights .light img{
89
+
width: 25%;
90
+
}
91
+
92
+
.icon{
93
+
width: 15px;
94
+
filter: invert(100%);
95
+
display: flex;
96
+
align-items: center;
97
+
justify-content: center;
98
+
height: 100%;
85
99
}
86
100
87
101
.user-pfp{