Preset Generator Stub
Why src/components/preset-generator.tsx and doc/src/components/preset-generator.tsx are no-op stubs, and the contract a real implementation must satisfy.
What it is
src/ and doc/ are intentional no-op stubs. Both files define the same shape:
function PresetGenerator(): JSX.Element | null {
return null;
}
PresetGenerator.displayName = "PresetGenerator";
export default PresetGenerator;doc/ imports PresetGenerator from @/components/preset-generator unconditionally. The stub exists so that import always resolves, even in projects that never wire up a real preset-generator form.
Both stub files carry a W6A stub comment marker. W6A is an internal scaffold-wave label shared with the other no-op stubs in this codebase (desktop-sidebar-toggle, doc-history, ai-chat-modal) — it identifies a batch of generated placeholder files, not a separate spec to look up.
The replacement contract
doc/ is the SSR fallback for the real interactive form. It does not implement the form, but its shape describes what a real implementation must satisfy:
The real component is a client-only Preact island, mounted through zfb's
<Island>wrapper (when: "load") with anssrFallbackthat renders static section headings.The fallback declares 8 sections, and its
SECTION_HEADINGSarray fixes their source order:Project Name
Default Language
Color Scheme Mode
Color Scheme
Features
Header right items
Markdown Options
Package Manager
The default export's
displayNamemust stay"PresetGenerator". zfb's island scanner walks the static import chain from page modules down to this file to register the component in the island manifest; without a stabledisplayName, the scanner cannot connect the SSR fallback to a client-side manifest entry, and hydration never fires for it (the orphan-component problem — the same failure mode the_body-end-islands.tsxcomments describe for other islands).
Treat this list as the shape the SSR fallback expects, not as authoritative documentation of what the finished showcase form looks like — no such spec exists in this codebase.
No importable package export
The doc-history and ai-chat-modal stubs exist because their real implementations ship from @takazudo/zudo-doc as importable islands (@takazudo/, @takazudo/) — a project that enables those features overwrites the local stub with a re-export shim pointing at the package.
preset-generator has no equivalent. Checking the installed @takazudo/zudo-doc package's exports map turns up no . (or similarly named) entry. There is nothing to re-export. An adopter who wants this feature has to author the island from scratch, using doc/ as the shape spec described above, then replace both stub files with the real implementation.
Reference
zudolab/zudo-doc is the upstream framework repository. It is the only concrete upstream pointer for this component; it does not currently document a preset-generator island.