Skip to content

Commit d9eede8

Browse files
authored
Add a videos page with links to llm-d videos shared on youtube. (#128)
* Add Videos page and update navigation - Introduced a new Videos page featuring a collection of educational videos about llm-d, including titles and descriptions. - Updated the navigation to include a link to the new Videos page for easier access. Signed-off-by: Pete Cheslock <pete.cheslock@redhat.com> * Refactor button group styles in custom.css - Updated the .button-group class to center content, enable wrapping, and adjust margins for better responsiveness. - Modified button styles to include a minimum width and improved padding, enhancing layout consistency across different screen sizes. - Removed outdated media queries to streamline CSS and improve maintainability. Signed-off-by: Pete Cheslock <pete.cheslock@redhat.com> --------- Signed-off-by: Pete Cheslock <pete.cheslock@redhat.com>
1 parent adaa3e2 commit d9eede8

File tree

4 files changed

+411
-17
lines changed

4 files changed

+411
-17
lines changed

docusaurus.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ const config = {
167167
label: "Community",
168168
},
169169
{ to: "/blog", label: "Blog", position: "left" },
170+
{ to: "/videos", label: "Videos", position: "left" },
170171
{
171172
type: 'html',
172173
position: 'right',

src/css/custom.css

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -258,12 +258,12 @@ img.llm-d-logo {
258258

259259
.button-group {
260260
display: flex;
261-
justify-content: space-between;
262-
margin: 0 10%;
263-
@media screen and (max-width: 1024px) {
264-
flex-direction: column;
265-
align-items: center;
266-
}
261+
justify-content: center;
262+
flex-wrap: wrap;
263+
gap: 1rem;
264+
margin: 0 auto;
265+
max-width: 100%;
266+
padding: 0 1rem;
267267
}
268268

269269
.static-button,
@@ -273,23 +273,18 @@ img.llm-d-logo {
273273
justify-content: center;
274274
border-radius: 15px;
275275
border: 1px solid transparent;
276-
margin: 12.5px 12.5px;
277-
padding: 1rem;
276+
padding: 1rem 1.5rem;
278277
font-size: 1rem;
279278
font-weight: 700;
280279
font-family: inherit;
281280
background-color: #7f317f;
282281
cursor: pointer;
283-
transition: border-color 0.25s;
284-
width: 100%;
282+
transition: border-color 0.25s, background-color 0.25s;
285283
text-decoration: none;
286284
color: #fff;
287-
@media screen and (max-width: 1024px) {
288-
margin: 5% 0;
289-
@media screen and (max-width: 768px) {
290-
padding: 5%;
291-
}
292-
}
285+
min-width: 160px;
286+
white-space: nowrap;
287+
flex: 0 1 auto;
293288
}
294289

295290
.static-button:hover {
@@ -505,7 +500,8 @@ img.llm-d-logo {
505500
}
506501

507502
.install-button {
508-
width: 100%;
503+
min-width: 160px;
504+
max-width: 280px;
509505
}
510506

511507
/* ul li {

src/pages/videos.js

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
import React from 'react';
2+
import Layout from '@theme/Layout';
3+
import VideoEmbed from '@site/src/components/VideoEmbed';
4+
import styles from './videos.module.css';
5+
6+
const videos = [
7+
{
8+
id: 'lvzMLf6wXlY',
9+
title: 'Kubernetes Native Distributed Inferencing',
10+
description: 'Introduction to llm-d at DevConf.US 2025 — learn the fundamentals of distributed LLM inference on Kubernetes.',
11+
},
12+
{
13+
id: 'mfXIe_S53vA',
14+
title: 'Serving PyTorch LLMs at Scale',
15+
description: 'Disaggregated inference with Kubernetes and llm-d — presented by M. Ayoub & C. Liu at PyTorch Conference.',
16+
},
17+
{
18+
id: '_xAXb70d4-0',
19+
title: 'Distributed Inference with Well-Lit Paths',
20+
description: 'Explore llm-d\'s "well-lit paths" approach to simplified, production-ready distributed inference.',
21+
},
22+
{
23+
id: 'g8_snJA_ESU',
24+
title: 'Multi-Accelerator LLM Inference',
25+
description: 'Deep dive into multi-accelerator LLM inference on Kubernetes — presented by Erwan Gallen at KubeCon.',
26+
},
27+
];
28+
29+
function VideoCard({ video }) {
30+
return (
31+
<div className={styles.videoCard}>
32+
<div className={styles.videoWrapper}>
33+
<VideoEmbed videoId={video.id} responsive={true} />
34+
</div>
35+
<div className={styles.videoInfo}>
36+
<h3 className={styles.videoTitle}>{video.title}</h3>
37+
<p className={styles.videoDescription}>{video.description}</p>
38+
</div>
39+
</div>
40+
);
41+
}
42+
43+
export default function Videos() {
44+
return (
45+
<Layout
46+
title="Videos"
47+
description="Watch videos about llm-d: a Kubernetes-native high-performance distributed LLM inference framework">
48+
<main className={styles.videosPage}>
49+
<div className={styles.heroSection}>
50+
<div className={styles.heroContent}>
51+
<h1 className={styles.heroTitle}>
52+
<span className={styles.heroIcon}></span>
53+
Learn llm-d
54+
</h1>
55+
<p className={styles.heroSubtitle}>
56+
Explore our video collection to learn about llm-d's capabilities,
57+
architecture, and best practices for deploying LLM inference at scale.
58+
</p>
59+
</div>
60+
</div>
61+
62+
<div className={styles.container}>
63+
<div className={styles.videoGrid}>
64+
{videos.map((video) => (
65+
<VideoCard key={video.id} video={video} />
66+
))}
67+
</div>
68+
</div>
69+
70+
<div className={styles.ctaSection}>
71+
<h2 className={styles.ctaTitle}>Ready to get started?</h2>
72+
<p className={styles.ctaText}>
73+
Dive into our documentation or join our community to learn more.
74+
</p>
75+
<div className={styles.ctaButtons}>
76+
<a href="/docs/guide" className={styles.ctaButtonPrimary}>
77+
Read the Docs
78+
</a>
79+
<a href="/slack" className={styles.ctaButtonSecondary}>
80+
Join Slack
81+
</a>
82+
</div>
83+
</div>
84+
</main>
85+
</Layout>
86+
);
87+
}
88+

0 commit comments

Comments
 (0)