@marcel91200 / caddy Mirror · read-only / commits / a306c5f7
Fork 0

Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

Mirrored from https://github.com/Slazee/caddy.git

Synced Nov 12, 22:00 UTC

fileserver: browse template SVG icons and UI tweaks (#5812)

* fileserver browse.html UI tweaks: folder-symlink icon, search fileserver browse.html UI tweaks: folder-symlink icon, search - ui - add folder-symlink SVG icon - search: use `<input type="search">` instead of `text` - fix npe with `sizebar.style.width` = null in grid mode * tabify whitespace Co-authored-by: Francis Lavoie <lavofr@gmail.com> --------- Co-authored-by: Francis Lavoie <lavofr@gmail.com>

glowinthedark committed Sep 16, 2023 at 03:05 UTC a306c5f769d876adf1f93d350c8a523b2c3fe760
1 file changed +227 -216
modules/caddyhttp/fileserver/browse.html
+227 -216
@@ -1,288 +1,296 @@
1 {{- define "icon"}}
2 {{- if .IsDir}}
3 - <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-folder-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
4 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
5 - <path d="M9 3a1 1 0 0 1 .608 .206l.1 .087l2.706 2.707h6.586a3 3 0 0 1 2.995 2.824l.005 .176v8a3 3 0 0 1 -2.824 2.995l-.176 .005h-14a3 3 0 0 1 -2.995 -2.824l-.005 -.176v-11a3 3 0 0 1 2.824 -2.995l.176 -.005h4z" stroke-width="0" fill="currentColor"></path>
6 - </svg>
3 + {{- if .IsSymlink}}
4 + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-folder-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
5 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
6 + <path d="M9 3a1 1 0 0 1 .608 .206l.1 .087l2.706 2.707h6.586a3 3 0 0 1 2.995 2.824l.005 .176v8a3 3 0 0 1 -2.824 2.995l-.176 .005h-14a3 3 0 0 1 -2.995 -2.824l-.005 -.176v-11a3 3 0 0 1 2.824 -2.995l.176 -.005h4z" stroke-width="0" fill="currentColor"/>
7 + <path fill="#000" d="M2.795 17.306c0-2.374 1.792-4.314 4.078-4.538v-1.104a.38.38 0 0 1 .651-.272l2.45 2.492a.132.132 0 0 1 0 .188l-2.45 2.492a.381.381 0 0 1-.651-.272V15.24c-1.889.297-3.436 1.39-3.817 3.26a2.809 2.809 0 0 1-.261-1.193Z" style="stroke-width:.127478"/>
8 + </svg>
9 + {{- else}}
10 + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-folder-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
11 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
12 + <path d="M9 3a1 1 0 0 1 .608 .206l.1 .087l2.706 2.707h6.586a3 3 0 0 1 2.995 2.824l.005 .176v8a3 3 0 0 1 -2.824 2.995l-.176 .005h-14a3 3 0 0 1 -2.995 -2.824l-.005 -.176v-11a3 3 0 0 1 2.824 -2.995l.176 -.005h4z" stroke-width="0" fill="currentColor"/>
13 + </svg>
14 + {{- end}}
15 {{- else if or (eq .Name "LICENSE") (eq .Name "README")}}
16 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-license" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
9 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
10 - <path d="M15 21h-9a3 3 0 0 1 -3 -3v-1h10v2a2 2 0 0 0 4 0v-14a2 2 0 1 1 2 2h-2m2 -4h-11a3 3 0 0 0 -3 3v11"></path>
11 - <path d="M9 7l4 0"></path>
12 - <path d="M9 11l4 0"></path>
17 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
18 + <path d="M15 21h-9a3 3 0 0 1 -3 -3v-1h10v2a2 2 0 0 0 4 0v-14a2 2 0 1 1 2 2h-2m2 -4h-11a3 3 0 0 0 -3 3v11"/>
19 + <path d="M9 7l4 0"/>
20 + <path d="M9 11l4 0"/>
21 </svg>
22 {{- else if .HasExt ".jpg" ".jpeg" ".png" ".gif" ".webp" ".tiff" ".bmp" ".heif" ".heic" ".svg"}}
23 {{- if eq .Tpl.Layout "grid"}}
24 <img loading="lazy" src="{{html .Name}}">
25 {{- else}}
26 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-photo" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
19 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
20 - <path d="M15 8h.01"></path>
21 - <path d="M3 6a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3v-12z"></path>
22 - <path d="M3 16l5 -5c.928 -.893 2.072 -.893 3 0l5 5"></path>
23 - <path d="M14 14l1 -1c.928 -.893 2.072 -.893 3 0l3 3"></path>
27 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
28 + <path d="M15 8h.01"/>
29 + <path d="M3 6a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3v-12z"/>
30 + <path d="M3 16l5 -5c.928 -.893 2.072 -.893 3 0l5 5"/>
31 + <path d="M14 14l1 -1c.928 -.893 2.072 -.893 3 0l3 3"/>
32 </svg>
33 {{- end}}
34 {{- else if .HasExt ".mp4" ".mov" ".mpeg" ".mpg" ".avi" ".ogg" ".webm" ".mkv" ".vob" ".gifv" ".3gp"}}
35 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-movie" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
28 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
29 - <path d="M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z"></path>
30 - <path d="M8 4l0 16"></path>
31 - <path d="M16 4l0 16"></path>
32 - <path d="M4 8l4 0"></path>
33 - <path d="M4 16l4 0"></path>
34 - <path d="M4 12l16 0"></path>
35 - <path d="M16 8l4 0"></path>
36 - <path d="M16 16l4 0"></path>
36 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
37 + <path d="M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z"/>
38 + <path d="M8 4l0 16"/>
39 + <path d="M16 4l0 16"/>
40 + <path d="M4 8l4 0"/>
41 + <path d="M4 16l4 0"/>
42 + <path d="M4 12l16 0"/>
43 + <path d="M16 8l4 0"/>
44 + <path d="M16 16l4 0"/>
45 </svg>
46 {{- else if .HasExt ".mp3" ".m4a" ".aac" ".ogg" ".flac" ".wav" ".wma" ".midi" ".cda"}}
47 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-music" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
40 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
41 - <path d="M6 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
42 - <path d="M16 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
43 - <path d="M9 17l0 -13l10 0l0 13"></path>
44 - <path d="M9 8l10 0"></path>
48 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
49 + <path d="M6 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"/>
50 + <path d="M16 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"/>
51 + <path d="M9 17l0 -13l10 0l0 13"/>
52 + <path d="M9 8l10 0"/>
53 </svg>
54 {{- else if .HasExt ".pdf"}}
55 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-type-pdf" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
48 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
49 - <path d="M14 3v4a1 1 0 0 0 1 1h4"></path>
50 - <path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4"></path>
51 - <path d="M5 18h1.5a1.5 1.5 0 0 0 0 -3h-1.5v6"></path>
52 - <path d="M17 18h2"></path>
53 - <path d="M20 15h-3v6"></path>
54 - <path d="M11 15v6h1a2 2 0 0 0 2 -2v-2a2 2 0 0 0 -2 -2h-1z"></path>
56 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
57 + <path d="M14 3v4a1 1 0 0 0 1 1h4"/>
58 + <path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4"/>
59 + <path d="M5 18h1.5a1.5 1.5 0 0 0 0 -3h-1.5v6"/>
60 + <path d="M17 18h2"/>
61 + <path d="M20 15h-3v6"/>
62 + <path d="M11 15v6h1a2 2 0 0 0 2 -2v-2a2 2 0 0 0 -2 -2h-1z"/>
63 </svg>
64 {{- else if .HasExt ".csv" ".tsv"}}
65 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-type-csv" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
58 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
59 - <path d="M14 3v4a1 1 0 0 0 1 1h4"></path>
60 - <path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4"></path>
61 - <path d="M7 16.5a1.5 1.5 0 0 0 -3 0v3a1.5 1.5 0 0 0 3 0"></path>
62 - <path d="M10 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75"></path>
63 - <path d="M16 15l2 6l2 -6"></path>
66 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
67 + <path d="M14 3v4a1 1 0 0 0 1 1h4"/>
68 + <path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4"/>
69 + <path d="M7 16.5a1.5 1.5 0 0 0 -3 0v3a1.5 1.5 0 0 0 3 0"/>
70 + <path d="M10 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75"/>
71 + <path d="M16 15l2 6l2 -6"/>
72 </svg>
73 {{- else if .HasExt ".txt" ".doc" ".docx" ".odt" ".fodt" ".rtf"}}
74 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-text" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
67 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
68 - <path d="M14 3v4a1 1 0 0 0 1 1h4"></path>
69 - <path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z"></path>
70 - <path d="M9 9l1 0"></path>
71 - <path d="M9 13l6 0"></path>
72 - <path d="M9 17l6 0"></path>
75 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
76 + <path d="M14 3v4a1 1 0 0 0 1 1h4"/>
77 + <path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z"/>
78 + <path d="M9 9l1 0"/>
79 + <path d="M9 13l6 0"/>
80 + <path d="M9 17l6 0"/>
81 </svg>
82 {{- else if .HasExt ".xls" ".xlsx" ".ods" ".fods"}}
83 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-spreadsheet" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
76 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
77 - <path d="M14 3v4a1 1 0 0 0 1 1h4"></path>
78 - <path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z"></path>
79 - <path d="M8 11h8v7h-8z"></path>
80 - <path d="M8 15h8"></path>
81 - <path d="M11 11v7"></path>
84 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
85 + <path d="M14 3v4a1 1 0 0 0 1 1h4"/>
86 + <path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z"/>
87 + <path d="M8 11h8v7h-8z"/>
88 + <path d="M8 15h8"/>
89 + <path d="M11 11v7"/>
90 </svg>
91 {{- else if .HasExt ".ppt" ".pptx" ".odp" ".fodp"}}
92 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-presentation-analytics" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
85 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
86 - <path d="M9 12v-4"></path>
87 - <path d="M15 12v-2"></path>
88 - <path d="M12 12v-1"></path>
89 - <path d="M3 4h18"></path>
90 - <path d="M4 4v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-10"></path>
91 - <path d="M12 16v4"></path>
92 - <path d="M9 20h6"></path>
93 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
94 + <path d="M9 12v-4"/>
95 + <path d="M15 12v-2"/>
96 + <path d="M12 12v-1"/>
97 + <path d="M3 4h18"/>
98 + <path d="M4 4v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-10"/>
99 + <path d="M12 16v4"/>
100 + <path d="M9 20h6"/>
101 </svg>
102 {{- else if .HasExt ".zip" ".gz" ".xz" ".tar" ".7z" ".rar" ".xz" ".zst"}}
103 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-zip" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
96 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
97 - <path d="M6 20.735a2 2 0 0 1 -1 -1.735v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-1"></path>
98 - <path d="M11 17a2 2 0 0 1 2 2v2a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-2a2 2 0 0 1 2 -2z"></path>
99 - <path d="M11 5l-1 0"></path>
100 - <path d="M13 7l-1 0"></path>
101 - <path d="M11 9l-1 0"></path>
102 - <path d="M13 11l-1 0"></path>
103 - <path d="M11 13l-1 0"></path>
104 - <path d="M13 15l-1 0"></path>
104 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
105 + <path d="M6 20.735a2 2 0 0 1 -1 -1.735v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-1"/>
106 + <path d="M11 17a2 2 0 0 1 2 2v2a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-2a2 2 0 0 1 2 -2z"/>
107 + <path d="M11 5l-1 0"/>
108 + <path d="M13 7l-1 0"/>
109 + <path d="M11 9l-1 0"/>
110 + <path d="M13 11l-1 0"/>
111 + <path d="M11 13l-1 0"/>
112 + <path d="M13 15l-1 0"/>
113 </svg>
114 {{- else if .HasExt ".deb" ".dpkg"}}
115 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-debian" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
108 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
109 - <path d="M12 17c-2.397 -.943 -4 -3.153 -4 -5.635c0 -2.19 1.039 -3.14 1.604 -3.595c2.646 -2.133 6.396 -.27 6.396 3.23c0 2.5 -2.905 2.121 -3.5 1.5c-.595 -.621 -1 -1.5 -.5 -2.5"></path>
110 - <path d="M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0"></path>
116 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
117 + <path d="M12 17c-2.397 -.943 -4 -3.153 -4 -5.635c0 -2.19 1.039 -3.14 1.604 -3.595c2.646 -2.133 6.396 -.27 6.396 3.23c0 2.5 -2.905 2.121 -3.5 1.5c-.595 -.621 -1 -1.5 -.5 -2.5"/>
118 + <path d="M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0"/>
119 </svg>
120 {{- else if .HasExt ".rpm" ".exe" ".flatpak" ".appimage" ".jar" ".msi" ".apk"}}
121 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-package" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
114 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
115 - <path d="M12 3l8 4.5l0 9l-8 4.5l-8 -4.5l0 -9l8 -4.5"></path>
116 - <path d="M12 12l8 -4.5"></path>
117 - <path d="M12 12l0 9"></path>
118 - <path d="M12 12l-8 -4.5"></path>
119 - <path d="M16 5.25l-8 4.5"></path>
122 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
123 + <path d="M12 3l8 4.5l0 9l-8 4.5l-8 -4.5l0 -9l8 -4.5"/>
124 + <path d="M12 12l8 -4.5"/>
125 + <path d="M12 12l0 9"/>
126 + <path d="M12 12l-8 -4.5"/>
127 + <path d="M16 5.25l-8 4.5"/>
128 </svg>
129 {{- else if .HasExt ".ps1"}}
130 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-powershell" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
123 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
124 - <path d="M4.887 20h11.868c.893 0 1.664 -.665 1.847 -1.592l2.358 -12c.212 -1.081 -.442 -2.14 -1.462 -2.366a1.784 1.784 0 0 0 -.385 -.042h-11.868c-.893 0 -1.664 .665 -1.847 1.592l-2.358 12c-.212 1.081 .442 2.14 1.462 2.366c.127 .028 .256 .042 .385 .042z"></path>
125 - <path d="M9 8l4 4l-6 4"></path>
126 - <path d="M12 16h3"></path>
131 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
132 + <path d="M4.887 20h11.868c.893 0 1.664 -.665 1.847 -1.592l2.358 -12c.212 -1.081 -.442 -2.14 -1.462 -2.366a1.784 1.784 0 0 0 -.385 -.042h-11.868c-.893 0 -1.664 .665 -1.847 1.592l-2.358 12c-.212 1.081 .442 2.14 1.462 2.366c.127 .028 .256 .042 .385 .042z"/>
133 + <path d="M9 8l4 4l-6 4"/>
134 + <path d="M12 16h3"/>
135 </svg>
136 {{- else if .HasExt ".py" ".pyc" ".pyo"}}
137 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-python" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
130 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
131 - <path d="M12 9h-7a2 2 0 0 0 -2 2v4a2 2 0 0 0 2 2h3"></path>
132 - <path d="M12 15h7a2 2 0 0 0 2 -2v-4a2 2 0 0 0 -2 -2h-3"></path>
133 - <path d="M8 9v-4a2 2 0 0 1 2 -2h4a2 2 0 0 1 2 2v5a2 2 0 0 1 -2 2h-4a2 2 0 0 0 -2 2v5a2 2 0 0 0 2 2h4a2 2 0 0 0 2 -2v-4"></path>
134 - <path d="M11 6l0 .01"></path>
135 - <path d="M13 18l0 .01"></path>
138 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
139 + <path d="M12 9h-7a2 2 0 0 0 -2 2v4a2 2 0 0 0 2 2h3"/>
140 + <path d="M12 15h7a2 2 0 0 0 2 -2v-4a2 2 0 0 0 -2 -2h-3"/>
141 + <path d="M8 9v-4a2 2 0 0 1 2 -2h4a2 2 0 0 1 2 2v5a2 2 0 0 1 -2 2h-4a2 2 0 0 0 -2 2v5a2 2 0 0 0 2 2h4a2 2 0 0 0 2 -2v-4"/>
142 + <path d="M11 6l0 .01"/>
143 + <path d="M13 18l0 .01"/>
144 </svg>
145 {{- else if .HasExt ".bash" ".sh" ".com" ".bat" ".dll" ".so"}}
146 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-script" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
139 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
140 - <path d="M17 20h-11a3 3 0 0 1 0 -6h11a3 3 0 0 0 0 6h1a3 3 0 0 0 3 -3v-11a2 2 0 0 0 -2 -2h-10a2 2 0 0 0 -2 2v8"></path>
147 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
148 + <path d="M17 20h-11a3 3 0 0 1 0 -6h11a3 3 0 0 0 0 6h1a3 3 0 0 0 3 -3v-11a2 2 0 0 0 -2 -2h-10a2 2 0 0 0 -2 2v8"/>
149 </svg>
150 {{- else if .HasExt ".dmg"}}
151 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-finder" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
144 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
145 - <path d="M3 4m0 1a1 1 0 0 1 1 -1h16a1 1 0 0 1 1 1v14a1 1 0 0 1 -1 1h-16a1 1 0 0 1 -1 -1z"></path>
146 - <path d="M7 8v1"></path>
147 - <path d="M17 8v1"></path>
148 - <path d="M12.5 4c-.654 1.486 -1.26 3.443 -1.5 9h2.5c-.19 2.867 .094 5.024 .5 7"></path>
149 - <path d="M7 15.5c3.667 2 6.333 2 10 0"></path>
152 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
153 + <path d="M3 4m0 1a1 1 0 0 1 1 -1h16a1 1 0 0 1 1 1v14a1 1 0 0 1 -1 1h-16a1 1 0 0 1 -1 -1z"/>
154 + <path d="M7 8v1"/>
155 + <path d="M17 8v1"/>
156 + <path d="M12.5 4c-.654 1.486 -1.26 3.443 -1.5 9h2.5c-.19 2.867 .094 5.024 .5 7"/>
157 + <path d="M7 15.5c3.667 2 6.333 2 10 0"/>
158 </svg>
159 {{- else if .HasExt ".iso" ".img"}}
160 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-disc" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
153 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
154 - <path d="M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0"></path>
155 - <path d="M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path>
156 - <path d="M7 12a5 5 0 0 1 5 -5"></path>
157 - <path d="M12 17a5 5 0 0 0 5 -5"></path>
161 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
162 + <path d="M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0"/>
163 + <path d="M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"/>
164 + <path d="M7 12a5 5 0 0 1 5 -5"/>
165 + <path d="M12 17a5 5 0 0 0 5 -5"/>
166 </svg>
167 {{- else if .HasExt ".md" ".mdown" ".markdown"}}
168 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-markdown" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
161 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
162 - <path d="M3 5m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z"></path>
163 - <path d="M7 15v-6l2 2l2 -2v6"></path>
164 - <path d="M14 13l2 2l2 -2m-2 2v-6"></path>
169 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
170 + <path d="M3 5m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z"/>
171 + <path d="M7 15v-6l2 2l2 -2v6"/>
172 + <path d="M14 13l2 2l2 -2m-2 2v-6"/>
173 </svg>
174 {{- else if .HasExt ".ttf" ".otf" ".woff" ".woff2" ".eof"}}
175 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-typography" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
168 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
169 - <path d="M14 3v4a1 1 0 0 0 1 1h4"></path>
170 - <path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z"></path>
171 - <path d="M11 18h2"></path>
172 - <path d="M12 18v-7"></path>
173 - <path d="M9 12v-1h6v1"></path>
176 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
177 + <path d="M14 3v4a1 1 0 0 0 1 1h4"/>
178 + <path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z"/>
179 + <path d="M11 18h2"/>
180 + <path d="M12 18v-7"/>
181 + <path d="M9 12v-1h6v1"/>
182 </svg>
183 {{- else if .HasExt ".go"}}
184 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-golang" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
177 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
178 - <path d="M15.695 14.305c1.061 1.06 2.953 .888 4.226 -.384c1.272 -1.273 1.444 -3.165 .384 -4.226c-1.061 -1.06 -2.953 -.888 -4.226 .384c-1.272 1.273 -1.444 3.165 -.384 4.226z"></path>
179 - <path d="M12.68 9.233c-1.084 -.497 -2.545 -.191 -3.591 .846c-1.284 1.273 -1.457 3.165 -.388 4.226c1.07 1.06 2.978 .888 4.261 -.384a3.669 3.669 0 0 0 1.038 -1.921h-2.427"></path>
180 - <path d="M5.5 15h-1.5"></path>
181 - <path d="M6 9h-2"></path>
182 - <path d="M5 12h-3"></path>
185 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
186 + <path d="M15.695 14.305c1.061 1.06 2.953 .888 4.226 -.384c1.272 -1.273 1.444 -3.165 .384 -4.226c-1.061 -1.06 -2.953 -.888 -4.226 .384c-1.272 1.273 -1.444 3.165 -.384 4.226z"/>
187 + <path d="M12.68 9.233c-1.084 -.497 -2.545 -.191 -3.591 .846c-1.284 1.273 -1.457 3.165 -.388 4.226c1.07 1.06 2.978 .888 4.261 -.384a3.669 3.669 0 0 0 1.038 -1.921h-2.427"/>
188 + <path d="M5.5 15h-1.5"/>
189 + <path d="M6 9h-2"/>
190 + <path d="M5 12h-3"/>
191 </svg>
192 {{- else if .HasExt ".html" ".htm"}}
193 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-type-html" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
186 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
187 - <path d="M14 3v4a1 1 0 0 0 1 1h4"></path>
188 - <path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4"></path>
189 - <path d="M2 21v-6"></path>
190 - <path d="M5 15v6"></path>
191 - <path d="M2 18h3"></path>
192 - <path d="M20 15v6h2"></path>
193 - <path d="M13 21v-6l2 3l2 -3v6"></path>
194 - <path d="M7.5 15h3"></path>
195 - <path d="M9 15v6"></path>
194 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
195 + <path d="M14 3v4a1 1 0 0 0 1 1h4"/>
196 + <path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4"/>
197 + <path d="M2 21v-6"/>
198 + <path d="M5 15v6"/>
199 + <path d="M2 18h3"/>
200 + <path d="M20 15v6h2"/>
201 + <path d="M13 21v-6l2 3l2 -3v6"/>
202 + <path d="M7.5 15h3"/>
203 + <path d="M9 15v6"/>
204 </svg>
205 {{- else if .HasExt ".js"}}
206 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-type-js" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
199 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
200 - <path d="M14 3v4a1 1 0 0 0 1 1h4"></path>
201 - <path d="M3 15h3v4.5a1.5 1.5 0 0 1 -3 0"></path>
202 - <path d="M9 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75"></path>
203 - <path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-1"></path>
207 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
208 + <path d="M14 3v4a1 1 0 0 0 1 1h4"/>
209 + <path d="M3 15h3v4.5a1.5 1.5 0 0 1 -3 0"/>
210 + <path d="M9 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75"/>
211 + <path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-1"/>
212 </svg>
213 {{- else if .HasExt ".css"}}
214 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-type-css" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
207 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
208 - <path d="M14 3v4a1 1 0 0 0 1 1h4"></path>
209 - <path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4"></path>
210 - <path d="M8 16.5a1.5 1.5 0 0 0 -3 0v3a1.5 1.5 0 0 0 3 0"></path>
211 - <path d="M11 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75"></path>
212 - <path d="M17 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75"></path>
215 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
216 + <path d="M14 3v4a1 1 0 0 0 1 1h4"/>
217 + <path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4"/>
218 + <path d="M8 16.5a1.5 1.5 0 0 0 -3 0v3a1.5 1.5 0 0 0 3 0"/>
219 + <path d="M11 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75"/>
220 + <path d="M17 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75"/>
221 </svg>
222 {{- else if .HasExt ".json" ".json5" ".jsonc"}}
223 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-json" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
216 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
217 - <path d="M20 16v-8l3 8v-8"></path>
218 - <path d="M15 8a2 2 0 0 1 2 2v4a2 2 0 1 1 -4 0v-4a2 2 0 0 1 2 -2z"></path>
219 - <path d="M1 8h3v6.5a1.5 1.5 0 0 1 -3 0v-.5"></path>
220 - <path d="M7 15a1 1 0 0 0 1 1h1a1 1 0 0 0 1 -1v-2a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1h1a1 1 0 0 1 1 1"></path>
224 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
225 + <path d="M20 16v-8l3 8v-8"/>
226 + <path d="M15 8a2 2 0 0 1 2 2v4a2 2 0 1 1 -4 0v-4a2 2 0 0 1 2 -2z"/>
227 + <path d="M1 8h3v6.5a1.5 1.5 0 0 1 -3 0v-.5"/>
228 + <path d="M7 15a1 1 0 0 0 1 1h1a1 1 0 0 0 1 -1v-2a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1h1a1 1 0 0 1 1 1"/>
229 </svg>
230 {{- else if .HasExt ".ts"}}
231 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-type-ts" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
224 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
225 - <path d="M14 3v4a1 1 0 0 0 1 1h4"></path>
226 - <path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-1"></path>
227 - <path d="M14 3v4a1 1 0 0 0 1 1h4"></path>
228 - <path d="M9 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75"></path>
229 - <path d="M3.5 15h3"></path>
230 - <path d="M5 15v6"></path>
232 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
233 + <path d="M14 3v4a1 1 0 0 0 1 1h4"/>
234 + <path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-1"/>
235 + <path d="M14 3v4a1 1 0 0 0 1 1h4"/>
236 + <path d="M9 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75"/>
237 + <path d="M3.5 15h3"/>
238 + <path d="M5 15v6"/>
239 </svg>
240 {{- else if .HasExt ".sql"}}
241 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-type-sql" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
234 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
235 - <path d="M14 3v4a1 1 0 0 0 1 1h4"></path>
236 - <path d="M14 3v4a1 1 0 0 0 1 1h4"></path>
237 - <path d="M5 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75"></path>
238 - <path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4"></path>
239 - <path d="M18 15v6h2"></path>
240 - <path d="M13 15a2 2 0 0 1 2 2v2a2 2 0 1 1 -4 0v-2a2 2 0 0 1 2 -2z"></path>
241 - <path d="M14 20l1.5 1.5"></path>
242 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
243 + <path d="M14 3v4a1 1 0 0 0 1 1h4"/>
244 + <path d="M14 3v4a1 1 0 0 0 1 1h4"/>
245 + <path d="M5 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75"/>
246 + <path d="M5 12v-7a2 2 0 0 1 2 -2h7l5 5v4"/>
247 + <path d="M18 15v6h2"/>
248 + <path d="M13 15a2 2 0 0 1 2 2v2a2 2 0 1 1 -4 0v-2a2 2 0 0 1 2 -2z"/>
249 + <path d="M14 20l1.5 1.5"/>
250 </svg>
251 {{- else if .HasExt ".db" ".sqlite" ".bak" ".mdb"}}
252 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-database" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
245 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
246 - <path d="M12 6m-8 0a8 3 0 1 0 16 0a8 3 0 1 0 -16 0"></path>
247 - <path d="M4 6v6a8 3 0 0 0 16 0v-6"></path>
248 - <path d="M4 12v6a8 3 0 0 0 16 0v-6"></path>
253 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
254 + <path d="M12 6m-8 0a8 3 0 1 0 16 0a8 3 0 1 0 -16 0"/>
255 + <path d="M4 6v6a8 3 0 0 0 16 0v-6"/>
256 + <path d="M4 12v6a8 3 0 0 0 16 0v-6"/>
257 </svg>
258 {{- else if .HasExt ".eml" ".email" ".mailbox" ".mbox" ".msg"}}
259 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-mail" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
252 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
253 - <path d="M3 7a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-10z"></path>
254 - <path d="M3 7l9 6l9 -6"></path>
260 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
261 + <path d="M3 7a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-10z"/>
262 + <path d="M3 7l9 6l9 -6"/>
263 </svg>
264 {{- else if .HasExt ".crt" ".pem" ".x509" ".cer" ".ca-bundle"}}
265 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-certificate" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
258 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
259 - <path d="M15 15m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"></path>
260 - <path d="M13 17.5v4.5l2 -1.5l2 1.5v-4.5"></path>
261 - <path d="M10 19h-5a2 2 0 0 1 -2 -2v-10c0 -1.1 .9 -2 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -1 1.73"></path>
262 - <path d="M6 9l12 0"></path>
263 - <path d="M6 12l3 0"></path>
264 - <path d="M6 15l2 0"></path>
266 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
267 + <path d="M15 15m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"/>
268 + <path d="M13 17.5v4.5l2 -1.5l2 1.5v-4.5"/>
269 + <path d="M10 19h-5a2 2 0 0 1 -2 -2v-10c0 -1.1 .9 -2 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -1 1.73"/>
270 + <path d="M6 9l12 0"/>
271 + <path d="M6 12l3 0"/>
272 + <path d="M6 15l2 0"/>
273 </svg>
274 {{- else if .HasExt ".key" ".keystore" ".jks" ".p12" ".pfx" ".pub"}}
275 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-key" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
268 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
269 - <path d="M16.555 3.843l3.602 3.602a2.877 2.877 0 0 1 0 4.069l-2.643 2.643a2.877 2.877 0 0 1 -4.069 0l-.301 -.301l-6.558 6.558a2 2 0 0 1 -1.239 .578l-.175 .008h-1.172a1 1 0 0 1 -.993 -.883l-.007 -.117v-1.172a2 2 0 0 1 .467 -1.284l.119 -.13l.414 -.414h2v-2h2v-2l2.144 -2.144l-.301 -.301a2.877 2.877 0 0 1 0 -4.069l2.643 -2.643a2.877 2.877 0 0 1 4.069 0z"></path>
270 - <path d="M15 9h.01"></path>
276 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
277 + <path d="M16.555 3.843l3.602 3.602a2.877 2.877 0 0 1 0 4.069l-2.643 2.643a2.877 2.877 0 0 1 -4.069 0l-.301 -.301l-6.558 6.558a2 2 0 0 1 -1.239 .578l-.175 .008h-1.172a1 1 0 0 1 -.993 -.883l-.007 -.117v-1.172a2 2 0 0 1 .467 -1.284l.119 -.13l.414 -.414h2v-2h2v-2l2.144 -2.144l-.301 -.301a2.877 2.877 0 0 1 0 -4.069l2.643 -2.643a2.877 2.877 0 0 1 4.069 0z"/>
278 + <path d="M15 9h.01"/>
279 </svg>
280 {{- else}}
281 {{- if .IsSymlink}}
282 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file-symlink" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
275 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
276 - <path d="M4 21v-4a3 3 0 0 1 3 -3h5"></path>
277 - <path d="M9 17l3 -3l-3 -3"></path>
278 - <path d="M14 3v4a1 1 0 0 0 1 1h4"></path>
279 - <path d="M5 11v-6a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-9.5"></path>
283 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
284 + <path d="M4 21v-4a3 3 0 0 1 3 -3h5"/>
285 + <path d="M9 17l3 -3l-3 -3"/>
286 + <path d="M14 3v4a1 1 0 0 0 1 1h4"/>
287 + <path d="M5 11v-6a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-9.5"/>
288 </svg>
289 {{- else}}
290 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-file" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
283 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
284 - <path d="M14 3v4a1 1 0 0 0 1 1h4"></path>
285 - <path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z"></path>
291 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
292 + <path d="M14 3v4a1 1 0 0 0 1 1h4"/>
293 + <path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z"/>
294 </svg>
295 {{- end}}
296 {{- end}}
@@ -789,19 +797,19 @@ footer {
797 </div>
798 <a href="javascript:queryParam('layout', '')" id="layout-list" class='layout{{if eq $.Layout "list" ""}}current{{end}}'>
799 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-layout-list" width="16" height="16" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
792 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
793 - <path d="M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z"></path>
794 - <path d="M4 14m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z"></path>
800 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
801 + <path d="M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z"/>
802 + <path d="M4 14m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z"/>
803 </svg>
804 List
805 </a>
806 <a href="javascript:queryParam('layout', 'grid')" id="layout-grid" class='layout{{if eq $.Layout "grid"}}current{{end}}'>
807 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-layout-grid" width="16" height="16" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
800 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
801 - <path d="M4 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"></path>
802 - <path d="M14 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"></path>
803 - <path d="M4 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"></path>
804 - <path d="M14 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"></path>
808 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
809 + <path d="M4 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"/>
810 + <path d="M14 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"/>
811 + <path d="M4 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"/>
812 + <path d="M14 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z"/>
813 </svg>
814 Grid
815 </a>
@@ -826,22 +834,22 @@ footer {
834 {{- if and (eq .Sort "namedirfirst") (ne .Order "desc")}}
835 <a href="?sort=namedirfirst&order=desc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}" class="icon">
836 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-caret-up" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
829 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
830 - <path d="M18 14l-6 -6l-6 6h12"></path>
837 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
838 + <path d="M18 14l-6 -6l-6 6h12"/>
839 </svg>
840 </a>
841 {{- else if and (eq .Sort "namedirfirst") (ne .Order "asc")}}
842 <a href="?sort=namedirfirst&order=asc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}" class="icon">
843 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-caret-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
836 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
837 - <path d="M6 10l6 6l6 -6h-12"></path>
844 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
845 + <path d="M6 10l6 6l6 -6h-12"/>
846 </svg>
847 </a>
848 {{- else}}
849 <a href="?sort=namedirfirst&order=asc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}" class="icon sort">
850 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-caret-up" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
843 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
844 - <path d="M18 14l-6 -6l-6 6h12"></path>
851 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
852 + <path d="M18 14l-6 -6l-6 6h12"/>
853 </svg>
854 </a>
855 {{- end}}
@@ -850,16 +858,16 @@ footer {
858 <a href="?sort=name&order=desc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}">
859 Name
860 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-caret-up" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
853 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
854 - <path d="M18 14l-6 -6l-6 6h12"></path>
861 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
862 + <path d="M18 14l-6 -6l-6 6h12"/>
863 </svg>
864 </a>
865 {{- else if and (eq .Sort "name") (ne .Order "asc")}}
866 <a href="?sort=name&order=asc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}">
867 Name
868 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-caret-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
861 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
862 - <path d="M6 10l6 6l6 -6h-12"></path>
869 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
870 + <path d="M6 10l6 6l6 -6h-12"/>
871 </svg>
872 </a>
873 {{- else}}
@@ -870,11 +878,11 @@ footer {
878
879 <div class="filter-container">
880 <svg id="search-icon" xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-search" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
873 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
874 - <path d="M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0"></path>
875 - <path d="M21 21l-6 -6"></path>
881 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
882 + <path d="M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0"/>
883 + <path d="M21 21l-6 -6"/>
884 </svg>
877 - <input type="text" placeholder="Search" id="filter" onkeyup='filter()'>
885 + <input type="search" placeholder="Search" id="filter" onkeyup='filter()'>
886 </div>
887 </th>
888 <th>
@@ -882,16 +890,16 @@ footer {
890 <a href="?sort=size&order=desc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}">
891 Size
892 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-caret-up" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
885 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
886 - <path d="M18 14l-6 -6l-6 6h12"></path>
893 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
894 + <path d="M18 14l-6 -6l-6 6h12"/>
895 </svg>
896 </a>
897 {{- else if and (eq .Sort "size") (ne .Order "asc")}}
898 <a href="?sort=size&order=asc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}">
899 Size
900 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-caret-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
893 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
894 - <path d="M6 10l6 6l6 -6h-12"></path>
901 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
902 + <path d="M6 10l6 6l6 -6h-12"/>
903 </svg>
904 </a>
905 {{- else}}
@@ -905,16 +913,16 @@ footer {
913 <a href="?sort=time&order=desc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}">
914 Modified
915 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-caret-up" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
908 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
909 - <path d="M18 14l-6 -6l-6 6h12"></path>
916 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
917 + <path d="M18 14l-6 -6l-6 6h12"/>
918 </svg>
919 </a>
920 {{- else if and (eq .Sort "time") (ne .Order "asc")}}
921 <a href="?sort=time&order=asc{{if ne 0 .Limit}}&limit={{.Limit}}{{end}}{{if ne 0 .Offset}}&offset={{.Offset}}{{end}}">
922 Modified
923 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-caret-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
916 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
917 - <path d="M6 10l6 6l6 -6h-12"></path>
924 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
925 + <path d="M6 10l6 6l6 -6h-12"/>
926 </svg>
927 </a>
928 {{- else}}
@@ -933,8 +941,8 @@ footer {
941 <td>
942 <a href="..">
943 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-corner-left-up" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
936 - <path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
937 - <path d="M18 18h-6a3 3 0 0 1 -3 -3v-10l-4 4m8 0l-4 -4"></path>
944 + <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
945 + <path d="M18 18h-6a3 3 0 0 1 -3 -3v-10l-4 4m8 0l-4 -4"/>
946 </svg>
947 <span class="go-up">Up</span>
948 </a>
@@ -1075,7 +1083,10 @@ footer {
1083 });
1084 document.querySelectorAll('.size').forEach(el => {
1085 const size = Number(el.dataset.size);
1078 - el.querySelector('.sizebar-bar').style.width = `${size/largest * 100}%`;
1086 + const sizebar = el.querySelector('.sizebar-bar');
1087 + if (sizebar) {
1088 + sizebar.style.width = `${size/largest * 100}%`;
1089 + }
1090 });
1091 }
1092