<PlanDetailsButton /> component
The <PlanDetailsButton /> component renders a button that opens the plan details drawer, allowing users to view detailed information about a specific plan, including pricing, features, and other plan-specific details.
- Name
 planId?- Type
 string- Description
 The ID of the plan to display details for.
- Name
 children?- Type
 React.ReactNode- Description
 Optional custom button element. If not provided, defaults to a button with the text "Plan details".
- Name
 initialPlanPeriod?- Type
 'month' | 'annual'- Description
 Optional prop to set the initial billing period view when the plan details drawer opens.
- Name
 planDetailsProps?- Type
 { appearance: Appearance }- Description
 Options for the plan details drawer. Accepts the following properties:
appearance: an object used to style your components. For example:<PlanDetailsButton planDetailsProps={{ appearance: { ... } }} />.
Usage
<PlanDetailsButton /> preserves any click handlers attached to custom button elements, while maintaining the plan details drawer functionality.
<PlanDetailsButton planId="cplan_xxx">
  <button onClick={() => console.log('Button clicked')} className="custom-button">
    View Plan
  </button>
</PlanDetailsButton><PlanDetailsButton /> supports rendering the plan details drawer in a custom portal container.
const portalRoot = document.getElementById('custom-portal')
<PlanDetailsButton
  planId="cplan_xxx"
  planDetailsProps={{
    portalId: 'custom-portal',
    portalRoot: portalRoot,
  }}
/>'use client'
import { PlanDetailsButton } from '@clerk/nextjs/experimental'
export default function PricingPage() {
  return (
    <div>
      {/* Basic usage with plan ID */}
      <PlanDetailsButton planId="cplan_xxx" />
      {/* Customizes the appearance of the plan details drawer */}
      <PlanDetailsButton
        planId="cplan_xxx"
        initialPlanPeriod="month"
        planDetailsProps={{
          appearance: {
            /* custom theme */
          },
        }}
      />
      {/* Custom button */}
      <PlanDetailsButton planId="cplan_xxx">
        <button className="custom-button">
          <Icon name="info" />
          View Plan Features
        </button>
      </PlanDetailsButton>
    </div>
  )
}import { PlanDetailsButton } from '@clerk/clerk-react'
const PricingSection = () => {
  return (
    <div>
      {/* Basic usage with plan ID */}
      <PlanDetailsButton planId="cplan_xxx" />
      {/* Customize the appearance of the plan details drawer */}
      <PlanDetailsButton
        planId="cplan_xxx"
        initialPlanPeriod="month"
        planDetailsProps={{
          appearance: {
            /* custom theme */
          },
        }}
      />
      {/* Custom button */}
      <PlanDetailsButton planId="cplan_xxx">
        <button className="custom-button">
          <Icon name="info" />
          View Plan Features
        </button>
      </PlanDetailsButton>
    </div>
  )
}
export default PricingSectionFeedback
Last updated on