e72aa37e84
Заменил голый DateRangePicker (только календарь, требует двух кликов на любой typical период) на preset-driven PeriodFilter — pattern из Datadog/Grafana: Triггер компактный (h-9), показывает active preset label либо forматированный range («04.05.2026 — 29.05.2026»). При клике открывается popover с: - Список пресетов слева: Сегодня / Вчера / Последние 7 дней / 30 дней / Этот месяц / Прошлый месяц - «Произвольный диапазон» внизу — раскрывает 2-month DayPicker справа Active preset подсвечивается. Custom range детектится sameRange сравнением — если value матчит preset, его и подсвечиваем. X-кнопка в trigger'е чистит период без открытия popover'а. DayPicker lazy-loaded (~80kb gz, не пакуется в initial audit bundle). ISO bounds в audit.tsx не трогали — onChange отдаёт Date'ы, нормализация T00:00:00/T23:59:59 + local TZ остаётся прежней. Файлы: - components/audit/PeriodFilter.tsx (новый, ~190 строк) - routes/audit.tsx — заменил DateRangePicker → PeriodFilter, убран import 171/171 tests, TSC чистый.
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).