Minimal, extensible validation component