diff --git a/scripts/check-no-js.mjs b/scripts/check-no-js.mjs index 7098320..051a252 100644 --- a/scripts/check-no-js.mjs +++ b/scripts/check-no-js.mjs @@ -57,6 +57,7 @@ const ANALYTICS_SCRIPT_SRC_PATTERN = function isSafeScriptTag(tag) { if (tag.includes('data-theme-script')) return true; if (tag.includes('data-thumbnail-iframe-script')) return true; + if (tag.includes('data-video-thumbnail-script')) return true; if (ANALYTICS_SCRIPT_SRC_PATTERN.test(tag)) return true; const typeMatch = tag.match(/\btype=["']([^"']+)["']/i); if (!typeMatch) return false; diff --git a/src/components/PostThumbnail.astro b/src/components/PostThumbnail.astro index 7723e23..bb74768 100644 --- a/src/components/PostThumbnail.astro +++ b/src/components/PostThumbnail.astro @@ -1,13 +1,15 @@ --- import { Picture } from 'astro:assets'; import type { CollectionEntry } from 'astro:content'; -import { absoluteUrl } from '../lib/site'; +import VideoThumbnail from './VideoThumbnail.astro'; +import { absoluteUrl, getHeaderVideo } from '../lib/site'; interface Props { post: CollectionEntry<'posts'>; } const { post } = Astro.props; +const headerVideo = getHeaderVideo(post); const demoLink = post.data.links.find( (link) => !link.download && link.label.trim().toLowerCase() === 'demo' ); @@ -54,66 +56,81 @@ for (const root of document.querySelectorAll('.post-thumbnail--iframe')) { `; --- -
- +{ + headerVideo ? ( + + ) : ( +
+ - { - iframeSrc && ( - <> - -