Opt-in page · built-in presentation
Root transit
The root opens @hagicode/hagilight-core/RootTransit before forwarding here. Its styling, route sweep, static continuation link and navigation are bundled, and it shows one random image from the img-gen startup splash while it forwards (@hagicode/hagilight-core/splash-images holds the image paths; splash={false} opts out). A departures board scrolls through the HagiCode ecosystem sites in the page language and stops on this site (@hagicode/hagilight-core/root-transit-board builds its rows; board={false} hides it). @hagicode/hagilight-core/root-transit exposes the tested URL and lifecycle helpers.
Evidence: Open the site root to see the transition, or follow its continuation link immediately.
import RootTransit from '@hagicode/hagilight-core/RootTransit';
<RootTransit destination="/en-US/" siteName="Hagilight" />
Live in footer · direct export
Copyright
Footer composes Copyright by default; sites can also render it independently.
Evidence: The footer shows the current year and HagiCode name.
import Copyright from '@hagicode/hagilight-core/Copyright';
<Copyright name="HagiCode" />
Live in footer · build-time resolver
Build line
The footer ends with Branch, Commit, and Built. @hagicode/hagilight-core/build-info formats them in the browser, while @hagicode/hagilight-core/build-info-resolver reads Git and the HAGILIGHT_BUILD_BRANCH and HAGILIGHT_BUILD_COMMIT overrides at build time.
Evidence: The footer copyright line shows this demo’s branch, its seven-character commit, and the UTC build time.
import { buildInfoItems } from '@hagicode/hagilight-core/build-info';
import { resolveBuildInfo } from '@hagicode/hagilight-core/build-info-resolver';
const items = buildInfoItems(resolveBuildInfo({ root: process.cwd() }));
Build output · schema version 1
Site metadata file
The build writes .well-known/hagilight.metadata.json with site identity, locales, build facts, discovery artifacts, and analytics on/off flags. @hagicode/hagilight-core/site-metadata holds the contract, @hagicode/hagilight-core/site-metadata-writer writes it in Node, and @hagicode/hagilight-core/site-metadata-ownership decides which integration writes it.
Evidence: This demo build contains .well-known/hagilight.metadata.json, and its discovery block lists the llms.txt and sitemap that the build produced.
import { buildSiteMetadata, serializeSiteMetadata } from '@hagicode/hagilight-core/site-metadata';
const json = serializeSiteMetadata(buildSiteMetadata({ generator, site, build, discovery, analytics }));
Live composition
Shared site links
The layout passes a consumer-owned RSS destination to the resolver and the Footer.
Evidence: The RSS link above and in the footer resolves to this demo’s feed.
import { resolveSiteLinks } from '@hagicode/hagilight-core/links';
const links = resolveSiteLinks('en-US', {
rssFeedUrl: '/rss.xml',
});
Live component · remote campaign optional
Promotion banner
PromotoBanner prefers an eligible remote campaign and uses the localized fallback when none is available; @hagicode/hagilight-core/promoto-analytics reports impressions, dismissals and paging to PostHog, and @hagicode/hagilight-core/promotions exposes the typed campaign loader, and @hagicode/hagilight-core/promoto-banner exposes the framework-neutral custom element that the Docusaurus package mounts.
Evidence: The banner is mounted on this page; its fallback CTA jumps to the footer, where the component hides itself.
import PromotoBanner from '@hagicode/hagilight-core/PromotoBanner';
<PromotoBanner locale="en-US" fallback={fallbackCard} />
Live asset
Logo asset
The package logo is displayed in the site header as an imported image asset.
Evidence: See the Hagilight mark at the top of this page.
import logo from '@hagicode/hagilight-core/logo.png';
<img src={logo.src} alt="Hagilight" />