--- import { Image } from "astro:assets"; import { Icon } from "astro-icon/components"; import "dayjs/locale/es"; import "dayjs/locale/fr"; import "dayjs/locale/he"; import "dayjs/locale/uk"; import "dayjs/locale/pt"; import "dayjs/locale/ru"; import "dayjs/locale/rw"; import dayjs from "dayjs"; import utc from "dayjs/plugin/utc"; const locale = Astro.currentLocale || "es"; const regionNames = new Intl.DisplayNames([locale], { type: "region" }); import { createTranslator, getLocalizedRoute } from "@/i18n"; const tl = createTranslator(locale); dayjs.extend(utc); dayjs.locale(locale); const { data, content, routeKey = "news" } = Astro.props; const nicedate = dayjs.utc(data.data.date).format("D MMMM YYYY"); const countryName = data?.data?.country ? regionNames.of(data.data.country) : ""; const location = [data.data.city, data.data.state, countryName].filter(Boolean).join(", "); const newsUrl = `/${locale}/${getLocalizedRoute(routeKey, locale)}/${data.id}`; const rawContent = data.data?.body || ""; const plainText = rawContent.replace(/^#.*$/gm, "").replace(/^###.*$/gm, "").replace(/\*\*([^*]+)\*\*/g, "$1").replace(/\*([^*]+)\*/g, "$1").replace(/_([^_]+)_/g, "$1").replace(/\[([^\]]+)\]\([^)]+\)/g, "$1").replace(/^>.*$/gm, "").replace(/`[^`]+`/g, "").replace(/^[-*]\s+/gm, "").trim(); const words = plainText.split(/\s+/).filter((w) => w.length > 0).slice(0, 40); const excerpt = words.join(" ") + (words.length === 40 ? "..." : ""); ---
{data.data.title}
{nicedate} {location && <>|{location}}

{data.data.title}

{excerpt}

{data.data.tags && data.data.tags.length > 0 && (
{data.data.tags.map((tag: string) => ( {Tag} ))}
)}
{tl(routeKey + ".seemore")}