From 4ab23f7c521fa5aa110a1acdc2c29b5810ef602a Mon Sep 17 00:00:00 2001 From: Raphix Date: Wed, 6 Aug 2025 23:07:34 +0200 Subject: [PATCH] Version 1.0.0 - Finalisation de Account et de GuildHeader --- public/information.json | 4 +- src/App.vue | 1 - src/assets/Global.scss | 89 +++++++-- src/components/Features/HeaderGuild.vue | 87 --------- .../{Features => Layout}/Account.vue | 19 +- src/components/Layout/GuildHeader.vue | 170 ++++++++++++++++++ src/components/Layout/Search.vue | 35 ++++ src/components/UI/Avatar.vue | 7 +- src/components/UI/Box.vue | 12 +- src/components/UI/Button.vue | 23 ++- src/components/UI/ContextMenu.vue | 113 ++++++++++++ .../{Layout => UI}/DefaultSplash.vue | 3 +- src/components/UI/IconAction.vue | 6 +- src/components/UI/Info.vue | 16 +- src/components/UI/Logo.vue | 24 +++ src/components/UI/Modal.vue | 146 +++++++++++++++ src/components/UI/ModalTree.vue | 45 +++++ src/components/UI/Role.vue | 23 +++ src/components/UI/Selector.vue | 163 +++++++++++++++++ .../{Widget/ServerItem.vue => UI/Server.vue} | 0 src/components/{Layout => UI}/Splash.vue | 0 src/components/UI/Success.vue | 30 ++++ src/components/UI/Tag.vue | 33 ++++ src/components/UI/User.vue | 9 +- .../Widget/Guild/GuildHeaderUsers.vue | 73 ++++++++ src/components/Widget/Guild/GuildSettings.vue | 42 +++++ .../Widget/Guild/Settings/GuildStats.vue | 128 +++++++++++++ .../Widget/Guild/Settings/GuildUsers.vue | 139 ++++++++++++++ .../Widget/{ => Server}/ServerListItem.vue | 32 +++- .../{ => Server}/ServerOnlinePicture.vue | 14 +- .../Widget/User/Settings/BugReport.vue | 100 +++++++++++ .../User/Settings/InformationSettings.vue | 104 +++++++++++ .../Widget/User/Settings/PrivacySettings.vue | 101 +++++++++++ .../Widget/User/Settings/ThemeSelector.vue | 101 +++++++++++ src/components/Widget/User/UserSettings.vue | 47 +++++ src/socket.js | 3 +- src/stores/globalStore.js | 20 ++- src/utils/Events.js | 1 + src/utils/Loader.vue | 6 +- src/utils/Mouse.js | 36 ++++ src/utils/Redirect.vue | 2 +- src/utils/TimeConverter.js | 44 +++++ src/views/Interface.vue | 23 +-- src/views/Login.vue | 9 +- src/views/PageError.vue | 2 +- src/views/Privacy.vue | 9 +- src/views/Servers.vue | 6 +- src/views/Terms.vue | 24 ++- 48 files changed, 1949 insertions(+), 175 deletions(-) delete mode 100644 src/components/Features/HeaderGuild.vue rename src/components/{Features => Layout}/Account.vue (64%) create mode 100644 src/components/Layout/GuildHeader.vue create mode 100644 src/components/Layout/Search.vue create mode 100644 src/components/UI/ContextMenu.vue rename src/components/{Layout => UI}/DefaultSplash.vue (91%) create mode 100644 src/components/UI/Logo.vue create mode 100644 src/components/UI/Modal.vue create mode 100644 src/components/UI/ModalTree.vue create mode 100644 src/components/UI/Role.vue create mode 100644 src/components/UI/Selector.vue rename src/components/{Widget/ServerItem.vue => UI/Server.vue} (100%) rename src/components/{Layout => UI}/Splash.vue (100%) create mode 100644 src/components/UI/Success.vue create mode 100644 src/components/UI/Tag.vue create mode 100644 src/components/Widget/Guild/GuildHeaderUsers.vue create mode 100644 src/components/Widget/Guild/GuildSettings.vue create mode 100644 src/components/Widget/Guild/Settings/GuildStats.vue create mode 100644 src/components/Widget/Guild/Settings/GuildUsers.vue rename src/components/Widget/{ => Server}/ServerListItem.vue (60%) rename src/components/Widget/{ => Server}/ServerOnlinePicture.vue (65%) create mode 100644 src/components/Widget/User/Settings/BugReport.vue create mode 100644 src/components/Widget/User/Settings/InformationSettings.vue create mode 100644 src/components/Widget/User/Settings/PrivacySettings.vue create mode 100644 src/components/Widget/User/Settings/ThemeSelector.vue create mode 100644 src/components/Widget/User/UserSettings.vue create mode 100644 src/utils/Mouse.js create mode 100644 src/utils/TimeConverter.js diff --git a/public/information.json b/public/information.json index 25edfc5..20c0c92 100644 --- a/public/information.json +++ b/public/information.json @@ -1,7 +1,7 @@ { "discord": { - "development": "https://discord.com/oauth2/authorize?client_id=1342913183744004158&response_type=code&redirect_uri=http%3A%2F%2F192.168.1.77%3A8080%2Fredirect&scope=guilds+identify+guilds.members.read", - "production": "https://discord.com/oauth2/authorize?client_id=1094727789682380922&response_type=code&redirect_uri=https%3A%2F%2Fsubsonics.raphix.fr%2Fredirect&scope=guilds+identify+guilds.members.read" + "development": "https://discord.com/oauth2/authorize?client_id=1342913183744004158&response_type=code&redirect_uri=http%3A%2F%2F192.168.1.77%3A8080%2Fredirect&scope=identify", + "production": "https://discord.com/oauth2/authorize?client_id=1094727789682380922&response_type=code&redirect_uri=https%3A%2F%2Fsubsonics.raphix.fr%2Fredirect&scope=identify" }, "backend": { "development": "http://192.168.1.77:3000", diff --git a/src/App.vue b/src/App.vue index 0f07a0a..503eb96 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,7 +2,6 @@ - \ No newline at end of file diff --git a/src/components/Features/Account.vue b/src/components/Layout/Account.vue similarity index 64% rename from src/components/Features/Account.vue rename to src/components/Layout/Account.vue index 5902630..a0f2641 100644 --- a/src/components/Features/Account.vue +++ b/src/components/Layout/Account.vue @@ -2,11 +2,13 @@
- - + +
- +
+ + \ No newline at end of file diff --git a/src/components/Layout/Search.vue b/src/components/Layout/Search.vue new file mode 100644 index 0000000..cbb87ed --- /dev/null +++ b/src/components/Layout/Search.vue @@ -0,0 +1,35 @@ + + + + + \ No newline at end of file diff --git a/src/components/UI/Avatar.vue b/src/components/UI/Avatar.vue index 6a75fef..baff3fc 100644 --- a/src/components/UI/Avatar.vue +++ b/src/components/UI/Avatar.vue @@ -1,12 +1,13 @@ @@ -24,13 +28,14 @@ button { color: rgb(255, 255, 255); border: none; border-radius: 5px; - padding: 10px; + padding: 7px; display: flex; - gap: 10px; + gap: 5px; justify-content: center; align-items: center; text-decoration: none; transition: all 0.3s ease; + } button:hover { @@ -58,4 +63,16 @@ button:active { background-color: var(--tertiary) !important; transform: none !important ; } + +.color-lower { + background-color: var(--secondary) !important; +} + +.color-lower:hover { + background-color: var(--secondary) !important; +} + +.color-lower:active { + background-color: var(--secondary) !important; +} \ No newline at end of file diff --git a/src/components/UI/ContextMenu.vue b/src/components/UI/ContextMenu.vue new file mode 100644 index 0000000..8cda9c6 --- /dev/null +++ b/src/components/UI/ContextMenu.vue @@ -0,0 +1,113 @@ + + + \ No newline at end of file diff --git a/src/components/Layout/DefaultSplash.vue b/src/components/UI/DefaultSplash.vue similarity index 91% rename from src/components/Layout/DefaultSplash.vue rename to src/components/UI/DefaultSplash.vue index 7e10646..95d1354 100644 --- a/src/components/Layout/DefaultSplash.vue +++ b/src/components/UI/DefaultSplash.vue @@ -2,11 +2,12 @@ + \ No newline at end of file diff --git a/src/components/UI/Logo.vue b/src/components/UI/Logo.vue new file mode 100644 index 0000000..b5d8c15 --- /dev/null +++ b/src/components/UI/Logo.vue @@ -0,0 +1,24 @@ + + + \ No newline at end of file diff --git a/src/components/UI/Modal.vue b/src/components/UI/Modal.vue new file mode 100644 index 0000000..a088ec2 --- /dev/null +++ b/src/components/UI/Modal.vue @@ -0,0 +1,146 @@ + + + diff --git a/src/components/UI/ModalTree.vue b/src/components/UI/ModalTree.vue new file mode 100644 index 0000000..39007f2 --- /dev/null +++ b/src/components/UI/ModalTree.vue @@ -0,0 +1,45 @@ + + + \ No newline at end of file diff --git a/src/components/UI/Role.vue b/src/components/UI/Role.vue new file mode 100644 index 0000000..12fd8c4 --- /dev/null +++ b/src/components/UI/Role.vue @@ -0,0 +1,23 @@ + + diff --git a/src/components/UI/Selector.vue b/src/components/UI/Selector.vue new file mode 100644 index 0000000..ff27053 --- /dev/null +++ b/src/components/UI/Selector.vue @@ -0,0 +1,163 @@ + + + + + \ No newline at end of file diff --git a/src/components/Widget/ServerItem.vue b/src/components/UI/Server.vue similarity index 100% rename from src/components/Widget/ServerItem.vue rename to src/components/UI/Server.vue diff --git a/src/components/Layout/Splash.vue b/src/components/UI/Splash.vue similarity index 100% rename from src/components/Layout/Splash.vue rename to src/components/UI/Splash.vue diff --git a/src/components/UI/Success.vue b/src/components/UI/Success.vue new file mode 100644 index 0000000..5167d24 --- /dev/null +++ b/src/components/UI/Success.vue @@ -0,0 +1,30 @@ + + \ No newline at end of file diff --git a/src/components/UI/Tag.vue b/src/components/UI/Tag.vue new file mode 100644 index 0000000..c0f83ff --- /dev/null +++ b/src/components/UI/Tag.vue @@ -0,0 +1,33 @@ + + + \ No newline at end of file diff --git a/src/components/UI/User.vue b/src/components/UI/User.vue index 212f06c..081ee28 100644 --- a/src/components/UI/User.vue +++ b/src/components/UI/User.vue @@ -1,9 +1,12 @@ diff --git a/src/components/Widget/Guild/GuildHeaderUsers.vue b/src/components/Widget/Guild/GuildHeaderUsers.vue new file mode 100644 index 0000000..25f874e --- /dev/null +++ b/src/components/Widget/Guild/GuildHeaderUsers.vue @@ -0,0 +1,73 @@ + + + \ No newline at end of file diff --git a/src/components/Widget/Guild/GuildSettings.vue b/src/components/Widget/Guild/GuildSettings.vue new file mode 100644 index 0000000..7d8caaa --- /dev/null +++ b/src/components/Widget/Guild/GuildSettings.vue @@ -0,0 +1,42 @@ + + \ No newline at end of file diff --git a/src/components/Widget/Guild/Settings/GuildStats.vue b/src/components/Widget/Guild/Settings/GuildStats.vue new file mode 100644 index 0000000..90552bc --- /dev/null +++ b/src/components/Widget/Guild/Settings/GuildStats.vue @@ -0,0 +1,128 @@ + + + + \ No newline at end of file diff --git a/src/components/Widget/Guild/Settings/GuildUsers.vue b/src/components/Widget/Guild/Settings/GuildUsers.vue new file mode 100644 index 0000000..0a45e5f --- /dev/null +++ b/src/components/Widget/Guild/Settings/GuildUsers.vue @@ -0,0 +1,139 @@ + + + \ No newline at end of file diff --git a/src/components/Widget/ServerListItem.vue b/src/components/Widget/Server/ServerListItem.vue similarity index 60% rename from src/components/Widget/ServerListItem.vue rename to src/components/Widget/Server/ServerListItem.vue index f8d9ab4..0eeaedc 100644 --- a/src/components/Widget/ServerListItem.vue +++ b/src/components/Widget/Server/ServerListItem.vue @@ -1,21 +1,28 @@ \ No newline at end of file diff --git a/src/components/Widget/User/Settings/InformationSettings.vue b/src/components/Widget/User/Settings/InformationSettings.vue new file mode 100644 index 0000000..350b17d --- /dev/null +++ b/src/components/Widget/User/Settings/InformationSettings.vue @@ -0,0 +1,104 @@ + + + \ No newline at end of file diff --git a/src/components/Widget/User/Settings/PrivacySettings.vue b/src/components/Widget/User/Settings/PrivacySettings.vue new file mode 100644 index 0000000..47c0076 --- /dev/null +++ b/src/components/Widget/User/Settings/PrivacySettings.vue @@ -0,0 +1,101 @@ + + + \ No newline at end of file diff --git a/src/components/Widget/User/Settings/ThemeSelector.vue b/src/components/Widget/User/Settings/ThemeSelector.vue new file mode 100644 index 0000000..70ffff8 --- /dev/null +++ b/src/components/Widget/User/Settings/ThemeSelector.vue @@ -0,0 +1,101 @@ + + + + + \ No newline at end of file diff --git a/src/components/Widget/User/UserSettings.vue b/src/components/Widget/User/UserSettings.vue new file mode 100644 index 0000000..3fe9479 --- /dev/null +++ b/src/components/Widget/User/UserSettings.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/src/socket.js b/src/socket.js index cba32f6..ca05611 100644 --- a/src/socket.js +++ b/src/socket.js @@ -19,4 +19,5 @@ export const socket = io(URL, { token: localStorage.getItem("token") || null, sessionId: localStorage.getItem("session") || null }, -}); + +}); \ No newline at end of file diff --git a/src/stores/globalStore.js b/src/stores/globalStore.js index 831fecb..f7aaae6 100644 --- a/src/stores/globalStore.js +++ b/src/stores/globalStore.js @@ -5,7 +5,11 @@ export const useGlobalStore = defineStore('global', () => { const isLoading = ref(true); const lastRoute = ref(null); const lastGuild = ref(localStorage.getItem("lastGuild") || null); - const theme = ref(localStorage.getItem("theme") || "dark"); + const theme = ref(localStorage.getItem("theme") || "system"); + if(theme.value === "system") { + const systemTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; + theme.value = systemTheme; + } document.documentElement.setAttribute("data-theme", theme.value); function setLoading(loading) { @@ -24,6 +28,17 @@ export const useGlobalStore = defineStore('global', () => { localStorage.setItem("lastGuild", guild || null); } + function setTheme(newTheme) { + console.log("Setting theme to", newTheme); + localStorage.setItem("theme", newTheme); + theme.value = newTheme; + if(theme.value === "system") { + const systemTheme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; + theme.value = systemTheme; + } + document.documentElement.setAttribute("data-theme", theme.value); + } + function toogleTheme() { theme.value = theme.value === "dark" ? "light" : "dark"; localStorage.setItem("theme", theme.value); @@ -39,6 +54,7 @@ export const useGlobalStore = defineStore('global', () => { theme, toogleTheme, lastGuild, - setLastGuild + setLastGuild, + setTheme }; }) \ No newline at end of file diff --git a/src/utils/Events.js b/src/utils/Events.js index 57b0d44..0298706 100644 --- a/src/utils/Events.js +++ b/src/utils/Events.js @@ -14,6 +14,7 @@ export default { }, emit(eventName, data) { if(Events.has(eventName)) { + console.log(`Event emitted: ${eventName}`, data) Events.get(eventName).forEach(fn => fn(data)) } }, diff --git a/src/utils/Loader.vue b/src/utils/Loader.vue index a95b0af..58d4784 100644 --- a/src/utils/Loader.vue +++ b/src/utils/Loader.vue @@ -1,5 +1,5 @@ @@ -8,7 +8,7 @@ import Button from '@/components/UI/Button.vue';