JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 17714
  • Score
    100M100P100Q159094F
  • License MIT

React components library with 6 styles, 80 icons, TypeScript support, and a variety of types and formats for easy integration into React applications.

Package Exports

  • react-svg-credit-card-payment-icons
  • react-svg-credit-card-payment-icons/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-svg-credit-card-payment-icons) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

React SVG Card Payment Icons

npm TypeScript ​npm​ PRs Welcome GitHub stars
"Buy Me A Coffee"

SVG Credit Card & Payment Icons: 6 Styles, 80 Icons for React ⚛️

A collection of SVG based credit card logo icons. React componnent with Typescript support.

Live Demo

💿 Installation

  1. Install this package:
npm install react-svg-credit-card-payment-icons
# or
yarn add react-svg-credit-card-payment-icons

📦 Usage

import { PaymentIcon } from 'react-svg-credit-card-payment-icons';

....

const App = () => {
  return (
    <PaymentIcon type="visa" format="flatRounded" width={100} />
  );
};

🔧 Card Utilities

As of version 4, the package includes powerful card detection and validation utilities:

import { 
  detectCardType, 
  validateCardNumber, 
  formatCardNumber,
  maskCardNumber,
  isCardNumberPotentiallyValid 
} from 'react-svg-credit-card-payment-icons';

// Detect card type from number
const cardType = detectCardType('4242424242424242'); // Returns 'Visa'

// Validate card number using Luhn algorithm
const isValid = validateCardNumber('4242424242424242'); // Returns true

// Format card number with appropriate spacing
const formatted = formatCardNumber('4242424242424242'); // Returns '4242 4242 4242 4242'

// Mask card number (shows only last 4 digits)
const masked = maskCardNumber('4242424242424242'); // Returns '**** **** **** 4242'

// Check if card number is potentially valid (correct length, etc.)
const isPotentiallyValid = isCardNumberPotentiallyValid('4242424242424242'); // Returns true

Available Utility Functions:

Function Description Example
detectCardType(cardNumber) Detects card type from number detectCardType('4242...') // 'Visa'
validateCardNumber(cardNumber) Validates using Luhn algorithm validateCardNumber('4242...') // true
formatCardNumber(cardNumber) Formats with appropriate spacing formatCardNumber('4242...') // '4242 4242 4242 4242'
maskCardNumber(cardNumber) Masks all but last 4 digits maskCardNumber('4242...') // '**** **** **** 4242'
isCardNumberPotentiallyValid(cardNumber) Checks if potentially valid isCardNumberPotentiallyValid('4242') // false
validateCardForType(cardNumber, type) Validates for specific card type validateCardForType('4242...', 'Visa') // true
getCardLengthRange(cardType) Gets min/max length for card type getCardLengthRange('Visa') // {min: 13, max: 19}
sanitizeCardNumber(cardNumber) Removes non-digit characters sanitizeCardNumber('4242-4242') // '42424242'

Complete Example with Card Input:

import React, { useState } from 'react';
import { 
  PaymentIcon, 
  detectCardType, 
  validateCardNumber, 
  formatCardNumber 
} from 'react-svg-credit-card-payment-icons';

function CardInput() {
  const [cardNumber, setCardNumber] = useState('');
  const cardType = detectCardType(cardNumber);
  const isValid = validateCardNumber(cardNumber);

  return (
    <div>
      <input
        type="text"
        value={cardNumber}
        onChange={(e) => setCardNumber(e.target.value)}
        placeholder="Enter card number"
      />
      <PaymentIcon type={cardType} width={40} />
      <div>Type: {cardType}</div>
      <div>Valid: {isValid ? 'Yes' : 'No'}</div>
      <div>Formatted: {formatCardNumber(cardNumber)}</div>
    </div>
  );
}

Types and Formats

Available types and their images:

If the type does not exist, the default setting is generic.

Type Image
alipay
amex
diners
discover
elo
hiper
hipercard
jcb
maestro
mastercard
mir
paypal
unionpay
visa
generic
code
codefront

Images from aaronfagan/svg-credit-card-payment-icons

Available formats:

If the format is not specified, the default setting is flat.

Format Image
flat
flatRounded
logo
logoBorder
mono
monoOutline
  • Specify either width or height; there's no requirement to define both. The aspect ratio is preset at 780:500 for SVGs. If neither width nor height is defined, width will default to 40.

  • The component also allows all the properties (props) of the Svg component, including attributes like style.

  • If an invalid type is provided, the default setting is generic.