llms.txt was added in #8460 and hasn't kept up with the docs tree.
Audited every URL against apps/v4/content/docs and fixed the drift
in one pass.
Removed:
- About (/docs/about): returns 404, no about.mdx exists
- Form (/docs/components/form): points at a phantom. No radix/form.mdx
exists post-#9304. URL only resolves because of a redirect in
next.config.mjs, which lands at /docs/forms. That page is already
listed as 'Forms Overview' in the ## Forms section, and the real
form library docs (React Hook Form, TanStack Form, Next.js) are
listed there too. The Form component entry is a stale duplicate.
Added to Overview:
- Skills (/docs/skills)
- Directory (/docs/directory)
Added whole RTL section (new since #8460):
- RTL (/docs/rtl)
- RTL - Next.js
- RTL - Vite
- RTL - TanStack Start
Added to Components:
- Direction (Misc)
- Native Select (Form & Input, after Select)
- Sonner (Feedback & Status, after Toast, since Sonner has its own
docs page even though Toast already uses it under the hood)
Added to Registry:
- Namespaces
- Add a Registry (open source registry index)
- Open in v0 integration
- registry.json schema docs
- registry-item.json spec docs
Descriptions match the short curated style of the rest of the file.
Noticed while working on #9484.
The <ComponentsList /> tag on /docs/components was emitted as-is by
the Copy Page button and the /llm/[slug] markdown endpoint because
getComponentsList() walked components.children for pages directly.
After #9304 restructured the folder into components/radix/ and
components/base/ subfolders, the filter always returned [] and the
tag was replaced with an empty string (or, in the copy-page case,
never replaced at all).
- Reuse getPagesFromFolder() from lib/page-tree so the walker stays
in sync with the on-screen ComponentsList React component.
- Match the existing llms.txt format: flat absolute URLs (the
/docs/components/:name -> /docs/components/radix/:name redirect in
next.config.mjs is the canonical form) plus the frontmatter
description pulled via source.getPage() on each page.
- Export replaceComponentsList() and call it from
docs/[[...slug]]/page.tsx so the Copy Page button goes through the
same replacement path as processMdxForLLMs.