Дата анализа: 2026-04-11.
Вынести UI из webclient в отдельный универсальный UI-kit с простой сборкой для SCSS, HTML из частей и небольшого количества browser JS. Нужна отдельная страница демонстрации и документации компонентов.
webclient содержит старый клиент панели и уже частично оформленную страницу UI-kit:
webclient/ui.php - PHP-страница демонстрации компонентов.webclient/ui_components/*.php - примеры разметки для компонентов.webclient/src/scss/main.scss - текущий общий вход SCSS.webclient/src/scss/_ui.scss - вход UI-слоя.webclient/src/scss/ui_components/*.scss - стили компонентов.webclient/src/scss/_app.scss и webclient/src/scss/app/*.scss - стили конкретного приложения.webclient/src/js/components/*.js - UI JS и app JS вперемешку.webclient/src/js/index.js - вход приложения, завязан на SmartHomeApi, routes, HUD и screens.webclient/dist - собранные CSS/JS.webclient/assets - локальные шрифты, иконки, highlight.js и картинка приложения.В webclient/package.json используется Gulp:
gulp-sass, sass, autoprefixer, clean-css, sourcemaps.esbuild с src/js/index.js в dist/js/main.js.gulp-file-include есть, но HTML task и сервер сейчас фактически выключены.serve не включен в default task.Для нового kit можно остаться на простом Gulp или перейти на более прямую схему: Sass CLI + esbuild + file include. Учитывая уже существующий gulpfile.js, самый короткий путь - привести Gulp к сборке src/html partials, src/scss, src/js, demo-серверу и watch.
UI-kit-кандидаты:
_palette-colors.scss, _fonts.scss, _mixins.scss, _spacing.scss, _utils.scss.typography, palette, loader, buttons, forms, lists, badges, tables, toasts, cards, modals, alerts, advanced-select, editable-string.toasts.js, modals.js, advanced-select.js, editable-string.js, частично confirm-popup.js, частично helper.js.ui_components/*.php можно конвертировать в HTML partials.App-only или переносить отдельно как пример потребителя:
_app.scss.app/_hud.scss, app/_load-screen.scss, app/_error-screen.scss, app/_empty-here.scss.src/js/index.js, routes.js, DataProvider.js, sh/SmartHomeApi.js, Screens.js, hud.js.index.php, proxy.php, config.php.Документированы на ui.php:
Есть SCSS для loader и advanced-select, но отдельной полной demo-секции для loader нет, а advanced-select показан внутри forms.
Текущий стиль:
Основные токены:
$color-black, $color-dark, $color-grey, $color-cyan, $color-magenta, $color-hot-pink, $color-electric-blue, $color-orange, $color-purple, $color-indigo, $color-teal, $color-neon-yellow, $color-neon-green, $color-text-*, $color-primary, $color-secondary, $color-accent, $color-success, $color-warning, $color-error, $color-info.$space-0 ... $space-12, плюс aliases xs/sm/md/lg/xl/xxl.$font-family-base, weights, sizes xs..xl, headings h1..h6, line heights.xs 360, sm 480, md 768, lg 1024, xl 1280, xxl 1440.На момент анализа webclient компонентный JS был не полностью модульным: часть компонентов зависела от глобальных Helper, Modals, Screens, а app entry запускал routing и SmartHome API. В текущем root UI-kit entry эти app-зависимости убраны: компоненты импортируются модульно, экспортируются в window и window.GNexusUIKit, приложение не запускается.
/assets/... в CSS/HTML нужно сделать корректными для нового dist/demo..section, .container, .block, .row, .list может конфликтовать с потребителями kit. На первом этапе можно оставить как есть, но в документации отметить глобальность.src/scss, src/js, src/html, src/partials, public/assets, dist.kit.scss для UI и, при необходимости, app-demo.scss только для демо-страницы.Toasts, Modals, advancedSelect, editableString, confirmPopup, Helper.package.json - root npm scripts: npm run build, npm run dev, npm start.gulpfile.js - сборка SCSS, JS, HTML partials, static assets и BrowserSync server.src/scss/kit.scss - основной SCSS entry UI-kit.src/scss/components/*.scss - перенесенные стили UI-компонентов.src/js/index.js - browser entry, экспортирует UI API в window и window.GNexusUIKit.src/js/components/*.js - перенесенные JS-компоненты UI-kit.demo/index.html - демонстрационная страница.demo/partials/*.html - HTML partials, перенесенные из бывших PHP demo partials.public/assets - исходные статичные assets для demo/build.dist - генерируемый результат сборки, игнорируется git.Дизайн теперь универсальный, без доменной привязки к умному дому. Визуальный стиль: dark cyber/terminal с легкой примесью Tokyo Night, IBM Plex Mono, Phosphor Icons, прямые формы, толстые акцентные бордеры, яркие status colors. После Tokyo Night pass на плотных светлых state-заливках используется темный $color-black текст для контраста.
Favicon и карточечный image asset заменены на нейтральный public/assets/imgs/gnexus-mark.svg; старый sh-icon.png удален.
Документированные секции demo:
Новые компоненты после базового scaffold:
src/scss/components/_navigation-overlays.scsssrc/js/components/overlays.jsdemo/partials/navigation-overlays.htmlsrc/scss/components/_input-group.scsssrc/scss/components/_data-patterns.scsssrc/js/components/input-patterns.jsdemo/partials/data-patterns.htmlNavigation & Overlays включает tabs, dropdown, tooltip, popover. Data Patterns включает toolbar, search field, input group, pagination, empty state, skeleton.
Добавлены Page Header и Key-Value / Description List:
src/scss/components/_page-header.scsssrc/scss/components/_description-list.scssdemo/partials/page-header.htmldemo/partials/description-list.htmlДобавлены Progress и Steps:
src/scss/components/_loader.scss расширен progress bar, usage meter и staged progress.src/scss/components/_stepper.scssdemo/partials/progress.htmldemo/partials/steps.htmlДобавлены Chips и Avatar / Identity:
src/scss/components/_chips.scsssrc/scss/components/_avatar.scssdemo/partials/chips.htmldemo/partials/avatar.htmlДобавлены Timeline и Accordion / Disclosure:
src/scss/components/_timeline.scsssrc/scss/components/_accordion.scssdemo/partials/timeline.htmldemo/partials/accordion.htmlДобавлены Drawer / Side Panel и demo/docs для Confirm Dialog:
src/js/components/drawer.jssrc/scss/components/_drawer.scssdemo/partials/drawer.htmldemo/partials/confirm-dialog.htmlПубличный JS API:
GNexusUIKit.HelperGNexusUIKit.ToastsGNexusUIKit.ModalsGNexusUIKit.advancedSelectGNexusUIKit.editableStringGNexusUIKit.confirmPopupGNexusUIKit.DrawerGNexusUIKit.OverlaysGNexusUIKit.InputPatternsOverlays.init() и InputPatterns.init() запускаются автоматически на DOMContentLoaded.
Ближайшие полезные additions:
Технический backlog:
Overlays.init() и InputPatterns.init() идемпотентны для повторных roots; advanced-select устойчивее при пустых результатах; app-хвост Screens и production console.log удалены из toasts.Modals сохранен явный HTML escape hatch через bodyHtml / bodyMode: "html" для сложной разметки; для обычных строк использовать bodyText.@use / @forward, map-* global functions заменены на sass:map, gulp-sass убран из pipeline в пользу modern sass.compileAsync.npm audit --audit-level=low показывает 0 vulnerabilities.Проверенные команды:
npm install - установлены зависимости.npm run build - сборка проходит.npm run dev - запускает BrowserSync на http://localhost:3000.Текущие предупреждения:
npm run build проходит без Sass deprecation warnings.npm audit --audit-level=low проходит без найденных уязвимостей.