Fix weather widget position and z-index hierarchy

- Position weather widget fixed at left:24px, top:240px
- Set weather widget z-index to 300 (below FAB at 398-400)
- Fix FAB z-index to be below search dropdown
- Fix various z-index issues for modals and overlays

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Sociowire Dev 2026-01-12 03:25:41 +00:00
parent dac9f620d0
commit 85ebb500bc
13 changed files with 32 additions and 31 deletions

View File

@ -17,6 +17,17 @@ export default function App() {
const { t } = useTranslation(); const { t } = useTranslation();
const [theme, setTheme] = useState("blue"); const [theme, setTheme] = useState("blue");
// Clean up Facebook OAuth hash fragment (#_=_)
useEffect(() => {
if (window.location.hash === "#_=_") {
if (window.history.replaceState) {
window.history.replaceState(null, "", window.location.pathname + window.location.search);
} else {
window.location.hash = "";
}
}
}, []);
// Wall state (lifted from MapView) // Wall state (lifted from MapView)
const [wallPosts, setWallPosts] = useState([]); const [wallPosts, setWallPosts] = useState([]);
const [wallLoading, setWallLoading] = useState(false); const [wallLoading, setWallLoading] = useState(false);

View File

@ -7,7 +7,7 @@ import { CREATE_CATEGORY_MAP, FILTER_MAIN_CATEGORIES } from "../Map/mapConfig";
import "./Live.css"; import "./Live.css";
const API_BASE = (import.meta?.env?.VITE_API_BASE_URL || "").replace(/\/+$/, ""); const API_BASE = (import.meta?.env?.VITE_API_BASE_URL || "").replace(/\/+$/, "");
const LIVEKIT_API = "https://live.us1.sociowire.com"; const LIVEKIT_API = "https://stream.us4.sociowire.com";
/** /**
* LiveKit-based broadcast component * LiveKit-based broadcast component

View File

@ -3,8 +3,8 @@ import { Room, RoomEvent } from "livekit-client";
import { useAuth } from "../../auth/AuthContext"; import { useAuth } from "../../auth/AuthContext";
import "./Live.css"; import "./Live.css";
const LIVEKIT_URL = "wss://live.us1.sociowire.com"; const LIVEKIT_URL = "wss://live.us4.sociowire.com";
const LIVEKIT_API = "https://live.us1.sociowire.com"; const LIVEKIT_API = "https://stream.us4.sociowire.com";
function roomNameFromPost(post) { function roomNameFromPost(post) {
const raw = (post?.embed_url || post?.video_url || "").toString().trim(); const raw = (post?.embed_url || post?.video_url || "").toString().trim();

View File

@ -7,8 +7,8 @@ import {
createLocalAudioTrack, createLocalAudioTrack,
} from "livekit-client"; } from "livekit-client";
const LIVEKIT_URL = "wss://live.us1.sociowire.com"; const LIVEKIT_URL = "wss://live.us4.sociowire.com";
const LIVEKIT_API = "https://live.us1.sociowire.com"; const LIVEKIT_API = "https://stream.us4.sociowire.com";
/** /**
* Hook for LiveKit-based live streaming * Hook for LiveKit-based live streaming

View File

@ -1974,11 +1974,12 @@ export default function MapView({
<div <div
onClick={() => setActiveWeatherPost(w)} onClick={() => setActiveWeatherPost(w)}
style={{ style={{
position: 'fixed',
left: '24px',
top: '240px',
display: 'inline-flex', display: 'inline-flex',
alignItems: 'center', alignItems: 'center',
gap: '5px', gap: '5px',
marginTop: '8px',
marginLeft: '70px', // Offset from left FAB
padding: '5px 12px', padding: '5px 12px',
borderRadius: '16px', borderRadius: '16px',
background: bg, background: bg,
@ -1989,6 +1990,7 @@ export default function MapView({
cursor: 'pointer', cursor: 'pointer',
backdropFilter: 'blur(8px)', backdropFilter: 'blur(8px)',
boxShadow: '0 2px 8px rgba(0,0,0,0.2)', boxShadow: '0 2px 8px rgba(0,0,0,0.2)',
zIndex: 300,
}} }}
> >
<span style={{ fontSize: '16px' }}>{w.icon}</span> <span style={{ fontSize: '16px' }}>{w.icon}</span>

View File

@ -7,7 +7,7 @@
background: rgba(0, 0, 0, 0.15); background: rgba(0, 0, 0, 0.15);
backdrop-filter: blur(2px); backdrop-filter: blur(2px);
-webkit-backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px);
z-index: 998; z-index: 398; /* Below search dropdown (500) */
animation: fab-fade-in 0.2s ease; animation: fab-fade-in 0.2s ease;
} }
@ -21,7 +21,7 @@
.fab-right { .fab-right {
position: fixed; position: fixed;
top: 180px; top: 180px;
z-index: 999; z-index: 399; /* Below search dropdown (500) */
} }
.fab-left { .fab-left {
@ -49,7 +49,7 @@
transition: transform 0.2s ease, box-shadow 0.2s ease; transition: transform 0.2s ease, box-shadow 0.2s ease;
-webkit-tap-highlight-color: transparent; -webkit-tap-highlight-color: transparent;
position: relative; position: relative;
z-index: 1001; z-index: 400; /* Below search dropdown (500) */
} }
.fab-btn-right { .fab-btn-right {

View File

@ -1,7 +1,7 @@
.auth-modal-backdrop { .auth-modal-backdrop {
position: fixed; position: fixed;
inset: 0; inset: 0;
z-index: 10000020; z-index: 10000; /* Auth modal - highest priority */
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;

View File

@ -240,18 +240,6 @@ body[data-theme="light"] .sw-icon-active .sw-icon-label{
/* SW_FILTER_ICON_VISIBILITY:END */ /* SW_FILTER_ICON_VISIBILITY:END */
/* VERSION INDICATOR */
body::after {
content: "© Sociowire v0.0011";
position: fixed;
bottom: 4px;
right: 4px;
font-size: 10px;
color: rgba(255,255,255,0.5);
z-index: 99999;
pointer-events: none;
}
/* ===== THEME PILLS D / B / L : blanc sur fond noir comme les catégories ===== */ /* ===== THEME PILLS D / B / L : blanc sur fond noir comme les catégories ===== */
.sw-theme-toggle{ .sw-theme-toggle{
display:flex; display:flex;

View File

@ -177,7 +177,7 @@
transform:translateX(-50%); transform:translateX(-50%);
max-width: min(980px, calc(100vw - 24px)); max-width: min(980px, calc(100vw - 24px));
width:100%; width:100%;
z-index: 10001; /* Au-dessus des filtres (z-index: 300) et du dropdown (9999) */ z-index: 800; /* Above filters (300) but below modals (9999) */
} }
@ -1365,7 +1365,7 @@ body[data-theme="light"] .map-action-btn * {
bottom:50%; bottom:50%;
left:50%; left:50%;
transform:translate(-50%, 50%); transform:translate(-50%, 50%);
z-index:9000; z-index:900; /* Below modals (9999) but above filters/content */
display:flex; display:flex;
flex-direction:column; flex-direction:column;
gap:6px; gap:6px;

View File

@ -1116,7 +1116,7 @@ body[data-theme="light"] .sw-modal-hero-fallback{
.sw-centered-backdrop{ .sw-centered-backdrop{
position: fixed; position: fixed;
inset: 0; inset: 0;
z-index: 9999999; z-index: 9999; /* Centered modal - above most content but below auth */
background: rgba(0,0,0,0.08); background: rgba(0,0,0,0.08);
backdrop-filter: blur(1px); backdrop-filter: blur(1px);
display: flex; display: flex;

View File

@ -3,7 +3,7 @@
.user-profile-modal { .user-profile-modal {
position: fixed; position: fixed;
inset: 0; inset: 0;
z-index: 9998; /* Just below island viewer */ z-index: 9999;
background: rgba(0, 0, 0, 0.8); background: rgba(0, 0, 0, 0.8);
display: flex; display: flex;
align-items: center; align-items: center;

View File

@ -167,7 +167,7 @@ body[data-theme="light"] {
.sw-search__dropdown { .sw-search__dropdown {
position: absolute; position: absolute;
z-index: 9999; z-index: 500;
left: 0; left: 0;
right: 0; right: 0;
margin-top: 8px; margin-top: 8px;

View File

@ -767,7 +767,7 @@ body[data-theme="light"] .sw-avatar{
position: fixed; position: fixed;
top: 70px; top: 70px;
right: 16px; right: 16px;
z-index: 10000005; z-index: 1000;
animation: friendsSlideIn 0.2s ease-out; animation: friendsSlideIn 0.2s ease-out;
} }
@ -829,7 +829,7 @@ body[data-theme="light"] .sw-avatar{
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(255,255,255,0.05); box-shadow: 0 12px 40px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(255,255,255,0.05);
backdrop-filter: blur(16px); backdrop-filter: blur(16px);
overflow: hidden; overflow: hidden;
z-index: 10000010; z-index: 1001;
animation: langDropIn 0.18s ease-out; animation: langDropIn 0.18s ease-out;
} }
@ -908,7 +908,7 @@ body[data-theme="light"] .lang-option.is-active{
.theme-dropdown{ .theme-dropdown{
position: fixed; position: fixed;
z-index: 10000010; z-index: 1001;
background: rgba(15, 23, 42, 0.98); background: rgba(15, 23, 42, 0.98);
border: 1px solid rgba(139, 92, 246, 0.5); border: 1px solid rgba(139, 92, 246, 0.5);
border-radius: 8px; border-radius: 8px;