The SafePLC is typically dictated by the platform you're using.
Sensors are tricky and I've never been fully satisfied with anything I used. Most safe inputs send out a stream of pulses and monitor for that stream coming back. This lets them check for circuit breaks, shorts, and wiring mistakes for E-Stops. I haven't found a no contact sensor that will pass these pulses through. There are some sensors made for particular safety systems that support pulses for their own system only, but they typically lack some key anti-tamper feature that still gets them stuck in Cat 3.
I did see one directional magnet based door switch that acted as a relay so it would pass the pulses, but I never got to see what brand it was or a part number. So, they exist, but are hard to find.