My rule of thumb has always been an average of six hours a day, five days a week. You can generally get developers to write code
sustainably for 30 hours a week as long as the number and length of working days are limited.
They can still be productive past that with tasks other than writing code, and you can push them past that temporarily to hit a deadline, but if you schedule in more than that on a regular basis, things will start to decline in all kinds of ways – morale, retention, quality, tech debt, documentation, etc.
Periodic meaningful time off is also essential – not just from a human perspective but also an operational point of view. It's better to discover single points of failure when you can plan for it rather than unexpectedly. There's an awful lot of organisations I've seen that don't realise what will happen when their lead dev quits / gets sick / gets hit by a bus. I've seen a few people say "vacation is chaos monkey for people" and it really is (anybody know the original source of that quote, by the way?).