[CL-REACT-DOCTOR-LB] refactor(Lightbox): чистим 9 react-doctor warnings + smoke-test #104
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/claude-lightbox-warnings-cleanup"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что сделано
framer-motion: переходим наLazyMotion+m(ruleuse-lazy-motion)h-9 w-9→size-9,h-10 w-10→size-10(ruledesign-no-redundant-size-axes×3)role="toolbar"+onKeyDownна верхний бар,role="tablist"на дот-индикаторы (rulesclick-events-have-key-events×2 +no-static-element-interactions×2)no-array-index-as-key, 1 из 2)app/src/components/shared/__tests__/Lightbox.test.tsx(11 кейсов): counter, навигация, role-атрибуты, size-классы, body scroll lock, dot ключиframer-motionвapp/src/__tests__/setup.tsрасширен наm,LazyMotion,domAnimation(Rule E)Зачем
Phase 2 react-doctor hygiene после wire-up PR #102. Из 14 warnings на
app/src/components/shared/Lightbox.tsxзакрываем 9. GitNexus impact analysis: LOW risk, 0 upstream callers — pure internal refactor, никаких поведенческих изменений.План тестирования
cd app && npx tsc --noEmit— cleancd app && npx eslint src/components/shared/Lightbox.tsx --max-warnings 0— cleancd app && npx vitest run src/components/shared/__tests__/Lightbox.test.tsx— 11/11 PASScd app && npx react-doctor . --offline --lint -y --json-> Lightbox 14 -> 5 warnings, app-wide errors = 0 (CI gate--fail-on errorостаётся green)Где могу ошибаться
prefer-use-effect-eventоставлены как warnings — API экспериментальный (experimental_useEffectEvent), включать в production не готов. Можно вернуться когда React 19.x стабилизирует.no-derived-useState(scaleRef pattern) оставлен — намеренный для избежания stale closure внутриsetTimeoutвhandleImageClickno-array-index-as-keyостался — возможно второе срабатывание не на дотах, требует follow-up scan / patchLazyMotionприменён локально внутриLightbox.tsx. Долгосрочно правильнее обернуть весь app вmain.tsxдля bundle savings глобально — отдельный PR (touches protected file)