4db65993d5
Visual:
- Light/dark theme via ThemeContext + CSS vars
- New design tokens (surface/fg/accent/line/etc.) across all pages
- Reusable Avatar component (img + letter fallback) wired into UserBar,
ConversationHeader, ChatsPage, FriendsPage, GroupInfoPanel, IncomingCallPanel
Calls:
- Split call UI: IncomingCallPanel, InCallPanel, CallControls,
CallParticipantTile, ScreenShareViewer
- Active speaker hook (useActiveSpeakers)
- Fix: ActiveCallBanner stayed hidden after hangup while peers in room.
- useCallPresence: bind presence callbacks only when we own subscribe
(Supabase forbids .on() after .subscribe() on shared dedup'd channels)
- useCallPresence: never removeChannel — channel is shared with CallContext
so tearing it down on ConversationHeader unmount killed live tracking
- ActiveCallBanner: lastCallConversationId fallback so banner shows
instantly after hangup, auto-dismiss when room confirmed empty
- Drop unused useAnyActiveCall
Bump tauri version 0.5.0 -> 0.6.0
92 lines
2.3 KiB
CSS
92 lines
2.3 KiB
CSS
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Outfit:wght@500;600;700&display=swap');
|
|
|
|
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
* Clean-Rail design tokens.
|
|
*
|
|
* `--bg-rgb / --fg-rgb / --accent-rgb` are *space-separated rgb triplets*
|
|
* (no `rgb(...)` wrapper) so Tailwind's `rgb(var(--x) / <alpha-value>)`
|
|
* alpha modifier works (e.g. `bg-surface/40`).
|
|
*
|
|
* `--line` is a full color value with baked-in alpha — theme decides whether
|
|
* borders are inked-on-white or white-on-ink.
|
|
* ------------------------------------------------------------------------- */
|
|
|
|
:root {
|
|
--bg-rgb: 250 250 249;
|
|
--bg-2-rgb: 244 244 242;
|
|
--bg-3-rgb: 255 255 255;
|
|
--fg-rgb: 10 10 15;
|
|
--fg-muted-rgb: 115 115 128;
|
|
--accent-rgb: 79 70 229;
|
|
--accent-fg-rgb: 255 255 255;
|
|
--line: rgba(10, 10, 15, 0.08);
|
|
color-scheme: light;
|
|
}
|
|
|
|
.dark {
|
|
--bg-rgb: 5 5 7;
|
|
--bg-2-rgb: 17 17 24;
|
|
--bg-3-rgb: 10 10 15;
|
|
--fg-rgb: 244 244 245;
|
|
--fg-muted-rgb: 138 138 153;
|
|
--accent-rgb: 109 115 255;
|
|
--accent-fg-rgb: 255 255 255;
|
|
--line: rgba(255, 255, 255, 0.07);
|
|
color-scheme: dark;
|
|
}
|
|
|
|
@layer base {
|
|
html,
|
|
body,
|
|
#root {
|
|
height: 100%;
|
|
}
|
|
|
|
body {
|
|
@apply bg-surface text-fg font-sans antialiased;
|
|
font-feature-settings: 'cv11', 'ss01';
|
|
}
|
|
|
|
::selection {
|
|
@apply bg-accent/40 text-white;
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
*,
|
|
*::before,
|
|
*::after {
|
|
animation-duration: 0.01ms !important;
|
|
animation-iteration-count: 1 !important;
|
|
transition-duration: 0.01ms !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
@layer utilities {
|
|
.scrollbar-none::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
.bg-grid {
|
|
background-image:
|
|
linear-gradient(rgba(255, 255, 255, 0.04) 1px, transparent 1px),
|
|
linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
|
|
background-size: 32px 32px;
|
|
background-position: -1px -1px;
|
|
}
|
|
/* Glass pill used for the fullscreen call controls bar. */
|
|
.glass-pill {
|
|
background: rgba(10, 10, 15, 0.7);
|
|
backdrop-filter: blur(20px);
|
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
}
|
|
.glass-chip {
|
|
background: rgba(0, 0, 0, 0.55);
|
|
backdrop-filter: blur(10px);
|
|
color: #fff;
|
|
}
|
|
}
|