Skip to content

feat: split the other component pages into an overview and a page per layer - #69

Merged
alexgrozav merged 31 commits into
mainfrom
component-sub-pages-uxf-421
Oct 23, 2026
Merged

alexgrozav merged 31 commits into
mainfrom
component-sub-pages-uxf-421

Conversation

@alexgrozav

@alexgrozav alexgrozav commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

What changed

The other ten component pages now have the shape the Button's got in #54: the Card, Checkbox, Checkbox Group, Dialog, Input, Radio Group, Spinner, Switch, Textarea and Tooltip each become a folder in content/docs/3.components/. Each folder holds an Overview and a page per layer: User Interface (UI), User Experience (UX), Developer Experience (DX) and Agentic Experience (AX). The text moves as it is. The only changes are the ones the Button's split made: the cards in place of the intro's list of layers, At a glance starting before the paragraph on examples, the four Checklist links, each part's rules under "UI Checklist" and so on, its questions under its own FAQ, and link targets.

Once the Checkbox was a folder, Nuxt Content would have listed Checkbox Group before it, since it sorts by file path and - comes before /. app/lib/navigation.ts keeps the component pages in name order in the sidebar, the header's menu and the links to the previous and next pages. app/components/UContentSurround.vue replaces Nuxt UI's to read that order. The tests that covered the Button's split, and the Button-only checks in scripts/check-mcp.mjs, now run once for every split component. Links between components go straight to the section's new page. Links from before the split, like /docs/components/input#sizes, still land on the right page through the redirect map.

In the sidebar and the header's menu, a component's name opens and closes the list of its pages, the Overview and its layers, without navigating, so you pick the page you want. The group still opens on any of its pages and closes once you leave them.

Agents see no difference. /raw/docs/components/<component>.md and .yaml, and the MCP server, serve each component as one page with the outline and contract it has on main. The FAQ comes back grouped by layer. A changelog entry announces the change, and AGENTS.md and .github/CONTRIBUTING.md now say every component page is split like the Button's.

It collects these PRs, each reviewed on its own: #56 (component order), #57 (split tests), #58 to #67 (one per component), #68 (links between components, changelog, guides) and #70 (the name opens the group, without navigating).

To try it, run pnpm dev and open /docs/components/checkbox.

Checklist

  • The title follows Conventional Commits, as in feat(docs): add the focus guideline.
  • pnpm check-types passes.
  • Docs changes: the pages read well on pnpm dev. (Checked on a pnpm build served with wrangler dev.)
  • Homepage changes: pnpm build, then pnpm lighthouse, still scores 100 in every category. (No homepage changes, but the redirect map now covers eleven components and loads on every page, so it ran: 100 in every category on all three runs.)

alexgrozav and others added 29 commits October 22, 2026 12:41
Nuxt Content orders the docs by file path, so once a component page is
split into a folder, like `checkbox/`, it comes after a page whose name
starts with the folder's, like `checkbox-group.md`, since `-` sorts
before `/`. The sidebar, the header's menu and the links to the previous
and next pages would then list the Checkbox Group before the Checkbox.

`sortNavigation()` in `app/lib/navigation.ts` orders the component pages
by their navigation title, and leaves the numbered sections as they are.
DocsNavigation.vue, which renders the sidebar and the menu, reads it, and
UContentSurround.vue replaces Nuxt UI's links to the previous and next
pages, which Docus fills in Nuxt Content's order, with the pages before
and after in the same order.

Co-authored-by: multica-agent <github@multica.ai>
The tests and check-mcp that proved the Button's split now run once per split folder in 3.components/, found from the files, so each component that's split the same way is in the gate without a change to them. The Button's own anchor, #loading and Variants cases stay as they are.

Co-authored-by: multica-agent <github@multica.ai>
The Card's page becomes a folder shaped like the Button's: an Overview, a
page for each layer, and its own group in the sidebar. The text moved as
it was, apart from link targets, the cards in place of the intro's list
of layers, At a glance starting before the paragraph on examples, and the
list of the four checklists.

Co-authored-by: multica-agent <github@multica.ai>
…ayer

The Checkbox page becomes a folder shaped like the Button's: an Overview
with a card per layer, and a page each for UI, UX, DX and AX, with that
layer's rules and questions. The text moves as it is. Links to the page's
own sections now go to the part that holds them.

