Skip to main content

Elements Components

CardElement

The CardElement component features a full credit card form, wrapping the Card Element type functionality and taking care of the React lifecycle. The Card Element contains the following inputs:

  • cardNumber
  • expirationDate
    • Must not be expired or greater than 19 years in the future
  • cvc
Live Card Element
import {
BasisTheoryProvider,
CardElement,
useBasisTheory,
} from "@basis-theory/basis-theory-react";

const App = () => {
// creates a new instance of BasisTheory class
const { bt } = useBasisTheory("<API_KEY>", { elements: true });

return (
<BasisTheoryProvider bt={bt}>
<MyComponent />
</BasisTheoryProvider>
);
};

const MyComponent = () => {
return <CardElement id="myCard" />; // Element will grab instance from the Context
};

Properties

PropertyRequiredTypeUpdatableDescription
autoCompletefalsestringtrueString used to set the autocomplete attribute of the input(s).
btfalseReact Elements SDKfalseInstance used by the Element. Will use instance from BasisTheoryProvider if configured.
copyIconStylesfalseobjectfalseObject used to customize the copy icon size, color and successColor
disabledfalsebooleantrueBoolean used to set the disabled attribute of the input(s)
enableCopyfalsebooleanfalseRenders a button to allow users to copy the value of the element to the browser's clipboard without your application ever interacting with the data.
idtruestringfalseString identifier used to retrieve the Element instance for tokenization.
inputModefalsestringtrueString used to set the inputmode attribute of the input(s)
onBlurfalsefunctiontrueEvent Listener. See On Blur
onChangefalsefunctiontrueEvent Listener. See On Change
onFocusfalsefunctiontrueEvent Listener. See On Focus
onKeyDownfalsefunctiontrueEvent Listener. See On Keydown
onReadyfalsefunctiontrueEvent Listener. See On Ready
placeholderfalsestringtrueObject used to customize the placeholder attribute of the inputs. Card element takes a CardElementPlaceholder object
readOnlyfalsebooleantrueBoolean used to set the readonly attribute of the input(s)
reffalseobject/functionfalseRef object/Callback ref function to store/receive the Element instance.
stylefalseobjecttrueObject used to customize the element appearance
validateOnChangefalsebooleanfalseEnable validation onChange
valuefalsestringtrueSets a static value for the element input.
enableCopy is available for Chromium-based browsers only; we're actively working on multi-browser support. Have feedback or questions? Feel free to join us in our Slack community.

Card Element Placeholder

interface CardElementPlaceholder {
cardNumber?: string;
cardExpirationDate?: string;
cardSecurityCode?: string;
}

TextElement

The TextElement component features a regular text input for collecting any input data, by wrapping the Text Element type functionality and taking care of the React lifecycle.

Live Text Element
import {
BasisTheoryProvider,
TextElement,
useBasisTheory,
} from "@basis-theory/basis-theory-react";

const App = () => {
// creates a new instance of BasisTheory class
const { bt } = useBasisTheory("<API_KEY>", { elements: true });

return (
<BasisTheoryProvider bt={bt}>
<MyComponent />
</BasisTheoryProvider>
);
};

const MyComponent = () => {
return <TextElement id="myInput" placeholder="John Doe" />; // Element will grab instance from the Context
};

Properties

PropertyRequiredTypeUpdatableDescription
aria-labelfalsestringtrueString used to customize the aria-label attribute of the input
autoCompletefalsestringtrueString used to set the autocomplete attribute of the input(s).
btfalseReact Elements SDKfalseInstance used by the Element. Will use instance from BasisTheoryProvider if configured.
disabledfalsebooleantrueBoolean used to set the disabled attribute of the input(s)
idtruestringfalseString identifier used to retrieve the Element instance for tokenization. This is passed through to the targetId option.
inputModefalsestringtrueString used to set the inputmode attribute of the input(s)
maskfalsearrayfalseArray used to restrict and fill user input using regex and static strings
maxLengthfalsenumberfalseDefines the maximum string length that the user can enter into the TextElement. Learn more
onBlurfalsefunctiontrueEvent listener. See On Blur
onChangefalsefunctiontrueEvent listener. See On Change
onFocusfalsefunctiontrueEvent listener. See On Focus
onKeyDownfalsefunctiontrueEvent listener. See On Keydown
onReadyfalsefunctiontrueEvent listener. See On Ready
passwordfalsebooleantrueBoolean used to set the text element input type as password
placeholderfalsestringtrueString used to customize the placeholder attribute of the input
readOnlyfalsebooleantrueBoolean used to set the readonly attribute of the input(s)
reffalseobject/functionfalseRef object/Callback ref function to store/receive the Element instance.
stylefalseobjecttrueObject used to customize the element appearance
transformfalseRegExptrueRegExp object or array used to modify user input before tokenization
validateOnChangefalsebooleanfalseEnable validation onChange
validationfalseRegExptrue[RegExp object] used to validate user input. Runs validation on blur by default
valuefalsestringtrueSets a static value for the element input.
valueReffalseTextElement referencefalseSets the element's value to the value of the provided element.
When using valueRef to keep an element in sync with another element, or to set the text of an element, it is strongly recommended that you make the element that is being acted upon readOnly. This is possible by setting readOnly to true.

