Files
tnsu-ui-kit/README.md
T
gorbenko.pavel ec13410945
test / test (push) Successful in 20s
Реестр пакетов: организация Tansu переименована в tansu (#2)
Организацию на git.tnsu.kz переименовали в tansu. Адрес реестра @tnsu в .npmrc и resolved в package-lock.json приведены к новому имени. Gitea принимает оба написания, так что сборка работает и до влития.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: #2
2026-10-29 12:46:12 +00:00

82 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# @tnsu/ui-kit
Общие UI-компоненты для SPFx web part'ов ТНСУ. Единый дизайн, один источник правды.
> Внутренняя память проекта (решения, план, прогресс) — в [PROJECT.md](./PROJECT.md).
## Установка в проект
Пакет лежит в реестре организации **tansu** на git.tnsu.kz. Реестр публичный, а сам git.tnsu.kz
доступен только из внутренней сети, поэтому **токен для установки не нужен** (из сети или по VPN).
В корне проекта — файл `.npmrc` со строкой:
```
@tnsu:registry=https://git.tnsu.kz/api/packages/tansu/npm/
```
Затем:
```powershell
npm i @tnsu/ui-kit
```
Пакет требует, чтобы в проекте уже были (peerDependencies):
`react@17`, `react-dom@17`, `@fluentui/react@8`, `tslib`.
У любого SPFx-решения этого поколения они есть.
## Использование
```ts
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).
## Разработка пакета
```powershell
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_TOKEN` — токен Gitea со scope `write:package` (владелец — участник организации tansu
с правом записи). Логин не нужен.
Пробный прогон без публикации: `DRY_RUN=1 bash ci/publish.sh`.
Версии до 0.14.0 скопированы из прежнего реестра `timur.gorodetskiy` без хэша, поэтому первая публикация
пайплайном выпустит `0.14.1` даже без изменений кода; дальше проверка работает как обычно.
На каждый push и pull request пайплайн **test** гоняет юнит-тесты и сборку.