Aller au contenu

Étapes

Indicateur de progression visuel montrant des étapes séquentielles.

import { Steps } from 'asterui'

Étapes de base

Progression horizontale des étapes.

  • Register
  • Choose plan
  • Purchase
  • Receive Product
import { Steps } from 'asterui'

function App() {
  return (
      <Steps>
        <Steps.Step color="primary">Register</Steps.Step>
        <Steps.Step color="primary">Choose plan</Steps.Step>
        <Steps.Step>Purchase</Steps.Step>
        <Steps.Step>Receive Product</Steps.Step>
      </Steps>
    )
}

export default App

Étapes verticales

Étapes en orientation verticale.

  • Register
  • Choose plan
  • Purchase
  • Receive Product
import { Steps } from 'asterui'

function App() {
  return (
      <Steps direction="vertical">
        <Steps.Step color="primary">Register</Steps.Step>
        <Steps.Step color="primary">Choose plan</Steps.Step>
        <Steps.Step>Purchase</Steps.Step>
        <Steps.Step>Receive Product</Steps.Step>
      </Steps>
    )
}

export default App

Différentes couleurs

Étapes avec diverses couleurs sémantiques.

  • Research
  • Design
  • Develop
  • Deploy
import { Steps } from 'asterui'

function App() {
  return (
      <Steps>
        <Steps.Step color="info">Research</Steps.Step>
        <Steps.Step color="info">Design</Steps.Step>
        <Steps.Step color="warning">Develop</Steps.Step>
        <Steps.Step color="success">Deploy</Steps.Step>
      </Steps>
    )
}

export default App

Contenu personnalisé

Indicateurs personnalisés utilisant dataContent.

  • Step 1
  • Step 2
  • Step 3
  • Step 4
import { Steps } from 'asterui'

function App() {
  return (
      <Steps>
        <Steps.Step color="primary" dataContent="?">Step 1</Steps.Step>
        <Steps.Step color="primary" dataContent="!">Step 2</Steps.Step>
        <Steps.Step dataContent="✓">Step 3</Steps.Step>
        <Steps.Step dataContent="✕">Step 4</Steps.Step>
      </Steps>
    )
}

export default App

Disposition responsive

Verticale sur mobile, horizontale sur ordinateur.

  • Register
  • Choose plan
  • Purchase
  • Receive Product
import { Steps } from 'asterui'

function App() {
  return (
      <Steps className="steps-vertical lg:steps-horizontal">
        <Steps.Step color="primary">Register</Steps.Step>
        <Steps.Step color="primary">Choose plan</Steps.Step>
        <Steps.Step>Purchase</Steps.Step>
        <Steps.Step>Receive Product</Steps.Step>
      </Steps>
    )
}

export default App

Étape actuelle contrôlée

Utiliser la propriété current pour contrôler la progression.

  • Register
  • Verify Email
  • Setup Profile
  • Complete
import { Steps, Button } from 'asterui'
import { useState } from 'react'

function App() {
  const [current, setCurrent] = useState(1);
  
  return (
      <div className="space-y-4">
        <Steps current={current}>
          <Steps.Step>Register</Steps.Step>
          <Steps.Step>Verify Email</Steps.Step>
          <Steps.Step>Setup Profile</Steps.Step>
          <Steps.Step>Complete</Steps.Step>
        </Steps>
        <div className="flex gap-2">
          <Button size="sm" onClick={() => setCurrent(Math.max(0, current - 1))} disabled={current === 0}>
            Previous
          </Button>
          <Button size="sm" color="primary" onClick={() => setCurrent(Math.min(3, current + 1))} disabled={current === 3}>
            Next
          </Button>
        </div>
      </div>
    )
}

export default App

Modèle piloté par les données

Utiliser la propriété items pour des étapes pilotées par les données avec navigation au clic.

  • Cart
  • Address
  • Payment
  • Confirm
import { Steps, notification } from 'asterui'
import { useState } from 'react'

function App() {
  const [current, setCurrent] = useState(1);
  
  const items = [
    { key: 'cart', title: 'Cart' },
    { key: 'address', title: 'Address' },
    { key: 'payment', title: 'Payment' },
    { key: 'confirm', title: 'Confirm' },
  ];
  
  return (
      <Steps
        items={items}
        current={current}
        onChange={(step) => {
          setCurrent(step);
          notification.info({ message: `Navigated to step ${step + 1}` });
        }}
      />
    )
}

export default App

Avec icônes

Étapes avec icônes personnalisées.

  • Order Placed
  • Processing
  • Payment
  • Delivery
import { Steps } from 'asterui'
import { CheckIcon, DocumentTextIcon, CreditCardIcon, TruckIcon } from '@aster-ui/icons'

function App() {
  return (
      <Steps>
        <Steps.Step color="primary" icon={<CheckIcon size="sm" />}>
          Order Placed
        </Steps.Step>
        <Steps.Step color="primary" icon={<DocumentTextIcon size="sm" />}>
          Processing
        </Steps.Step>
        <Steps.Step icon={<CreditCardIcon size="sm" />}>
          Payment
        </Steps.Step>
        <Steps.Step icon={<TruckIcon size="sm" />}>
          Delivery
        </Steps.Step>
      </Steps>
    )
}

export default App
PropriétéDescriptionTypeDéfaut
childrenÉléments d’étapes (modèle composé)React.ReactNode-
itemsÉléments d’étapes (modèle piloté par les données)StepItem[]-
currentIndex de l’étape actuelle (commence à 0)number-
directionDirection de la disposition'horizontal' | 'vertical''horizontal'
verticalDisposition verticale (obsolète, utiliser direction)booleanfalse
onChangeCallback lorsqu’une étape est cliquée(current: number) => void-
classNameClasses CSS supplémentairesstring-
data-testidID de test pour les testsstring-
PropriétéDescriptionTypeDéfaut
keyIdentifiant uniquestring-
titleTitre de l’étapeReact.ReactNode-
descriptionDescription de l’étapeReact.ReactNode-
iconIcône de l’étapeReact.ReactNode-
colorCouleur de l’étape'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'-
disabledSi l’étape est désactivéebooleanfalse
data-testidID de test pour les testsstring-
PropriétéDescriptionTypeDéfaut
childrenContenu de l’étapeReact.ReactNode-
titleTitre de l’étape (alternative à children)React.ReactNode-
descriptionDescription de l’étapeReact.ReactNode-
iconIcône de l’étapeReact.ReactNode-
colorCouleur de l’étape'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'-
dataContentContenu personnalisé pour l’indicateur d’étapestring-
disabledSi l’étape est désactivéebooleanfalse
classNameClasses CSS supplémentairesstring-
data-testidID de test pour les testsstring-

Conseils d’utilisation :

  • Utilisez la propriété current pour contrôler quelle étape est active
  • Les étapes avant current sont automatiquement marquées comme terminées
  • Utilisez onChange pour activer le clic sur les étapes pour la navigation
  • Utilisez des classes responsive pour des mises en page adaptées aux mobiles