CardNumberElement

The CardNumberElement component features a card number input, by wrapping the Card Number Element type functionality and taking care of the React lifecycle.

Live Card Number Element
import {
BasisTheoryProvider,
CardNumberElement,
useBasisTheory,
} from "@basis-theory/basis-theory-react";

const App = () => {
// creates a new instance of BasisTheory class
const { bt } = useBasisTheory("<API_KEY>", { elements: true });

return (
<BasisTheoryProvider bt={bt}>
<MyComponent />
</BasisTheoryProvider>
);
};

const MyComponent = () => {
return <CardNumberElement id="cardNumber" />; // Element will grab instance from the Context
};

Properties

PropertyRequiredTypeUpdatableDescription
aria-labelfalsestringtrueString used to customize the aria-label attribute of the input
autoCompletefalsestringtrueString used to set the autocomplete attribute of the input(s).
btfalseReact Elements SDKfalseInstance used by the Element. Will use instance from BasisTheoryProvider if configured.
copyIconStylesfalseobjectfalseObject used to customize the copy icon size, color and successColor
disabledfalsebooleantrueBoolean used to set the disabled attribute of the input(s)
enableCopyfalsebooleanfalseRenders a button to allow users to copy the value of the element to the browser's clipboard without your application ever interacting with the data.
iconPositionfalsestringtrueString used to determine the position of the card brand icon. Expected values are: left (default), right or none.
idtruestringfalseString identifier used to retrieve the Element instance for tokenization. This is passed through to the targetId option.
inputModefalsestringtrueString used to set the inputmode attribute of the input(s)
onBlurfalsefunctiontrueEvent listener. See On Blur
onChangefalsefunctiontrueEvent listener. See On Change
onFocusfalsefunctiontrueEvent listener. See On Focus
onKeyDownfalsefunctiontrueEvent listener. See On Keydown
onReadyfalsefunctiontrueEvent listener. See On Ready
placeholderfalsestringtrueString used to customize the placeholder attribute of the input
readOnlyfalsebooleantrueBoolean used to set the readonly attribute of the input(s)
reffalseobject/functionfalseRef object/Callback ref function to store/receive the Element instance.
stylefalseobjecttrueObject used to customize the element appearance
validateOnChangefalsebooleanfalseEnable validation onChange
valuefalsestringtrueSets a static value for the element input.
valueReffalseCardNumberElement referencefalseSets the element's value to the value of the provided element.
enableCopy is available for Chromium-based browsers only; we're actively working on multi-browser support. Have feedback or questions? Feel free to join us in our Slack community.
When using valueRef to keep an element in sync with another element, or to set the text of an element, it is strongly recommended that you make the element that is being acted upon readOnly. This is possible by setting readOnly to true.

CardExpirationDateElement

The CardExpirationDateElement component features a card expiration date input, by wrapping the Card Expiration Date Element type functionality and taking care of the React lifecycle. The date must not be expired or greater than 19 years in the future

Live Card Expiration Date Element
import {
BasisTheoryProvider,
CardExpirationDateElement,
useBasisTheory,
} from "@basis-theory/basis-theory-react";

const App = () => {
// creates a new instance of BasisTheory class
const { bt } = useBasisTheory("<API_KEY>", { elements: true });

return (
<BasisTheoryProvider bt={bt}>
<MyComponent />
</BasisTheoryProvider>
);
};

const MyComponent = () => {
return <CardExpirationDateElement id="cardExpirationDate" />; // Element will grab instance from the Context
};

Properties

