Документация wmkit
Headless оконный менеджер для веба. Корневой README — это обзор, а эти страницы — справочник.
| Страница | Что внутри |
|---|---|
| Справочник API | каждый экспорт, опция, метод, событие и тип |
| Адаптеры | полные интеграции для React, Vue, Svelte, Solid, Angular, Preact, Lit и Qwik, плюс веб-компоненты <wm-desktop> |
| Темизация | контракт data-wm-*, CSS-переменные, тема с нуля |
| Рецепты | окно с нуля, таскбар, модалки, персист, рабочие столы, SSR, тестирование |
| Поддержка браузеров | минимальные версии для каждой точки входа и что где деградирует |
Как устроена библиотека
Три слоя, каждый можно использовать отдельно:
createWindowManager() машина состояний — геометрия, наложение, стадии, фокус, история. Без DOM.
attachDesktop() DOM-контроллер — указатель, клавиатура, ARIA, превью снэпа, анимации.
адаптеры тонкие обёртки — встраивают оба слоя выше в жизненный цикл фреймворка.Менеджер никогда не читает и не пишет DOM, поэтому работает в Node и во время SSR. Контроллер никогда не рендерит контент — он двигает и размечает элементы, которые уже принадлежат вам. Поэтому контент окна остаётся в вашем дереве компонентов: никакого innerHTML, порталов и переноса узлов.
Словарь
| Термин | Значение |
|---|---|
| окно (window) | запись в менеджере: id, геометрия, стадия, слой, рабочий стол, флаги, meta |
| стадия (stage) | normal, minimized, maximized или snapped — взаимоисключающие |
| слой (layer) | normal < floating (всегда поверх) < modal (блокирует фокус ниже) |
| рабочий стол (workspace) | индекс виртуального рабочего стола; активен всегда только один |
| зона (zone) | цель снэпа: половины, четверти или трети вьюпорта |
| элемент рабочего стола (desktop) | элемент, который вы передаёте в attachDesktop; он задаёт систему координат |
| взаимодействие (interaction) | жест в процессе, собранный в одну запись истории |
Установка
pnpm add @surdeddd/wmkitТочки входа: . (ядро + DOM), ./react, ./vue, ./svelte, ./solid, ./angular, ./preact, ./lit, ./qwik, ./elements и ./elements/define (веб-компоненты), ./persist, ./popout, ./gestures, ./devtools, ./chrome, ./dock, ./winbox, ./themes (таблицы стилей в виде текста) и ./themes/*.css. ESM и CJS, типы для каждого условия экспорта, ноль зависимостей.