К содержимому

Введение ​

Ваши идеи. Ваши инструменты. Ваш DSK.

Design System Kit – набор специализированных UI-компонентов для творческих приложений от Flowscape Team. Он даёт разработчикам элементы управления, с которыми удобно и точно работать в редакторе: менять число перетаскиванием, выбирать цвет, поворачивать объект, настраивать кривую или упорядочивать иерархию.

Начните с одного компонента или соберите целую панель свойств. DSK написан на TypeScript, HTML и CSS и поставляется в виде пользовательских HTML-элементов, которые работают средствами браузера. Их можно использовать в обычном веб-приложении и связать с собственным движком отрисовки.

Зачем мы создаём DSK ​

Творческим приложениям нужно больше, чем обычные поля формы. Ширину объекта должно быть удобно менять перетаскиванием. Поле цвета должно показывать редактируемый цвет. Линейка должна использовать те же координаты, что и объекты на холсте.

Мы создаём DSK, чтобы такие взаимодействия можно было переиспользовать в инструментах Flowscape и других проектах. Наша цель – помочь командам уделять больше времени творческим возможностям своих редакторов, сохраняя контроль над внешним видом и поведением интерфейса.

В основе набора три идеи:

  • Небольшие компоненты, которые работают вместе. Используйте отдельное числовое поле, соберите собственную палитру из цветовых контролов или разместите виджеты с привязкой к координатам вокруг рабочей области.
  • Ваш визуальный стиль. Настраивайте компоненты через CSS-переменные и доступные части Shadow DOM. Создавайте окружающую разметку с помощью обычных HTML и CSS.
  • Ваша модель приложения. Читайте значения, подписывайтесь на события и связывайте их со своим состоянием. Отрисовка, выделение, сохранение и общая история изменений документа остаются в ведении приложения.

Для кого этот набор ​

DSK предназначен для разработчиков инструментов дизайна, интерактивных досок, редакторов диаграмм, интерфейсов анимации и других интерактивных рабочих пространств. Он особенно полезен там, где пользователи редактируют объекты через панель свойств и нуждаются как в прямом управлении, так и в точном вводе значений.

Например, инспектор объекта может объединять числовые поля для позиции и размера, угловой контрол для поворота, палитру для оформления и поле выбора файла для изображения. Дерево слоёв может представлять иерархию документа, а линейки и маркеры – следовать системе координат редактора.

Эти части можно подключать независимо. Использование инпута DSK не требует замены существующего холста, управления состоянием или структуры интерфейса приложения.

Что входит в набор? ​

Текущая vanilla-реализация включает 19 пользовательских HTML-элементов, сгруппированных по назначению.

Поля ввода и выбор файлов ​

Основа панели свойств: точные значения, связанные поля и локальные файлы.

КомпонентНазначение
dsk-inputЧисловое поле с вводом арифметических выражений, изменением перетаскиванием, границами и шагом.
dsk-input-hexПоле для редактирования и пошагового изменения шестнадцатеричных значений.
dsk-input-colorПоле RGB/RGBA с образцом текущего цвета и настраиваемым отображением альфа-канала.
dsk-input-groupКоординирует поля, включая связанные изменения и отображение разных значений при редактировании нескольких объектов.
dsk-input-uploadПозволяет выбрать или перетащить локальный файл, показывает миниатюру изображения или иконку документа и фильтрует допустимые типы.

Подробнее о полях и группах →

Управление цветом ​

Соберите палитру под свой интерфейс: от компактной полоски до полноценной панели.

КомпонентНазначение
dsk-color-areaДвумерная область выбора насыщенности и яркости.
dsk-color-hueПолзунок выбора оттенка.
dsk-color-alphaПолзунок изменения непрозрачности.
dsk-color-eyedropperПолучает цвет с экрана, со страницы или через механизм считывания, предоставленный приложением, в зависимости от поддерживаемого режима.

Подробнее о цвете и пипетке →

Углы и кривые ​

Визуальные контролы для свойств, которые проще понять через форму или направление.

КомпонентНазначение
dsk-angleКонтрол поворота в виде компаса со значением в центре, настраиваемыми границами и несколькими единицами измерения угла.
dsk-curveРедактор кривой для настройки плавности анимации и работы с точками и сегментами.

Подробнее об углах и кривых →

Слои и иерархия ​

Представьте объекты документа в виде дерева и добавляйте вспомогательные элементы только там, где они нужны.

КомпонентНазначение
dsk-layer-treeУправляет иерархией слоёв и изменением порядка перетаскиванием.
dsk-list-valueСтрока слоя или ветка, которую можно раскрывать, переименовывать и перемещать в дереве.
dsk-list-headerНеобязательная область заголовка списка.
dsk-list-footerНеобязательная нижняя область списка.
dsk-tree-searchНеобязательное поле поиска, которое фильтрует дерево и сохраняет возможность раскрывать найденные ветки.

Подробнее о дереве слоёв →

Виджеты холста ​

Виджеты на HTML/CSS, которые подключаются к рабочей области без привязки к конкретному движку отрисовки.

КомпонентНазначение
dsk-pan-zoomЛёгкая интерактивная область для HTML-содержимого с панорамированием и масштабированием.
dsk-rulerГоризонтальная или вертикальная координатная линейка с генерацией делений в видимой области, выделением диапазонов и перетаскиваемыми направляющими.
dsk-canvas-markerПодпись или аннотация, расположенная по координатам, с настраиваемым отслеживанием панорамирования и масштаба.

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

Подробнее о виджетах холста →

Первый взгляд на использование ​

Базовая схема подключения DSK: импорт → HTML → события. Задайте компоненту начальное значение, затем свяжите действия пользователя с объектом в своём приложении.

Установка в двух словах ​

Установите DSK через npm:

sh
npm i @flowscape-ui/dsk

Полное руководство по настройке и инициализации в браузере находится в разделе «Подключение».

Одно поле, одна связь ​

Ниже – минимальный пример управления шириной обычного HTML-элемента. Отдельный движок отрисовки для него не нужен.

html
<dsk-input
  id="width"
  value="160"
  min="40"
  max="320"
  aria-label="Ширина фигуры"
></dsk-input>

<div
  id="shape"
  style="width:160px;height:120px;margin-top:24px;background:#ff007a;border-radius:16px"
></div>

Выполните этот модуль в браузере после появления разметки:

ts
import '@flowscape-ui/dsk';

const width = document.querySelector('dsk-input')!;
const shape = document.querySelector<HTMLElement>('#shape')!;

width.addEventListener('input', () => {
  shape.style.width = `${width.value}px`;
});

Так же можно обновлять объект в своём движке вместо DOM-элемента. Большинство контролов значений отправляют input во время редактирования и change при подтверждении изменения. Программные присваивания обновляют компонент без этих пользовательских событий; собственные события специализированных компонентов описаны в их документации.

Создано Flowscape Team ​

Flowscape Team разрабатывает DSK как основу интерфейсов для создания и редактирования. Проект распространяется по лицензии MIT, а основное внимание сейчас уделяется vanilla-реализации веб-компонентов.

Посмотрите реальный пример с tldraw SDK: DSK связывается с камерой и объектами стороннего редактора обычными DOM-событиями.

Исходный код на GitHub открыт для изучения и участия в развитии проекта.

Если вам близко это направление, вы можете поддержать проект.

Куда дальше ​