You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We ship ~45 page templates and 630+ component blocks, but there are systematic gaps in the page-template roster — whole classes of prompts that either retrieve nothing useful or retrieve a page that composes the wrong components. This issue proposes a prioritized set of official page templates to close those gaps, and grounds each recommendation in (a) an unrepresented slice of the component surface and (b) demand already proven by the community catalog.
This generalizes #4523 (scheduling/calendar). That issue found the calendar gap by the exact right method — a shipped component family with zero page-level usage. The same method surfaces several more gaps; this issue collects them so we can prioritize as a set.
How build picks a template (why this defines "gap")
The load-bearing detail: for page templates, the searchable "keywords" are auto-extracted from the rendered component names plus the category split into words. So a template's category + description + the components it actually renders dominate retrieval; the folder name is only a tiebreak (stopwords like page/app/view/screen are dropped).
Consequence: a "gap" is not "we lack a pretty page." A gap is a prompt-class whose best answer would compose components that no page template currently renders — so search() can only return a page built from other components, and the agent hand-rolls the rest.
The frame: official = vocabulary, community = literature
Official core teaches the component surface — the canonical, rubric-clean way to compose our primitives. Every template must pass the grading rubric (B+).
So the right things to pull into official are patterns that teach unrepresented vocabulary and answer an unserved prompt-class — not domain-specific apps. The community catalog is the evidence layer: where it independently grew a pattern that core lacks, that's a validated gap.
Primary signal: 61 components have a block but zero page-template usage
A page template is how build learns to compose components together. 61 shipped components never appear in any page template, so a prompt whose ideal answer uses them can't retrieve a page that demonstrates them. Filtering out sub-parts (e.g. CommandPaletteItem), providers (Theme, LinkProvider), and a11y utilities leaves a clear set of page-worthy gaps, below.
Recommended official page templates (ranked by prompt-frequency × vocabulary gap)
Each row lists the vocabulary it unlocks, the prompt-class it serves, and community templates that already validate the demand (links go to the live catalog).
1. Marketing set — biggest uncovered request domain (34 community templates, 0 official)
Landing / pricing / hero / features / footer / CTA are arguably the single most common request class for any design system, and official ships nothing. Proposed canonical pages: a full landing, pricing, feature-sections, and a footer collection.
Unlocks: composition of Section, Grid, Card, Heading, Button at marketing scale (currently only app-shell composition is taught)
Prompt-class: "landing page", "pricing page", "hero section", "feature grid", "footer" → currently no strong match
Unlocks Calendar + DateInput + DateRangeInput + TimeInput in one page (all four have zero page usage today). #4523 already scopes a single scheduling template; this is the highest-value single addition. Community validation:
Stepper ships but appears in no page template. A multi-step wizard with a step indicator, per-step validation, and a review step is the canonical home for it.
6. One mobile shell — unlocks BottomSheet + MobileNav (distilled from 122)
The community's Mobile category is 122 templates — its crown jewel, but it is literature. We should NOT absorb it. Instead, distill one canonical mobile shell that teaches the 390px frame + BottomSheet + MobileNav.
If we want maximal surface coverage in one shot, the community's "gallery" pages each demonstrate a whole component family on one screen. Good raw material for showcase-style pages:
The 122 Mobile templates — literature, not vocabulary. Distill into one shell (item 6).
Vertical Ops / Legal AI / Workforce / Healthcare / Logistics (~90 combined) — pure domain literature. Leave in the community catalog; they double as an integration test suite for core.
The test for "official" is: does it teach how to compose our components, or does it teach a domain? Only the former belongs in core.
Related retrieval-hygiene bug (worth fixing alongside)
Two existing pages are noise magnets that will outrank whatever we add: dashboard-portfolio (~30 auto-extracted keywords incl. Table/List) and theme-showcase (~51 keywords, empty category). On a query like "customer list", dashboard-portfolio can rank #1 over the correct table template. Suggested fixes: cap/curate auto-extracted page keywords, require a non-empty category, and down-weight kitchen-sink showcase pages in search(). Otherwise new templates get buried under the existing ones.
Proposed sequencing
Marketing set (landing, pricing, feature-sections, footer)
Each is justified twice: it teaches vocabulary with zero current coverage, and it targets a prompt-class search() answers poorly today — with community demand already proven.
Summary
We ship ~45 page templates and 630+ component blocks, but there are systematic gaps in the page-template roster — whole classes of prompts that either retrieve nothing useful or retrieve a page that composes the wrong components. This issue proposes a prioritized set of official page templates to close those gaps, and grounds each recommendation in (a) an unrepresented slice of the component surface and (b) demand already proven by the community catalog.
This generalizes #4523 (scheduling/calendar). That issue found the calendar gap by the exact right method — a shipped component family with zero page-level usage. The same method surfaces several more gaps; this issue collects them so we can prioritize as a set.
How
buildpicks a template (why this defines "gap")build(query)→buildKit→search(). The scoring ladder is exact-name 100 / exact-keyword 90 / name-Levenshtein 80 / keyword-substring 70 / name-substring 60 / description-mention 50.The load-bearing detail: for page templates, the searchable "keywords" are auto-extracted from the rendered component names plus the
categorysplit into words. So a template'scategory+description+ the components it actually renders dominate retrieval; the folder name is only a tiebreak (stopwords likepage/app/view/screenare dropped).Consequence: a "gap" is not "we lack a pretty page." A gap is a prompt-class whose best answer would compose components that no page template currently renders — so
search()can only return a page built from other components, and the agent hand-rolls the rest.The frame: official = vocabulary, community = literature
So the right things to pull into official are patterns that teach unrepresented vocabulary and answer an unserved prompt-class — not domain-specific apps. The community catalog is the evidence layer: where it independently grew a pattern that core lacks, that's a validated gap.
Primary signal: 61 components have a block but zero page-template usage
A page template is how
buildlearns to compose components together. 61 shipped components never appear in any page template, so a prompt whose ideal answer uses them can't retrieve a page that demonstrates them. Filtering out sub-parts (e.g.CommandPaletteItem), providers (Theme,LinkProvider), and a11y utilities leaves a clear set of page-worthy gaps, below.Recommended official page templates (ranked by prompt-frequency × vocabulary gap)
Each row lists the vocabulary it unlocks, the prompt-class it serves, and community templates that already validate the demand (links go to the live catalog).
1. Marketing set — biggest uncovered request domain (34 community templates, 0 official)
Landing / pricing / hero / features / footer / CTA are arguably the single most common request class for any design system, and official ships nothing. Proposed canonical pages: a full landing, pricing, feature-sections, and a footer collection.
Section,Grid,Card,Heading,Buttonat marketing scale (currently only app-shell composition is taught)2. Calendar / scheduler — see #4523
Unlocks
Calendar+DateInput+DateRangeInput+TimeInputin one page (all four have zero page usage today). #4523 already scopes a singleschedulingtemplate; this is the highest-value single addition. Community validation:3. Form wizard — unlocks
StepperStepperships but appears in no page template. A multi-step wizard with a step indicator, per-step validation, and a review step is the canonical home for it.4. Command palette — unlocks the
CommandPalettefamilyCommandPaletteand its 7 sub-components have zero page usage. A cmd-K launcher over a dimmed workspace is the canonical demo.5. Notification center + confirm flow — unlocks
ToastandAlertDialogBoth ship with zero page usage. A notification center (bell → popover → toast) plus a destructive-action confirm flow teach them together.
6. One mobile shell — unlocks
BottomSheet+MobileNav(distilled from 122)The community's
Mobilecategory is 122 templates — its crown jewel, but it is literature. We should NOT absorb it. Instead, distill one canonical mobile shell that teaches the 390px frame +BottomSheet+MobileNav.Optional: UI-kit vocabulary showcases
If we want maximal surface coverage in one shot, the community's "gallery" pages each demonstrate a whole component family on one screen. Good raw material for showcase-style pages:
What NOT to absorb
Mobiletemplates — literature, not vocabulary. Distill into one shell (item 6).The test for "official" is: does it teach how to compose our components, or does it teach a domain? Only the former belongs in core.
Related retrieval-hygiene bug (worth fixing alongside)
Two existing pages are noise magnets that will outrank whatever we add:
dashboard-portfolio(~30 auto-extracted keywords incl. Table/List) andtheme-showcase(~51 keywords, emptycategory). On a query like "customer list",dashboard-portfoliocan rank #1 over the correct table template. Suggested fixes: cap/curate auto-extracted page keywords, require a non-emptycategory, and down-weight kitchen-sink showcase pages insearch(). Otherwise new templates get buried under the existing ones.Proposed sequencing
Each is justified twice: it teaches vocabulary with zero current coverage, and it targets a prompt-class
search()answers poorly today — with community demand already proven.