refactor(web): split 16 oversized components into focused modules (#74)
* fix(test): stabilize auth mocks to prevent infinite re-render loops
The useAuth mock created new function references on every call, causing
components with getAccessToken in useCallback/useEffect deps to enter
infinite re-render loops. Extract mock object to a stable reference.
Also add maxWorkers (cpuCount/2) and testTimeout (10s) to vitest config
to reduce CPU contention and give axe-core tests adequate time.
* refactor(web): split 16 oversized components into ~38 focused modules
Enforce ~150-line limit for non-page TSX files by extracting cohesive
sub-components. All 606 tests pass, typecheck clean, zero regressions.
Priority 1 (400+ lines): admin/moderation, admin/sybil-detection,
admin/settings, settings, community-profile-settings, admin/plugins.
Priority 2 (250-400 lines): admin/onboarding, admin/trust-seeds,
admin/categories, onboarding-modal, topic-form, settings/reports.
Priority 3 (150-250 lines): report-dialog, markdown-editor,
community-profile-settings, search-input.
Also adds formatDateShort to shared format utilities and extracts
useCommunityProfile hook.
authored by