import { View, Text, ScrollView, TouchableOpacity, Linking, ActivityIndicator, StyleSheet, Platform } from 'react-native' import { SafeAreaView } from 'react-native-safe-area-context' import { useLocalSearchParams, useRouter, Stack } from 'expo-router' import { Ionicons } from '@expo/vector-icons' import { useStelleDetail } from '@/hooks/useStellen' import { Button } from '@/components/ui/Button' const SPARTE_COLOR: Record = { elektro: '#1D4ED8', sanitär: '#0E7490', it: '#7C3AED', info: '#7C3AED', heizung: '#D97706', maler: '#059669', } function getSparteColor(sparte: string): string { const lower = sparte.toLowerCase() for (const [k, v] of Object.entries(SPARTE_COLOR)) { if (lower.includes(k)) return v } return '#003B7E' } export default function StelleDetailScreen() { const { id } = useLocalSearchParams<{ id: string }>() const router = useRouter() const { data: stelle, isLoading } = useStelleDetail(id) if (isLoading) { return ( ) } if (!stelle) return null const color = getSparteColor(stelle.sparte) const initial = stelle.sparte.charAt(0).toUpperCase() const bewerbungsUrl = `mailto:${stelle.kontaktEmail}?subject=${encodeURIComponent(`Bewerbung als Auszubildender bei ${stelle.member.betrieb}`)}` return ( <> {/* Header */} router.back()} style={styles.backButton}> {/* Header Card */} {initial} Auszubildender {stelle.sparte} {stelle.member.betrieb} {stelle.member.ort} · {stelle.org.name} {/* Key Facts */} Eckdaten Anzahl Stellen {stelle.stellenAnz} {stelle.lehrjahr && ( Lehrjahr {stelle.lehrjahr} )} {stelle.verguetung && ( Vergütung {stelle.verguetung} )} {/* Description */} {stelle.beschreibung && ( Beschreibung {stelle.beschreibung} )} {/* Contact */} {stelle.kontaktName && ( Ansprechpartner {stelle.kontaktName.charAt(0)} {stelle.kontaktName} Recruiting )} {/* Footer */}