Шаги

current — индекс текущего шага. Всё, что до него, завершено и получает галочку; всё, что после, ещё впереди. Текущий помечается aria-current="step", поэтому он не только окрашен, но и объявляется.

Простые шаги

  1. Установить

  2. Написать страницу

  3. Собрать

  4. Развернуть

steps({
  current: 1,
  items: [
    { title: 'Установить' },
    { title: 'Написать страницу' },
    { title: 'Собрать' },
    { title: 'Развернуть' },
  ],
})

С описаниями

  1. Установить

    npm install -D sitelo

  2. Написать страницу

    src/index.ht.js

  3. Собрать

    sitelo build

  4. Развернуть

    Опубликовать dist/

steps({
  current: 2,
  items: [
    { title: 'Установить', description: 'npm install -D sitelo' },
    { title: 'Написать страницу', description: 'src/index.ht.js' },
    { title: 'Собрать', description: 'sitelo build' },
    { title: 'Развернуть', description: 'Опубликовать dist/' },
  ],
})

Вертикально

Лучше, когда описания длиннее пары слов.

  1. Добавьте пакет

    sitelo приносит собственный Vite, так что ставить больше нечего.

  2. Напишите функцию, возвращающую HTML

    Один файл в src/ — это уже целый сайт.

  3. Опубликуйте результат

    dist/ — это обычные статические файлы, их примет любой хостинг.

steps({
  direction: 'vertical',
  current: 1,
  items: [
    { title: 'Добавьте пакет', description: 'sitelo приносит собственный Vite, так что ставить больше нечего.' },
    { title: 'Напишите функцию, возвращающую HTML', description: 'Один файл в src/ — это уже целый сайт.' },
    { title: 'Опубликуйте результат', description: 'dist/ — это обычные статические файлы, их примет любой хостинг.' },
  ],
})

Пока ничего не сделано

  1. Установить

  2. Настроить

  3. Развернуть

steps({ current: 0, items: ['Установить', 'Настроить', 'Развернуть'] })

Всё сделано

Поставьте current за последний индекс — и все шаги читаются как завершённые.

  1. Установить

  2. Настроить

  3. Развернуть

steps({ current: 3, items: ['Установить', 'Настроить', 'Развернуть'] })

На телефоне

Горизонтальному ряду на узком экране деваться некуда, поэтому ниже 40rem он сам становится вертикальным — никаких пропсов не нужно. Сузьте это окно, чтобы увидеть.

Подпись для списка

Список — это <ol>, порядок в нём уже заложен. Добавляйте label, когда на странице больше одного набора шагов и их нужно различать.

  1. Сборка

  2. Загрузка

  3. Сброс кэша

steps({
  label: 'Ход развёртывания',
  current: 1,
  items: ['Сборка', 'Загрузка', 'Сброс кэша'],
})

Продвигать поток

Состояние — это три имени класса и один aria-current, разбросанные по всем шагам. setStep() двигает их вместе, так что мастер, который идёт вперёд в браузере, — это один вызов, а не цикл.

Индекс за последним шагом оставляет завершёнными все — так и выглядит законченный поток. Или прямо из атрибута события, без единого байта в бандле:

button({ onclick: "import('/su/steps.js').then(m=>m.set('checkout',2))" }, 'Next')

Или из вашего собственного модуля, если он и так уже работает:

import { setStep } from 'sitelo/ui/client'

setStep('checkout', 2)

Пропсы

ПропТипПо умолчаниюОписание
itemsArray[]Строки или объекты { title, description }.
currentnumber0Индекс текущего шага.
direction'horizontal' | 'vertical''horizontal'Раскладка. Горизонтальная ниже 40rem становится вертикальной.
labelstring—Доступное имя списка.