diff --git a/apps/pwa/src/routes/AdminPage.tsx b/apps/pwa/src/routes/AdminPage.tsx index 008e909..c953fcd 100644 --- a/apps/pwa/src/routes/AdminPage.tsx +++ b/apps/pwa/src/routes/AdminPage.tsx @@ -244,9 +244,7 @@ export function AdminPage() { e.preventDefault(); setActiveTab(next); ( - e.currentTarget.parentElement?.querySelector( - `[id="admin-tab-${next}"]`, - ) as HTMLElement | null + e.currentTarget.parentElement?.querySelector(`[id="admin-tab-${next}"]`) as HTMLElement | null )?.focus(); } @@ -370,13 +368,9 @@ export function AdminPage() { fontSize: 'var(--text-label-size, 13px)', fontWeight: activeTab === id ? 600 : 400, color: - activeTab === id - ? 'var(--color-text-primary)' - : 'var(--color-text-secondary)', + activeTab === id ? 'var(--color-text-primary)' : 'var(--color-text-secondary)', borderBottom: - activeTab === id - ? '2px solid var(--color-member-0)' - : '2px solid transparent', + activeTab === id ? '2px solid var(--color-member-0)' : '2px solid transparent', transition: 'color 0.1s ease, border-color 0.1s ease', fontFamily: 'var(--font-family-base)', }} @@ -394,281 +388,280 @@ export function AdminPage() { tabIndex={0} hidden={activeTab !== 'members'} > - {/* ── MEMBERS section ───────────────────────────────────────────── */}
-
Members
+
Members
- {membersQuery.isLoading && ( -
- Loading members… -
- )} + {membersQuery.isLoading && ( +
+ Loading members… +
+ )} - {membersQuery.isError && ( -
- Could not load members. -
- )} + {membersQuery.isError && ( +
+ Could not load members. +
+ )} - {membersQuery.data && ( -
- {membersQuery.data.members.map((member, idx) => ( - openSheet(member, buttonRef)} - onResetPassword={(buttonRef) => { - // Capture trigger button so focus can return on close - resetTriggerRef.current = buttonRef.current; - setResetTargetMember(member); - setResetSheetOpen(true); - }} - /> - ))} -
- )} -
+ {membersQuery.data && ( +
+ {membersQuery.data.members.map((member, idx) => ( + openSheet(member, buttonRef)} + onResetPassword={(buttonRef) => { + // Capture trigger button so focus can return on close + resetTriggerRef.current = buttonRef.current; + setResetTargetMember(member); + setResetSheetOpen(true); + }} + /> + ))} +
+ )} + {/* ── LOCAL ACCOUNTS section ──────────────────────────────────────── */}
Local Accounts
- {/* Surface 11A — Add member inline form */} -
+ {/* Surface 11A — Add member inline form */}
- Add member -
- - {/* Display name */} -
- - setCreateDisplayName(e.target.value)} - style={{ - width: '100%', - boxSizing: 'border-box', - padding: 'var(--space-3, 12px) var(--space-4, 16px)', - border: '1px solid var(--color-border)', - borderRadius: 'var(--space-1, 4px)', - fontSize: 'var(--text-body-size, 15px)', - color: 'var(--color-text-primary)', - background: 'var(--color-surface)', - fontFamily: 'var(--font-family-base)', - outline: 'none', - minHeight: '44px', - }} - /> -
- - {/* Username */} -
- - setCreateUsername(e.target.value)} - style={{ - width: '100%', - boxSizing: 'border-box', - padding: 'var(--space-3, 12px) var(--space-4, 16px)', - border: '1px solid var(--color-border)', - borderRadius: 'var(--space-1, 4px)', - fontSize: 'var(--text-body-size, 15px)', - color: 'var(--color-text-primary)', - background: 'var(--color-surface)', - fontFamily: 'var(--font-family-base)', - outline: 'none', - minHeight: '44px', - }} - /> -
- - {/* Initial password */} -
- - setCreatePassword(e.target.value)} - style={{ - width: '100%', - boxSizing: 'border-box', - padding: 'var(--space-3, 12px) var(--space-4, 16px)', - border: '1px solid var(--color-border)', - borderRadius: 'var(--space-1, 4px)', - fontSize: 'var(--text-body-size, 15px)', - color: 'var(--color-text-primary)', - background: 'var(--color-surface)', - fontFamily: 'var(--font-family-base)', - outline: 'none', - minHeight: '44px', - }} - /> -
- - {/* Confirm password */} -
- - setCreateConfirmPassword(e.target.value)} - style={{ - width: '100%', - boxSizing: 'border-box', - padding: 'var(--space-3, 12px) var(--space-4, 16px)', - border: '1px solid var(--color-border)', - borderRadius: 'var(--space-1, 4px)', - fontSize: 'var(--text-body-size, 15px)', - color: 'var(--color-text-primary)', - background: 'var(--color-surface)', - fontFamily: 'var(--font-family-base)', - outline: 'none', - minHeight: '44px', - }} - /> -
- - {/* Inline error */} - {createError && (
- {createError} -
- )} - - {/* Action row */} -
- -
-
-
+ - {/* end admin-panel-members */} + {/* Display name */} +
+ + setCreateDisplayName(e.target.value)} + style={{ + width: '100%', + boxSizing: 'border-box', + padding: 'var(--space-3, 12px) var(--space-4, 16px)', + border: '1px solid var(--color-border)', + borderRadius: 'var(--space-1, 4px)', + fontSize: 'var(--text-body-size, 15px)', + color: 'var(--color-text-primary)', + background: 'var(--color-surface)', + fontFamily: 'var(--font-family-base)', + outline: 'none', + minHeight: '44px', + }} + /> +
+ + {/* Username */} +
+ + setCreateUsername(e.target.value)} + style={{ + width: '100%', + boxSizing: 'border-box', + padding: 'var(--space-3, 12px) var(--space-4, 16px)', + border: '1px solid var(--color-border)', + borderRadius: 'var(--space-1, 4px)', + fontSize: 'var(--text-body-size, 15px)', + color: 'var(--color-text-primary)', + background: 'var(--color-surface)', + fontFamily: 'var(--font-family-base)', + outline: 'none', + minHeight: '44px', + }} + /> +
+ + {/* Initial password */} +
+ + setCreatePassword(e.target.value)} + style={{ + width: '100%', + boxSizing: 'border-box', + padding: 'var(--space-3, 12px) var(--space-4, 16px)', + border: '1px solid var(--color-border)', + borderRadius: 'var(--space-1, 4px)', + fontSize: 'var(--text-body-size, 15px)', + color: 'var(--color-text-primary)', + background: 'var(--color-surface)', + fontFamily: 'var(--font-family-base)', + outline: 'none', + minHeight: '44px', + }} + /> +
+ + {/* Confirm password */} +
+ + setCreateConfirmPassword(e.target.value)} + style={{ + width: '100%', + boxSizing: 'border-box', + padding: 'var(--space-3, 12px) var(--space-4, 16px)', + border: '1px solid var(--color-border)', + borderRadius: 'var(--space-1, 4px)', + fontSize: 'var(--text-body-size, 15px)', + color: 'var(--color-text-primary)', + background: 'var(--color-surface)', + fontFamily: 'var(--font-family-base)', + outline: 'none', + minHeight: '44px', + }} + /> +
+ + {/* Inline error */} + {createError && ( +
+ {createError} +
+ )} + + {/* Action row */} +
+ +
+ + + + {/* end admin-panel-members */} {/* ── Tab panel: Settings ───────────────────────────────────────────── */} {/* end admin-panel-settings */} - - {/* end centered content column */} + + {/* end admin-panel-settings */} + + {/* end centered content column */} {/* ── Success toast (D-08) ──────────────────────────────────────────────── */} {toast && (