Reduces sites/quintodrome and sites/hyper to their genuinely site-specific
parts: a Config (branding, GitHub repo, Linux download-format list),
classifyAsset, and landing-page content/mockup. Everything else — the HTTP
server, routes, release cache, update-check protocol, and page chrome —
now lives once in internal/site and internal/component.
The Linux format toggle's button list, order, and per-format arch
availability is now driven entirely by Config.LinuxFormats, reproducing
each site's current behavior as data (quintodrome shows Snap on both
arches; hyper hides it on arm64) rather than as forked logic. The one
deliberate behavior change: platformLabel's "linux-*" normalization
(previously only applied to linux-rpm on hyper's side) now applies to all
linux-* formats, fixing a cosmetic label bug on hyper's deb/pacman/flatpak
download rows ("linux-deb · x64.deb" -> "Linux · x64.deb").
Also unifies top-level tooling: a single SITE-parameterized Makefile and
Dockerfile, a single tailwind.config.js scanning internal/** and sites/**,
and a shared public/ with both product logos.
Verified: go build/vet/test pass for both sites, and `make dev
SITE=quintodrome` / `SITE=hyper` were run and curl-checked against /,
/download (including each site's Linux format toggle and arch-filtering),
and /api/update-check, matching pre-refactor behavior.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
38 lines
1.2 KiB
Go
38 lines
1.2 KiB
Go
package quintodrome
|
|
|
|
import (
|
|
. "maragu.dev/gomponents"
|
|
. "maragu.dev/gomponents/html"
|
|
|
|
"app/internal/component"
|
|
)
|
|
|
|
// musicPlayerMockup is the "now playing" device-window body shown on the
|
|
// landing page.
|
|
func musicPlayerMockup() Node {
|
|
return component.DeviceWindow("quintodrome — now playing",
|
|
Div(Class("p-8"),
|
|
Div(Class("flex items-center gap-5"),
|
|
Div(Class("h-20 w-20 shrink-0 rounded-lg bg-gradient-to-br from-primary-400 to-primary-500")),
|
|
Div(Class("min-w-0 text-left"),
|
|
P(Class("truncate font-mono text-base font-semibold text-white"), Text("Brandenburg Concerto No. 3")),
|
|
P(Class("mt-1 truncate font-mono text-sm text-zinc-400"), Text("J.S. Bach — Library/Classical")),
|
|
),
|
|
),
|
|
Div(Class("mt-6"),
|
|
Div(Class("h-1.5 w-full overflow-hidden rounded-full bg-zinc-800"),
|
|
Div(Class("h-full w-1/3 rounded-full bg-primary-400")),
|
|
),
|
|
Div(Class("mt-2 flex justify-between font-mono text-xs text-zinc-500"),
|
|
Span(Text("1:42")),
|
|
Span(Text("5:07")),
|
|
),
|
|
),
|
|
Div(Class("mt-6 flex items-center justify-center gap-6 font-mono text-lg text-zinc-400"),
|
|
Span(Text("⏮")),
|
|
Span(Class("text-2xl text-white"), Text("⏸")),
|
|
Span(Text("⏭")),
|
|
),
|
|
),
|
|
)
|
|
}
|