Task #743: sidebar «إدارة القاعات» — clearer labels + submenu distinction

- ar.json: protocol.tabs.bookings «حجز القاعات»→«الحجوزات», bookingSettings «إعدادات الحجوزات»→«الإعدادات»
- en.json: "Room Bookings"→"Bookings", "Booking Settings"→"Settings"
- Same keys also serve as page headings (accepted per task), so headings change too.
- protocol.tsx: submenu children of roomsGroup and gifts group now wrapped in a
  container with md:ms-4 md:border-s-2 md:border-slate-300 md:ps-1 (vertical
  guide line + indent, RTL-safe logical props); removed per-button md:ps-6.
  Mobile horizontal layout unchanged.
- tx-os tsc clean; architect review passed.
This commit is contained in:
Replit Agent
2026-07-09 10:10:49 +00:00
parent 271a150246
commit 41c6184b92
3 changed files with 42 additions and 36 deletions
+2 -2
View File
@@ -1670,8 +1670,8 @@
"dashboard": "لوحة المعلومات", "dashboard": "لوحة المعلومات",
"roomsGroup": "إدارة القاعات", "roomsGroup": "إدارة القاعات",
"roomsDashboard": "لوحة القاعات", "roomsDashboard": "لوحة القاعات",
"bookingSettings": "إعدادات الحجوزات", "bookingSettings": "الإعدادات",
"bookings": "حجز القاعات", "bookings": "الحجوزات",
"external": "اجتماعات خارجية", "external": "اجتماعات خارجية",
"giftsGroup": "الهدايا", "giftsGroup": "الهدايا",
"gifts": "المستودع", "gifts": "المستودع",
+2 -2
View File
@@ -1543,8 +1543,8 @@
"dashboard": "Dashboard", "dashboard": "Dashboard",
"roomsGroup": "Rooms Management", "roomsGroup": "Rooms Management",
"roomsDashboard": "Rooms Dashboard", "roomsDashboard": "Rooms Dashboard",
"bookingSettings": "Booking Settings", "bookingSettings": "Settings",
"bookings": "Room Bookings", "bookings": "Bookings",
"external": "External Meetings", "external": "External Meetings",
"giftsGroup": "Gifts", "giftsGroup": "Gifts",
"gifts": "Warehouse", "gifts": "Warehouse",
+12 -6
View File
@@ -1490,13 +1490,14 @@ export default function ProtocolPage() {
)} )}
/> />
</button> </button>
{open && {open && (
children.map(({ key: ck, label: cl, icon: CIcon }) => ( <div className="flex md:flex-col gap-1 md:ms-4 md:border-s-2 md:border-slate-300 md:ps-1">
{children.map(({ key: ck, label: cl, icon: CIcon }) => (
<button <button
key={ck} key={ck}
onClick={() => setTab(ck)} onClick={() => setTab(ck)}
className={cn( className={cn(
"flex items-center gap-2 px-3 py-2 text-sm whitespace-nowrap transition-colors md:w-full md:justify-start md:ps-6", "flex items-center gap-2 px-3 py-2 text-sm whitespace-nowrap transition-colors md:w-full md:justify-start",
tab === ck tab === ck
? "bg-sky-500 text-white" ? "bg-sky-500 text-white"
: "text-slate-600 hover:bg-slate-200", : "text-slate-600 hover:bg-slate-200",
@@ -1507,6 +1508,8 @@ export default function ProtocolPage() {
</button> </button>
))} ))}
</div> </div>
)}
</div>
); );
} }
if (key === "gifts") { if (key === "gifts") {
@@ -1538,13 +1541,14 @@ export default function ProtocolPage() {
)} )}
/> />
</button> </button>
{open && {open && (
children.map(({ key: ck, label: cl, icon: CIcon }) => ( <div className="flex md:flex-col gap-1 md:ms-4 md:border-s-2 md:border-slate-300 md:ps-1">
{children.map(({ key: ck, label: cl, icon: CIcon }) => (
<button <button
key={ck} key={ck}
onClick={() => setTab(ck)} onClick={() => setTab(ck)}
className={cn( className={cn(
"flex items-center gap-2 px-3 py-2 text-sm whitespace-nowrap transition-colors md:w-full md:justify-start md:ps-6", "flex items-center gap-2 px-3 py-2 text-sm whitespace-nowrap transition-colors md:w-full md:justify-start",
tab === ck tab === ck
? "bg-sky-500 text-white" ? "bg-sky-500 text-white"
: "text-slate-600 hover:bg-slate-200", : "text-slate-600 hover:bg-slate-200",
@@ -1555,6 +1559,8 @@ export default function ProtocolPage() {
</button> </button>
))} ))}
</div> </div>
)}
</div>
); );
} }
return ( return (