Bookings — Availability is data, not a settings screen
Your opening hours live in a table. Each row is roughly a sentence: this person, this weekday, from this time to this time. Which means you can edit them in a grid, paste a season of them in from a spreadsheet, or have an automation close the shop, using the things you already know how to do.
Two kinds of row. A Working hours row adds time. A Time off row takes it away, and can name a single date, a range, or nobody at all — leave the person blank and it closes the whole business for a bank holiday, in one row.
From there the page subtracts the practical things: slots that overlap a booking you already have, the gap you want either side of an appointment, anything sooner than your minimum notice, anything further out than your booking window. What is left is what a visitor sees. If they have not asked for a particular person, it offers whoever has the lightest recent load rather than always the first name on the list.
The opening hours, as rows. Each is a sentence — this person, this weekday, these hours — and the first one here is a day off, which is the same table saying the opposite thing.