import { styled } from '@styled-components' import { Box, BoxProps } from '../../atoms/box/index.js' import { cssClass } from '../../utils/css-class.js' /** * @classdesc * * * * It provides wizard workflow where user can go through a couple of steps. * Stepper makes sense when you use it along with {@link Step} component. * * It receives all the same props as {@link Box} - {@link BoxProps}. * * ### Usage * * ```javascript * import { Stepper, StepperProps } from '@adminjs/design-system' * ``` * * @component * @subcategory Molecules * @hideconstructor * @see {@link https://storybook.adminjs.co/?path=/story/designsystem-molecules-stepper--clickable-steps Storybook} * @example Clickable steps * const { useState } = React * const steps = [{ * number: 1, label: "Do this first", * }, { * number: 2, label: "Don't forget this", * }, { * number: 3, label: "And finally this", * }] * const ComponentWithStepper = () => { * const [currentStep, setCurrentStep] = useState(1) * return ( * * * {steps.map(step => ( * step.number} * onClick={setCurrentStep} * number={step.number} * > * {step.label} * * ))} * * * ) * } * * return () * * @example Steps with bottom navigation * const { useState } = React * const steps = [{ * number: 1, label: "Do this first", * }, { * number: 2, label: "Don't forget this", * }, { * number: 3, label: "And finally this", * }] * const ComponentWithStepper = () => { * const [currentStep, setCurrentStep] = useState(1) * return ( * * * {steps.map(step => ( * step.number} * number={step.number} * > * {step.label} * * ))} * * * * * * * ) * } * * return () * * @section design-system */ const Stepper = styled(Box)` ` Stepper.defaultProps = { flex: true, flexDirection: ['column', 'row'], borderBottom: '1px solid', borderBottomColor: 'separator', className: cssClass('Stepper'), } Stepper.displayName = 'Stepper' export { Stepper } export default Stepper