import { useRootElement } from "../../context";
import * as S from "../styles";
import {
Text,
Tag,
Link,
theme,
Spacer,
SVG,
Button,
} from "@local-logic/core/ui";
import { primitiveUtils, typeguardUtils } from "@local-logic/core/utils";
import React from "react";
import Driving from "~/assets/icons/directions_car.svg";
import Walking from "~/assets/icons/walking.svg";
import { poiIcons } from "~/constants/pois";
import useTranslator from "~/hooks/useTranslator";
import { translations as globalTranslations } from "~/localization/translation-packs/global";
import { translations as poiTranslations } from "~/localization/translation-packs/pois";
import { translations as schoolTranslations } from "~/localization/translation-packs/schools";
export const GoogleContent = () => {
const {
options: {
poi,
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()}
)}
>
)}
>
);
};