aboutsummaryrefslogtreecommitdiff
path: root/src/static
diff options
context:
space:
mode:
Diffstat (limited to 'src/static')
-rw-r--r--src/static/icons/bs/actions/arrow-left-short.svg3
-rw-r--r--src/static/icons/bs/actions/arrow-left.svg3
-rw-r--r--src/static/icons/bs/actions/arrow-right-short.svg3
-rw-r--r--src/static/icons/bs/actions/arrow-right.svg3
-rw-r--r--src/static/icons/bs/actions/backspace.svg4
-rw-r--r--src/static/icons/bs/actions/check.svg3
-rw-r--r--src/static/icons/bs/actions/clipboard.svg4
-rw-r--r--src/static/icons/bs/actions/copy.svg3
-rw-r--r--src/static/icons/bs/actions/download.svg4
-rw-r--r--src/static/icons/bs/actions/folder-plus.svg4
-rw-r--r--src/static/icons/bs/actions/folder.svg3
-rw-r--r--src/static/icons/bs/actions/scissors.svg3
-rw-r--r--src/static/icons/bs/actions/trash.svg4
-rw-r--r--src/static/icons/bs/actions/upload.svg4
-rw-r--r--src/static/icons/bs/files/file-earmark.svg3
-rw-r--r--src/static/icons/bs/files/folder-symlink.svg4
-rw-r--r--src/static/icons/bs/files/folder2.svg3
-rw-r--r--src/static/icons/bs/files/link-45deg.svg4
-rw-r--r--src/static/icons/bs/files/link-broken-45deg.svg4
-rw-r--r--src/static/icons/bs/files/question.svg3
-rw-r--r--src/static/icons/bs/hdd.svg4
-rw-r--r--src/static/icons/bs/house-door.svg3
-rw-r--r--src/static/icons/bs/person-circle.svg4
-rw-r--r--src/static/script.js41
-rw-r--r--src/static/style.css356
25 files changed, 477 insertions, 0 deletions
diff --git a/src/static/icons/bs/actions/arrow-left-short.svg b/src/static/icons/bs/actions/arrow-left-short.svg
new file mode 100644
index 0000000..abb15dd
--- /dev/null
+++ b/src/static/icons/bs/actions/arrow-left-short.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-left-short" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M12 8a.5.5 0 0 1-.5.5H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H11.5a.5.5 0 0 1 .5.5"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/actions/arrow-left.svg b/src/static/icons/bs/actions/arrow-left.svg
new file mode 100644
index 0000000..587d4fe
--- /dev/null
+++ b/src/static/icons/bs/actions/arrow-left.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-left" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/actions/arrow-right-short.svg b/src/static/icons/bs/actions/arrow-right-short.svg
new file mode 100644
index 0000000..fa238ff
--- /dev/null
+++ b/src/static/icons/bs/actions/arrow-right-short.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-right-short" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4 8a.5.5 0 0 1 .5-.5h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5A.5.5 0 0 1 4 8"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/actions/arrow-right.svg b/src/static/icons/bs/actions/arrow-right.svg
new file mode 100644
index 0000000..2362904
--- /dev/null
+++ b/src/static/icons/bs/actions/arrow-right.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-right" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/actions/backspace.svg b/src/static/icons/bs/actions/backspace.svg
new file mode 100644
index 0000000..39b688f
--- /dev/null
+++ b/src/static/icons/bs/actions/backspace.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-backspace" viewBox="0 0 16 16">
+ <path d="M5.83 5.146a.5.5 0 0 0 0 .708L7.975 8l-2.147 2.146a.5.5 0 0 0 .707.708l2.147-2.147 2.146 2.147a.5.5 0 0 0 .707-.708L9.39 8l2.146-2.146a.5.5 0 0 0-.707-.708L8.683 7.293 6.536 5.146a.5.5 0 0 0-.707 0z"/>
+ <path d="M13.683 1a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-7.08a2 2 0 0 1-1.519-.698L.241 8.65a1 1 0 0 1 0-1.302L5.084 1.7A2 2 0 0 1 6.603 1zm-7.08 1a1 1 0 0 0-.76.35L1 8l4.844 5.65a1 1 0 0 0 .759.35h7.08a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1z"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/actions/check.svg b/src/static/icons/bs/actions/check.svg
new file mode 100644
index 0000000..11ab547
--- /dev/null
+++ b/src/static/icons/bs/actions/check.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check" viewBox="0 0 16 16">
+ <path d="M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425z"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/actions/clipboard.svg b/src/static/icons/bs/actions/clipboard.svg
new file mode 100644
index 0000000..b92f42a
--- /dev/null
+++ b/src/static/icons/bs/actions/clipboard.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16">
+ <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/>
+ <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/actions/copy.svg b/src/static/icons/bs/actions/copy.svg
new file mode 100644
index 0000000..b590680
--- /dev/null
+++ b/src/static/icons/bs/actions/copy.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-copy" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M4 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM2 5a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-1h1v1a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h1v1z"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/actions/download.svg b/src/static/icons/bs/actions/download.svg
new file mode 100644
index 0000000..90a34a3
--- /dev/null
+++ b/src/static/icons/bs/actions/download.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-download" viewBox="0 0 16 16">
+ <path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5"/>
+ <path d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708z"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/actions/folder-plus.svg b/src/static/icons/bs/actions/folder-plus.svg
new file mode 100644
index 0000000..85b5a18
--- /dev/null
+++ b/src/static/icons/bs/actions/folder-plus.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-folder-plus" viewBox="0 0 16 16">
+ <path d="m.5 3 .04.87a2 2 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14H9v-1H2.826a1 1 0 0 1-.995-.91l-.637-7A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09L14.54 8h1.005l.256-2.819A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2m5.672-1a1 1 0 0 1 .707.293L7.586 3H2.19q-.362.002-.683.12L1.5 2.98a1 1 0 0 1 1-.98z"/>
+ <path d="M13.5 9a.5.5 0 0 1 .5.5V11h1.5a.5.5 0 1 1 0 1H14v1.5a.5.5 0 1 1-1 0V12h-1.5a.5.5 0 0 1 0-1H13V9.5a.5.5 0 0 1 .5-.5"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/actions/folder.svg b/src/static/icons/bs/actions/folder.svg
new file mode 100644
index 0000000..a30c452
--- /dev/null
+++ b/src/static/icons/bs/actions/folder.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-folder" viewBox="0 0 16 16">
+ <path d="M.54 3.87.5 3a2 2 0 0 1 2-2h3.672a2 2 0 0 1 1.414.586l.828.828A2 2 0 0 0 9.828 3h3.982a2 2 0 0 1 1.992 2.181l-.637 7A2 2 0 0 1 13.174 14H2.826a2 2 0 0 1-1.991-1.819l-.637-7a2 2 0 0 1 .342-1.31zM2.19 4a1 1 0 0 0-.996 1.09l.637 7a1 1 0 0 0 .995.91h10.348a1 1 0 0 0 .995-.91l.637-7A1 1 0 0 0 13.81 4zm4.69-1.707A1 1 0 0 0 6.172 2H2.5a1 1 0 0 0-1 .981l.006.139q.323-.119.684-.12h5.396z"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/actions/scissors.svg b/src/static/icons/bs/actions/scissors.svg
new file mode 100644
index 0000000..2f566e4
--- /dev/null
+++ b/src/static/icons/bs/actions/scissors.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-scissors" viewBox="0 0 16 16">
+ <path d="M3.5 3.5c-.614-.884-.074-1.962.858-2.5L8 7.226 11.642 1c.932.538 1.472 1.616.858 2.5L8.81 8.61l1.556 2.661a2.5 2.5 0 1 1-.794.637L8 9.73l-1.572 2.177a2.5 2.5 0 1 1-.794-.637L7.19 8.61zm2.5 10a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0m7 0a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/actions/trash.svg b/src/static/icons/bs/actions/trash.svg
new file mode 100644
index 0000000..3020264
--- /dev/null
+++ b/src/static/icons/bs/actions/trash.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-trash" viewBox="0 0 16 16">
+ <path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"/>
+ <path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/actions/upload.svg b/src/static/icons/bs/actions/upload.svg
new file mode 100644
index 0000000..9a4a363
--- /dev/null
+++ b/src/static/icons/bs/actions/upload.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-upload" viewBox="0 0 16 16">
+ <path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5"/>
+ <path d="M7.646 1.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 2.707V11.5a.5.5 0 0 1-1 0V2.707L5.354 4.854a.5.5 0 1 1-.708-.708z"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/files/file-earmark.svg b/src/static/icons/bs/files/file-earmark.svg
new file mode 100644
index 0000000..eb55426
--- /dev/null
+++ b/src/static/icons/bs/files/file-earmark.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#abb" class="bi bi-file-earmark" viewBox="0 0 16 16">
+ <path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/>
+</svg>
diff --git a/src/static/icons/bs/files/folder-symlink.svg b/src/static/icons/bs/files/folder-symlink.svg
new file mode 100644
index 0000000..72fbd2e
--- /dev/null
+++ b/src/static/icons/bs/files/folder-symlink.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#7cc" class="bi bi-folder-symlink" viewBox="0 0 16 16">
+ <path d="m11.798 8.271-3.182 1.97c-.27.166-.616-.036-.616-.372V9.1s-2.571-.3-4 2.4c.571-4.8 3.143-4.8 4-4.8v-.769c0-.336.346-.538.616-.371l3.182 1.969c.27.166.27.576 0 .742"/>
+ <path d="m.5 3 .04.87a2 2 0 0 0-.342 1.311l.637 7A2 2 0 0 0 2.826 14h10.348a2 2 0 0 0 1.991-1.819l.637-7A2 2 0 0 0 13.81 3H9.828a2 2 0 0 1-1.414-.586l-.828-.828A2 2 0 0 0 6.172 1H2.5a2 2 0 0 0-2 2m.694 2.09A1 1 0 0 1 2.19 4h11.62a1 1 0 0 1 .996 1.09l-.636 7a1 1 0 0 1-.996.91H2.826a1 1 0 0 1-.995-.91zM6.172 2a1 1 0 0 1 .707.293L7.586 3H2.19q-.362.002-.683.12L1.5 2.98a1 1 0 0 1 1-.98z"/>
+</svg>
diff --git a/src/static/icons/bs/files/folder2.svg b/src/static/icons/bs/files/folder2.svg
new file mode 100644
index 0000000..be82283
--- /dev/null
+++ b/src/static/icons/bs/files/folder2.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#8bf" class="bi bi-folder2" viewBox="0 0 16 16">
+ <path d="M1 3.5A1.5 1.5 0 0 1 2.5 2h2.764c.958 0 1.76.56 2.311 1.184C7.985 3.648 8.48 4 9 4h4.5A1.5 1.5 0 0 1 15 5.5v7a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 1 12.5zM2.5 3a.5.5 0 0 0-.5.5V6h12v-.5a.5.5 0 0 0-.5-.5H9c-.964 0-1.71-.629-2.174-1.154C6.374 3.334 5.82 3 5.264 3zM14 7H2v5.5a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5z"/>
+</svg>
diff --git a/src/static/icons/bs/files/link-45deg.svg b/src/static/icons/bs/files/link-45deg.svg
new file mode 100644
index 0000000..fb527fa
--- /dev/null
+++ b/src/static/icons/bs/files/link-45deg.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#3dd" class="bi bi-link-45deg" viewBox="0 0 16 16">
+ <path d="M4.715 6.542 3.343 7.914a3 3 0 1 0 4.243 4.243l1.828-1.829A3 3 0 0 0 8.586 5.5L8 6.086a1 1 0 0 0-.154.199 2 2 0 0 1 .861 3.337L6.88 11.45a2 2 0 1 1-2.83-2.83l.793-.792a4 4 0 0 1-.128-1.287z"/>
+ <path d="M6.586 4.672A3 3 0 0 0 7.414 9.5l.775-.776a2 2 0 0 1-.896-3.346L9.12 3.55a2 2 0 1 1 2.83 2.83l-.793.792c.112.42.155.855.128 1.287l1.372-1.372a3 3 0 1 0-4.243-4.243z"/>
+</svg>
diff --git a/src/static/icons/bs/files/link-broken-45deg.svg b/src/static/icons/bs/files/link-broken-45deg.svg
new file mode 100644
index 0000000..4f20cd3
--- /dev/null
+++ b/src/static/icons/bs/files/link-broken-45deg.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#d99" class="bi bi-link-45deg" viewBox="0 0 16 16">
+ <path d="M4.715 6.542 3.343 7.914a3 3 0 1 0 4.243 4.243l1.828-1.829A3 3 0 0 0 8.586 5.5L8 6.086a1 1 0 0 0-.154.199 2 2 0 0 1 .861 3.337L6.88 11.45a2 2 0 1 1-2.83-2.83l.793-.792a4 4 0 0 1-.128-1.287z"/>
+ <path d="M6.586 4.672A3 3 0 0 0 7.414 9.5l.775-.776a2 2 0 0 1-.896-3.346L9.12 3.55a2 2 0 1 1 2.83 2.83l-.793.792c.112.42.155.855.128 1.287l1.372-1.372a3 3 0 1 0-4.243-4.243z"/>
+</svg>
diff --git a/src/static/icons/bs/files/question.svg b/src/static/icons/bs/files/question.svg
new file mode 100644
index 0000000..ba185ad
--- /dev/null
+++ b/src/static/icons/bs/files/question.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-question" viewBox="0 0 16 16">
+ <path d="M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286m1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94"/>
+</svg> \ No newline at end of file
diff --git a/src/static/icons/bs/hdd.svg b/src/static/icons/bs/hdd.svg
new file mode 100644
index 0000000..46cc4e4
--- /dev/null
+++ b/src/static/icons/bs/hdd.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#ddd" class="bi bi-hdd" viewBox="0 0 16 16">
+ <path d="M4.5 11a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1M3 10.5a.5.5 0 1 1-1 0 .5.5 0 0 1 1 0"/>
+ <path d="M16 11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V9.51c0-.418.105-.83.305-1.197l2.472-4.531A1.5 1.5 0 0 1 4.094 3h7.812a1.5 1.5 0 0 1 1.317.782l2.472 4.53c.2.368.305.78.305 1.198zM3.655 4.26 1.592 8.043Q1.79 8 2 8h12q.21 0 .408.042L12.345 4.26a.5.5 0 0 0-.439-.26H4.094a.5.5 0 0 0-.44.26zM1 10v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1"/>
+</svg>
diff --git a/src/static/icons/bs/house-door.svg b/src/static/icons/bs/house-door.svg
new file mode 100644
index 0000000..1b0a602
--- /dev/null
+++ b/src/static/icons/bs/house-door.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#add" class="bi bi-house-door" viewBox="0 0 16 16">
+ <path d="M8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4.5a.5.5 0 0 0 .5-.5v-4h2v4a.5.5 0 0 0 .5.5H14a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293zM2.5 14V7.707l5.5-5.5 5.5 5.5V14H10v-4a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5v4z"/>
+</svg>
diff --git a/src/static/icons/bs/person-circle.svg b/src/static/icons/bs/person-circle.svg
new file mode 100644
index 0000000..b2c0c28
--- /dev/null
+++ b/src/static/icons/bs/person-circle.svg
@@ -0,0 +1,4 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#add" class="bi bi-person-circle" viewBox="0 0 16 16">
+ <path d="M11 6a3 3 0 1 1-6 0 3 3 0 0 1 6 0"/>
+ <path fill-rule="evenodd" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8m8-7a7 7 0 0 0-5.468 11.37C3.242 11.226 4.805 10 8 10s4.757 1.225 5.468 2.37A7 7 0 0 0 8 1"/>
+</svg>
diff --git a/src/static/script.js b/src/static/script.js
new file mode 100644
index 0000000..8c1bf51
--- /dev/null
+++ b/src/static/script.js
@@ -0,0 +1,41 @@
+"use strict";
+"use warnings";
+
+function checkAll(checked, scope) {
+ let inputs = scope.getElementsByTagName('input');
+ for (var i = 0; i < inputs.length; i++) {
+ if (inputs[i].type.toLowerCase() == 'checkbox') {
+ inputs[i].checked = checked;
+ }
+ }
+}
+
+function toggleAll(checkbox) {
+ let scope = document.getElementById('file-list')
+ if (checkbox.checked) {
+ checkAll(true, scope);
+ } else {
+ checkAll(false, scope);
+ }
+}
+
+function deleteAction(button) {
+ let table = document.getElementById('file-list')
+ let tbody = table.getElementsByClassName('tbody')[0]
+ let inputs = tbody.getElementsByTagName('input')
+ let msg = 0;
+ for (var i = 0; i < inputs.length; i++) {
+ inputs[i].type.toLowerCase() == 'checkbox' &&
+ inputs[i].checked && msg++;
+ }
+ if (msg == 0) {
+ msg = "Whole Folder will be deleted."
+ } else {
+ msg += " file(s) selected."
+ }
+ if (confirm(msg + " Confirm Deletion?")) {
+ button.formAction = "?action=delete";
+ button.onclick = "submit()";
+ button.click();
+ }
+}
diff --git a/src/static/style.css b/src/static/style.css
new file mode 100644
index 0000000..b24c197
--- /dev/null
+++ b/src/static/style.css
@@ -0,0 +1,356 @@
+:root {
+ --profile-width: 15rem;
+}
+
+body {
+ background-color: #1b1b1b;
+ color: lightgrey;
+ font-family: "Fira Sans";
+ margin: auto;
+ margin-bottom: 10rem;
+ max-width: 60rem;
+}
+
+header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 1rem;
+}
+
+header h1 {
+ color: orange;
+}
+
+header img {
+ width: 2rem;
+ padding: 1rem;
+}
+
+a {
+ color: #7bf;
+ text-decoration: none;
+}
+
+button b {
+ vertical-align: middle;
+ font-size: 0.8rem;
+}
+
+label b {
+ font-size: 0.9rem;
+}
+
+button img, details img {
+ padding: 0.2rem;
+ width: 1rem;
+ vertical-align: middle;
+}
+
+#newdir-cb+label {
+ background-color: #2d60ba;
+ opacity: 0.6;
+ position: fixed;
+ bottom: 10%;
+ right: 10%;
+ border: 0;
+ border-radius: 60%;
+ padding: 0.6rem 0.85rem;
+ z-index: 11;
+}
+
+#newdir-cb +label:hover {
+ opacity: 1;
+ bottom: 10%;
+ right: 10%;
+ padding: 0.8rem 1.05rem;
+}
+
+#newdir-cb:checked +label {
+ opacity: 0.8;
+}
+
+#newdir-cb+label img {
+ width: 1.5rem;
+ margin-top: 0.2rem;
+}
+
+#newdir-bg {
+ cursor: pointer;
+ background-color: black;
+ opacity: 50%;
+ display: none;
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ z-index: 10;
+}
+
+#newdir-box {
+ color: white;
+ background: steelblue;
+ display: none;
+ position: fixed;
+ right: 10%;
+ bottom: 20%;
+ text-align: center;
+ width: 15rem;
+ padding: 1rem;
+ z-index: 11;
+}
+
+#newdir-box input[type="text"] {
+ width: 10rem;
+}
+
+#newdir-box button {
+ width: 2rem;
+ height: 1.6rem;
+}
+
+#newdir-box img {
+ height: 1.4rem;
+ width: 1.6rem;
+ margin-top: -0.2rem;
+ margin-left: -0.4rem;
+}
+
+#newdir-box img:hover {
+ background-color: lightgreen;
+}
+
+#newdir-cb { display: none; }
+#newdir-cb:checked ~ #newdir-box { display: block; }
+#newdir-cb:checked ~ #newdir-bg { display: block; }
+
+.form-header label img {
+ padding: 0.2rem;
+ width: 1rem;
+ vertical-align: middle;
+}
+
+.html-path {
+ padding: 1rem 0rem;
+ overflow-x: auto;
+ white-space: nowrap;
+}
+
+.html-path a {
+ background-color: #333;
+ border-radius: 0.5rem;
+ color: #add;
+ font: 1.5rem;
+ padding: 0.3rem 0.7rem;
+ margin: 0.5rem;
+}
+
+.form-actions {
+ white-space: nowrap;
+}
+
+.clickable::-moz-selection,
+.clickable::selection,
+.clickable *::-moz-selection,
+.clickable *::selection {
+ background-color: transparent;
+}
+
+.back-button img {
+ width: 1.8rem;
+ margin: -0.4rem;
+}
+
+#upload-button + label,
+.form-actions button,
+.form-actions a {
+ background-color: #bdd;
+ color: black;
+ padding: 0.3rem 0.5rem;
+ margin-right: 0.5rem;
+ vertical-align: middle;
+ border: none;
+}
+
+#upload-button + label:hover,
+.form-actions button:hover {
+ background-color: #8cc;
+}
+
+#upload-button { display: none; }
+#upload-button + label { display: inline-block; }
+#upload-button:checked + label { background-color: #7dd; }
+#upload-button:checked ~ #file-upload-box { display: block; }
+
+#file-upload-box {
+ background: steelblue;
+ display: none;
+ padding: 0.7rem 1rem;
+ margin: 1rem 0rem;
+}
+
+#file-upload-box button {
+ margin-top: -0.25rem;
+}
+
+#file-upload-box { display: none; }
+
+details { margin: 1rem 0rem; background-color: #aa3333; }
+details summary { padding: 0.5rem 1rem; background-color: #cc3333 }
+details[open] summary { color: #111; }
+details summary span { vertical-align: middle; margin: -0.2rem; }
+details .content { padding: 0.5rem 1rem; }
+ul { list-style-type: none; }
+
+.actions { float: right; }
+
+.table { display: table; }
+.thead { display: table-header-group; }
+.tbody { display: table-row-group; }
+.tr { display: table-row; }
+.th, .td { display: table-cell; }
+
+#file-list {
+ color: #dddddd;
+ width: 100%;
+ margin: 1rem 0rem;
+ overflow-x: auto;
+}
+#file-list .thead { background-color: #2b2b2b; }
+#file-list .thead:has(input[type=checkbox]:checked) { background-color: #557; }
+#file-list .th { font-weight: bold; }
+#file-list .tr:hover { background-color: #2b2b2b; }
+#file-list .tr:has(input[type=checkbox]:checked) { background-color: #1b2b3b; }
+#file-list .tr:has(input[type=checkbox]:checked):hover { background-color: #2b3b4b; }
+#file-list .td, #file-list .tr, #file-list .th {
+ border-bottom: 0.1rem solid #333;
+ overflow: hidden;
+ padding: 0.5rem;
+ font-size: 0.97em;
+}
+#file-list img { width: 1rem; }
+#file-list a {
+ color: #9cf;
+ display: block;
+ margin: -0.8rem;
+ padding: 1rem;
+ font-size: 1rem;
+}
+#file-list a:hover {
+ text-decoration-line: underline;
+}
+
+.info {
+ color: lightgray;
+ font-size: 0.92em;
+ text-align: center;
+ padding: 1rem 2rem;
+}
+
+.drives {
+ padding: 1rem;
+}
+
+.drives a {
+ background-color: #2b2b2b;
+ display: flex;
+ align-items: center;
+ padding: 0.5em;
+ margin: 1rem 0rem;
+}
+
+.drives a:hover {
+ background-color: #1b2b3b;
+}
+
+.drives a span { padding: 0.5rem; }
+.drives a img { width: 2rem; }
+.drives .desc { color: gray; }
+
+#profile {
+ background-color: #2b2b3b;
+ display: table;
+ align-items: center;
+ box-sizing: border-box;
+ padding: 3rem 5rem;
+ max-width: var(--profile-width);
+ margin: auto;
+ margin-top: 2rem;
+}
+
+#profile h2 {
+ text-align: center;
+}
+
+#profile label,
+#profile input {
+ height: 1.5rem;
+ margin: 0.3rem 0rem;
+ display: block;
+ width: 100%;
+}
+
+#profile label {
+ font-weight: bold;
+ margin: 2rem 0rem 0rem 0rem;
+}
+
+#profile input {
+ width: var(--profile-width);
+}
+
+#profile button {
+ color: black;
+ background-color: #f66;
+ font-weight: bold;
+ vertical-align: center;
+ height: 2rem;
+ width: 100%;
+ margin-top: 3rem;
+ border: none;
+}
+
+#profile button:hover {
+ background-color: #f88;
+ cursor: pointer;
+}
+
+#profile p {
+ max-width: var(--profile-width);
+}
+
+.warning { color: red; }
+.success { color: lightgreen; }
+
+
+@media screen and (min-width: 20rem) {
+ #upload-button+label { float: right; }
+}
+
+@media screen and (max-width: 60rem) {
+ #file-list .tr .th:nth-child(6),
+ #file-list .tr .td:nth-child(6) { display: none; }
+}
+
+@media screen and (max-width: 40rem) {
+ :root {
+ --profile-width: 10rem;
+ }
+ #profile { padding: 2rem 3rem; }
+
+ button b { display: none; }
+ button { margin-right: 0 !important; }
+ #file-list .tr .th:nth-child(7),
+ #file-list .tr .td:nth-child(7) { display: none; }
+ .hint { display: none; }
+}
+
+@media screen and (max-width: 25rem) {
+ label b { display: none; }
+ #file-list .tr .th:nth-child(5),
+ #file-list .tr .td:nth-child(5) { display: none; }
+}
+