Ir al contenido

QRCode

Genera códigos QR con apariencia personalizable, iconos y estados de estado. Los colores se adaptan automáticamente a temas claros/oscuros.

Este componente requiere qrcode como dependencia de pares:

Ventana de terminal
npm install qrcode
import { QRCode } from 'asterui/qrcode'

Código QR básico

Código QR simple con configuración predeterminada.

import { QRCode } from 'asterui'

function App() {
  return (
      <QRCode value="https://asterui.com" />
    )
}

export default App

Tamaño personalizado

Diferentes tamaños de código QR.

import { QRCode } from 'asterui'

function App() {
  return (
      <div className="flex gap-4 items-center flex-wrap">
        <QRCode value="https://asterui.com" size={80} />
        <QRCode value="https://asterui.com" size={120} />
        <QRCode value="https://asterui.com" size={160} />
        <QRCode value="https://asterui.com" size={200} />
      </div>
    )
}

export default App

Colores personalizados

Personaliza el color del primer plano. El fondo se adapta al tema por defecto.

import { QRCode } from 'asterui'

function App() {
  return (
      <div className="flex gap-4 flex-wrap">
        <QRCode value="https://asterui.com" color="#3b82f6" />
        <QRCode value="https://asterui.com" color="#22c55e" />
        <QRCode value="https://asterui.com" color="#a855f7" />
      </div>
    )
}

export default App

Con icono

Código QR con logo/icono centrado.

import { QRCode } from 'asterui'

function App() {
  return (
      <QRCode
        value="https://asterui.com"
        icon="/logo.png"
        iconSize={34}
        errorLevel="H"
      />
    )
}

export default App

Nivel de corrección de error

Diferentes niveles de corrección de error afectan la densidad del código QR.

import { QRCode } from 'asterui'

function App() {
  return (
      <div className="flex gap-4 flex-wrap">
        <div className="text-center">
          <QRCode value="https://asterui.com/data" errorLevel="L" />
          <div className="text-sm mt-2">Level L (7%)</div>
        </div>
        <div className="text-center">
          <QRCode value="https://asterui.com/data" errorLevel="M" />
          <div className="text-sm mt-2">Level M (15%)</div>
        </div>
        <div className="text-center">
          <QRCode value="https://asterui.com/data" errorLevel="H" />
          <div className="text-sm mt-2">Level H (30%)</div>
        </div>
      </div>
    )
}

export default App

Sin borde

Elimina el borde para integración perfecta.

import { QRCode } from 'asterui'

function App() {
  return (
      <div className="flex gap-4 flex-wrap">
        <QRCode value="https://asterui.com" bordered />
        <QRCode value="https://asterui.com" bordered={false} />
      </div>
    )
}

export default App

Estado de carga

Muestra estado de carga mientras se genera o se obtienen datos del código QR.

import { QRCode } from 'asterui'

function App() {
  return (
      <QRCode value="https://asterui.com" status="loading" />
    )
}

export default App

Estado expirado

Muestra estado expirado con funcionalidad de actualización opcional.

import { QRCode } from 'asterui'
import { useState } from 'react'

function App() {
  const [status, setStatus] = useState<'active' | 'loading' | 'expired'>('expired');
  
  const handleRefresh = () => {
    setStatus('loading');
    setTimeout(() => setStatus('active'), 2000);
  };
  
  return (
      <QRCode
        value="https://asterui.com"
        status={status}
        onRefresh={handleRefresh}
      />
    )
}

export default App

Código QR dinámico

Actualiza el valor del código QR dinámicamente.

import { QRCode } from 'asterui'
import { useState } from 'react'

function App() {
  const [text, setText] = useState('https://asterui.com');
  
  return (
      <div className="flex flex-col gap-4 items-center">
        <QRCode value={text} />
        <input
          type="text"
          value={text}
          onChange={(e) => setText(e.target.value)}
          placeholder="Enter text or URL"
          className="input input-bordered w-full max-w-md"
        />
      </div>
    )
}

export default App
PropiedadDescripciónTipoPredeterminado
valueEl valor a codificar en el código QRstring-
sizeTamaño del canvas del código QR en píxelesnumber160
errorLevelNivel de corrección de error'L' | 'M' | 'Q' | 'H''M'
iconURL del icono/logo a mostrar en el centrostring-
iconSizeTamaño del icono central en píxelesnumber40
typeTipo de renderizado'canvas' | 'svg''canvas'
colorColor del primer plano (color del código QR)stringAdaptable al tema
bgColorColor de fondostringAdaptable al tema
borderedMostrar borde alrededor del código QRbooleantrue
statusEstado del código QR'active' | 'loading' | 'expired''active'
onRefreshCallback cuando se hace clic en el botón de actualizar (estado expirado)() => void-
classNameClases CSS adicionalesstring-
data-testidID de prueba para pruebasstring-
  • Los códigos QR incluyen role="img" con etiqueta descriptiva
  • Los estados de carga y expirado se anuncian a lectores de pantalla
  • El botón de actualizar es accesible por teclado