improve UI

This commit is contained in:
marlon-erler
2024-07-22 00:30:43 +02:00
parent 876e03abc7
commit 5ec5196b9f
6 changed files with 216 additions and 44 deletions
+98 -19
View File
@@ -185,6 +185,83 @@ main {
--subtle-luma-dark: 5%; --subtle-luma-dark: 5%;
} }
/* src/aero.css */
:root {
--primary: hsl(220, 100%, 90%);
--primary-hover: hsl(220, 100%, 88%);
--primary-active: hsl(220, 100%, 85%);
--text-on-color: black;
--surface: hsla(220, 30%, 90%, 50%);
--surface-hover: hsla(220, 30%, 85%, 50%);
--surface-active: hsla(220, 30%, 80%, 50%);
--control-height: 2rem;
--outline-width: 2px;
}
.gap {
gap: 0px !important;
}
.flex-row :is(button, input, .tile):not(:last-child) {
margin-right: var(--gap-between-tiles);
}
.flex-column :is(button, input, .tile):not(:last-child) {
margin-bottom: var(--gap-between-tiles);
}
button,
input,
select,
textarea,
.tile {
border-radius: 5px;
}
button,
input,
select,
textarea {
font-size: 0.9rem;
}
button .icon {
font-size: 1.1rem;
}
.modal > div {
border-radius: 7px;
}
:is(input, select):not(.tile *),
button,
.tile {
position: relative;
border: 1px solid var(--border);
}
:is(input, select):not(.tile *)::before,
button::before,
.tile::before {
content: "";
position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
opacity: 0.25;
pointer-events: none;
}
:is(input, select):not(.tile *)::before,
button::before,
.tile:has(select)::before {
background:
linear-gradient(
#b7b7b7,
#fff 45%,
#bdbdbd 70%,
#eee);
}
:is(input):not(.tile *)::before,
.tile:has(input)::before {
background:
linear-gradient(
#d8d8d8,
#bdbdbd 35%,
#eee);
}
/* src/View/chatPage.css */ /* src/View/chatPage.css */
#chat-page-wrapper { #chat-page-wrapper {
display: none; display: none;
@@ -402,52 +479,54 @@ body[showing-chat] #chat-page-wrapper {
width: 100%; width: 100%;
max-width: var(--max-content-width); max-width: var(--max-content-width);
} }
.message-bubble .main { .message-bubble .tile.main {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
background-color: var(--surface); align-items: start;
padding: 0px;
width: 100%; width: 100%;
max-width: var(--max-input-width); max-width: var(--max-input-width);
overflow: hidden; overflow: hidden;
} }
.message-bubble .main .text-container { .message-bubble .tile.main .text-container {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
overflow: hidden; overflow: hidden;
width: 100%; width: 100%;
flex: 1; flex: 1;
} }
.message-bubble .main .button-container { .message-bubble .tile.main .button-container {
display: flex; display: flex;
align-items: start; width: var(--control-height);
max-width: var(--control-height);
} }
.message-bubble .main button { .message-bubble .tile.main button {
justify-content: center; justify-content: center;
padding: 0px; padding: 0px;
width: var(--control-height); width: 100%;
--surface: transparent; --surface: transparent;
} }
.message-bubble .main .text-container { .message-bubble .tile.main .text-container {
padding: var(--control-padding); padding: var(--control-padding);
} }
.message-bubble .main .timestamp, .message-bubble .tile.main .timestamp,
.message-bubble .main .timestamp .icon, .message-bubble .tile.main .timestamp .icon,
.message-bubble .main .sender-name { .message-bubble .tile.main .sender-name {
font-size: 0.8rem; font-size: 0.8rem;
opacity: 0.6; opacity: 0.6;
} }
.message-bubble .main .timestamp { .message-bubble .tile.main .timestamp {
display: flex; display: flex;
align-items: center; align-items: center;
gap: var(--gap-between-tiles); gap: var(--gap-between-tiles);
} }
.message-bubble .main .timestamp .icon { .message-bubble .tile.main .timestamp .icon {
display: none; display: none;
} }
.message-bubble .main .sender-name { .message-bubble .tile.main .sender-name {
font-weight: bold; font-weight: bold;
} }
.message-bubble .main .body { .message-bubble .tile.main .body {
word-break: break-word; word-break: break-word;
} }
.message-bubble[sentbyuser] { .message-bubble[sentbyuser] {
@@ -456,14 +535,14 @@ body[showing-chat] #chat-page-wrapper {
.message-bubble[sentbyuser] { .message-bubble[sentbyuser] {
align-items: flex-end; align-items: flex-end;
} }
.message-bubble[sentbyuser] .main, .message-bubble[sentbyuser] .tile.main,
.message-bubble[sentbyuser] .main .timestamp { .message-bubble[sentbyuser] .tile.main .timestamp {
flex-direction: row-reverse; flex-direction: row-reverse;
} }
.message-bubble[sentbyuser] .main .timestamp .icon { .message-bubble[sentbyuser] .tile.main .timestamp .icon {
display: flex; display: flex;
} }
.message-bubble[sentbyuser] .main span { .message-bubble[sentbyuser] .tile.main span {
text-align: right; text-align: right;
} }
+1 -1
View File
@@ -1311,7 +1311,7 @@
class: "message-bubble", class: "message-bubble",
"toggle:sentbyuser": chatMessageViewModel.sentByUser "toggle:sentbyuser": chatMessageViewModel.sentByUser
}, },
/* @__PURE__ */ createElement("div", { class: "main" }, /* @__PURE__ */ createElement("div", { class: "text-container" }, /* @__PURE__ */ createElement("span", { class: "sender-name ellipsis" }, chatMessageViewModel.sender), /* @__PURE__ */ createElement( /* @__PURE__ */ createElement("div", { class: "main tile" }, /* @__PURE__ */ createElement("div", { class: "text-container" }, /* @__PURE__ */ createElement("span", { class: "sender-name ellipsis" }, chatMessageViewModel.sender), /* @__PURE__ */ createElement(
"span", "span",
{ {
class: "body", class: "body",
+4 -1
View File
@@ -252,6 +252,9 @@ SIZES
--gap-in-controls: 1.2rem; --gap-in-controls: 1.2rem;
--large-gap: 2rem; --large-gap: 2rem;
/* outline */
--outline-width: var(--gap-between-tiles);
/* margin */ /* margin */
--label-top-padding: 0.25rem; --label-top-padding: 0.25rem;
--label-tile-top-padding: 0.5rem; --label-tile-top-padding: 0.5rem;
@@ -379,7 +382,7 @@ label.tile:has(input:focus),
label.tile:has(textarea:focus), label.tile:has(textarea:focus),
textarea:focus:not(label.tile *), textarea:focus:not(label.tile *),
[selected] { [selected] {
outline: var(--gap-between-tiles) solid var(--primary); outline: var(--outline-width) solid var(--primary);
} }
/* border-radius */ /* border-radius */
+22 -19
View File
@@ -78,18 +78,19 @@
max-width: var(--max-content-width); max-width: var(--max-content-width);
} }
.message-bubble .main { .message-bubble .tile.main {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: start;
background-color: var(--surface); padding: 0px;
width: 100%; width: 100%;
max-width: var(--max-input-width); max-width: var(--max-input-width);
overflow: hidden; overflow: hidden;
} }
.message-bubble .main .text-container { .message-bubble .tile.main .text-container {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@@ -99,46 +100,48 @@
flex: 1; flex: 1;
} }
.message-bubble .main .button-container { .message-bubble .tile.main .button-container {
display: flex; display: flex;
align-items: start;
width: var(--control-height);
max-width: var(--control-height);
} }
.message-bubble .main button { .message-bubble .tile.main button {
justify-content: center; justify-content: center;
padding: 0px; padding: 0px;
width: var(--control-height); width: 100%;
--surface: transparent; --surface: transparent;
} }
.message-bubble .main .text-container { .message-bubble .tile.main .text-container {
padding: var(--control-padding); padding: var(--control-padding);
} }
.message-bubble .main .timestamp, .message-bubble .tile.main .timestamp,
.message-bubble .main .timestamp .icon, .message-bubble .tile.main .timestamp .icon,
.message-bubble .main .sender-name { .message-bubble .tile.main .sender-name {
font-size: 0.8rem; font-size: 0.8rem;
opacity: 0.6; opacity: 0.6;
} }
.message-bubble .main .timestamp { .message-bubble .tile.main .timestamp {
display: flex; display: flex;
align-items: center; align-items: center;
gap: var(--gap-between-tiles); gap: var(--gap-between-tiles);
} }
.message-bubble .main .timestamp .icon { .message-bubble .tile.main .timestamp .icon {
display: none; display: none;
} }
.message-bubble .main .sender-name { .message-bubble .tile.main .sender-name {
font-weight: bold; font-weight: bold;
} }
.message-bubble .main .body { .message-bubble .tile.main .body {
word-break: break-word; word-break: break-word;
} }
@@ -150,15 +153,15 @@
align-items: flex-end; align-items: flex-end;
} }
.message-bubble[sentbyuser] .main, .message-bubble[sentbyuser] .tile.main,
.message-bubble[sentbyuser] .main .timestamp { .message-bubble[sentbyuser] .tile.main .timestamp {
flex-direction: row-reverse; flex-direction: row-reverse;
} }
.message-bubble[sentbyuser] .main .timestamp .icon { .message-bubble[sentbyuser] .tile.main .timestamp .icon {
display: flex; display: flex;
} }
.message-bubble[sentbyuser] .main span { .message-bubble[sentbyuser] .tile.main span {
text-align: right; text-align: right;
} }
+2 -1
View File
@@ -32,7 +32,7 @@ export function ChatMessage(chatMessageViewModel: ChatMessageViewModel) {
class="message-bubble" class="message-bubble"
toggle:sentbyuser={chatMessageViewModel.sentByUser} toggle:sentbyuser={chatMessageViewModel.sentByUser}
> >
<div class="main"> <div class="main tile">
<div class="text-container"> <div class="text-container">
<span class="sender-name ellipsis"> <span class="sender-name ellipsis">
{chatMessageViewModel.sender} {chatMessageViewModel.sender}
@@ -46,6 +46,7 @@ export function ChatMessage(chatMessageViewModel: ChatMessageViewModel) {
{chatMessageViewModel.dateSent} {chatMessageViewModel.dateSent}
</span> </span>
</div> </div>
<div class="button-container"> <div class="button-container">
<button <button
on:click={openModal} on:click={openModal}
+86
View File
@@ -0,0 +1,86 @@
/*
AERO
*/
:root {
--primary: hsl(220, 100%, 90%);
--primary-hover: hsl(220, 100%, 88%);
--primary-active: hsl(220, 100%, 85%);
--text-on-color: black;
--surface: hsla(220, 30%, 90%, 50%);
--surface-hover: hsla(220, 30%, 85%, 50%);
--surface-active: hsla(220, 30%, 80%, 50%);
--control-height: 2rem;
--outline-width: 2px;
}
.gap {
gap: 0px !important;
}
.flex-row :is(button, input, .tile):not(:last-child) {
margin-right: var(--gap-between-tiles);
}
.flex-column :is(button, input, .tile):not(:last-child) {
margin-bottom: var(--gap-between-tiles);
}
button,
input,
select,
textarea,
.tile {
border-radius: 5px;
}
button,
input,
select,
textarea {
font-size: 0.9rem;
}
button .icon {
font-size: 1.1rem;
}
.modal > div {
border-radius: 7px;
}
:is(input, select):not(.tile *),
button,
.tile {
position: relative;
border: 1px solid var(--border);
}
:is(input, select):not(.tile *)::before,
button::before,
.tile::before {
content: "";
position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
opacity: 0.25;
pointer-events: none;
}
:is(input, select):not(.tile *)::before,
button::before,
.tile:has(select)::before {
background: linear-gradient(#b7b7b7, #fff 45%, #bdbdbd 70%, #eee);
}
:is(input):not(.tile *)::before,
.tile:has(input)::before {
background: linear-gradient(#d8d8d8, #bdbdbd 35%, #eee);
}