<sectionclass="video-library-block"id="video-library"aria-labelledby="video-library-title"data-video-library><divclass="container"><divclass="video-library-block__inner"><headerclass="block-heading"><pclass="block-heading__eyebrow">The video course</p><h2class="block-heading__title"id="video-library-title">Watch it built, line by line</h2><pclass="block-heading__text">64 short lessons in six modules. Start with the free previews.</p></header><dlclass="video-library-block__stats"><divclass="video-library-block__stat"><dt>lessons</dt><dd>64</dd></div><divclass="video-library-block__stat"><dt>of video</dt><dd>12 h</dd></div><divclass="video-library-block__stat"><dt>free previews</dt><dd>8</dd></div></dl><divclass="video-library-block__filters"role="group"aria-label="Filter by module"><buttonclass="btn btn--sm btn--pill btn--primary"type="button"data-filter="all"aria-pressed="true">All</button><buttonclass="btn btn--sm btn--pill btn--soft-primary"type="button"data-filter="cascade"aria-pressed="false">Cascade</button><buttonclass="btn btn--sm btn--pill btn--soft-primary"type="button"data-filter="layout"aria-pressed="false">Layout</button><buttonclass="btn btn--sm btn--pill btn--soft-primary"type="button"data-filter="tokens"aria-pressed="false">Tokens</button></div><ulclass="lesson-cards"role="list"><lidata-module="cascade"><articleclass="lesson-card"><divclass="lesson-card__media"><imgsrc="https://images.unsplash.com/photo-1517694712202-14dd9538aa97?auto=format&fit=crop&w=640&q=70"alt=""loading="lazy"width="640"height="360"><spanclass="lesson-card__duration"><spanclass="sr-only">Duration: </span>8:02</span><spanclass="lesson-card__icon"aria-hidden="true"><svgxmlns="http://www.w3.org/2000/svg"viewBox="0 0 24 24"fill="currentColor"aria-hidden="true"focusable="false"><pathd="M7 4v16l13-8z"/></svg></span></div><divclass="lesson-card__body"><pclass="lesson-card__module">Cascade</p><h3class="lesson-card__title"><aclass="lesson-card__link"href="#">How the cascade really works</a></h3><pclass="lesson-card__access lesson-card__access--free">Free preview</p></div></article></li><lidata-module="cascade"><articleclass="lesson-card"><divclass="lesson-card__media"><imgsrc="https://images.unsplash.com/photo-1461749280684-dccba630e2f6?auto=format&fit=crop&w=640&q=70"alt=""loading="lazy"width="640"height="360"><spanclass="lesson-card__duration"><spanclass="sr-only">Duration: </span>12:45</span><spanclass="lesson-card__icon"aria-hidden="true"><svgxmlns="http://www.w3.org/2000/svg"viewBox="0 0 24 24"fill="none"stroke="currentColor"stroke-width="2"stroke-linecap="round"stroke-linejoin="round"aria-hidden="true"focusable="false"><rectwidth="18"height="11"x="3"y="11"rx="2"/><pathd="M7 11V7a5 5 0 0 1 10 0v4"/></svg></span></div><divclass="lesson-card__body"><pclass="lesson-card__module">Cascade</p><h3class="lesson-card__title"><aclass="lesson-card__link"href="#">Cascade layers in a real project</a></h3><pclass="lesson-card__access">Included in the video course</p></div></article></li><lidata-module="layout"><articleclass="lesson-card"><divclass="lesson-card__media"><imgsrc="https://images.unsplash.com/photo-1498050108023-c5249f4df085?auto=format&fit=crop&w=640&q=70"alt=""loading="lazy"width="640"height="360"><spanclass="lesson-card__duration"><spanclass="sr-only">Duration: </span>14:36</span><spanclass="lesson-card__icon"aria-hidden="true"><svgxmlns="http://www.w3.org/2000/svg"viewBox="0 0 24 24"fill="currentColor"aria-hidden="true"focusable="false"><pathd="M7 4v16l13-8z"/></svg></span></div><divclass="lesson-card__body"><pclass="lesson-card__module">Layout</p><h3class="lesson-card__title"><aclass="lesson-card__link"href="#">Container queries in practice</a></h3><pclass="lesson-card__access lesson-card__access--free">Free preview</p></div></article></li><lidata-module="layout"><articleclass="lesson-card"><divclass="lesson-card__media"><imgsrc="https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&w=640&q=70"alt=""loading="lazy"width="640"height="360"><spanclass="lesson-card__duration"><spanclass="sr-only">Duration: </span>10:12</span><spanclass="lesson-card__icon"aria-hidden="true"><svgxmlns="http://www.w3.org/2000/svg"viewBox="0 0 24 24"fill="none"stroke="currentColor"stroke-width="2"stroke-linecap="round"stroke-linejoin="round"aria-hidden="true"focusable="false"><rectwidth="18"height="11"x="3"y="11"rx="2"/><pathd="M7 11V7a5 5 0 0 1 10 0v4"/></svg></span></div><divclass="lesson-card__body"><pclass="lesson-card__module">Layout</p><h3class="lesson-card__title"><aclass="lesson-card__link"href="#">A grid without breakpoints</a></h3><pclass="lesson-card__access">Included in the video course</p></div></article></li><lidata-module="tokens"><articleclass="lesson-card"><divclass="lesson-card__media"><imgsrc="https://images.unsplash.com/photo-1587620962725-abab7fe55159?auto=format&fit=crop&w=640&q=70"alt=""loading="lazy"width="640"height="360"><spanclass="lesson-card__duration"><spanclass="sr-only">Duration: </span>11:20</span><spanclass="lesson-card__icon"aria-hidden="true"><svgxmlns="http://www.w3.org/2000/svg"viewBox="0 0 24 24"fill="none"stroke="currentColor"stroke-width="2"stroke-linecap="round"stroke-linejoin="round"aria-hidden="true"focusable="false"><rectwidth="18"height="11"x="3"y="11"rx="2"/><pathd="M7 11V7a5 5 0 0 1 10 0v4"/></svg></span></div><divclass="lesson-card__body"><pclass="lesson-card__module">Tokens</p><h3class="lesson-card__title"><aclass="lesson-card__link"href="#">A token system that scales</a></h3><pclass="lesson-card__access">Included in the video course</p></div></article></li><lidata-module="tokens"><articleclass="lesson-card"><divclass="lesson-card__media"><imgsrc="https://images.unsplash.com/photo-1504639725590-34d0984388bd?auto=format&fit=crop&w=640&q=70"alt=""loading="lazy"width="640"height="360"><spanclass="lesson-card__duration"><spanclass="sr-only">Duration: </span>16:05</span><spanclass="lesson-card__icon"aria-hidden="true"><svgxmlns="http://www.w3.org/2000/svg"viewBox="0 0 24 24"fill="none"stroke="currentColor"stroke-width="2"stroke-linecap="round"stroke-linejoin="round"aria-hidden="true"focusable="false"><rectwidth="18"height="11"x="3"y="11"rx="2"/><pathd="M7 11V7a5 5 0 0 1 10 0v4"/></svg></span></div><divclass="lesson-card__body"><pclass="lesson-card__module">Tokens</p><h3class="lesson-card__title"><aclass="lesson-card__link"href="#">Dark mode in one afternoon</a></h3><pclass="lesson-card__access">Included in the video course</p></div></article></li></ul><pclass="sr-only"aria-live="polite"data-video-library-status></p><pclass="video-library-block__more"><aclass="btn btn--outline-primary"href="#">See all 64 lessons</a></p></div></div></section>
A video course at a glance: the key numbers, a module filter and a grid of lesson cards, with the free previews marked.
Technical Details
It combines the Lesson Cards; load their stylesheet too.
The module filter is a group of toggle buttons (aria-pressed), and a polite live region announces how many lessons are shown. Without JavaScript every lesson stays visible.
The numbers are a description list shown value first (row-reverse), so they're read in a natural order ("lessons: 64").
The block has id="video-library", so the hero and the offer can link to it.
Override the content with videoLibraryBlock; every lesson has a module value (for the filter) and a moduleLabel (for the card).
Documentation
Learn about Spruce CSS through our extensive documentation.