contracts/discover/)
and two builds beside it in components/registry/n6-pages/: a pure .astro and a .tsx,
both held to the whole contract by the registry’s tests. @bundu/ui ships the Astro build
(@bundu/ui/discover/*, from 0.3.0).
The parts
DiscoverBreadcrumb, MetaList and RelatedRail render nothing when their list is empty; each
contract checks that with an
empty state.
Page order
Open in Mukoko
Open in Mukoko always points to one canonical https universal link:openInMukokoUrl(service, id) builds it (discover-open-link.ts in the registry,
@bundu/ui/discover/open). service is one of news, events, weather or circles, and
the id is one encoded path segment. discover/open-in-app 1.1.0 and DetailActions take
service and id. An explicit href is kept only as an override, for example in a
server-filled shell that fills the whole URL.
- With the app installed, the Mukoko apps claim
mukoko.com/open/*through iOS universal links and Android app links, so the link opens the item in the app. - Everywhere else the browser loads it, and the
/open/*resolver inmukoko-dev/super-app-websends the reader to that service’s own web page for the item.
mukoko:// scheme, which does nothing for someone without the app.
The resolver and the app-links files (
apple-app-site-association, assetlinks.json) are
being built (mukoko-dev/super-app-web). Until they ship, an explicit href to the service’s
own page keeps the button useful.Installing
- Astro:
@bundu/ui(above), or copy the source withnpx @nyuchi/mzizi-cli add discover-detail-hero --target astro, which installs the component and everything it imports intosrc/components/mzizi/. - React and Next.js:
npx @nyuchi/mzizi-cli add discover-detail-hero --target tsx, ornpx shadcn@latest add https://api.mzizi.dev/v1/ui/discover-detail-hero.