Skip to content

Conversation

@mattrothenberg
Copy link
Contributor

Summary

Add render prop to Button component for polymorphic composition via Base UI's useRender hook. This enables rendering Button as anchors, React Router Links, Next.js Links, or any custom component.

Changes

  • Button component: Add render prop using Base UI's useRender and mergeProps
  • ButtonState type: New exported type for render callback consumers
  • Tests: Comprehensive tests for render prop patterns
  • Docs: New "Composition" section with examples for React Router, Next.js, and anchors

Usage

// As an anchor
<Button render={<a href="/about" />}>About</Button>

// With React Router
<Button render={<Link to="/dashboard" />}>Dashboard</Button>

// With Next.js
<Button render={<NextLink href="/page" />}>Page</Button>

// Render callback for state access
<Button
  loading={isLoading}
  render={(props, state) => (
    <a {...props} href="/link">
      {state.loading ? "Loading..." : "Click"}
    </a>
  )}
/>

References

- Add render prop to Button using Base UI's useRender hook
- Export ButtonState type for render callback consumers
- Add comprehensive tests for render prop patterns
- Document composition patterns in Astro docs (React Router, Next.js, anchors)
- Regenerate component registry
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