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 ───────────────────────────────────────────── */}
-
{/* ── SHARED CALENDAR section ──────────────────────────────────────── */}
Shared Calendar
@@ -984,9 +976,7 @@ export function AdminPage() {
color: 'var(--color-text-primary)',
borderRadius: 'var(--space-1, 4px)',
cursor: 'pointer',
- background: active
- ? 'var(--color-member-0, #4A90D9)'
- : 'transparent',
+ background: active ? 'var(--color-member-0, #4A90D9)' : 'transparent',
...(active ? { color: '#ffffff' } : null),
minHeight: '44px',
display: 'flex',
@@ -1069,10 +1059,10 @@ export function AdminPage() {
>
)}
-
-
{/* end admin-panel-settings */}
-
- {/* end centered content column */}
+
+ {/* end admin-panel-settings */}
+
+ {/* end centered content column */}
{/* ── Success toast (D-08) ──────────────────────────────────────────────── */}
{toast && (