PropertyRequiredTypeUpdatableDescription
aria-labelfalsestringtrueString used to customize the aria-label attribute of the input
autoCompletefalsestringtrueString used to set the autocomplete attribute of the input(s).
copyIconStylesfalseobjectfalseObject used to customize the copy icon size, color and successColor
btfalseReact Elements SDKfalseInstance used by the Element. Will use instance from BasisTheoryProvider if configured.
disabledfalsebooleantrueBoolean used to set the disabled attribute of the input(s)
enableCopyfalsebooleanfalseRenders a button to allow users to copy the value of the element to the browser's clipboard without your application ever interacting with the data.
idtruestringfalseString identifier used to retrieve the Element instance for tokenization. This is passed through to the targetId option.
inputModefalsestringtrueString used to set the inputmode attribute of the input(s)
onBlurfalsefunctiontrueEvent listener. See On Blur
onChangefalsefunctiontrueEvent listener. See On Change
onFocusfalsefunctiontrueEvent listener. See On Focus
onKeyDownfalsefunctiontrueEvent listener. See On Keydown
onReadyfalsefunctiontrueEvent listener. See On Ready
placeholderfalsestringtrueString used to customize the placeholder attribute of the input
readOnlyfalsebooleantrueBoolean used to set the readonly attribute of the input(s)
reffalseobject/functionfalseRef object/Callback ref function to store/receive the Element instance.
stylefalseobjecttrueObject used to customize the element appearance
validateOnChangefalsebooleanfalseEnable validation onChange
valuefalsestringtrueSets a static value for the element input.
valueReffalseCardExpirationDateElement referencefalseSets the element's value to the value of the provided element.
enableCopy is available for Chromium-based browsers only; we're actively working on multi-browser support. Have feedback or questions? Feel free to join us in our Slack community.
When using valueRef to keep an element in sync with another element, or to set the text of an element, it is strongly recommended that you make the element that is being acted upon readOnly. This is possible by setting readOnly to true.

CardVerificationCodeElement

The CardVerificationCodeElement component features a card security code input, by wrapping the Card Verification Code Element type functionality and taking care of the React lifecycle.

Live Card Verification Code Element
import {
BasisTheoryProvider,
CardVerificationCodeElement,
useBasisTheory,
} from "@basis-theory/basis-theory-react";

const App = () => {
// creates a new instance of BasisTheory class
const { bt } = useBasisTheory("<API_KEY>", { elements: true });

return (
<BasisTheoryProvider bt={bt}>
<MyComponent />
</BasisTheoryProvider>
);
};

const MyComponent = () => {
return <CardVerificationCodeElement id="cardVerificationCode" />; // Element will grab instance from the Context
};

Properties

PropertyRequiredTypeUpdatableDescription
aria-labelfalsestringtrueString used to customize the aria-label attribute of the input
autoCompletefalsestringtrueString used to set the autocomplete attribute of the input(s).
btfalseReact Elements SDKfalseInstance used by the Element. Will use instance from BasisTheoryProvider if configured.
cardBrandfalsestringtrueString used to determine proper input format and default placeholder/aria-label
copyIconStylesfalseobjectfalseObject used to customize the copy icon size, color and successColor
disabledfalsebooleantrueBoolean used to set the disabled attribute of the input(s)
enableCopyfalsebooleanfalseRenders a button to allow users to copy the value of the element to the browser's clipboard without your application ever interacting with the data.
idtruestringfalseString identifier used to retrieve the Element instance for tokenization. This is passed through to the targetId option.
inputModefalsestringtrueString used to set the inputmode attribute of the input(s)
onBlurfalsefunctiontrueEvent listener. See On Blur
onChangefalsefunctiontrueEvent listener. See On Change
onFocusfalsefunctiontrueEvent listener. See On Focus
onKeyDownfalsefunctiontrueEvent listener. See On Keydown
onReadyfalsefunctiontrueEvent listener. See On Ready
placeholderfalsestringtrueString used to customize the placeholder attribute of the input
readOnlyfalsebooleantrueBoolean used to set the readonly attribute of the input(s)
reffalseobject/functionfalseRef object/Callback ref function to store/receive the Element instance.
stylefalseobjecttrueObject used to customize the element appearance
validateOnChangefalsebooleanfalseEnable validation onChange
valuefalsestringtrueSets a static value for the element input.
valueReffalseCardVerificationCodeElement referencefalseSets the element's value to the value of the provided element.
enableCopy is available for Chromium-based browsers only; we're actively working on multi-browser support. Have feedback or questions? Feel free to join us in our Slack community.
When using valueRef to keep an element in sync with another element, or to set the text of an element, it is strongly recommended that you make the element that is being acted upon readOnly. This is possible by setting readOnly to true.

Error Handling

Any errors occurring during the element mounting phase are thrown intentionally during the render cycle. Consider using React's error boundaries to handle these errors gracefully. When using React class components, you can also implement the methods getDerivedStateFromError and componentDidCatch to handle component errors appropriately.