import moment from 'moment'; import Typography from '@mui/material/Typography'; import IconButton from '@mui/material/IconButton'; import TuneIcon from '@mui/icons-material/Tune'; import Box from '@mui/material/Box'; import Link from '@mui/material/Link'; import LinearProgress from '@mui/material/LinearProgress'; import {useTheme} from '@mui/material/styles'; import {useTranslation} from 'react-i18next'; import getMapsLink from '../../lib/getMapsLink'; import useMapStore from '../../stores/useMapStore'; import {TravelEntity} from '../../generated/graphql'; import usePermissions from '../../hooks/usePermissions'; import Chip from '@mui/material/Chip'; import useProfile from '../../hooks/useProfile'; interface Props { travel: TravelEntity; toggleEditing: () => void; } const Header = (props: Props) => { const {travel, toggleEditing} = props; const theme = useTheme(); const {t} = useTranslation(); const { userPermissions: {canEditTravel}, } = usePermissions(); const {setFocusOnTravel, focusedTravel} = useMapStore(); const {userId} = useProfile(); const isUserTripCreator = userId && userId === travel.attributes.user?.data?.id; const passengersCount = travel?.attributes.passengers?.data.length || 0; const availableSeats = travel?.attributes.seats - passengersCount || 0; return ( { setFocusOnTravel(focusedTravel === travel.id ? undefined : travel); const mapElement = document?.getElementById('map'); mapElement?.scrollIntoView({behavior: 'smooth'}); }} > {canEditTravel(travel) && ( { e.stopPropagation(); toggleEditing(); }} id="EditTravelBtn" > )} {!!travel.attributes.departure && ( {moment(travel.attributes.departure).format('LLLL')} )} {travel.attributes.vehicleName} {isUserTripCreator && ( )} {!!travel.attributes.phone_number && ( {t('travel.fields.phone')} {travel.attributes.phone_number} )} {!!travel.attributes.meeting && ( {t('travel.fields.meeting_point')} {travel.attributes.meeting} )} {!!travel.attributes.details && ( {t('travel.fields.details')} {travel.attributes.details} )} {t('passenger.assign.seats', {count: availableSeats})} ); }; export default Header;