main
Composite UI blocks shared across the unom/punktfunk apps, one layer up from @unom/ui (primitives). Follows the @played/app-ui pattern: per-block subpath exports, tsdown ESM+dts build, themed through @unom/style semantic tokens. The ./footer block exports a presentational FooterView (link sections, socials, tagline) with a resolveHref hook so the docs can rebase root-relative links onto the marketing-site origin. Both the punktfunk marketing site and docs render it, so the footer no longer drifts between hand-mirrored copies. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@unom/app-ui
Composite, app-level UI blocks shared across the unom/punktfunk apps (the
marketing site and the docs site). One layer up from
@unom/ui, which is primitives only —
this package hosts larger blocks/sections that more than one app renders, so
they stay in sync instead of being hand-mirrored per repo.
Components are themed entirely through @unom/style's semantic tokens
(neutral-accent, main, …). Each consumer maps those tokens to its own
surfaces (the marketing site's blue theme, the docs' Fumadocs violet/dark
chrome), so the markup is identical while each site keeps its palette.
Subpath exports
@unom/app-ui/footer—<FooterView>: the punktfunk footer (link sections, socials, tagline). Presentational; data fetching stays in each app's route loader. PassresolveHrefto rebase root-relative links onto another origin (the docs do this so footer links target the marketing site).
import { FooterView } from "@unom/app-ui/footer";
<FooterView
sections={footer?.sections}
tagline={footer?.tagline}
socials={footer?.socials}
socialsLabel={m.footer_socials()}
/>;
Develop
bun install
bun run build # tsdown → dist/ (esm + d.ts)
bun run typecheck
dist/ is published (not committed). Releases go to the private Gitea npm
registry under the @unom scope via bun publish.
Description
Languages
TypeScript
100%