A header, a live stream player across the top with a follow button, an about band and a social footer.
layout, stream, live, video, about, social
npm create nersh@latest my-site -- --site https://nertia.ai/components/more-pages/page-stream/site.jsonnpx shadcn@latest add https://ner.sh/r/header-brand-links.json
npx shadcn@latest add https://ner.sh/r/hero-stream.json
npx shadcn@latest add https://ner.sh/r/content-about.json
npx shadcn@latest add https://ner.sh/r/footer-social.jsonnpm create nersh@latest my-site -- --site https://nertia.ai/components/more-pages/page-stream/site.json scaffolds a project from it.{
"slug": "page-stream",
"mode": "builder",
"status": "draft",
"skinId": "zinc",
"composition": {
"id": "page-stream",
"sections": [
{
"id": "layout-section",
"instanceId": "header-band-r1",
"layout": "stack",
"children": [
{
"id": "layout-container",
"instanceId": "header-row-r1",
"layout": "cluster",
"align": "center",
"justify": "between",
"children": [
{
"id": "layout-column",
"instanceId": "header-brand-col-r1",
"children": [
{
"id": "block-brand",
"instanceId": "header-brand-r1"
}
]
},
{
"id": "layout-column",
"instanceId": "header-nav-col-r1",
"children": [
{
"id": "block-nav",
"instanceId": "header-nav-r1"
}
]
}
]
}
],
"component": "header-brand-links@1"
},
{
"id": "layout-section",
"instanceId": "hero-band-r2",
"layout": "stack",
"children": [
{
"id": "layout-container",
"instanceId": "hero-body-r2",
"layout": "stack",
"children": [
{
"id": "block-stream",
"instanceId": "hero-stream-r2"
},
{
"id": "block-text",
"instanceId": "hero-eyebrow-r2"
},
{
"id": "block-heading",
"instanceId": "hero-heading-r2"
},
{
"id": "block-text",
"instanceId": "hero-sub-r2"
},
{
"id": "block-button",
"instanceId": "hero-cta-r2"
}
]
}
],
"component": "hero-stream@1"
},
{
"id": "layout-section",
"instanceId": "about-band-r3",
"layout": "stack",
"children": [
{
"id": "layout-container",
"instanceId": "about-row-r3",
"layout": "split",
"align": "center",
"children": [
{
"id": "layout-column",
"instanceId": "about-copy-r3",
"span": 6,
"children": [
{
"id": "block-heading",
"instanceId": "about-heading-r3"
},
{
"id": "block-text",
"instanceId": "about-text-r3"
}
]
},
{
"id": "layout-column",
"instanceId": "about-media-col-r3",
"span": 6,
"children": [
{
"id": "block-media",
"instanceId": "about-media-r3"
}
]
}
]
}
],
"component": "content-about@1"
},
{
"id": "layout-section",
"instanceId": "footer-band-r4",
"fullBleed": true,
"children": [
{
"id": "layout-container",
"instanceId": "footer-row-r4",
"layout": "split",
"children": [
{
"id": "layout-column",
"instanceId": "footer-brand-col-r4",
"span": 6,
"children": [
{
"id": "block-brand",
"instanceId": "footer-brand-r4"
}
]
},
{
"id": "layout-column",
"instanceId": "footer-social-col-r4",
"span": 6,
"children": [
{
"id": "block-link-group",
"instanceId": "footer-social-links-r4"
}
]
}
]
}
],
"component": "footer-social@1"
}
]
},
"copy": {
"header-band-r1.coverImage": "",
"header-band-r1.coverStyle": "",
"header-band-r1.coverScrim": "",
"header-band-r1.anchor": "",
"header-band-r1.navLabel": "",
"header-band-r1.navHref": "",
"header-band-r1.navSkip": "true",
"header-band-r1.landmark": "header",
"header-band-r1.tone": "default",
"header-band-r1.gutter": "",
"header-band-r1.shape": "",
"header-band-r1.padding": "compact",
"header-band-r1.sticky": "true",
"header-band-r1.reveal": "",
"header-band-r1.dismissible": "",
"header-band-r1.width": "",
"header-band-r1.gradient": "",
"header-row-r1.align": "",
"header-row-r1.phone": "row",
"header-brand-col-r1.pad": "",
"header-brand-col-r1.sticky": "",
"header-brand-r1.wordmark": "Your Company",
"header-brand-r1.wordmarkAccent": "",
"header-brand-r1.logoImage": "",
"header-brand-r1.tagline": "",
"header-brand-r1.href": "#",
"header-nav-col-r1.pad": "",
"header-nav-col-r1.sticky": "",
"header-nav-r1.links": "[{\"label\":\"Home\",\"href\":\"#\"},{\"label\":\"About\",\"href\":\"#about\"},{\"label\":\"Services\",\"href\":\"#services\"},{\"label\":\"Contact\",\"href\":\"#contact\"}]",
"header-nav-r1.ctaLabel": "Get started",
"header-nav-r1.ctaHref": "#contact",
"header-nav-r1.ctaTone": "",
"header-nav-r1.ctaIcon": "",
"header-nav-r1.phoneMenu": "",
"header-nav-r1.align": "end",
"hero-band-r2.coverImage": "",
"hero-band-r2.coverStyle": "",
"hero-band-r2.coverScrim": "",
"hero-band-r2.anchor": "",
"hero-band-r2.navLabel": "",
"hero-band-r2.navHref": "",
"hero-band-r2.navSkip": "",
"hero-band-r2.landmark": "",
"hero-band-r2.tone": "",
"hero-band-r2.gutter": "",
"hero-band-r2.shape": "",
"hero-band-r2.padding": "",
"hero-band-r2.sticky": "",
"hero-band-r2.reveal": "",
"hero-band-r2.dismissible": "",
"hero-band-r2.width": "",
"hero-band-r2.gradient": "",
"hero-body-r2.align": "center",
"hero-body-r2.phone": "",
"hero-stream-r2.url": "",
"hero-stream-r2.aspect": "",
"hero-stream-r2.muted": "",
"hero-stream-r2.chat": "",
"hero-stream-r2.offlineNote": "Offline right now. Follow to catch the next stream.",
"hero-eyebrow-r2.text": "Live stream",
"hero-eyebrow-r2.textStyle": "eyebrow",
"hero-heading-r2.text": "A headline for your channel",
"hero-heading-r2.level": "h1",
"hero-sub-r2.text": "One line on what you stream and when to tune in.",
"hero-sub-r2.textStyle": "",
"hero-cta-r2.label": "Follow on Twitch",
"hero-cta-r2.href": "#",
"hero-cta-r2.variant": "",
"hero-cta-r2.size": "",
"hero-cta-r2.tone": "",
"hero-cta-r2.width": "",
"hero-cta-r2.icon": "",
"hero-cta-r2.iconOnly": "",
"about-band-r3.coverImage": "",
"about-band-r3.coverStyle": "",
"about-band-r3.coverScrim": "",
"about-band-r3.anchor": "about",
"about-band-r3.navLabel": "",
"about-band-r3.navHref": "",
"about-band-r3.navSkip": "",
"about-band-r3.landmark": "",
"about-band-r3.tone": "",
"about-band-r3.gutter": "",
"about-band-r3.shape": "",
"about-band-r3.padding": "",
"about-band-r3.sticky": "",
"about-band-r3.reveal": "",
"about-band-r3.dismissible": "",
"about-band-r3.width": "",
"about-band-r3.gradient": "",
"about-row-r3.align": "",
"about-row-r3.phone": "",
"about-copy-r3.pad": "",
"about-copy-r3.sticky": "",
"about-heading-r3.text": "About us",
"about-heading-r3.level": "h2",
"about-text-r3.text": "Two or three sentences about who you are and how you work.",
"about-text-r3.textStyle": "",
"about-media-col-r3.pad": "",
"about-media-col-r3.sticky": "",
"about-media-r3.image": "",
"about-media-r3.alt": "Placeholder image",
"about-media-r3.caption": "",
"about-media-r3.frame": "",
"about-media-r3.initials": "",
"about-media-r3.href": "",
"about-media-r3.lightbox": "",
"about-media-r3.badge": "",
"footer-band-r4.coverImage": "",
"footer-band-r4.coverStyle": "",
"footer-band-r4.coverScrim": "",
"footer-band-r4.anchor": "",
"footer-band-r4.navLabel": "",
"footer-band-r4.navHref": "",
"footer-band-r4.navSkip": "true",
"footer-band-r4.landmark": "footer",
"footer-band-r4.tone": "muted",
"footer-band-r4.gutter": "",
"footer-band-r4.shape": "",
"footer-band-r4.padding": "",
"footer-band-r4.sticky": "",
"footer-band-r4.reveal": "",
"footer-band-r4.dismissible": "",
"footer-band-r4.width": "",
"footer-band-r4.gradient": "",
"footer-row-r4.align": "",
"footer-row-r4.phone": "",
"footer-brand-col-r4.pad": "",
"footer-brand-col-r4.sticky": "",
"footer-brand-r4.wordmark": "Your Company",
"footer-brand-r4.wordmarkAccent": "",
"footer-brand-r4.logoImage": "",
"footer-brand-r4.tagline": "A one-line description of what you do.",
"footer-brand-r4.href": "#",
"footer-social-col-r4.pad": "",
"footer-social-col-r4.sticky": "",
"footer-social-links-r4.title": "Follow along",
"footer-social-links-r4.links": "[{\"label\":\"Social link one\",\"href\":\"#\"},{\"label\":\"Social link two\",\"href\":\"#\"},{\"label\":\"Social link three\",\"href\":\"#\"}]",
"footer-social-links-r4.direction": "row",
"footer-social-links-r4.icons": "social"
}
}
{
"slug": "header-brand-links",
"mode": "builder",
"status": "draft",
"skinId": "zinc",
"composition": {
"id": "header-brand-links",
"sections": [
{
"id": "layout-section",
"instanceId": "header-band-r1",
"layout": "stack",
"children": [
{
"id": "layout-container",
"instanceId": "header-row-r1",
"layout": "cluster",
"align": "center",
"justify": "between",
"children": [
{
"id": "layout-column",
"instanceId": "header-brand-col-r1",
"children": [
{
"id": "block-brand",
"instanceId": "header-brand-r1"
}
]
},
{
"id": "layout-column",
"instanceId": "header-nav-col-r1",
"children": [
{
"id": "block-nav",
"instanceId": "header-nav-r1"
}
]
}
]
}
],
"component": "header-brand-links@1"
}
]
},
"copy": {
"header-band-r1.coverImage": "",
"header-band-r1.coverStyle": "",
"header-band-r1.coverScrim": "",
"header-band-r1.anchor": "",
"header-band-r1.navLabel": "",
"header-band-r1.navHref": "",
"header-band-r1.navSkip": "true",
"header-band-r1.landmark": "header",
"header-band-r1.tone": "default",
"header-band-r1.gutter": "",
"header-band-r1.shape": "",
"header-band-r1.padding": "compact",
"header-band-r1.sticky": "true",
"header-band-r1.reveal": "",
"header-band-r1.dismissible": "",
"header-band-r1.width": "",
"header-band-r1.gradient": "",
"header-row-r1.align": "",
"header-row-r1.phone": "row",
"header-brand-col-r1.pad": "",
"header-brand-col-r1.sticky": "",
"header-brand-r1.wordmark": "Your Company",
"header-brand-r1.wordmarkAccent": "",
"header-brand-r1.logoImage": "",
"header-brand-r1.tagline": "",
"header-brand-r1.href": "#",
"header-nav-col-r1.pad": "",
"header-nav-col-r1.sticky": "",
"header-nav-r1.links": "[{\"label\":\"Home\",\"href\":\"#\"},{\"label\":\"About\",\"href\":\"#about\"},{\"label\":\"Services\",\"href\":\"#services\"},{\"label\":\"Contact\",\"href\":\"#contact\"}]",
"header-nav-r1.ctaLabel": "Get started",
"header-nav-r1.ctaHref": "#contact",
"header-nav-r1.ctaTone": "",
"header-nav-r1.ctaIcon": "",
"header-nav-r1.phoneMenu": "",
"header-nav-r1.align": "end"
},
"ds": {}
}
import type { SectionRegistry } from '@nersh/render';
import { Component as BlockBrand } from '@/sections/block-brand/Component';
import { Component as BlockNav } from '@/sections/block-nav/Component';
import { Component as LayoutColumn } from '@/sections/layout-column/Component';
import { Component as LayoutContainer } from '@/sections/layout-container/Component';
import { Component as LayoutSection } from '@/sections/layout-section/Component';
export const registry: SectionRegistry = {
'block-brand': BlockBrand,
'block-nav': BlockNav,
'layout-column': LayoutColumn,
'layout-container': LayoutContainer,
'layout-section': LayoutSection,
};
"use client";
import { SiteRenderer } from "@nersh/render";
import { registry } from "./header-brand-links.registry";
import siteJson from "./header-brand-links.site.json";
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const site = siteJson as any;
export default function HeaderBrandLinks() {
return <SiteRenderer site={site} registry={registry} />;
}
{
"slug": "hero-stream",
"mode": "builder",
"status": "draft",
"skinId": "zinc",
"composition": {
"id": "hero-stream",
"sections": [
{
"id": "layout-section",
"instanceId": "hero-band-r1",
"layout": "stack",
"children": [
{
"id": "layout-container",
"instanceId": "hero-body-r1",
"layout": "stack",
"children": [
{
"id": "block-stream",
"instanceId": "hero-stream-r1"
},
{
"id": "block-text",
"instanceId": "hero-eyebrow-r1"
},
{
"id": "block-heading",
"instanceId": "hero-heading-r1"
},
{
"id": "block-text",
"instanceId": "hero-sub-r1"
},
{
"id": "block-button",
"instanceId": "hero-cta-r1"
}
]
}
],
"component": "hero-stream@1"
}
]
},
"copy": {
"hero-band-r1.coverImage": "",
"hero-band-r1.coverStyle": "",
"hero-band-r1.coverScrim": "",
"hero-band-r1.anchor": "",
"hero-band-r1.navLabel": "",
"hero-band-r1.navHref": "",
"hero-band-r1.navSkip": "",
"hero-band-r1.landmark": "",
"hero-band-r1.tone": "",
"hero-band-r1.gutter": "",
"hero-band-r1.shape": "",
"hero-band-r1.padding": "",
"hero-band-r1.sticky": "",
"hero-band-r1.reveal": "",
"hero-band-r1.dismissible": "",
"hero-band-r1.width": "",
"hero-band-r1.gradient": "",
"hero-body-r1.align": "center",
"hero-body-r1.phone": "",
"hero-stream-r1.url": "",
"hero-stream-r1.aspect": "",
"hero-stream-r1.muted": "",
"hero-stream-r1.chat": "",
"hero-stream-r1.offlineNote": "Offline right now. Follow to catch the next stream.",
"hero-eyebrow-r1.text": "Live stream",
"hero-eyebrow-r1.textStyle": "eyebrow",
"hero-heading-r1.text": "A headline for your channel",
"hero-heading-r1.level": "h1",
"hero-sub-r1.text": "One line on what you stream and when to tune in.",
"hero-sub-r1.textStyle": "",
"hero-cta-r1.label": "Follow on Twitch",
"hero-cta-r1.href": "#",
"hero-cta-r1.variant": "",
"hero-cta-r1.size": "",
"hero-cta-r1.tone": "",
"hero-cta-r1.width": "",
"hero-cta-r1.icon": "",
"hero-cta-r1.iconOnly": ""
},
"ds": {}
}
import type { SectionRegistry } from '@nersh/render';
import { Component as BlockButton } from '@/sections/block-button/Component';
import { Component as BlockHeading } from '@/sections/block-heading/Component';
import { Component as BlockStream } from '@/sections/block-stream/Component';
import { Component as BlockText } from '@/sections/block-text/Component';
import { Component as LayoutContainer } from '@/sections/layout-container/Component';
import { Component as LayoutSection } from '@/sections/layout-section/Component';
export const registry: SectionRegistry = {
'block-button': BlockButton,
'block-heading': BlockHeading,
'block-stream': BlockStream,
'block-text': BlockText,
'layout-container': LayoutContainer,
'layout-section': LayoutSection,
};
"use client";
import { SiteRenderer } from "@nersh/render";
import { registry } from "./hero-stream.registry";
import siteJson from "./hero-stream.site.json";
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const site = siteJson as any;
export default function HeroStream() {
return <SiteRenderer site={site} registry={registry} />;
}
{
"slug": "content-about",
"mode": "builder",
"status": "draft",
"skinId": "zinc",
"composition": {
"id": "content-about",
"sections": [
{
"id": "layout-section",
"instanceId": "about-band-r1",
"layout": "stack",
"children": [
{
"id": "layout-container",
"instanceId": "about-row-r1",
"layout": "split",
"align": "center",
"children": [
{
"id": "layout-column",
"instanceId": "about-copy-r1",
"span": 6,
"children": [
{
"id": "block-heading",
"instanceId": "about-heading-r1"
},
{
"id": "block-text",
"instanceId": "about-text-r1"
}
]
},
{
"id": "layout-column",
"instanceId": "about-media-col-r1",
"span": 6,
"children": [
{
"id": "block-media",
"instanceId": "about-media-r1"
}
]
}
]
}
],
"component": "content-about@1"
}
]
},
"copy": {
"about-band-r1.coverImage": "",
"about-band-r1.coverStyle": "",
"about-band-r1.coverScrim": "",
"about-band-r1.anchor": "about",
"about-band-r1.navLabel": "",
"about-band-r1.navHref": "",
"about-band-r1.navSkip": "",
"about-band-r1.landmark": "",
"about-band-r1.tone": "",
"about-band-r1.gutter": "",
"about-band-r1.shape": "",
"about-band-r1.padding": "",
"about-band-r1.sticky": "",
"about-band-r1.reveal": "",
"about-band-r1.dismissible": "",
"about-band-r1.width": "",
"about-band-r1.gradient": "",
"about-row-r1.align": "",
"about-row-r1.phone": "",
"about-copy-r1.pad": "",
"about-copy-r1.sticky": "",
"about-heading-r1.text": "About us",
"about-heading-r1.level": "h2",
"about-text-r1.text": "Two or three sentences about who you are and how you work.",
"about-text-r1.textStyle": "",
"about-media-col-r1.pad": "",
"about-media-col-r1.sticky": "",
"about-media-r1.image": "",
"about-media-r1.alt": "Placeholder image",
"about-media-r1.caption": "",
"about-media-r1.frame": "",
"about-media-r1.initials": "",
"about-media-r1.href": "",
"about-media-r1.lightbox": "",
"about-media-r1.badge": ""
},
"ds": {}
}
import type { SectionRegistry } from '@nersh/render';
import { Component as BlockHeading } from '@/sections/block-heading/Component';
import { Component as BlockMedia } from '@/sections/block-media/Component';
import { Component as BlockText } from '@/sections/block-text/Component';
import { Component as LayoutColumn } from '@/sections/layout-column/Component';
import { Component as LayoutContainer } from '@/sections/layout-container/Component';
import { Component as LayoutSection } from '@/sections/layout-section/Component';
export const registry: SectionRegistry = {
'block-heading': BlockHeading,
'block-media': BlockMedia,
'block-text': BlockText,
'layout-column': LayoutColumn,
'layout-container': LayoutContainer,
'layout-section': LayoutSection,
};
"use client";
import { SiteRenderer } from "@nersh/render";
import { registry } from "./content-about.registry";
import siteJson from "./content-about.site.json";
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const site = siteJson as any;
export default function ContentAbout() {
return <SiteRenderer site={site} registry={registry} />;
}
{
"slug": "footer-social",
"mode": "builder",
"status": "draft",
"skinId": "zinc",
"composition": {
"id": "footer-social",
"sections": [
{
"id": "layout-section",
"instanceId": "footer-band-r1",
"fullBleed": true,
"children": [
{
"id": "layout-container",
"instanceId": "footer-row-r1",
"layout": "split",
"children": [
{
"id": "layout-column",
"instanceId": "footer-brand-col-r1",
"span": 6,
"children": [
{
"id": "block-brand",
"instanceId": "footer-brand-r1"
}
]
},
{
"id": "layout-column",
"instanceId": "footer-social-col-r1",
"span": 6,
"children": [
{
"id": "block-link-group",
"instanceId": "footer-social-links-r1"
}
]
}
]
}
],
"component": "footer-social@1"
}
]
},
"copy": {
"footer-band-r1.coverImage": "",
"footer-band-r1.coverStyle": "",
"footer-band-r1.coverScrim": "",
"footer-band-r1.anchor": "",
"footer-band-r1.navLabel": "",
"footer-band-r1.navHref": "",
"footer-band-r1.navSkip": "true",
"footer-band-r1.landmark": "footer",
"footer-band-r1.tone": "muted",
"footer-band-r1.gutter": "",
"footer-band-r1.shape": "",
"footer-band-r1.padding": "",
"footer-band-r1.sticky": "",
"footer-band-r1.reveal": "",
"footer-band-r1.dismissible": "",
"footer-band-r1.width": "",
"footer-band-r1.gradient": "",
"footer-row-r1.align": "",
"footer-row-r1.phone": "",
"footer-brand-col-r1.pad": "",
"footer-brand-col-r1.sticky": "",
"footer-brand-r1.wordmark": "Your Company",
"footer-brand-r1.wordmarkAccent": "",
"footer-brand-r1.logoImage": "",
"footer-brand-r1.tagline": "A one-line description of what you do.",
"footer-brand-r1.href": "#",
"footer-social-col-r1.pad": "",
"footer-social-col-r1.sticky": "",
"footer-social-links-r1.title": "Follow along",
"footer-social-links-r1.links": "[{\"label\":\"Social link one\",\"href\":\"#\"},{\"label\":\"Social link two\",\"href\":\"#\"},{\"label\":\"Social link three\",\"href\":\"#\"}]",
"footer-social-links-r1.direction": "row",
"footer-social-links-r1.icons": "social"
},
"ds": {}
}
import type { SectionRegistry } from '@nersh/render';
import { Component as BlockBrand } from '@/sections/block-brand/Component';
import { Component as BlockLinkGroup } from '@/sections/block-link-group/Component';
import { Component as LayoutColumn } from '@/sections/layout-column/Component';
import { Component as LayoutContainer } from '@/sections/layout-container/Component';
import { Component as LayoutSection } from '@/sections/layout-section/Component';
export const registry: SectionRegistry = {
'block-brand': BlockBrand,
'block-link-group': BlockLinkGroup,
'layout-column': LayoutColumn,
'layout-container': LayoutContainer,
'layout-section': LayoutSection,
};
"use client";
import { SiteRenderer } from "@nersh/render";
import { registry } from "./footer-social.registry";
import siteJson from "./footer-social.site.json";
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const site = siteJson as any;
export default function FooterSocial() {
return <SiteRenderer site={site} registry={registry} />;
}