I believe the problem is that the first argument to is_state is an “entity_id” string or array of strings. However, you are piping the output of selectattr, which will be an array of entity objects (once the generator generates them). Therefore you could do it after you use map to get the “entity_id”:
{{
states.light
| selectattr('entity_id', 'in', area_entities('Family Room'))
| map(attribute='entity_id')
| select('is_state', 'on')
| list
}}