69a86b238c
Handoff prototype показывает «‹ Свернуть» button внизу sidebar — toggle
desktop rail в icon-only 56px. Persists в localStorage ord-sidebar-collapsed.
Sidebar component:
- State collapsed (localStorage 'ord-sidebar-collapsed' = '1')
- <aside width> transitions между w-[220px] и w-[56px] (200ms ease)
SidebarContent (DRY с MobileSidebar) получил props:
- collapsed?: boolean (default false)
- onToggleCollapsed?: () => void (undefined hides button — mobile drawer)
Когда collapsed:
- Logo: 'ORDINIS' → 'O' (single char, centered)
- Section labels (text-cap headers) — hidden
- Nav links: icon-only, centered, icon size 18px (vs 15px expanded);
title attribute с label для hover tooltip
- Badges (records count, pending) — hidden (нет места)
- User block: avatar only, name/email hidden; title attribute с full name
- Toggle button bottom: '‹ Свернуть' → '›' (icon-only)
Mobile (MobileSidebar Sheet) НЕ получает collapse — там Sheet даёт full
nav text всегда, close через × header.
A11y: aria-label / title для всех collapsed buttons. Click handler
sets localStorage + state — survives F5.
Tests: 116 pass. TS strict clean.
Ordinis Admin UI
React 19 + Vite 7 + TanStack Router + TanStack Query + Tailwind v4 + i18next.
Локально
cd ordinis-admin-ui
pnpm install
# .env.local: VITE_API_PROXY=http://localhost:8081 (port-forward read-api)
pnpm dev
Контракт API
GET /api/v1/dictionaries(read-api) — список справочниковGET /api/v1/{dictionaryName}/records(read-api) — записи с локализациейPOST /api/v1/dictionaries(writer) — создание справочника (TODO в UI)POST /api/v1/dictionaries/{name}/records(writer) — создание записи (TODO в UI)
Сборка / Docker
docker build -t repo.nstart.cloud/terravault/ordinis-admin-ui:dev .
docker run --rm -p 8088:80 repo.nstart.cloud/terravault/ordinis-admin-ui:dev
# → http://localhost:8088
В кластере nginx проксирует /api/v1/* в ordinis-read-api (GET) и
ordinis-app (POST/PUT/PATCH/DELETE).