Co-authored-by: multica-agent <github@multica.ai>
… per layer

The Checkbox Group's page becomes a folder shaped like the Button's: an
Overview, a page for each layer, and its own group in the sidebar. The
text moved as it was, apart from link targets, the cards in place of the
intro's list of layers, At a glance starting before the paragraph on
examples, and the list of the four checklists.

Co-authored-by: multica-agent <github@multica.ai>
The Dialog's page becomes a folder shaped like the Button's: an Overview,
a page for each layer, and its own group in the sidebar. The text moved
as it was, apart from link targets, the cards in place of the intro's
list of layers, At a glance starting before the paragraph on examples,
and the list of the four checklists.

Co-authored-by: multica-agent <github@multica.ai>
The Input page becomes a folder shaped like the Button's: an Overview with the intro, At a glance, the Checklist's intro, the reference implementation and the sources, and a page per layer, each ending with its rules and its questions. The text moves as it is, apart from the parts' descriptions, the cards, the Checklist's links and the links to the Input's own sections, which now point at the page each section lives on.
The Spinner page becomes a folder shaped like the Button's: an Overview
with a card per layer, and a page each for UI, UX, DX and AX, with that
layer's rules and questions. The text moves as it is. Links to the page's
own sections now go to the part that holds them.

Co-authored-by: multica-agent <github@multica.ai>
…r layer

The Radio Group page becomes a folder shaped like the Button's: an Overview
with a card per layer, and a page each for UI, UX, DX and AX, with that
layer's rules and questions. The text moves as it is. Links to the page's
own sections now go to the part that holds them.

Co-authored-by: multica-agent <github@multica.ai>
The Switch page becomes a folder shaped like the Button's: an Overview
with a card per layer, and a page each for UI, UX, DX and AX, with that
layer's rules and questions. The text moves as it is. Links to the page's
own sections now go to the part that holds them.

Co-authored-by: multica-agent <github@multica.ai>
The Tooltip's page becomes a folder shaped like the Button's: an Overview,
a page for each layer, and its own group in the sidebar. The text moved
as it was, apart from link targets, the cards in place of the intro's
list of layers, At a glance starting before the paragraph on examples,
and the list of the four checklists.

Co-authored-by: multica-agent <github@multica.ai>
…ayer

The Textarea page becomes a folder shaped like the Button's: an Overview
with a card per layer, and a page each for UI, UX, DX and AX, with that
layer's rules and questions. The text moves as it is. Links to the page's
own sections now go to the part that holds them.

Co-authored-by: multica-agent <github@multica.ai>
Links between the ten split components, and the Button's two into the Spinner, now point to the page each section lives on, with targets from readSplitAnchors. A changelog entry announces the splits, and the guides no longer name an unsplit component page.

Co-authored-by: multica-agent <github@multica.ai>
@alexgrozav
alexgrozav marked this pull request as ready for review October 22, 2026 15:07
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

🚀 Deploying Preview to Cloudflare 🚀

Preview URL: https://component-sub-pages-uxf-421-opencomponents.blue-water-0397.workers.dev (commit a813218)

This URL reflects your latest Preview deployment

Preview Deployments by commit

Status Deployment URL Commit Updated (UTC) See this deployment's details
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://043c095b-opencomponents.blue-water-0397.workers.dev a813218 2026-10-23T09:36:15.887Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://7c06e8b1-opencomponents.blue-water-0397.workers.dev cfc7905 2026-10-22T14:53:41.046Z Visit the dashboard ↗

…avigating

The name of a split component page in the sidebar and the header's menu now opens and closes its group, rather than linking to its Overview, so readers choose the page they want from the group.

Co-authored-by: multica-agent <github@multica.ai>
@alexgrozav
alexgrozav marked this pull request as draft October 23, 2026 09:26
@alexgrozav
alexgrozav marked this pull request as ready for review October 23, 2026 09:39
@alexgrozav
alexgrozav merged commit 4d2f4f2 into main Oct 23, 2026
5 checks passed
@alexgrozav
alexgrozav deleted the component-sub-pages-uxf-421 branch October 23, 2026 14:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant