Chronos UI/ Media Grid
npm install @chronos-ui/core

Live Preview

MediaGrid — 1 primary + 2 secondary

Usage

import MediaGrid from '@chronos-ui/core/react/MediaGrid';
import '@chronos-ui/core/theme.css';

<MediaGrid
  primaryMedia={{
    id: 'p1',
    media: { type: 'image', url: '/primary.jpg' },
    mapLinks: [{ url: '/feature' }],
    altText: 'Feature story',
  }}
  secondaryMedia={[
    { id: 's1', media: { type: 'image', url: '/sec1.jpg' }, mapLinks: [{ url: '/story-1' }] },
    { id: 's2', media: { type: 'image', url: '/sec2.jpg' }, mapLinks: [{ url: '/story-2' }] },
  ]}
/>
<script lang="ts">
  import MediaGrid from '@chronos-ui/core/svelte/MediaGrid.svelte';
</script>

<MediaGrid
  primaryMedia={{ id: 'p1', media: { type: 'image', url: '/primary.jpg' } }}
  secondaryMedia={[{ id: 's1', media: { type: 'image', url: '/sec1.jpg' } }]}
/>
<script type="module"
  src="node_modules/@chronos-ui/core/webcomponents/MediaGrid.js"></script>

<media-grid
  primary-media='{"id":"p1","media":{"type":"image","url":"/primary.jpg"}}'
  secondary-media='[{"id":"s1","media":{"type":"image","url":"/sec1.jpg"}}]'
></media-grid>

Props

PropTypeDefaultDescription
primaryMedia required MediaGridItem The large featured asset occupying 2/3 of the grid width
secondaryMedia MediaGridItem[] undefined Optional stacked secondary assets in the right column
className string undefined Additional CSS class names on the root element
The secondary column uses grid-template-rows: 1fr 1fr — all secondary items share equal height regardless of count.