Zimin A.N.
5007e0f4eb
feat(ui): drop @nstart/ui dependency (Stage 3.9)
...
Все font cascade bugs из последних MR были вызваны @nstart/ui pollution
(Tektur inheritance от Card parent'ов, Onest font в Button, font-primary
class overrides). Решили обрезать раньше plan'а.
What changed:
New primitives (8 файлов в src/ui/components/):
- panel.tsx — container с border/surface
- field.tsx — FieldLabel/Hint/Error typography helpers
- text-input.tsx — Input + label/hint/error composite
- table.tsx — Table/TableHeader/Body/Row/HeaderCell/Cell/Empty
- date-picker.tsx — native <input type=date> wrapper с label/hint/error
- multi-select.tsx — Radix Popover + inline checkboxes
- single-select.tsx — native <select> с label/hint/error chrome
- language-switch.tsx — segmented control в Tektur uppercase
Compatibility shims (existing components extended):
- checkbox.tsx — + label/description/error/onChange (nstart-compat
synthetic event), wrap в <label> когда есть chrome
- modal.tsx — + panelClassName / bodyClassName props
- form-actions.tsx — + align prop (start/end/between)
- tabs-simple.tsx — TabItem.count alias for .trailing (nstart-compat)
- table TableHead — alias TableHeaderCell с align prop
Barrel rewrite (src/ui/index.ts):
- Удалён 'export * from @nstart/ui'
- Explicit exports для всех 45+ нужных символов
- SelectOption / MultiSelectOption / LanguageOption теперь {id, label}
с optional 'value' alias — nstart-compat без массового codemod call-sites
styles.css cleanup:
- Removed @import @nstart/ui/styles/{fonts,theme}.css
- Removed @source nstart/dist directive (Tailwind v4 scan)
- Removed --text-sm: 13px override (был костыль для @nstart/ui dist)
- Legacy color tokens (--color-carbon/ultramarain/orbit/regolith/asteroid)
sсодержали fallback mappings — оставлены, но callsites больше не используют
Codemod: 9 файлов конвертированы legacy colors → handoff tokens
carbon → ink, ultramarain → accent, orbit → warn, regolith → line, asteroid → mute
main.tsx:
- NStartUiProvider → TooltipProvider (Radix)
- DatePickerProvider убран (наш DatePicker native, no provider needed)
routes/dictionaries.$name.tsx:
- Removed useRef-based <input>.indeterminate hack
- Radix Checkbox принимает checked='indeterminate' declaratively
package.json: -@nstart/ui (was 0.1.3)
Bundle impact:
before: vendor-nstart-ui chunk = 1228 KB
after: no nstart chunk, всё в vendor-misc (+~70 KB Radix wrappers)
net savings: ~1.15 MB minified, ~440 KB gzip
Tests: 116 pass (1 fixed: tab role from 'button' → 'tab', Radix semantically correct).
TS strict: clean.
Browser-verified (preview): 7 utilities computed correctly, nstart bundle absent.
2026-05-11 15:17:37 +03:00
Zimin A.N.
f0dbc20f62
fix(fonts): explicit font-family on title utilities + cascade conflicts
...
Реальные измерения через DevTools на staging выявили 3 бага после MR !47 :
Bug 1: text-title-md/lg/xl inherited Tektur от @nstart/ui Card parent.
Handoff: 'Inter for all headings'. Computed: Tektur.
Fix: добавил font-family: var(--font-sans) explicit на text-title-*
и text-body/text-cell. После Stage 3.9 (nstart gone) можно убрать —
body inherit будет достаточно.
Bug 2: text-cap + font-mono cohabit (catalog scope chips, time-travel
presets) → Tailwind v4 cascade order: font-mono идёт после text-cap
в bundled CSS → JetBrains Mono перебивает Tektur. text-cap baked
font-display, font-mono token redundant.
Fix: codemod strip font-mono где есть text-cap (4 sites). Computed
font-family теперь правильно Tektur.
Bug 3: @nstart/ui PageHeader рендерил h1 'DICTIONARIES' в Tektur
36px/700 uppercase (font-primary text-4xl). Handoff page title:
17px/600 Inter normal case. Наш src/ui/components/page-header.tsx
написан но не экспортирован через barrel — все routes резолвили
PageHeader к nstart версии.
Fix: добавил 'export { PageHeader }' override в src/ui/index.ts.
Все 7 PageHeader usages (catalog/search/reviews/webhooks/outbox/
my-drafts/graph) теперь получат handoff-conformant heading.
Bug 4 (small): catalog counter '37/37' использовал text-cap но это
numeric value — handoff role text-mono (11px JetBrains Mono).
Fix: text-cap → text-mono + tabular-nums для grid alignment.
Verified via injected test elements + CDP computed styles:
text-title-xl: 22/600 Inter
text-title-lg: 17/600 Inter
text-title-md: 15/600 Inter
text-body: 13/400 Inter
text-cell: 12.5/500 Inter
text-mono: 11/500 JetBrains Mono
text-cap: 10.5/600 Tektur
Все 7 utilities точно matches handoff scale.
Files: 4 modified. TS strict + 116 tests pass.
2026-05-11 14:58:32 +03:00
Zimin A.N.
b94912789f
fix(fonts): semantic typography utilities per handoff (7 roles)
...
Заменяет blanket override из MR !45 на типизированную type scale per
design_handoff_ordinis_mdm/README.md "Scale" section.
Семь semantic @utility в styles.css:
text-title-xl 22/600 — modal title, section header
text-title-lg 17/600 — page title в editor
text-title-md 15/600 — dictionary card title
text-body 13/400 — workhorse: body, buttons, tabs, inputs
text-cell 12.5/500 — table cell text
text-mono 11/500 — Mono: IDs, dates, FK refs (font-mono baked in)
text-cap 10.5/600 — Tektur UPPERCASE caption (font/uppercase baked in)
Audit phases:
P1: добавил 7 утилит, font/uppercase/tracking baked где надо
P2: 43 deterministic codemods (font-mono+text-2xs/[11px] → text-mono,
[15/17/22]px+font-semibold → text-title-*, [12.5]px → text-cell,
[10.5]px+uppercase+tracking → text-cap)
P3: 64 text-sm → text-body (handoff workhorse), 84 text-2xs context-aware
(TableCell → text-cell, bare → text-cell, плюс cleanup caps в backticks
template literals который Phase 2 пропустил), 25 text-xs (6 → text-mono
когда с font-mono, 19 → text-cell), 8 titles text-base/lg → text-title-*
P4: убрал --text-2xs override (no users), оставил --text-sm: 13px scoped
к @nstart/ui passthrough (см. comment в styles.css — убирается в Stage 3.9)
Stats:
text-body: 69 | text-cell: 99 | text-mono: 50 | text-cap: 42
text-title-xl: 5 | text-title-lg: 5 | text-title-md: 7
text-sm/text-2xs/text-xs в src/: 0 (только в styles.css комментариях)
Поведение всех 277 typography usages теперь явно соответствует handoff —
каждое место осознанно выбрано под роль, не плажирующий override.
2026-05-11 14:31:35 +03:00
Zimin A.N.
71432e9ae7
fix(fonts): align all text sizes to handoff spec via Tailwind theme overrides
...
Глобальные правки через @theme в styles.css вместо 200+ точечных правок:
- text-sm: 14px -> 13px (handoff workhorse — body, buttons, tabs)
- text-2xs: undefined -> 11px (handoff IDs, mono meta — было невидимо)
- @utility text-cap: 10.5px Tektur uppercase 0.10em (handoff caps)
Codemod (30 sites): text-2xs + uppercase + tracking-[0.10em] -> text-cap.
Sidebar section labels consolidated с explicit text-[10.5px] на text-cap.
Покрывает 64 text-sm + 148 text-2xs автоматически. Table cells (12.5px)
и page/modal titles (17px/22px) остаются explicit text-[Npx] arbitrary
values по месту — нет slots в Tailwind scale.
2026-05-11 14:12:57 +03:00
Александр Зимин
649b7c4244
feat(admin-ui): shadcn TextArea (Stage 3.8a)
2026-05-11 09:13:10 +00:00
Александр Зимин
e2f1c3527b
feat(admin-ui): sonner Toast + TimeTravel polish (Stage 3.6+3.7)
2026-05-11 09:11:21 +00:00
Александр Зимин
b7d2fbd7ce
feat(admin-ui): codemod @nstart/ui → @/ui (Stage 2.2)
2026-05-10 22:17:06 +00:00
Александр Зимин
5d12c89c4f
feat(admin-ui): shadcn primitives + @/ui barrel (Stage 2.1)
2026-05-10 21:47:24 +00:00