claude again
This commit is contained in:
parent
df2267a968
commit
f3fc893675
81 changed files with 945 additions and 2813 deletions
|
|
@ -9,37 +9,77 @@ interface Props {
|
|||
}
|
||||
|
||||
const { items } = Astro.props;
|
||||
|
||||
const fallbackFormatFor = (format: string | undefined): 'png' | 'jpg' =>
|
||||
format === 'png' ? 'png' : 'jpg';
|
||||
---
|
||||
|
||||
{
|
||||
items.map((item) => (
|
||||
<figure class:list={['post-media', item.role === 'inline' && 'figure-inline']}>
|
||||
{item.type === 'video' ? (
|
||||
<video
|
||||
controls
|
||||
preload="metadata"
|
||||
poster={item.poster?.src}
|
||||
aria-label={item.decorative ? undefined : item.alt}
|
||||
>
|
||||
{item.webm && <source src={item.webm} type="video/webm" />}
|
||||
{item.mp4 && <source src={item.mp4} type="video/mp4" />}
|
||||
</video>
|
||||
) : (
|
||||
item.src && (
|
||||
<Picture
|
||||
src={item.src}
|
||||
alt={item.decorative ? '' : (item.alt ?? '')}
|
||||
formats={['avif', 'webp']}
|
||||
fallbackFormat="jpg"
|
||||
widths={[480, 720, 960, 1280, 1600, 1920]}
|
||||
sizes="(max-width: 700px) calc(100vw - 3rem), (max-width: 1100px) calc(100vw - 4rem), 56rem"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
/>
|
||||
)
|
||||
)}
|
||||
{item.caption && <figcaption>{item.caption}</figcaption>}
|
||||
{item.transcript && <p class="media-transcript">{item.transcript}</p>}
|
||||
</figure>
|
||||
))
|
||||
items.length > 1 ? (
|
||||
<ul role="list" class="post-gallery">
|
||||
{items.map((item) => (
|
||||
<li>
|
||||
<figure class:list={['post-media', item.role === 'inline' && 'figure-inline']}>
|
||||
{item.type === 'video' ? (
|
||||
<video
|
||||
controls
|
||||
preload="metadata"
|
||||
poster={item.poster?.src}
|
||||
aria-label={item.decorative ? 'Decorative video' : item.alt}
|
||||
>
|
||||
{item.webm && <source src={item.webm} type="video/webm" />}
|
||||
{item.mp4 && <source src={item.mp4} type="video/mp4" />}
|
||||
</video>
|
||||
) : (
|
||||
item.src && (
|
||||
<Picture
|
||||
src={item.src}
|
||||
alt={item.decorative ? '' : (item.alt ?? '')}
|
||||
formats={['avif', 'webp']}
|
||||
fallbackFormat={fallbackFormatFor(item.src.format)}
|
||||
widths={[480, 720, 960, 1280, 1600, 1920]}
|
||||
sizes="(max-width: 700px) calc(100vw - 2 * clamp(20px, 4vw, 32px)), (max-width: 1100px) min(calc(100vw - 4rem), 56rem), 56rem"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
/>
|
||||
)
|
||||
)}
|
||||
{item.caption && <figcaption>{item.caption}</figcaption>}
|
||||
{item.transcript && <p class="media-transcript">{item.transcript}</p>}
|
||||
</figure>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
) : (
|
||||
items.map((item) => (
|
||||
<figure class:list={['post-media', item.role === 'inline' && 'figure-inline']}>
|
||||
{item.type === 'video' ? (
|
||||
<video
|
||||
controls
|
||||
preload="metadata"
|
||||
poster={item.poster?.src}
|
||||
aria-label={item.decorative ? 'Decorative video' : item.alt}
|
||||
>
|
||||
{item.webm && <source src={item.webm} type="video/webm" />}
|
||||
{item.mp4 && <source src={item.mp4} type="video/mp4" />}
|
||||
</video>
|
||||
) : (
|
||||
item.src && (
|
||||
<Picture
|
||||
src={item.src}
|
||||
alt={item.decorative ? '' : (item.alt ?? '')}
|
||||
formats={['avif', 'webp']}
|
||||
fallbackFormat={fallbackFormatFor(item.src.format)}
|
||||
widths={[480, 720, 960, 1280, 1600, 1920]}
|
||||
sizes="(max-width: 700px) calc(100vw - 2 * clamp(20px, 4vw, 32px)), (max-width: 1100px) min(calc(100vw - 4rem), 56rem), 56rem"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
/>
|
||||
)
|
||||
)}
|
||||
{item.caption && <figcaption>{item.caption}</figcaption>}
|
||||
{item.transcript && <p class="media-transcript">{item.transcript}</p>}
|
||||
</figure>
|
||||
))
|
||||
)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue