import React from "react"; import { Text, Tag, Link, theme, Spacer, SVG, Button, } from "@local-logic/core/ui"; import { primitiveUtils, typeguardUtils } from "@local-logic/core/utils"; import Walking from "~/assets/icons/walking.svg"; import Driving from "~/assets/icons/directions_car.svg"; import { poiIcons } from "~/constants/pois"; import useTranslator from "~/hooks/useTranslator"; import { translations as poiTranslations } from "~/localization/translation-packs/pois"; import { translations as schoolTranslations } from "~/localization/translation-packs/schools"; import { translations as globalTranslations } from "~/localization/translation-packs/global"; import { useRootElement } from "../context"; import * as S from "./styles"; export const Content = () => { const { options: { poi, side, collisionPadding, type, walkingTime, drivingTime, showDriveTime, calculateRoute, }, } = useRootElement(); const { translations } = useTranslator([ poiTranslations, schoolTranslations, globalTranslations, ]); const poiType = type === "high_schools" || type === "primary_schools" ? "school" : "poi"; const mapLanguages = (languages: ("en" | "fr" | "es" | string)[]) => languages.map((l) => { switch (l) { case "en": return translations.ENGLISH; case "fr": return translations.FRENCH; case "es": return translations.SPANISH; default: return l; } }); const SchoolText = (key: string, value: string) => ( <> {key}: {primitiveUtils.string.capitalize(value)} ); const commuteContent = () => { let commuteType = walkingTime; let commuteIcon = Walking; if (showDriveTime) { commuteType = drivingTime; commuteIcon = Driving; } return ( <> {commuteType} ); }; return ( {poi.name} {poi.address && ( {poi.address} )} {poi.url && ( <> {poi.url} )} {typeguardUtils.poi.isSchool(poi, poiType) ? ( {poi.school_attributes?.grades && SchoolText( translations.SCHOOL_LEVELS, poi.school_attributes.grades )} {poi.school_attributes?.languages && SchoolText( translations.SCHOOL_LANGUAGES, mapLanguages(poi.school_attributes.languages).join(", ") )} {poi.school_attributes?.types && SchoolText( translations.SCHOOL_TYPE, poi.school_attributes.types.join(", ") )} {poi.school_board_attributes?.name && poi.school_board_attributes?.url && ( <> {translations.SCHOOL_BOARD}: {primitiveUtils.string.capitalize( poi.school_board_attributes.name )} )} ) : ( poi.routes && ( {poi.routes?.map((route, i2) => ( ))} ) )} {calculateRoute && ( <> {walkingTime && ( {commuteContent()} )} )} ); };