--- import AppLayout from "components/AppLayout/AppLayout.astro"; import AppLayoutTitle from "components/AppLayout/components/AppLayoutTitle.astro"; import Attributes from "components/Attributes.astro"; import AudioPlayer from "components/AudioPlayer.astro"; import Credits from "components/Credits.astro"; import DownloadButton from "components/DownloadButton.astro"; import RichText from "components/RichText/RichText.astro"; import { getI18n } from "src/i18n/i18n"; import { payload } from "src/utils/payload"; import { formatInlineTitle, formatRichTextToString } from "src/utils/format"; import { fetchOr404 } from "src/utils/responses"; const { id } = Astro.params; const audio = await fetchOr404(() => payload.getAudioByID(id!)); if (audio instanceof Response) { return audio; } const { getLocalizedMatch, t, formatFilesize, formatDate } = await getI18n( Astro.locals.currentLocale ); const { translations, attributes, filename, url, credits, filesize, createdAt, updatedAt, thumbnail, } = audio; const { pretitle, title, subtitle, description } = getLocalizedMatch(translations); const smallTitle = !subtitle && !pretitle; const metaAttributes = [ ...(filename && title !== filename ? [ { title: t("global.media.attributes.filename"), icon: "material-symbols:audio-file-outline", values: [{ name: filename }], withBorder: false, }, ] : []), { title: t("global.media.attributes.filesize"), icon: "material-symbols:hard-drive-outline", values: [{ name: formatFilesize(filesize) }], withBorder: false, }, { title: t("global.media.attributes.createdAt"), icon: "material-symbols:calendar-add-on-outline", values: [{ name: formatDate(new Date(createdAt)) }], withBorder: false, }, { title: t("global.media.attributes.updatedAt"), icon: "material-symbols:edit-calendar", values: [{ name: formatDate(new Date(updatedAt)) }], withBorder: false, }, ]; --- {/* ------------------------------------------- HTML ------------------------------------------- */} { smallTitle ? ( {title} ) : ( ) } {description && } {attributes.length > 0 && } {credits.length > 0 && } {metaAttributes.length > 0 && } {/* ------------------------------------------- CSS -------------------------------------------- */}