import { AnimatePresence, motion } from 'framer-motion'; import React, { useCallback, useMemo, useState } from 'react'; import { symbiosisExamples } from '@/data/symbiosisExamples.ts'; import { useTranslation } from '@/hooks/useI18n.tsx'; import SectionHeader from '@/components/layout/SectionHeader.tsx'; import Button from '@/components/ui/Button.tsx'; import { Container, Flex, Grid } from '@/components/ui/layout'; import Select from '@/components/ui/Select.tsx'; import DemoCard from '@/components/landing/DemoCard.tsx'; interface SymbiosisDemoProps { onNavigateToMap: (page: 'map') => void; } const SymbiosisDemo = ({ onNavigateToMap }: SymbiosisDemoProps) => { const { t } = useTranslation(); // State now holds only the key of the selected offer. const [selectedOfferKey, setSelectedOfferKey] = useState(symbiosisExamples[0].offer.key); // Derive the selected offer object from the key using useMemo for performance. const selectedOffer = useMemo( () => symbiosisExamples.find((ex) => ex.offer.key === selectedOfferKey) || null, [selectedOfferKey] ); // Derive the available needs based on the selected offer. const availableNeeds = useMemo(() => selectedOffer?.needs || [], [selectedOffer]); // Initialize selected need key based on available needs const initialSelectedNeedKey = availableNeeds[0]?.key || ''; const [selectedNeedKey, setSelectedNeedKey] = useState(initialSelectedNeedKey); // Derive the selected need object from its key. const selectedNeed = useMemo( () => availableNeeds.find((n) => n.key === selectedNeedKey) || null, [availableNeeds, selectedNeedKey] ); // Event handlers now only update the keys. const handleOfferChange = useCallback((e: React.ChangeEvent) => { setSelectedOfferKey(e.target.value); }, []); const handleNeedChange = useCallback((e: React.ChangeEvent) => { setSelectedNeedKey(e.target.value); }, []); const translatedSectors = useMemo( () => ({ production: t('sectors.production'), construction: t('sectors.construction'), recreation: t('sectors.recreation'), logistics: t('sectors.logistics'), }), [t] ); return (
{selectedOffer && ( )}
{selectedNeed && ( )}

{selectedNeed ? t(selectedNeed.descriptionKey) : ' '}

); }; export default React.memo(SymbiosisDemo);