diff --git a/package-lock.json b/package-lock.json index 55f1bcd1..6be1ebbb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -45,6 +45,7 @@ "pug": "^3.0.3", "pug-plain-loader": "^1.1.0", "raw-loader": "^4.0.2", + "remixicon": "^4.6.0", "sass": "^1.90.0", "sass-loader": "^16.0.5", "vue": "^2.7.16", @@ -17224,6 +17225,13 @@ "node": ">= 0.10" } }, + "node_modules/remixicon": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/remixicon/-/remixicon-4.6.0.tgz", + "integrity": "sha512-bKM5odjqE1yzVxEZGJE7F79WHhNrJFIKHXR+GG+P1IWXn8AnJZhl8SbIRDJsNAvIqx4VPkNwjuHfc42tutMDpQ==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", diff --git a/package.json b/package.json index dae72bdb..850c30aa 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "pug": "^3.0.3", "pug-plain-loader": "^1.1.0", "raw-loader": "^4.0.2", + "remixicon": "^4.6.0", "sass": "^1.90.0", "sass-loader": "^16.0.5", "vue": "^2.7.16", diff --git a/src/App.vue b/src/App.vue index 4f6c3d1c..db00e95c 100644 --- a/src/App.vue +++ b/src/App.vue @@ -19,6 +19,7 @@ import Notification from './views/Notifications/Notification.vue'; import FriendList from './views/FriendList/FriendList.vue'; import Charts from './views/Charts/Charts.vue'; + import Tools from './views/Tools/Tools.vue'; import Profile from './views/Profile/Profile.vue'; import Settings from './views/Settings/Settings.vue'; @@ -59,6 +60,7 @@ Notification, FriendList, Charts, + Tools, Profile, Settings, diff --git a/src/app.pug b/src/app.pug index 3d706ff2..29727f78 100644 --- a/src/app.pug +++ b/src/app.pug @@ -33,6 +33,8 @@ doctype html Charts + Tools + Profile Settings diff --git a/src/bootstrap.js b/src/bootstrap.js index 1638b264..994f1ae2 100644 --- a/src/bootstrap.js +++ b/src/bootstrap.js @@ -3,6 +3,8 @@ import '@fontsource/noto-sans-jp'; import '@fontsource/noto-sans-sc'; import '@fontsource/noto-sans-tc'; +import 'remixicon/fonts/remixicon.css'; + import Vue from 'vue'; import { PiniaVuePlugin } from 'pinia'; import { DataTables } from 'vue-data-tables'; diff --git a/src/components/NavMenu.vue b/src/components/NavMenu.vue index 1672ef94..b9d9c84b 100644 --- a/src/components/NavMenu.vue +++ b/src/components/NavMenu.vue @@ -42,18 +42,19 @@ import { useUiStore, useVRCXUpdaterStore } from '../stores'; const navItems = [ - { index: 'feed', icon: 'el-icon-news', tooltip: 'nav_tooltip.feed' }, - { index: 'gameLog', icon: 'el-icon-s-data', tooltip: 'nav_tooltip.game_log' }, - { index: 'playerList', icon: 'el-icon-tickets', tooltip: 'nav_tooltip.player_list' }, - { index: 'search', icon: 'el-icon-search', tooltip: 'nav_tooltip.search' }, - { index: 'favorite', icon: 'el-icon-star-off', tooltip: 'nav_tooltip.favorites' }, - { index: 'friendLog', icon: 'el-icon-notebook-2', tooltip: 'nav_tooltip.friend_log' }, - { index: 'moderation', icon: 'el-icon-finished', tooltip: 'nav_tooltip.moderation' }, - { index: 'notification', icon: 'el-icon-bell', tooltip: 'nav_tooltip.notification' }, - { index: 'friendList', icon: 'el-icon-s-management', tooltip: 'nav_tooltip.friend_list' }, - { index: 'charts', icon: 'el-icon-data-analysis', tooltip: 'nav_tooltip.charts' }, - { index: 'profile', icon: 'el-icon-user', tooltip: 'nav_tooltip.profile' }, - { index: 'settings', icon: 'el-icon-s-tools', tooltip: 'nav_tooltip.settings' } + { index: 'feed', icon: 'ri-rss-line', tooltip: 'nav_tooltip.feed' }, + { index: 'gameLog', icon: 'ri-history-line', tooltip: 'nav_tooltip.game_log' }, + { index: 'playerList', icon: 'ri-group-3-line', tooltip: 'nav_tooltip.player_list' }, + { index: 'search', icon: 'ri-search-line', tooltip: 'nav_tooltip.search' }, + { index: 'favorite', icon: 'ri-star-line', tooltip: 'nav_tooltip.favorites' }, + { index: 'friendLog', icon: 'ri-contacts-book-3-line', tooltip: 'nav_tooltip.friend_log' }, + { index: 'moderation', icon: 'ri-user-forbid-line', tooltip: 'nav_tooltip.moderation' }, + { index: 'notification', icon: 'ri-notification-2-line', tooltip: 'nav_tooltip.notification' }, + { index: 'friendList', icon: 'ri-contacts-book-2-line', tooltip: 'nav_tooltip.friend_list' }, + { index: 'charts', icon: 'ri-bar-chart-line', tooltip: 'nav_tooltip.charts' }, + { index: 'tools', icon: 'ri-tools-line', tooltip: 'nav_tooltip.tools' }, + { index: 'profile', icon: 'ri-user-line', tooltip: 'nav_tooltip.profile' }, + { index: 'settings', icon: 'ri-settings-3-line', tooltip: 'nav_tooltip.settings' } ]; const VRCXUpdaterStore = useVRCXUpdaterStore(); @@ -63,3 +64,16 @@ const { menuActiveIndex, notifiedMenus } = storeToRefs(uiStore); const { selectMenu } = uiStore; + + diff --git a/src/components/dialogs/UserDialog/UserDialog.vue b/src/components/dialogs/UserDialog/UserDialog.vue index 6f2e6bd0..8ce0acb1 100644 --- a/src/components/dialogs/UserDialog/UserDialog.vue +++ b/src/components/dialogs/UserDialog/UserDialog.vue @@ -1890,13 +1890,12 @@ const { friendLogTable } = storeToRefs(useFriendStore()); const { getFriendRequest, handleFriendDelete } = useFriendStore(); const { previousImagesDialogVisible, previousImagesTable } = storeToRefs(useGalleryStore()); - const { clearInviteImageUpload, showGalleryDialog, checkPreviousImageAvailable, showFullscreenImageDialog } = - useGalleryStore(); + const { clearInviteImageUpload, checkPreviousImageAvailable, showFullscreenImageDialog } = useGalleryStore(); const { isGameRunning } = storeToRefs(useGameStore()); const { logout } = useAuthStore(); const { cachedConfig } = storeToRefs(useAuthStore()); const { applyPlayerModeration, handlePlayerModerationDelete } = useModerationStore(); - const { shiftHeld } = storeToRefs(useUiStore()); + const { shiftHeld, menuActiveIndex } = storeToRefs(useUiStore()); watch( () => userDialog.value.loading, @@ -2296,7 +2295,9 @@ } else if (command === 'Previous Instances') { showPreviousInstancesUserDialog(D.ref); } else if (command === 'Manage Gallery') { - showGalleryDialog(); + // redirect to tools tab + userDialog.value.visible = false; + menuActiveIndex.value = 'tools'; } else if (command === 'Invite To Group') { showInviteGroupDialog('', D.id); // } else if (command === 'Send Boop') { diff --git a/src/localization/en/en.json b/src/localization/en/en.json index d8cc10df..83dc066a 100644 --- a/src/localization/en/en.json +++ b/src/localization/en/en.json @@ -12,6 +12,7 @@ "notification": "Notification", "friend_list": "Friend List", "charts": "Charts", + "tools": "Tools", "profile": "Profile", "settings": "Settings" }, diff --git a/src/views/Profile/Profile.vue b/src/views/Profile/Profile.vue index 92233515..1fcad22d 100644 --- a/src/views/Profile/Profile.vue +++ b/src/views/Profile/Profile.vue @@ -529,7 +529,6 @@ inviteRequestMessageTable, inviteRequestResponseMessageTable } = storeToRefs(useInviteStore()); - const { showGalleryDialog } = useGalleryStore(); const { menuActiveIndex } = storeToRefs(useUiStore()); const { directAccessWorld } = useSearchStore(); const { logout } = useAuthStore(); @@ -550,6 +549,11 @@ const visits = ref(0); + // redirect to tools tab + function showGalleryDialog() { + menuActiveIndex.value = 'tools'; + } + function getVisits() { miscRequest.getVisits().then((args) => { visits.value = args.json; diff --git a/src/views/Settings/Settings.vue b/src/views/Settings/Settings.vue index 3e7cc496..7ab203ba 100644 --- a/src/views/Settings/Settings.vue +++ b/src/views/Settings/Settings.vue @@ -628,6 +628,7 @@ :label="t('view.settings.appearance.user_dialog.vrcx_memos')" :value="!hideUserMemos" @change="setHideUserMemos" /> +
+