@stripe/react-stripe-js
Version:
React components for Stripe.js and Stripe Elements
77 lines (67 loc) • 2.28 kB
text/typescript
export {CheckoutElementsProvider} from './components/CheckoutElementsProvider';
export {
useCheckout,
useCheckoutElements,
useCheckoutForm,
StripeUseCheckoutResult,
StripeUseCheckoutElementsResult,
StripeUseCheckoutFormResult,
StripeCheckoutValue,
StripeCheckoutElementsValue,
StripeCheckoutFormValue,
} from './components/CheckoutContext';
export {CheckoutFormProvider} from './components/CheckoutFormProvider';
export * from './types';
import React from 'react';
import createElementComponent from '../components/createElementComponent';
import {isServer} from '../utils/isServer';
import {
CurrencySelectorElementComponent,
BillingAddressElementComponent,
ShippingAddressElementComponent,
PaymentElementComponent,
CheckoutFormComponent,
ExpressCheckoutElementComponent,
TaxIdElementComponent,
ContactDetailsElementComponent,
} from './types';
export const CurrencySelectorElement: CurrencySelectorElementComponent = createElementComponent(
'currencySelector',
isServer
);
export const PaymentElement: PaymentElementComponent = createElementComponent(
'payment',
isServer
);
export const CheckoutForm: CheckoutFormComponent = createElementComponent(
'paymentForm',
isServer,
'CheckoutForm'
);
export const ExpressCheckoutElement: ExpressCheckoutElementComponent = createElementComponent(
'expressCheckout',
isServer
);
export const TaxIdElement: TaxIdElementComponent = createElementComponent(
'taxId',
isServer
);
export const ContactDetailsElement: ContactDetailsElementComponent = createElementComponent(
'contactDetails',
isServer
);
const AddressElementBase = createElementComponent('address', isServer) as any;
export const BillingAddressElement: BillingAddressElementComponent = ((
props
) => {
const {options, ...rest} = props as any;
const merged = {...options, mode: 'billing'};
return React.createElement(AddressElementBase, {...rest, options: merged});
}) as BillingAddressElementComponent;
export const ShippingAddressElement: ShippingAddressElementComponent = ((
props
) => {
const {options, ...rest} = props as any;
const merged = {...options, mode: 'shipping'};
return React.createElement(AddressElementBase, {...rest, options: merged});
}) as ShippingAddressElementComponent;