Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

react-native-qrcode-styled

Package Overview
Dependencies
Maintainers
0
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-native-qrcode-styled

A fully customizable QR Code generator for React Native based on react-native-svg and javascript-qrcode.

  • 0.3.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
7.5K
increased by25.06%
Maintainers
0
Weekly downloads
 
Created
Source
React Native QR Code Styled

npm npm github Supports Android and iOS expo-compatible

react-native-qrcode-styled

Fully customizable QR Codes generator for React Native using react-native-svg

Shadows Demo

Installation

npm i react-native-svg react-native-qrcode-styled

or with yarn

yarn add react-native-svg react-native-qrcode-styled

If you use typescript, run:

yarn add -D @types/qrcode

Usage

Simple usage is:

import QRCodeStyled from 'react-native-qrcode-styled';

<QRCodeStyled
  data={'Simple QR Code'}
  style={{backgroundColor: 'white'}}
  padding={20}
  pieceSize={8}
/>

For more examples check out the Example app

Props

NameDefaultTypeDescription
data"I'm QR Code!"stringMessage for encoding. Can also be an array. More info HERE.
pieceSize5numberSize of each piece of the QR code
pieceScaleundefinedSvgProps['scale']Scale of each piece of the QR code
pieceRotationundefinedSvgProps['rotation']Angle of rotation of each piece of the QR code (in degrees)
pieceCornerType'rounded''rounded' | 'cut'Type of piece corner
pieceBorderRadius0number | number[]Border radius of all corners of each piece. Can also be an array to define different border radius for each corner (start from top-left corner)
pieceStrokeundefinedColorValueBorder color of each piece
pieceStrokeWidthundefinednumberBorder with of each piece
pieceLiquidRadiusundefinednumberLevel of liquid effect between pieces. If you have pieceBorderRadius set isPiecesGlued to true
isPiecesGluedfalsebooleanIf true between pieces will be glue effect. You will see this if you have pieceBorderRadius > 0
outerEyesOptionsundefinedEyeOptions | AllEyesOptionsConfigurations for outer eyes of QR code. If they defined, previous piece configurations won't be work
innerEyesOptionsundefinedEyeOptions | AllEyesOptionsThe same as outerEyesOptions prop but for inner eyes
color'black'ColorValueColor of QR code
gradientundefinedGradientPropsGradient of QR code. Can be two types: 'linear' | 'radial'. By default 'linear'
paddingundefinednumberPadding inside <Svg/> component from QR code
logoundefinedLogoOptionsConfigurations for logo. Support svg's <Image/> props
backgroundImageundefinedsvg's <Image/> props typeBackground image for QR code
versionundefinednumberDescription
maskPatternundefinednumberDescription
toSJISFuncundefinedfunctionDescription
errorCorrectionLevel'M''L' | 'M' | 'Q' | 'H'Description
renderCustomPieceItemundefinedRenderCustomPieceItemRender custom piece of QR code. It must return svg component. If it defined, previous piece and eyes configurations won't be work
renderBackgroundundefined(pieceSize: number, bitMatrix: number[][]) => SvgProps['children']Ability to add any additional svg components behind qr code
childrenundefined(pieceSize: number, bitMatrix: number[][]) => SvgProps['children']Ability to add any additional svg components as children
...rest <Svg/> props

Types

GradientProps

type GradientType = 'linear' | 'radial';

type LinearGradientProps = {
  colors?: ColorValue[];
  start?: [number, number]; // start point [x, y] (0 -> 0%, 1 -> 100%)
  end?: [number, number]; // end point [x, y] (0 -> 0%, 1 -> 100%)
  locations?: number[]; // list of colors positions (0 -> 0%, 1 -> 100%)
};

type RadialGradientProps = {
  colors?: ColorValue[];
  center?: [number, number]; // center point [x, y] (0 -> 0%, 1 -> 100%)
  radius?: [number, number]; // radiusXY [x, y] (0 -> 0%, 1 -> 100%)
  locations?: number[]; // list of colors positions (0 -> 0%, 1 -> 100%)
};

type GradientProps = {
  type?: GradientType;
  options?: LinearGradientProps | RadialGradientProps;
};

EyeOptions

type EyeOptions = {
  scale?: PathProps['scale']; // scaleXY | [scaleX, scaleY]
  rotation?: string | number;
  borderRadius?: number | number[];
  color?: ColorValue;
  gradient?: GradientProps;
  stroke?: ColorValue;
  strokeWidth?: number;
}

AllEyesOptions

type EyePosition = 'topLeft' | 'topRight' | 'bottomLeft';

type AllEyesOptions = { [K in EyePosition]?: EyeOptions }

RenderCustomPieceItem

type RenderCustomPieceItem = ({x, y, pieceSize, qrSize, bitMatrix}: {
  x: number;
  y: number;
  pieceSize: number;
  qrSize: number;
  bitMatrix: number[][];
}) => React.ReactElement | null;

LogoOptions

export type LogoArea = {
  x: number;
  y: number;
  width: number;
  height: number;
};

export type LogoOptions = {
  hidePieces?: boolean;
  padding?: number;
  scale?: number;
  onChange?: (logoArea?: LogoArea) => void;
} & SVGImageProps;

Troubleshooting

Gaps between pieces (only on Android)

Gaps between pieces (only on Android)

If you'll see that gaps between pieces on Android, just scale pieces up a little bit:

<QRCodeStyled
  ...
  pieceScale={1.02} // or any between of 1.01 - 1.04
/>

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT


Made with create-react-native-library

Keywords

FAQs

Package last updated on 27 Jun 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc