You made T depend on both filters and values. When you make both filters and values depend on the same generic T, TypeScript can’t infer the rich component‐types from filters and the key‐based values from values at the same time. So it falls back to a more general type (causing props to become any).
Fix: Infer just from filters (where you know the component types), and then derive values purely from keyof filters. That keeps props strongly typed and keys constrained correctly.