// Additional Swiss screens - POI Detail, Buddys, "Hingehen" Sheet, Buddy Profile
// Same design language as Swiss.jsx (single hot accent, strict grid, big sans, mono for data).
const SX_ACCENT = '#FF4D2E';
const SX_INK = '#000000';
const SX_PAPER = '#FFFFFF';
const SX_GREY_3 = '#888888';
const SX_GREY_2 = '#BBBBBB';
const SX_GREY_1 = '#E5E5E5';
// Reuse helpers from Swiss
const SX_PHOTOS = [
'photo-1494790108377-be9c29b29330',
'photo-1438761681033-6461ffad8d80',
'photo-1544005313-94ddf0286df2',
'photo-1487412720507-e7ab37603c6f',
'photo-1500648767791-00dcc994a43e',
'photo-1472099645785-5658abf4ff4e',
'photo-1507003211169-0a1dd7228f2d',
];
const sxAvatarUrl = (i, s = 80) => `https://images.unsplash.com/${SX_PHOTOS[i % SX_PHOTOS.length]}?w=${s}&h=${s}&fit=crop&crop=faces&q=70`;
// Real location photos via Unsplash - chosen for genre fit (park bench, coffee, swimming pool, etc.)
const SX_LOC_PHOTOS = {
westpark: 'photo-1500382017468-9049fed747ef', // sunlit park, warm grass
cafe: 'photo-1554118811-1e0d58224f24', // cafe interior with warm light
bad: 'photo-1576013551627-0cc20b96c2a7', // pool water, calm
park: 'photo-1441974231531-c6227db76b6e', // forest park
};
const sxLocUrl = (key, w = 800, h = 500) => {
const id = SX_LOC_PHOTOS[key] || SX_LOC_PHOTOS.westpark;
return `https://images.unsplash.com/${id}?w=${w}&h=${h}&fit=crop&q=75`;
};
function SXAvatar({ variant = 0, size = 32, ring = 'none' }) {
const ringPx = ring === 'none' ? 0 : 2;
const ringColor = ring === 'accent' ? SX_ACCENT : SX_INK;
return (
);
}
// Reuse status bar / home indicator - they're declared in Shell.jsx as globals.
function SXFrame({ children, bg, dark = false, time = '14:32' }) {
return (
{children}
);
}
function SXMast({ left = null, right = '14.05.26 / 14:32 / DO' }) {
return (
{left || (<>Wir. Raus.>)}
{right}
);
}
function SXNav({ active = 0 }) {
const items = ['Heute', 'Karte', 'Buddys', 'Du'];
return (
{items.map((l, i) => {
const on = i === active;
return (
{l}
);
})}
);
}
const Rule = ({ heavy = false, color = SX_INK }) => (
);
// ─────────────────────────────────────────────────────────────
// 03 · POI DETAIL - Naturbad Maria Einsiedel
// ─────────────────────────────────────────────────────────────
function Swiss_POI() {
const features = [
{ t:'Planschbereich für Kleine', icon:'✓', ok:true },
{ t:'Wickeltisch im Eingangsbereich', icon:'✓', ok:true },
{ t:'Große Liegewiese · Schatten unter Bäumen', icon:'✓', ok:true },
{ t:'Eingezäunt (kompletter Bade-Bereich)', icon:'✓', ok:true },
{ t:'WC barrierearm', icon:'✓', ok:true },
{ t:'Hund nur an Leine', icon:'!', ok:'warn' },
];
return (
{/* Top photo with overlaid back/share buttons */}
Bei 18° und Sonne startet die Saison - Naturbad in den Isarauen, Planschbereich, große Liegewiese, Anna Igel ist seit 13:50 dort. Gut für 2-3 Stunden.inuten. Anna ist seit einer Stunde dort.
{[
{ label:'Mein Standort live', on: false },
{ label:'Meine Aktivität', on: true },
{ label:'Geplante Ausflüge', on: true },
].map((s, i, arr) => (
{s.label}
))}
{/* Danger zone */}
Buddy entfernen
Anna Igel sieht dich nicht mehr
Entfernen
);
}
// ─────────────────────────────────────────────────────────────
// 07 · LOCK SCREEN NOTIFICATION - iOS lock screen with a buddy ping
// ─────────────────────────────────────────────────────────────
function Swiss_LockScreen() {
// Wallpaper: a soft, atmospheric Munich evening tone - warm gradient that
// reads as a real photograph behind the glass notification.
return (
{/* Soft texture overlay (grain) for "real photo" feel */}
{/* iOS Status bar - white */}
14:32
{/* dynamic island gap */}
{/* signal */}
{/* wifi */}
{/* battery */}
{/* Dynamic Island */}
{/* Big lock-screen clock */}
Donnerstag, 14. Mai
14:32
{/* Widget: weather + step island */}
☀︎
München
18° · klar
Sonnenuntergang
20:48
{/* - NOTIFICATION STACK - */}
{/* Stacked-behind hint (older notification - barely visible) */}
{/* Main "Wir. Raus." notification - strict iOS layout
iOS rules respected:
- App icon top-left, ~38-40px rounded square
- App name: small uppercase, system gray, NOT colored
- Title: bold, system font, system label color
- Body: regular, secondaryLabel, max ~3 lines collapsed
- Time: caption2, top right
- NO inline action chips - those appear only on long-press
- NO custom avatar - Communication Notifications API requires SiriKit Intents we don't have
*/}
{/* App icon - "Wir. Raus." - black square, accent dot, set type */}
{/* Stacked typographic mark */}
Wir.
Raus.
{/* Body - single column, header row + title + body */}
{/* Header row: app name + time */}
WIR. RAUS.jetzt
{/* Title - single bold line */}
Anna Igel ist im Naturbad Maria Einsiedel.
{/* Body - secondary label */}
4,2 km · Sonne, Schatten ab 14h. Sie freut sich auf Euch.
{/* Flashlight + Camera affordances (iOS lock-screen bottom corners) */}