@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 13 hours ago
demo Add date time form controls 13 hours ago
public/ assets Add Tokyo Night color pass 11 days ago
src Add date time form controls 13 hours ago
.codex Tech 11 days ago
.gitignore Scaffold GNexus UI kit 12 days ago
PROJECT_NOTES.md Fix accordion animation cleanup 11 days ago
README.md Fix accordion animation cleanup 11 days ago
gulpfile.js Add page header and description list 11 days ago
package-lock.json Modernize Sass build pipeline 11 days ago
package.json Modernize Sass build pipeline 11 days ago
README.md

GNexus UI Kit

UI-kit для веб-интерфейсов GNexus. Текущий стиль: темная cyber/terminal панель с легкой примесью Tokyo Night, IBM Plex Mono, Phosphor Icons, жесткие прямые формы, акцентные бордеры и яркие состояния.

Проект выделен из старого webclient, но развивается как отдельный набор UI-компонентов с demo/docs страницей.

Быстрый старт

npm install
npm run dev

Dev server:

http://localhost:3000

Production build:

npm run build

Структура

demo/                 Demo/docs страница и HTML partials
public/assets/        Шрифты, иконки, highlight.js и изображения
src/js/               Browser JS entry и UI-компоненты
src/scss/             SCSS entry, tokens, utilities и компоненты
dist/                 Результат сборки, не коммитится
webclient/            Исходный старый клиент, игнорируется git

Ключевые entry points:

src/scss/kit.scss     Основной CSS UI-kit
src/scss/demo.scss    CSS для demo/docs страницы
src/js/index.js       Browser JS bundle entry
demo/index.html       Demo/docs страница

Команды

npm run dev

Собирает проект, запускает BrowserSync и следит за изменениями.

npm run build

Собирает:

  • dist/css/kit.css
  • dist/css/demo.css
  • dist/js/gnexus-ui-kit.js
  • dist/index.html
  • dist/assets/*

Использование

Для подключения kit в обычную HTML-страницу нужны CSS, иконки и JS bundle:

<link rel="stylesheet" href="/assets/fonts/phosphor-icons/src/css/icons.css">
<link rel="stylesheet" href="/css/kit.css">
<script src="/js/gnexus-ui-kit.js"></script>

JS bundle публикует API в window:

Toasts.createSuccess("Success", "Saved").show();

const modal = Modals.create("example-modal", {
  title: "Modal",
  bodyText: "Content"
});

modal.show();

Также доступен global namespace:

GNexusUIKit.Toasts.createInfo("Info", "Message").show();

JS API

Bundle публикует компоненты и helper-модули двумя способами:

Toasts.createSuccess("Success", "Saved").show();
GNexusUIKit.Toasts.createInfo("Info", "Message").show();

Текущий публичный namespace:

GNexusUIKit.Helper
GNexusUIKit.Toasts
GNexusUIKit.Modals
GNexusUIKit.advancedSelect
GNexusUIKit.editableString
GNexusUIKit.confirmPopup
GNexusUIKit.Drawer
GNexusUIKit.Overlays
GNexusUIKit.InputPatterns
GNexusUIKit.Accordion

Overlays.init(), InputPatterns.init() и Accordion.init() запускаются автоматически на DOMContentLoaded.

Компоненты

Сейчас в demo/docs представлены:

  • Typography
  • Palette
  • Buttons
  • Forms
  • Utilities
  • Editable String
  • Navigation & Overlays
  • Lists
  • Badges
  • Alerts
  • Tables
  • Data Patterns
  • Page Header
  • Key-Value / Description List
  • Progress
  • Steps
  • Chips
  • Avatar / Identity
  • Timeline / Activity Log
  • Accordion / Disclosure
  • Drawer / Side Panel
  • Toasts
  • Cards
  • Modals
  • Confirm Dialog

Каждая секция demo содержит визуальный пример, короткое описание и копируемый блок кода.

Секция включает:

  • Tabs
  • Dropdown
  • Tooltip
  • Popover

JS-модуль: src/js/components/overlays.js.

Utilities

Секция включает:

  • Spacing scale: $space-0 ... $space-12.
  • Margin utilities: m-*, mt-*, mr-*, mb-*, ml-*, mx-*, my-*.
  • Padding utilities: p-*, pt-*, pr-*, pb-*, pl-*, px-*, py-*.
  • Gap utilities: g-*, gx-*, gy-*.
  • Layout/display/text helpers: grid-*, row, column, items-*, justify-*, d-*, text-*.

Data Patterns

Секция включает:

  • Toolbar
  • Search Field
  • Input Group
  • Pagination
  • Empty State
  • Skeleton

JS-модуль: src/js/components/input-patterns.js добавляет поведение для data-input-clear.

Page Header и Key-Value

Секции включают:

  • Page Header: заголовок экрана, subtitle, status/meta и actions.
  • Compact Page Header: плотный вариант для внутренних экранов и настроек.
  • Description List: read-only пары key-value для деталей сущности.
  • Compact Description List: плотный вариант для metadata blocks.

Progress и Steps

Секции включают:

  • Progress Bar: determinate progress с CSS custom property --progress-value.
  • Usage Meter: карточка лимита/использования с progress bar.
  • Staged Progress: сегментированное состояние операции.
  • Steps: горизонтальный и вертикальный wizard-flow.

Chips и Avatar

Секции включают:

  • Chips: static, selectable, removable и state variants.
  • Avatar: initials, icon, image, sizes и status marker.
  • Identity: avatar + title/meta row.
  • Avatar Stack: компактное отображение группы.

Timeline и Accordion

Секции включают:

  • Timeline: вертикальная история событий со state variants.
  • Activity Log: компактный audit/job log.
  • Accordion: группы на native <details> / <summary>.
  • Disclosure: компактная одиночная раскрываемая группа.

JS-модуль: src/js/components/accordion.js добавляет управляемую анимацию раскрытия.

Drawer и Confirm Dialog

Секции включают:

  • Drawer: боковая overlay-панель для деталей, quick edit и secondary flows.
  • Side Panel variants: правая и левая позиция через position: "left".
  • Confirm Dialog: документация для существующего confirmPopup.

JS-модули: src/js/components/drawer.js и src/js/components/confirm-popup.js.

SCSS

Базовые файлы:

src/scss/_palette-colors.scss
src/scss/_design-tokens.scss
src/scss/_spacing.scss
src/scss/_mixins.scss
src/scss/_utils.scss

Компоненты находятся в:

src/scss/components/

Основная идея стиля сохраняется от исходного UI: моноширинная типографика, Tokyo Night influenced dark surface, sharp edges, толстые акцентные бордеры, цветовая инверсия на hover/focus и яркие status colors.

Assets

Локально подключены:

  • IBM Plex Mono
  • Phosphor Icons
  • highlight.js для подсветки кода в demo/docs

dist/ генерируется из public/assets, src и demo.

Текущие замечания

  • Сборка работает на Gulp 5, modern Dart Sass API, PostCSS/autoprefixer, clean-css, esbuild и gulp-file-include.
  • Sass переведен на @use / @forward; deprecated map-* global functions заменены на sass:map.
  • npm audit --audit-level=low проходит без найденных уязвимостей.
  • webclient/ оставлен как источник старого клиента и игнорируется git.
  • .codex является локальным служебным файлом и не должен попадать в коммиты.

Запланировано

Ближайшие полезные компоненты:

  • На текущий момент список запланированных компонентов закрыт; дальше можно расширять набор по новым сценариям.

Технические задачи:

  • На текущий момент технический backlog пуст; дальше расширяем компонентный набор.