Repository navigation
Add the React registry and unified Astro/React docs - #269
Merged
Merged
Conversation
Installs every shadcn/ui registry:ui item with the official CLI (base-vega, lucide) into an isolated react/ workspace package, then restores the cn-* placeholders of the canonical source so each style is generated by the repository's existing style maps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Installs with rsc enabled, so the source carries the same "use client" directives as the shadcn registry and the consumer's CLI decides whether to keep them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
✅ Deploy Preview for fulldev-ui ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Banner, form, header, icon, layout, logo, marquee, price, rating, section, theme-toggle, toc, typography and video as native React components with the same cn-* placeholders, data slots and behavior as the Astro versions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
All 82 blocks as React components with the same props, markup and styling, native images with caller-owned srcset, and children for caller-owned content. The Vite gallery under react/gallery renders every component family and block in one style, built from the same cn-* style maps as the registry. react/registry.json lists the React registry items. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
registry:build writes the React registry to public/r/react in every style with the same style maps, registry:validate checks both registries, and check runs the React typecheck, lint and knip. The build adds the gallery to dist/react in every style for previews. The npm package leaves the React registry out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One demo per family that uses every exported part, its variants and its interactive states, so each component can be checked in every style. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Scans every demo for dependencies up front so the dev server does not reload, keeps the browser-only gallery from rendering the theme script, and labels demo controls and landmarks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tailwind skips classes inside CSS files, so the gallery reads them from the React registry output instead, the way the docs site picks them up from public/r. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Icon names come from content, so like the Astro Icon it resolves every icon of both sets, including simple:figma and the x.com alias, instead of a fixed list of social brands. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DrawerContent scrolls content taller than the drawer, as the Astro Drawer does, and is built from exported DrawerViewport and DrawerPopup. DrawerProvider, DrawerIndent, DrawerIndentBackground and DrawerVirtualKeyboardProvider wrap the Base UI parts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A caller's ref no longer replaces the internal ref, so Doc1 code blocks copy their code, and a React 19 callback ref's cleanup runs on detach. The doc gallery shows Doc1CodeBlock mapped as the pre of MDX-style content. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sidebar takes mobileTitle and mobileDescription with the upstream English defaults, and Sidebar1 forwards labels.mobileTitle and labels.mobileDescription as the Astro block does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Below the lg breakpoint a page picker replaces the 158-link list, so a page starts at the top, and three demos fit a 390px viewport. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The workspace lists the root package, so Changesets still versions fulldev-ui next to the private React package. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ixes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…osed The search dialog sits next to the sidebar instead of inside it, so it is mounted while the mobile sheet is closed. The search button stays in the sidebar header. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A query after the route belongs to the demo, and a heading anchor such as #installation scrolls within the current page instead of replacing it. Demos that render their own main element get no gallery main around them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Accordion, calendar, carousel and navigation menu examples have their own labels, the Item group holds list items with separators outside it, and the sidebar demo renders a single main element. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A heading anchor such as #installation replaces the #/ route in the URL, so the gallery records the page in ?page= on that history entry. A reload, the style picker and Back then open the same page and scroll to the anchor once it has rendered. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Block demos link to #, which location.hash reports as empty. The gallery now treats any fragment that is not a #/ route as an anchor, so the page stays, is kept in ?page= for reloads and Back, and the style picker carries the bare # along. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…/ui examples - Docs at /astro/... and /react/..., with a framework selector in the sidebar, per-edition navigation, search and pagination; old URLs redirect. - <Example> renders one source file as preview, code, Markdown and install. - React: the examples of the live shadcn/ui Base UI docs, one <family>-examples registry item each, with the MIT docs helpers they use. - The React gallery is now the preview app behind the React pages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- All ComponentPreview examples of the canonical docs, including RTL, Date Picker and Data Table, from the exact upstream files with their helpers and dependencies in each <family>-examples item. - Shorter React pages: every example, usage, API and notes; no guides. - Dropdown framework switcher, per-edition llms.txt, a home page for both editions, Usage labels for block demos, bounded preview heights. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Native Astro ports of every official example the Astro primitives support, with each page in the official order. Examples that need a missing part (Dropdown Menu submenus, Combobox chips) say they are in the React docs only. - The official Toast examples are Base UI Toast: they move from sonner to toast, with native Astro ports and their own toast-examples item. Sonner keeps its own page and demo. The React preview mounts both Toasters for official examples. - Example scripts initialize on astro:page-load and skip elements they already bound, so they keep working after a style switch. - SidebarProvider leaves a nested sidebar alone and initializes markup whose inline script did not run. sidebar-demo renders in a frame. - Unique ids per page, slider thumbs named after their label, upstream avatar images by URL, no em dashes in example text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Switch and RadioGroupItem render a button, so a label works with `for` and around the control. Field parts and FieldSet take `as`, so a choice card is valid label content. FieldGroup takes a `data-slot` override. Collapsible renders as an `li` and DropdownMenuItem as a `div` where an example needs it. - Examples that change the official composition are React only: Slider multiple thumbs, Drawer snap points, Button Group demo and RTL. - Drawer examples follow the 768px breakpoint as it changes. - Classes for one style, such as `style-lyra:ml-4`, resolve per style in the registry, the React previews and the Astro previews. - Docs tables scroll inside the content column; the full-page sidebar example keeps a fixed 640px React frame. - Type and HTML validation fixes: links take `as="a"`, card forms own their submit button, unique ids, updated landmark overrides. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The official Navigation Menu and Breadcrumb examples link to shadcn/ui's docs pages by absolute URL, so installed copies work. - linkinator skips hash routes of the React preview app (`#/...`) but still checks page anchors, and retries network errors. - The React Button Group page renders its key name with `kbd`; the React Sidebar caption is its own paragraph. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The docs example renderer types the example component's props loosely, so `slot` type-checks. - src/lib/examples.ts keeps its local helpers unexported; knip treats the two shipped shadcn/ui docs helpers like the price formatter. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Drawer demo and nested examples rebind Data Slot when the 768px breakpoint changes the swipe direction. They now keep each drawer's open state and active trigger, rebind a nested stack from the outside in, and show the swipe handle in open popups only below 768px. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Vite's preview server inherited the development proxy for /preview/react/, so astro preview forwarded the galleries to the React dev server. It now serves the built galleries from dist; astro dev keeps the proxy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
silveltman
marked this pull request as ready for review
October 10, 2026 18:00
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a native React edition of all 76 UI families and 82 blocks, and one docs site with the requested Astro/React dropdown. Switching keeps the component page when supported; unavailable Astro families have an explicit fallback. Both editions use the existing eight presets and portable registry items.
The docs include the official shadcn/ui Base UI examples pinned to
2d3f1cd436b18ea12f24130de4df781355925b08: 443 React source files and 322 native Astro equivalents. Examples can be installed by family and viewed with their source. Agent Markdown and llms exports use the same pages and example inventory.Validation
Base:
7aef7eb1c772baf8609abfcb047dc00be4bffce6.Head:
471103bed5a9f4cb9cc17030313781c365803af9.vp run checkpasses on the final head. The build at2e587461a7cf4f563b7e24fa97961ad9726455fccovers identical compiled and registry source; the final commit only overrides the preview-server proxy. All eight standalone preview gallery responses matchdistexactly. Together these cover formatting, strict TypeScript/Astro, ESLint, knip, registry validation/generation, all 21 existing tests, HTML validation, link checks and all eight React galleries.2e587461. Browser coverage includes representative pages at 390, 768 and 1440 pixels, framework switching, source navigation, mobile search, labels and keyboard controls, style changes, Toast, Sidebar, and responsive/nested Drawers. Other changed routes are structurally checked; no claim of complete visual inspection of every new example.471103bed5a9f4cb9cc17030313781c365803af9(deploy6aca6a6d0a75ee00089b93e7). Hosted verification confirms framework switching with query/anchor preservation, the explicit missing-Astro fallback, mobile switching at 390px without horizontal overflow, and actual Vega-to-Nova React rendering (36px/8px to 32px/10px height/radius). All eight gallery entrypoints and their 313 distinct referenced assets return HTTP 200.Limitations and review status
Astro examples are explicitly React only where native primitives cannot preserve the official behavior, including dropdown submenus, multiple combobox selection, three slider thumbs, and multiple drawer snap points. Other families without native Astro implementations are labeled accordingly. The upstream Typography examples page now redirects to Typeset; the existing Fulldev Typography usage remains.
Portable examples replace Next.js Link/Image with equivalent elements and use absolute upstream asset/docs URLs. Astro Input Group textarea growth uses CSS
field-sizing: content, with browser support limits. Existing upstream accessibility/hydration findings and the string-name Icon API bundle-size tradeoff remain documented.CodeRabbit CLI checkpoint on final head
471103bed5a9f4cb9cc17030313781c365803af9, against actual base7aef7eb1c772baf8609abfcb047dc00be4bffce6: exit 1,too_many_files, 4,918 files versus the 300-file limit. No files were reviewed and no reduced-scope workaround was used. CodeRabbit PR review was also skipped on the final head: 2,999 files versus its 150-file limit. The green CodeRabbit status is a skipped review, not a completed review. The user requested Dispatch all after the CLI limitation was disclosed. Merge, live publication and the resulting release are authorized. The automatic PR review ran its size gate and skipped the review. Dispatch proceeds on the passing checks and independent local reviews; neither the skipped PR review nor the failed CLI checkpoint is counted as a successful review.