feat: 1-to-1 message render + web data-lake backend

This commit is contained in:
h
2026-05-31 01:27:40 +02:00
parent f0afb7ec5b
commit 75425d1bee
110 changed files with 10199 additions and 54 deletions
+202
View File
@@ -0,0 +1,202 @@
@use "variables";
@use "spacing";
@use "forms";
@use "dark-theme";
html,
body {
height: 100%;
margin: 0;
}
body {
overflow: hidden;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
font-size: 1rem;
color: var(--color-text);
background-color: var(--color-background);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
* {
box-sizing: border-box;
}
.icon::before {
font-family: "icons" !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
::-webkit-scrollbar {
width: 0.375rem;
height: 0.375rem;
}
::-webkit-scrollbar-thumb {
background-color: var(--color-scrollbar);
border-radius: 0.375rem;
}
::-webkit-scrollbar-track {
background-color: transparent;
}
button:focus,
a:focus,
[tabindex]:focus {
outline: none;
}
.custom-scroll {
scrollbar-color: transparent transparent;
scrollbar-width: thin;
transition: scrollbar-color 0.3s ease;
-webkit-overflow-scrolling: touch;
&::-webkit-scrollbar {
width: 0.375rem;
height: 0.375rem;
}
&::-webkit-scrollbar-thumb {
border-radius: 0.375rem;
background-color: transparent;
box-shadow: 0 0 1px rgba(255, 255, 255, 0.01);
}
&:hover,
&:focus,
&:focus-within {
scrollbar-color: var(--color-scrollbar) transparent;
&::-webkit-scrollbar-thumb {
background-color: var(--color-scrollbar);
}
}
}
.skeleton {
background: linear-gradient(
90deg,
var(--color-skeleton-background) 25%,
var(--color-skeleton-foreground) 37%,
var(--color-skeleton-background) 63%
);
background-size: 400% 100%;
animation: skeleton-shimmer 1.4s ease infinite;
}
@keyframes skeleton-shimmer {
0% {
background-position: 100% 0;
}
100% {
background-position: 0 0;
}
}
html.theme-transition,
html.theme-transition * {
transition:
background-color 0.25s ease,
border-color 0.25s ease,
color 0.25s ease !important;
}
@keyframes ripple-animation {
from {
transform: scale(0);
opacity: 1;
}
50% {
opacity: 1;
}
to {
transform: scale(2);
opacity: 0;
}
}
.ripple-container {
pointer-events: none;
position: absolute;
inset: 0;
overflow: hidden;
}
.ripple-wave {
pointer-events: none;
position: absolute;
transform: scale(0);
display: block;
border-radius: 50%;
background-color: var(--ripple-color, rgba(0, 0, 0, 0.08));
animation: ripple-animation 700ms;
}
.bg-menu-content {
z-index: var(--z-portal-menu);
min-width: 12rem;
padding: 0.375rem;
border-radius: 0.75rem;
color: var(--color-text);
background-color: var(--color-background-compact-menu);
backdrop-filter: blur(10px);
box-shadow: 0 0.25rem 1rem var(--color-default-shadow);
outline: none;
}
html.theme-dark .bg-menu-content {
border: 1px solid var(--color-borders);
}
.bg-menu-item {
cursor: pointer;
display: flex;
align-items: center;
gap: 0.75rem;
width: 100%;
padding: 0.5rem 0.75rem;
border-radius: 0.5rem;
font-size: 0.9375rem;
color: var(--color-text);
outline: none;
transition: background-color 0.15s ease;
&[data-highlighted],
&:hover {
background-color: var(--color-background-compact-menu-hover);
}
&[data-selected] {
color: var(--color-primary);
}
}
.bg-menu-separator {
height: 1px;
margin: 0.375rem 0;
background-color: var(--color-background-menu-separator);
}
$peer-colors: #e17076, #eda86c, #a695e7, #7bc862, #6ec9cb, #65aadd, #ee7aae;
@for $i from 0 through 6 {
.peer-color-#{$i} {
color: nth($peer-colors, $i + 1);
}
}