BjAvatar

Composant React pour l’avatar DSBJ : image, initiales, icône Remix ou enfants ; tailles, carré et pastille de statut.

Utilisation

import { BjAvatar } from '@flrxnt/dsbj/react'

export default function App() {
  return (
    <>
      <BjAvatar src="https://i.pravatar.cc/100?img=3" alt="Photo de profil" />
      <BjAvatar initials="AK" />
      <BjAvatar icon="ri-user-line" />
      <BjAvatar status="online" src="https://i.pravatar.cc/100?img=8" alt="" />
    </>
  )
}

Aperçu

Photo de profilAKAKAKPhoto de profil

Tailles

sm, md (défaut), lg et xl.

SMMDLGXL
import { BjAvatar } from '@flrxnt/dsbj/react'

export default function App() {
  return (
    <>
      <BjAvatar size="sm" initials="SM" />
      <BjAvatar size="md" initials="MD" />
      <BjAvatar size="lg" initials="LG" />
      <BjAvatar size="xl" initials="XL" />
    </>
  )
}

Contenu

src (image), initials, icon (classe Remix) ou enfants si rien d’autre.

Photo de profilAK?
import { BjAvatar } from '@flrxnt/dsbj/react'

export default function App() {
  return (
    <>
      <BjAvatar src="https://i.pravatar.cc/100?img=3" alt="Profile" />
      <BjAvatar initials="AB" />
      <BjAvatar icon="ri-user-line" />
      <BjAvatar>
        <span style={{ fontSize: '0.75rem' }}>?</span>
      </BjAvatar>
    </>
  )
}

Carré

square sur les quatre tailles.

SMMDLGXL
import { BjAvatar } from '@flrxnt/dsbj/react'

const sizes = ['sm', 'md', 'lg', 'xl'] as const

export default function App() {
  return (
    <>
      {sizes.map((size) => (
        <BjAvatar key={size} size={size} square initials={size.toUpperCase()} />
      ))}
    </>
  )
}

Statut

Quatre valeurs de statut sur une même base.

En ligne
Absent
Occupé
Hors ligne
import { BjAvatar } from '@flrxnt/dsbj/react'

const statuses = ['online', 'away', 'busy', 'offline'] as const

export default function App() {
  return (
    <>
      {statuses.map((status) => (
        <BjAvatar
          key={status}
          status={status}
          src="https://i.pravatar.cc/100?img=8"
          alt=""
        />
      ))}
    </>
  )
}

Combinaisons

Carré avec chaque statut, puis combinaisons taille + statut (ex. xl carré en ligne, initiales par taille).

Carré × statut

Taille × statut

SMLX
import { BjAvatar } from '@flrxnt/dsbj/react'

export default function App() {
  return (
    <>
      <BjAvatar size="xl" square status="online" src="https://i.pravatar.cc/100?img=12" alt="" />
      <BjAvatar size="sm" status="online" initials="S" />
      <BjAvatar size="md" status="away" initials="M" />
      <BjAvatar size="lg" status="busy" initials="L" />
      <BjAvatar size="xl" status="offline" initials="X" />
    </>
  )
}

Callbacks

Les attributs du span racine (ex. onClick) peuvent compléter le comportement.

import { BjAvatar } from '@flrxnt/dsbj/react'

export default function App() {
  return (
    <BjAvatar
      initials="JD"
      role="button"
      tabIndex={0}
      onClick={() => {
        console.log('avatar click')
      }}
    />
  )
}

Props

PropDescription
sizeTaille : sm, md (défaut), lg ou xl.
squareVariante carrée (bj-avatar--square).
srcURL de l’image ; si défini, affiche bj-avatar__img.
altTexte alternatif de l’image ; chaîne vide par défaut.
initialsInitiales si pas d’image ni d’icône (bj-avatar__initials).
iconClasse d’icône Remix, par ex. ri-user-line, si pas d’image ni d’initiales.
statusPastille de statut : online, away, busy ou offline.