Compare commits

..

No commits in common. "a9ad6ba5350404a3ca20b950802f461fd324a34a" and "692dd6d1c7782392e48c1dcddd3dc58dbeb7680b" have entirely different histories.

14 changed files with 43 additions and 114 deletions

22
app.vue
View file

@ -1,6 +1,5 @@
<template> <template>
<div> <div>
<link :href="'/themes/' + current_theme + '.css'" rel="stylesheet" type="text/css"></link>
<Banner v-if="banner" /> <Banner v-if="banner" />
<NuxtPage :keepalive="true" /> <NuxtPage :keepalive="true" />
</div> </div>
@ -10,20 +9,21 @@
const banner = useState("banner", () => false); const banner = useState("banner", () => false);
let current_theme = "dark" // default theme
const saved_theme = localStorage.getItem("selectedTheme");
if (saved_theme) {
current_theme = saved_theme;
}
</script> </script>
<style> <style>
:root {
--background-color: rgb(30, 30, 30);
--main-text-color: rgb(190, 190, 190);
--outline-border: 1px solid rgb(150, 150, 150);
}
html, html,
body { body {
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
box-sizing: border-box; box-sizing: border-box;
color: var(--text-color); color: rgb(190, 190, 190);
background-color: var(--chat-background-color); background-color: rgb(30, 30, 30);
margin: 0; margin: 0;
} }
@ -40,15 +40,15 @@ a {
} }
.bottom-border { .bottom-border {
border-bottom: 1px solid var(--padding-color); border-bottom: 1px solid rgb(70, 70, 70);
} }
.left-border { .left-border {
border-left: 1px solid var(--padding-color); border-left: 1px solid rgb(70, 70, 70);
} }
.right-border { .right-border {
border-right: 1px solid var(--padding-color); border-right: 1px solid rgb(70, 70, 70);
} }
.rounded-corners { .rounded-corners {

View file

@ -18,8 +18,8 @@ const props = defineProps<{
.button { .button {
cursor: pointer; cursor: pointer;
background-color: var(--primary-color); background-color: #b35719;
color: var(--text-color); color: #ffffff;
padding: 0.7dvh 1.2dvw; padding: 0.7dvh 1.2dvw;
font-size: 1.1em; font-size: 1.1em;
@ -30,22 +30,15 @@ const props = defineProps<{
display: inline-block; display: inline-block;
} }
.button:hover {
background-color: var(--primary-highlighted-color);
}
.scary-button { .scary-button {
background-color: red; background-color: red;
} }
.scary-button:hover {
background-color: red;
}
.neutral-button { .neutral-button {
background-color: var(--accent-color); background-color: grey;
}
.neutral-button:hover {
background-color: var(--accent-highlighted-color);
} }
.button:hover {
background-color: #934410;
}
</style> </style>

View file

@ -36,6 +36,6 @@ const isCurrentChannel = props.uuid == props.currentUuid;
} }
.current-channel { .current-channel {
background-color: var(--sidebar-highlighted-background-color); background-color: rgb(70, 70, 70);
} }
</style> </style>

View file

@ -10,8 +10,6 @@
{{ username }} {{ username }}
</span> </span>
<span class="message-date" :title="date.toString()"> <span class="message-date" :title="date.toString()">
<span v-if="getDayDifference(date, currentDate) === 1">Yesterday at</span>
<span v-else-if="getDayDifference(date, currentDate) > 1 ">{{ date.toLocaleDateString(undefined) }},</span>
{{ date.toLocaleTimeString(undefined, { timeStyle: "short" }) }} {{ date.toLocaleTimeString(undefined, { timeStyle: "short" }) }}
</span> </span>
</div> </div>
@ -51,7 +49,6 @@ const messageElement = ref<HTMLDivElement>();
const dateHidden = ref<boolean>(true); const dateHidden = ref<boolean>(true);
const date = new Date(props.timestamp); const date = new Date(props.timestamp);
const currentDate: Date = new Date()
console.log("message:", props.text); console.log("message:", props.text);
console.log("author:", props.username); console.log("author:", props.username);
@ -77,20 +74,6 @@ onMounted(async () => {
// showHover.value = !showHover.value; // showHover.value = !showHover.value;
//} //}
function getDayDifference(date_1: Date, date_2: Date) {
// Normalize both dates to midnight
const midnight1 = new Date(date_1.getFullYear(), date_1.getMonth(), date_1.getDate());
const midnight2 = new Date(date_2.getFullYear(), date_2.getMonth(), date_2.getDate());
// Calculate the difference in time
const timeDifference = midnight2.getTime() - midnight1.getTime();
// Convert time difference from milliseconds to days
const dayDifference = timeDifference / (1000 * 60 * 60 * 24);
return Math.round(dayDifference); // Round to the nearest whole number
}
</script> </script>
<style scoped> <style scoped>
@ -105,7 +88,7 @@ function getDayDifference(date_1: Date, date_2: Date) {
} }
.message:hover { .message:hover {
background-color: var(--chat-highlighted-background-color); background-color: rgb(20, 20, 20);
} }
.normal-message { .normal-message {
@ -160,7 +143,7 @@ function getDayDifference(date_1: Date, date_2: Date) {
.message-date { .message-date {
font-size: .7em; font-size: .7em;
color: var(--secondary-text-color); color: rgb(150, 150, 150);
cursor: default; cursor: default;
} }

View file

@ -251,7 +251,7 @@ router.beforeEach((to, from, next) => {
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-content: center; align-content: center;
border: 1px solid var(--padding-color); border: 1px solid rgb(70, 70, 70);
padding-bottom: 1dvh; padding-bottom: 1dvh;
padding-top: 1dvh; padding-top: 1dvh;
margin-bottom: 1dvh; margin-bottom: 1dvh;
@ -266,7 +266,7 @@ router.beforeEach((to, from, next) => {
#message-box-input { #message-box-input {
width: 80%; width: 80%;
background-color: var(--sidebar-background-color); background-color: rgb(50, 50, 50);
border: none; border: none;
color: inherit; color: inherit;
padding-left: 1dvw; padding-left: 1dvw;
@ -284,13 +284,11 @@ router.beforeEach((to, from, next) => {
#submit-button { #submit-button {
background-color: inherit; background-color: inherit;
border: none; border: none;
color: var(--primary-color); color: rgb(200, 200, 200);
transition: color 100ms;
font-size: 1.5em; font-size: 1.5em;
} }
#submit-button:hover { #submit-button:hover {
color: var(--primary-highlighted-color); color: rgb(255, 255, 255);
cursor: pointer;
} }
</style> </style>

View file

@ -145,8 +145,8 @@ const deleteAccount = async () => {
font-size: 1em; font-size: 1em;
border-radius: 8px; border-radius: 8px;
border: none; border: none;
color: var(--text-color); color: white;
background-color: var(--accent-color); background-color: #54361b;
} }
.profile-popup { .profile-popup {

View file

@ -3,7 +3,7 @@
<img v-if="props.user.avatar" id="avatar" :src="props.user.avatar" alt="profile avatar"> <img v-if="props.user.avatar" id="avatar" :src="props.user.avatar" alt="profile avatar">
<Icon v-else id="avatar" name="lucide:user" /> <Icon v-else id="avatar" name="lucide:user" />
<div id="cover-color"></div> <div id="cover-colour"></div>
<div id="main-body"> <div id="main-body">
<p id="display-name"> <p id="display-name">
<strong>{{ props.user.display_name }}</strong> <strong>{{ props.user.display_name }}</strong>
@ -40,17 +40,17 @@ const props = defineProps<{
flex-direction: column; flex-direction: column;
} }
#cover-color { #cover-colour {
border-radius: 12px 12px 0 0; border-radius: 12px 12px 0 0;
min-height: 60px; min-height: 60px;
background-color: var(--primary-color); background-color: #442505;
} }
#main-body { #main-body {
border-radius: 0 0 12px 12px; border-radius: 0 0 12px 12px;
padding: 12px; padding: 12px;
min-height: 280px; min-height: 280px;
background-color: var(--accent-color); background-color: #4b3018;
overflow-wrap: break-word; overflow-wrap: break-word;
hyphens: manual; hyphens: manual;
} }
@ -77,7 +77,7 @@ const props = defineProps<{
} }
#about-me { #about-me {
background-color: var(--secondary-color); background-color: #34200f;
border-radius: 12px; border-radius: 12px;
margin-top: 32px; margin-top: 32px;

View file

@ -55,13 +55,12 @@ const guilds: GuildResponse[] | undefined = await fetchWithApi("/me/guilds");
display: flex; display: flex;
justify-content: space-evenly; justify-content: space-evenly;
align-items: center; align-items: center;
background-color: var(--topbar-background-color);
padding-left: 5dvw; padding-left: 5dvw;
padding-right: 5dvw; padding-right: 5dvw;
} }
#client-root>div:nth-child(-n+4) { #client-root>div:nth-child(-n+4) {
border-bottom: 1px solid var(--padding-color); border-bottom: 1px solid rgb(70, 70, 70);
} }
#__nuxt { #__nuxt {
@ -94,19 +93,18 @@ const guilds: GuildResponse[] | undefined = await fetchWithApi("/me/guilds");
gap: 2dvh; gap: 2dvh;
padding-left: .5dvw; padding-left: .5dvw;
padding-right: .5dvw; padding-right: .5dvw;
border-right: 1px solid var(--padding-color); border-right: 1px solid rgb(70, 70, 70);
background-color: var(--sidebar-background-color);
padding-top: 1.5dvh; padding-top: 1.5dvh;
} }
#middle-left-column { #middle-left-column {
padding-left: 1dvw; padding-left: 1dvw;
padding-right: 1dvw; padding-right: 1dvw;
border-right: 1px solid var(--padding-color); border-right: 1px solid rgb(70, 70, 70);
} }
#home-button { #home-button {
border-bottom: 1px solid var(--padding-color); border-bottom: 1px solid rgb(70, 70, 70);
padding-bottom: 1dvh; padding-bottom: 1dvh;
} }

