feat(site): new home page, docs, and design system (#566)

Co-authored-by: Darius Cepulis <dcepulis@mux.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Ronald Urbina
2026-03-06 16:19:27 -06:00
committed by GitHub
co-authored by Darius Cepulis Claude Opus 4.6
parent f2f9e6ddc3
commit 351a3e8bda
255 changed files with 3574 additions and 1532 deletions
+261 -135
View File
@@ -21,6 +21,7 @@
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "Eurostile LT Pro Extended";
src:
@@ -28,7 +29,8 @@
url("https://static.mux.com/fonts/EurostileLTProExtended2/font.woff") format("woff");
font-weight: normal;
font-style: normal;
font-display: swap;
/* the metrics of this font are wack, so, let's block instead of swap. TODO precompute metrics */
font-display: block;
}
@font-face {
font-family: "Eurostile LT Pro Extended";
@@ -37,68 +39,8 @@
url("https://static.mux.com/fonts/EurostileLTProBoldExtended2/font.woff") format("woff");
font-weight: bold;
font-style: normal;
font-display: swap;
}
/* before we begin with tailwind, let's go over some global rules */
/* nested lists should have lower-alpha style */
.list-decimal .list-decimal {
list-style-type: lower-alpha;
}
/* slightly thinner decorations */
* {
text-decoration-thickness: max(0.05em, 0.05rem);
}
/* global text decoration offset */
.font-sans {
text-underline-offset: 0.25em;
}
.font-mono {
text-underline-offset: 0.125em;
}
/* no ligatures in code... */
.font-mono {
font-variant-ligatures: none;
}
/* stuff should leave room for the nav when scroll margining */
[id] {
scroll-margin-top: calc(var(--nav-h) + var(--spacing) * 5 + var(--scroll-mt, 0px));
}
/* basic HTML elements */
b,
strong {
font-weight: var(--font-weight-semibold);
}
mark {
background-color: var(--color-yellow);
color: var(--color-dark-100);
}
/* shiki dark mode */
.dark .shiki,
.dark .shiki span,
.dark .astro-code,
.dark .astro-code span {
/* biome-ignore lint/complexity/noImportantStyles: override shiki's inline styles */
color: var(--shiki-dark) !important;
}
/* Ok, now let's do some tailwind stuff */
@custom-variant intent (&:hover,
&:focus-within);
@custom-variant supports-container {
@supports (container: size) {
@slot;
}
}
@custom-variant dark (&:where(.dark, .dark *));
.dark * {
color-scheme: dark;
/* the metrics of this font are wack, so, let's block instead of swap. TODO precompute metrics */
font-display: block;
}
/* theme inline tells tailwind to reference the value of these properties */
@@ -108,99 +50,96 @@ mark {
--font-sans: var(--font-instrument-sans);
--font-mono: var(--font-ibm-plex-mono);
--font-display-compact: "Eurostile LT Pro", sans-serif;
--font-display-extended: "Eurostile LT Pro Extended", sans-serif;
--font-display: "Eurostile LT Pro Extended", sans-serif;
}
/* Everything else can be configured here */
@theme {
--color-*: initial;
--color-white: white;
--color-black: black;
--color-dark-110: #2a2928;
--color-dark-100: #393836;
--color-dark-90: #494741;
--color-dark-80: #5a5850;
--color-dark-40: #7d796a;
--color-faded-black: #1e1d1d;
--color-soot: #32302f;
--color-warm-gray: #403c38;
--color-manila-dark: #bfb39e;
--color-manila-75: #ccc3ab;
--color-manila-50: #dcd2bb;
--color-manila-25: #e7ddc6;
--color-manila-light: #f3e7d2;
--color-light-100: #fbf5d8;
--color-light-80: #ebe4c1;
--color-light-60: #d8d2b2;
--color-light-40: #c7c2a4;
--color-yellow: #fcb116;
--color-orange: #f26222;
--color-red: #ea3837;
--color-purple: #a83b71;
--color-blue: #3870b7;
--color-bright-yellow: #ffca18;
--color-gold: #ffa81b;
--color-orange: #ff6200;
--color-red: #eb3132;
--color-magenta: #cc3566;
/* Typography */
--tracking-*: initial;
--tracking-tighter: -0.04em;
--tracking-tight: -0.02em;
--tracking-tightest: -0.03em;
--tracking-tighter: -0.02em;
--tracking-tight: -0.01em;
--tracking-normal: 0;
--tracking-wide: 0.02em;
--tracking-wider: 0.04em;
--tracking-widest: 0.08em;
--font-weight-code-normal: 400;
--font-weight-normal: 450;
--font-weight-medium: 500;
--font-weight-semibold: 600;
--text-*: initial;
--text-h1: 4rem; /* 64px */
--text-h1--line-height: 1;
--text-h1--letter-spacing: -0.04em;
--text-h1--font-weight: var(--font-weight-semibold);
--text-h2: 3rem; /* 48px */
--text-h2--line-height: calc(56 / 48);
--text-h2--letter-spacing: -0.04em;
--text-h2--font-weight: var(--font-weight-semibold);
--text-h3: 2.5rem; /* 40px */
--text-h1: 3.75rem; /* 60px */
--text-h1--line-height: 1.1;
--text-h1--letter-spacing: var(--tracking-tightest);
--text-h1--font-weight: var(--font-weight-bold);
--text-h15: 2.375rem; /* 38px */
--text-h15--line-height: 1.1;
--text-h15--letter-spacing: var(--tracking-tightest);
--text-h15--font-weight: var(--font-weight-bold);
--text-h2: 1.75rem; /* 28px */
--text-h2--line-height: 1;
--text-h2--letter-spacing: var(--tracking-tighter);
--text-h2--font-weight: var(--font-weight-bold);
--text-h25: 1.5rem; /* 24px */
--text-h25--line-height: 1;
--text-h25--letter-spacing: var(--tracking-tighter);
--text-h25--font-weight: var(--font-weight-bold);
--text-h3: 1.125rem; /* 18px */
--text-h3--line-height: 1;
--text-h3--letter-spacing: -0.04em;
--text-h3--font-weight: var(--font-weight-semibold);
--text-h4: 2rem; /* 32px */
--text-h4--line-height: calc(40 / 32);
--text-h4--letter-spacing: -0.02em;
--text-h4--font-weight: var(--font-weight-semibold);
--text-h5: 1.5rem; /* 24px */
--text-h5--line-height: calc(32 / 24);
--text-h5--letter-spacing: -0.02em;
--text-h5--font-weight: var(--font-weight-medium);
--text-h3--letter-spacing: var(--tracking-normal);
--text-h3--font-weight: var(--font-weight-bold);
--text-lg: 1.25rem; /* 20px */
--text-lg--line-height: calc(28 / 20);
--text-lg--letter-spacing: -0.02em;
--text-lg--font-weight: var(--font-weight-normal);
--text-md: 1.125rem; /* 18px */
--text-md--line-height: calc(26 / 18);
--text-md--letter-spacing: -0.02em;
--text-md--font-weight: var(--font-weight-normal);
--text-base: 1rem; /* 16px */
--text-base--line-height: calc(24 / 16);
--text-base--letter-spacing: -0.02em;
--text-base--font-weight: var(--font-weight-normal);
--text-sm: 0.875rem; /* 14px */
--text-sm--line-height: calc(20 / 14);
--text-sm--letter-spacing: -0.02em;
--text-sm--font-weight: var(--font-weight-normal);
--text-h4: 0.875rem; /* 14px */
--text-h4--line-height: 1;
--text-h4--letter-spacing: var(--tracking-normal);
--text-h4--font-weight: var(--font-weight-bold);
/* Notice the use of em, so that code scales with, say, headers */
--text-code: clamp(0.875em, calc(0.8125em + 0.125rem), 0.9375em);
--text-h5: 0.875rem; /* 14px */
--text-h5--line-height: 1;
--text-h5--letter-spacing: var(--tracking-normal);
--text-h5--font-weight: var(--font-weight-normal);
--text-p1: 1.375rem; /* 22px */
--text-p1--line-height: 1.5;
--text-p1--letter-spacing: var(--tracking-tight);
--text-p1--font-weight: var(--font-weight-normal);
--text-p2: 1rem; /* 16px */
--text-p2--line-height: 1.5;
--text-p2--letter-spacing: var(--tracking-normal);
--text-p2--font-weight: var(--font-weight-normal);
--text-p3: 0.875rem; /* 14px */
--text-p3--line-height: 1.5;
--text-p3--letter-spacing: var(--tracking-normal);
--text-p3--font-weight: var(--font-weight-normal);
--text-code: 0.875em; /* 14px */
--text-code--line-height: inherit;
--text-code--letter-spacing: -0.02em;
--text-code--font-weight: var(--font-weight-code-normal);
/* if you don't want this scaling, use text-base-code */
--text-base-code: 0.9375rem;
--text-base-code--line-height: calc(28 / 16);
--text-base-code--letter-spacing: -0.02em;
--text-base-code--font-weight: var(--font-weight-code-normal);
--text-code--letter-spacing: var(--tracking-normal);
--text-code--font-weight: var(--font-weight-normal);
/* animations */
--animate-marquee: marquee 40s linear infinite;
--animate-marquee: marquee 30s linear infinite;
@keyframes marquee {
from {
transform: translate3d(-50%, 0, 0);
@@ -210,3 +149,190 @@ mark {
}
}
}
@custom-variant intent (&:hover,
&:focus-within);
@custom-variant supports-container {
@supports (container: size) {
@slot;
}
}
@custom-variant dark (&:where(.dark, .dark *));
@layer base {
.list-decimal .list-decimal {
list-style-type: lower-alpha;
}
* {
text-decoration-thickness: max(0.05em, 0.05rem);
}
.font-display,
.font-display-compact {
text-underline-offset: 0.25em;
}
.font-sans {
text-underline-offset: 0.25em;
}
.font-mono {
text-underline-offset: 0.125em;
font-variant-ligatures: none;
}
[id] {
/* this only works where nav-h is defined. currently, docs */
scroll-margin-top: calc(var(--nav-h) + var(--spacing) * 5 + var(--scroll-mt, 0px));
}
b,
strong {
font-weight: var(--font-weight-semibold);
}
mark {
background-color: var(--color-bright-yellow);
color: var(--color-faded-black);
}
.dark * {
color-scheme: dark;
}
}
* {
scrollbar-color: var(--color-manila-dark) transparent;
&::-webkit-scrollbar-thumb {
background: var(--color-manila-dark);
border-radius: 9999px;
}
}
@utility data-bar {
height: 2.5rem;
background-image: url("/data-bar-white.svg");
background-repeat: repeat-x;
background-size: auto 100%;
animation: grow-bar 1.5s ease-out forwards;
animation-play-state: paused;
[data-animate] & {
animation-play-state: running;
}
}
@utility data-bar-orange {
background-image: url("/data-bar-orange.svg");
}
@utility horizontal-bars {
width: 2.5rem;
background-image: url("/horizontal-bar-white.svg");
background-repeat: repeat-y;
background-size: 100% 6px;
animation: horizontal-grow-bar 1.5s ease-out forwards;
animation-play-state: paused;
[data-animate] & {
animation-play-state: running;
}
}
@utility horizontal-bars-orange {
background-image: url("/horizontal-bar-orange.svg");
}
@utility built-bg-gray {
background-image: url("/built-bg-horizontal-line-gray.svg");
background-repeat: repeat-y;
background-size: 100% 9px;
background-clip: content-box;
padding: 8px 10px 0 10px;
}
@utility built-bg-black {
background-image: url("/built-bg-horizontal-line-black.svg");
background-repeat: repeat-y;
background-size: 100% 9px;
background-clip: content-box;
padding: 8px 10px 0 10px;
}
@utility text-stroke-faded-black {
color: transparent;
-webkit-text-stroke: 1.5px var(--color-faded-black);
-webkit-text-stroke: clamp(1px, 0.035em, 1.5px) var(--color-faded-black);
&::selection {
color: transparent;
-webkit-text-stroke: 1.5px var(--color-faded-black);
-webkit-text-stroke: clamp(1px, 0.035em, 1.5px) var(--color-faded-black);
}
}
@utility text-stroke-manila-light {
color: transparent;
-webkit-text-stroke: 1.5px var(--color-manila-light);
-webkit-text-stroke: clamp(1px, 0.035em, 1.5px) var(--color-manila-light);
&::selection {
color: transparent;
-webkit-text-stroke: 1.5px var(--color-faded-black);
-webkit-text-stroke: clamp(1px, 0.035em, 1.5px) var(--color-faded-black);
}
}
@utility grid-separator-container {
position: relative;
&::before {
top: 0;
left: 0%;
width: 100%;
height: 100%;
content: "";
position: absolute;
border: 10px solid;
border-color: inherit;
z-index: 1000;
pointer-events: none;
}
}
@utility grid-separators {
border-right: 1px solid;
border-bottom: 1px solid;
border-color: inherit;
&::after {
content: "";
position: absolute;
bottom: -5px;
right: -5px;
height: 10px;
width: 10px;
background: inherit;
z-index: 10;
}
}
@keyframes grow-bar {
from {
width: 0%;
}
to {
width: 100%;
}
}
@keyframes horizontal-grow-bar {
from {
height: 0%;
}
to {
height: 100%;
}
}