feat: initial @unom/app-ui — shared app-level blocks, starting with the footer
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>
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# @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`](https://git.unom.io/unom/-/packages), 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. Pass `resolveHref` to rebase root-relative links onto another origin
|
||||
(the docs do this so footer links target the marketing site).
|
||||
|
||||
```tsx
|
||||
import { FooterView } from "@unom/app-ui/footer";
|
||||
|
||||
<FooterView
|
||||
sections={footer?.sections}
|
||||
tagline={footer?.tagline}
|
||||
socials={footer?.socials}
|
||||
socialsLabel={m.footer_socials()}
|
||||
/>;
|
||||
```
|
||||
|
||||
## Develop
|
||||
|
||||
```sh
|
||||
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`.
|
||||
Reference in New Issue
Block a user