View file

@ -85,15 +85,14 @@ function handleMemberClick(member: GuildMemberResponse) {
#middle-left-column { #middle-left-column {
padding-left: 1dvw; padding-left: 1dvw;
padding-right: 1dvw; padding-right: 1dvw;
border-right: 1px solid var(--padding-color); border-right: 1px solid rgb(70, 70, 70);
background-color: var(--sidebar-background-color);
} }
#members-container { #members-container {
padding-top: 1dvh; padding-top: 1dvh;
padding-left: 1dvw; padding-left: 1dvw;
padding-right: 1dvw; padding-right: 1dvw;
border-left: 1px solid var(--padding-color); border-left: 1px solid rgb(70, 70, 70);
} }
#members-list { #members-list {

View file

@ -98,8 +98,8 @@ function selectCategory(page: Page) {
#sidebar { #sidebar {
min-width: 25dvw; min-width: 25dvw;
max-width: 25dvw; max-width: 25dvw;
background-color: var(--sidebar-background-color); background-color: #2f3136;
color: var(--text-color); color: white;
padding: 1dvh 1dvw; padding: 1dvh 1dvw;
margin-left: auto; margin-left: auto;
@ -127,11 +127,11 @@ function selectCategory(page: Page) {
} }
.sidebar-focus { .sidebar-focus {
background-color: var(--sidebar-highlighted-background-color); background-color: #383B41;
} }
#sidebar li:hover { #sidebar li:hover {
background-color: var(--sidebar-highlighted-background-color); background-color: #40444b;
} }
#sub-page { #sub-page {
@ -149,7 +149,7 @@ function selectCategory(page: Page) {
height: 0.2dvh; height: 0.2dvh;
display: block; display: block;
margin: 0.8dvh 1dvw; margin: 0.8dvh 1dvw;
background-color: var(--spacing-color); background-color: #2c2e32;
} }
/* applies to child pages too */ /* applies to child pages too */

