diff --git a/PROJECT_NOTES.md b/PROJECT_NOTES.md index 2c3fb7d..52c1d0a 100644 --- a/PROJECT_NOTES.md +++ b/PROJECT_NOTES.md @@ -4,7 +4,7 @@ ## Цель -Вынести UI веб-панели умного дома из `webclient` в отдельный UI-kit с простой сборкой для SCSS, HTML из частей и небольшого количества browser JS. Нужна отдельная страница демонстрации и документации компонентов. +Вынести UI из `webclient` в отдельный универсальный UI-kit с простой сборкой для SCSS, HTML из частей и небольшого количества browser JS. Нужна отдельная страница демонстрации и документации компонентов. ## Что есть сейчас @@ -118,13 +118,83 @@ - `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` и в bundle global `GNexusUIKit`. +- `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. +## Текущее состояние UI-kit + +Дизайн теперь универсальный, без доменной привязки к умному дому. Визуальный стиль: 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: + +- Typography +- Palette +- Buttons +- Forms +- Editable String +- Navigation & Overlays +- Lists +- Badges +- Alerts +- Tables +- Data Patterns +- Toasts +- Cards +- Modals + +Новые компоненты после базового scaffold: + +- `src/scss/components/_navigation-overlays.scss` +- `src/js/components/overlays.js` +- `demo/partials/navigation-overlays.html` +- `src/scss/components/_input-group.scss` +- `src/scss/components/_data-patterns.scss` +- `src/js/components/input-patterns.js` +- `demo/partials/data-patterns.html` + +`Navigation & Overlays` включает tabs, dropdown, tooltip, popover. `Data Patterns` включает toolbar, search field, input group, pagination, empty state, skeleton. + +Публичный JS API: + +- `GNexusUIKit.Helper` +- `GNexusUIKit.Toasts` +- `GNexusUIKit.Modals` +- `GNexusUIKit.advancedSelect` +- `GNexusUIKit.editableString` +- `GNexusUIKit.confirmPopup` +- `GNexusUIKit.Overlays` +- `GNexusUIKit.InputPatterns` + +`Overlays.init()` и `InputPatterns.init()` запускаются автоматически на `DOMContentLoaded`. + +## Запланированные компоненты + +Ближайшие полезные additions: + +- Page Header: заголовок страницы, subtitle, actions, status. +- Key-Value / Description List: компактный read-only блок для деталей сущности. +- Progress: progress bar, usage meter, staged progress. +- Stepper / Steps: пошаговые сценарии и wizard-flow. +- Chip / Tag: selectable/removable метки для фильтров и labels. +- Avatar / Identity: initials, icon avatar, image avatar, status marker. +- Timeline / Activity Log: история событий, audit log, jobs. +- Accordion / Disclosure: раскрываемые группы настроек и деталей. +- Drawer / Side Panel: контекстные детали и quick edit без полной модалки. +- Confirm Dialog docs: `confirm-popup.js` уже есть, но его нужно вывести в demo/docs. + +Технический backlog: + +- Мигрировать Sass с `@import` на `@use`. +- Заменить deprecated Sass functions на `sass:map` и `sass:color`. +- Пересмотреть Gulp-зависимости или заменить сборку на более свежий простой pipeline. +- Добавить отдельную demo-секцию для loader/progress states. + Проверенные команды: - `npm install` - установлены зависимости. diff --git a/README.md b/README.md index 7da49b4..dc13375 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,30 @@ GNexusUIKit.Toasts.createInfo("Info", "Message").show(); ``` +## JS API + +Bundle публикует компоненты и helper-модули двумя способами: + +```js +Toasts.createSuccess("Success", "Saved").show(); +GNexusUIKit.Toasts.createInfo("Info", "Message").show(); +``` + +Текущий публичный namespace: + +```text +GNexusUIKit.Helper +GNexusUIKit.Toasts +GNexusUIKit.Modals +GNexusUIKit.advancedSelect +GNexusUIKit.editableString +GNexusUIKit.confirmPopup +GNexusUIKit.Overlays +GNexusUIKit.InputPatterns +``` + +`Overlays.init()` и `InputPatterns.init()` запускаются автоматически на `DOMContentLoaded`. + ## Компоненты Сейчас в demo/docs представлены: @@ -106,12 +130,37 @@ - Badges - Alerts - Tables +- Data Patterns - Toasts - Cards - Modals Каждая секция demo содержит визуальный пример, короткое описание и копируемый блок кода. +### Navigation & Overlays + +Секция включает: + +- Tabs +- Dropdown +- Tooltip +- Popover + +JS-модуль: `src/js/components/overlays.js`. + +### Data Patterns + +Секция включает: + +- Toolbar +- Search Field +- Input Group +- Pagination +- Empty State +- Skeleton + +JS-модуль: `src/js/components/input-patterns.js` добавляет поведение для `data-input-clear`. + ## SCSS Базовые файлы: @@ -148,3 +197,25 @@ - Sass сейчас использует старый `@import`. Сборка проходит, но Dart Sass выводит deprecation warnings. Позже стоит мигрировать на `@use`. - `webclient/` оставлен как источник старого клиента и игнорируется git. - `.codex` является локальным служебным файлом и не должен попадать в коммиты. + +## Запланировано + +Ближайшие полезные компоненты: + +- Page Header: заголовок страницы, subtitle, actions, status. +- Key-Value / Description List: компактный read-only блок для деталей сущности. +- Progress: progress bar, usage meter, staged progress. +- Stepper / Steps: пошаговые сценарии и wizard-flow. +- Chip / Tag: selectable/removable метки для фильтров и labels. +- Avatar / Identity: initials, icon avatar, image avatar, status marker. +- Timeline / Activity Log: история событий, audit log, jobs. +- Accordion / Disclosure: раскрываемые группы настроек и деталей. +- Drawer / Side Panel: контекстные детали и quick edit без полной модалки. +- Confirm Dialog docs: `confirm-popup.js` уже есть в JS, но его нужно вынести в demo/docs. + +Технические задачи: + +- Мигрировать Sass с `@import` на `@use`. +- Заменить deprecated Sass functions на `sass:map` и `sass:color`. +- Пересмотреть Gulp-зависимости или заменить сборку на более свежий простой pipeline. +- Добавить отдельную demo-секцию для loader/progress states. diff --git a/demo/index.html b/demo/index.html index 2e15e0d..0823764 100644 --- a/demo/index.html +++ b/demo/index.html @@ -73,6 +73,11 @@
+ Toolbar, search field, pagination, empty state и skeleton закрывают типовые состояния + таблиц, списков и страниц с данными. +
+ ++ Nothing matched the current filters. Reset the query or create a new item. +
+<div class="toolbar">
+ <div class="toolbar-group">
+ <div>
+ <h3 class="toolbar-title">Projects</h3>
+ <span class="toolbar-meta">24 items</span>
+ </div>
+ </div>
+ <div class="toolbar-group">
+ <div class="input-group input-group-compact search-field">
+ <span class="input-group-addon"><i class="ph ph-magnifying-glass"></i></span>
+ <input class="input-group-input" type="search" placeholder="Search">
+ <button class="input-group-action" type="button" data-input-clear aria-label="Clear search">
+ <i class="ph ph-x"></i>
+ </button>
+ </div>
+ <button class="btn btn-accent btn-small">Create</button>
+ </div>
+</div>
+ <div class="input-group">
+ <span class="input-group-addon">https://</span>
+ <input class="input-group-input" type="text" placeholder="Domain">
+ <button class="input-group-action" type="button">Save</button>
+</div>
+ <nav class="pagination" aria-label="Pagination">
+ <button class="pagination-item" type="button" disabled>Prev</button>
+ <button class="pagination-item pagination-item-active" type="button" aria-current="page">1</button>
+ <button class="pagination-item" type="button">2</button>
+ <span class="pagination-ellipsis">...</span>
+ <button class="pagination-item" type="button">12</button>
+ <button class="pagination-item" type="button">Next</button>
+</nav>
+ <div class="empty-state">
+ <div class="empty-state-icon"><i class="ph ph-package"></i></div>
+ <h3 class="empty-state-title">No results</h3>
+ <p class="empty-state-text">Nothing matched the current filters.</p>
+ <div class="empty-state-actions">
+ <button class="btn btn-secondary btn-small">Reset</button>
+ <button class="btn btn-accent btn-small">Create</button>
+ </div>
+</div>
+ <div class="skeleton-stack" aria-label="Loading preview">
+ <span class="skeleton skeleton-title"></span>
+ <span class="skeleton skeleton-line"></span>
+ <span class="skeleton skeleton-line" style="width: 84%"></span>
+ <span class="skeleton skeleton-block"></span>
+</div>
+ InputPatterns.init();
+
+// Available on the global namespace too:
+GNexusUIKit.InputPatterns.init();
+