diff --git a/server/socket-handlers/cloudflared-socket-handler.js b/server/socket-handlers/cloudflared-socket-handler.js
index 37c12256d..298ed658b 100644
--- a/server/socket-handlers/cloudflared-socket-handler.js
+++ b/server/socket-handlers/cloudflared-socket-handler.js
@@ -86,5 +86,7 @@ module.exports.autoStart = async (token) => {
module.exports.stop = async () => {
console.log("Stop cloudflared");
- cloudflared.stop();
+ if (cloudflared) {
+ cloudflared.stop();
+ }
};
diff --git a/src/icon.js b/src/icon.js
index 1b129a902..d83034fa7 100644
--- a/src/icon.js
+++ b/src/icon.js
@@ -40,6 +40,7 @@ import {
faSpinner,
faUndo,
faPlusCircle,
+ faAngleDown,
} from "@fortawesome/free-solid-svg-icons";
library.add(
@@ -79,6 +80,7 @@ library.add(
faSpinner,
faUndo,
faPlusCircle,
+ faAngleDown,
);
export { FontAwesomeIcon };
diff --git a/src/layouts/Layout.vue b/src/layouts/Layout.vue
index 6f750c793..b6fa026de 100644
--- a/src/layouts/Layout.vue
+++ b/src/layouts/Layout.vue
@@ -31,13 +31,28 @@
{{ $t("Dashboard") }}
-
-
- {{ $t("Settings") }}
-
-
-
-
+
+
@@ -77,10 +92,6 @@
{{ $t("Settings") }}
-
@@ -156,9 +167,9 @@ export default {
white-space: nowrap;
padding: 0 10px;
- a, button {
+ a {
text-align: center;
- width: 20%;
+ width: 25%;
display: inline-block;
height: 100%;
padding: 8px 10px 0;
@@ -166,7 +177,6 @@ export default {
color: #c1c1c1;
overflow: hidden;
text-decoration: none;
- vertical-align: top;
&.router-link-exact-active, &.active {
color: $primary;
@@ -177,12 +187,6 @@ export default {
font-size: 20px;
}
}
-
- button {
- border: none;
- background: none;
- color: #dc3545;
- }
}
main {
@@ -206,6 +210,78 @@ main {
z-index: 99999;
}
+// Profile Pic Button with Dropdown
+.dropdown-profile-pic {
+ user-select: none;
+
+ .nav-link {
+ cursor: pointer;
+ display: flex;
+ gap: 6px;
+ align-items: center;
+ background-color: rgba(200, 200, 200, 0.2);
+ padding: 0.5rem 0.8rem;
+
+ &:hover {
+ background-color: rgba(255, 255, 255, 0.2);
+ }
+ }
+
+ .dropdown-menu {
+ transition: all 0.2s;
+ padding-left: 0;
+
+ .dropdown-divider {
+ margin: 0;
+ border-top: 1px solid rgba(0, 0, 0, 0.4);
+ background-color: transparent;
+ }
+
+ .dropdown-item-text {
+ font-size: 14px;
+ padding-bottom: 0.7rem;
+ }
+
+ .dropdown-item {
+ padding: 0.7rem 1rem;
+ }
+
+ .dark & {
+ background-color: $dark-bg;
+ color: $dark-font-color;
+ border-color: $dark-border-color;
+
+ .dropdown-item {
+ color: $dark-font-color;
+
+ &.active {
+ color: $dark-font-color2;
+ background-color: $highlight !important;
+ }
+
+ &:hover {
+ background-color: $dark-bg2;
+ }
+ }
+ }
+ }
+
+ .profile-pic {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: white;
+ background-color: $primary;
+ width: 24px;
+ height: 24px;
+ margin-right: 5px;
+ border-radius: 50rem;
+ font-weight: bold;
+ font-size: 10px;
+
+ }
+}
+
.dark {
header {
background-color: $dark-header-bg;
diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue
index b0e17764d..4f01572e8 100644
--- a/src/pages/Settings.vue
+++ b/src/pages/Settings.vue
@@ -16,6 +16,14 @@
{{ item.title }}
+
+
+
+
+