View file

@ -1,19 +0,0 @@
:root {
--text-color: #f7eee8;
--secondary-text-color: #f0e8e4;
--chat-background-color: #1f1e1d;
--chat-highlighted-background-color: #2f2b28;
--sidebar-background-color: #2e2a27;
--sidebar-highlighted-background-color: #36322b;
--topbar-background-color: #2a2723;
--padding-color: #484848;
--primary-color: #f4741f;
--primary-highlighted-color: #f68a3f;
--secondary-color: #7c4018;
--secondary-highlighted-color: #8f5b2c;
--accent-color: #b35719;
--accent-highlighted-color: #c76a2e;
}

View file

@ -1,4 +0,0 @@
[
"dark.css",
"light.css"
]

View file

@ -1,19 +0,0 @@
:root {
--text-color: #170f08;
--secondary-text-color: #2f2b28;
--chat-background-color: #f0ebe8;
--chat-highlighted-background-color: #e8e4e0;
--sidebar-background-color: #dbd8d4;
--sidebar-highlighted-background-color: #d4d0ca;
--topbar-background-color: #dfdbd6;
--padding-color: #484848;
--primary-color: #df5f0b;
--primary-highlighted-color: #ef6812;
--secondary-color: #e8ac84;
--secondary-highlighted-color: #f8b68a;
--accent-color: #e68b4e;
--accent-highlighted-color: #f69254;
}

View file

@ -62,7 +62,7 @@ export interface UserResponse {
about: string | null, about: string | null,
email?: string, email?: string,
email_verified?: boolean email_verified?: boolean
} }
export interface StatsResponse { export interface StatsResponse {
accounts: number, accounts: number,