gorbenko.pavel 6fd3672edc
test / test (pull_request) Successful in 14s
Ссылка на репозиторий — прежняя репа timur.gorodetskiy/tnsu-ui-kit
Код остаётся в этой репе, публикация по-прежнему в реестр организации Tansu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 17:23:56 +05:00

@tnsu/ui-kit

Общие UI-компоненты для SPFx web part'ов ТНСУ. Единый дизайн, один источник правды.

Внутренняя память проекта (решения, план, прогресс) — в PROJECT.md.

Установка в проект

Пакет лежит в реестре организации Tansu на git.tnsu.kz. Реестр публичный, а сам git.tnsu.kz доступен только из внутренней сети, поэтому токен для установки не нужен (из сети или по VPN).

В корне проекта — файл .npmrc со строкой:

@tnsu:registry=http://git.tnsu.kz/api/packages/Tansu/npm/

Затем:

npm i @tnsu/ui-kit

Пакет требует, чтобы в проекте уже были (peerDependencies): react@17, react-dom@17, @fluentui/react@8, tslib. У любого SPFx-решения этого поколения они есть.

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

import { Button } from '@tnsu/ui-kit';
import '@tnsu/ui-kit/styles.css'; // один раз в корневом компоненте web part

<Button variant="primary">Отправить</Button>;

Компоненты

Наполняется по мере переноса. Полная витрина со всеми состояниями — в Storybook.

Кнопки: Button, PrintButton Сообщения: Alert, RequestNumber Форма (оболочка/раскладка): FormCard, FormGrid, FormField, FormActions, CollapseSection Поля ввода: TextInput, TextArea, PhoneInput, MoneyInput, Select, Toggle Режим чтения: FormModeProvider, useFormReadOnly Иконки: Icon, IconSprite Файлы: FileDropzone, AttachmentList Модалка: ConfirmHost, confirmModal Хуки: useFlipRows

⏳ В планах: DataTable (обобщение ItemsTable), Badge, ErrorOverlay, навигация (Tabs/Sidebar/Breadcrumbs).

Разработка пакета

npm i             # поставить зависимости
npm run build     # собрать пакет в dist/
npm run dev       # сборка в watch-режиме
npm run storybook # витрина компонентов (localhost:6006)

Публикация новой версии

Публикует пайплайн publish в Gitea — по кнопке: Actions → publish → Run workflow. Сначала юнит-тесты и сборка, потом публикация в реестр Tansu.

  • Версию поднимает пайплайн. В package.json задаются только major.minor (патч там не важен): новая функциональность — поднять minor руками (0.14.x → 0.15.0). Патч — следующий после самого большого опубликованного с тем же major.minor. В git ничего не коммитится.
  • Тот же код не публикуется. Пайплайн считает хэш исходников (src без тестов и историй Storybook, package.json, конфиги сборки, README), кладёт его в публикуемый package.json (поле sourceHash) и сравнивает с последней опубликованной версией. Совпало — пайплайн падает с «Публиковать нечего».
  • Секреты: PACKAGES_USER (логин в Gitea) и PACKAGES_TOKEN (его токен со scope write:package, участник организации Tansu с правом записи).

Пробный прогон без публикации: DRY_RUN=1 bash ci/publish.sh.

Версии до 0.14.0 скопированы из прежнего реестра timur.gorodetskiy без хэша, поэтому первая публикация пайплайном выпустит 0.14.1 даже без изменений кода; дальше проверка работает как обычно.

На каждый push и pull request пайплайн test гоняет юнит-тесты и сборку.

S
Description
No description provided
Readme 489 KiB
Languages
TypeScript 75.6%
SCSS 21.3%
Shell 3.1%