Перейти к содержимому
EN
Масштаб
Плотность
Тема
Акцент

Агентный слой

Дорожки прогонов

Несколько агентов, работающих параллельно, на общей оси времени. Отвечает на вопрос, на который не отвечает ни очередь, ни лог: что шло одновременно и что кого ждало.

Компонент
worldgen-01
biomes-04
Разметка
<div class="inst-lanes">
  <div class="inst-lane">
    <span class="inst-lane-label">worldgen-01</span>
    <span class="inst-lane-track">
      <span class="inst-lane-span" data-tone="ok" style="inset-inline-start:0%;inline-size:34%"></span>
    </span>
  </div>
  <div class="inst-lane">
    <span class="inst-lane-label">biomes-04</span>
    <span class="inst-lane-track">
      <span class="inst-lane-span" data-tone="running" style="inset-inline-start:30%;inline-size:52%"></span>
    </span>
  </div>
</div>

Контракт

Что Обязательно Почему
inset-inline-start и inline-size инлайном да Границы отрезка — данные, а не оформление: начало и длительность приходят с сервера
Логические свойства, а не left и width да В RTL ось времени зеркалится сама
Подпись или title у отрезка да Прямоугольник без имени и времени не сообщает ничего
data-tone нет Без атрибута отрезок нейтрален

Доступность

Отрезок — не текст Сам по себе он не озвучивается ничем. Дорожка обязана нести aria-label с длительностью: «worldgen-01, с 0 до 34 процентов, 12 секунд»
Подпись обрезается Полное имя — в title, иначе исполнитель безымянен
Не только цвет Тон отрезка дублируется в доступном имени словом
Режим принудительных цветов Отрезок несёт значение, поэтому переживает сброс: forced-color-adjust: none и Highlight
Альтернатива На узком экране дорожки нечитаемы. Резервный вид — таблица с началом, концом и длительностью
Уменьшенное движение Отрезок running не анимируется — длительность и так меняется скачками данных

Устройство

inset-inline-start и inline-size задаются инлайном, и это единственный разрешённый случай инлайнового стиля в библиотеке: положение отрезка на оси — значение, а не оформление. Тем же каналом идут ширина заполнения меры и глубина узла дерева.

<span class="inst-lane-span" style="inset-inline-start:30%;inline-size:52%"></span>

Проценты считаются от общей длительности прогона, поэтому все дорожки делят одну шкалу — иначе сравнивать их бессмысленно.

API

Классы
ИмяЧто делает
класс
inst-lanesНабор дорожек
inst-laneОдна дорожка: подпись и ось
inst-lane-labelИмя исполнителя, обрезается
inst-lane-trackОсь времени
inst-lane-spanОтрезок работы
Атрибуты
ИмяЗначениеЧто делает
атрибут
data-tone—neutral running ok warn error
Токены
ИмяЗначениеОткуда
токен
--label-col104pxбаза +4: масштаб
--gap-inlinevar(--space-4)база +14: плотность · масштаб
--size-meter6pxбаза +4: масштаб
--radius-markvar(--radius-2xs)одно на все ячейки
--tracklight-dark(oklch(0 0 0 / 0.10), oklch(1 0 0 / 0.16))одно на все ячейки
--borderlight-dark(oklch(0 0 0 / 0.12), oklch(1 0 0 / 0.11))одно на все ячейки
--hairline1pxбаза +1: экран
--text-xs0.78125remбаза +4: масштаб
--tone-markvar(--text-secondary)база +4:

Почему кит устроен именно так — конституция · Открытый код под MIT, github.com/keshon/instrument