@@ -468,39 +468,63 @@ Location: `packages/frontend/project/page/flyouts/`
468468 - [ ] Settings: Proper form labeling
469469 - [ ] Status: Save status announcements
470470
471- ### Phase 12: App Shell & Navigation ⏳ PENDING
471+ ### Phase 12: App Shell & Navigation ✅ P0 COMPLETED | P1 PENDING
472472
473473** Priority: HIGH** - Framework for entire app
474474
475475Location: ` packages/frontend/app/ `
476476
477- - [ ] ** page.tsx** - Main application container (323 lines)
478- - [ ] Root structure: Ensure proper landmark hierarchy
479- - [ ] Content switching: Announce page changes
480- - [ ] Notification center connection display
477+ #### ** P0 - Critical Foundation** ✅ COMPLETED
481478
482- - [ ] ** nav-tab.tsx** - Top navigation tabs
483- - [ ] Tab items: ` role="tab" ` with ` aria-selected ` , ` aria-controls `
484- - [ ] Each tab: Clear context (Projects, Account, Admin, etc.)
485- - [ ] Hover/focus states: Visual + ARIA
479+ - [x] ** page.tsx** - Main application container
480+ - [x] Root ` <main role="main" aria-label="{site_name} application"> ` (line 368-369)
481+ - [x] Dynamic label uses customizable site_name from customize store
482+ - [x] Fallback to SITE_NAME constant from @cocalc/util /theme
483+ - [x] Right nav region: ` role="region" aria-label="Top navigation controls" ` (line 292-293)
484+
485+ - [x] ** nav-tab.tsx** - Top navigation tabs with keyboard support
486+ - [x] NavTab component: Added optional ` role ` and ` aria-label ` props
487+ - [x] Made keyboard accessible: ` tabIndex={0} ` + ` onKeyDown ` for Enter/Space
488+ - [x] Default ` role="button" ` with override capability
489+ - [x] Supports all navigation items: Projects, Account, Admin, Help, Sign In
490+
491+ - [x] ** connection-indicator.tsx** - Network status live region
492+ - [x] Status indicator: ` role="status" ` (line 119)
493+ - [x] Live region: ` aria-live="polite" ` to announce connection changes (line 121)
494+ - [x] Busy state: ` aria-busy={true} ` when connecting (line 122)
495+ - [x] Dynamic label: ` aria-label={getConnectionLabel()} ` showing current state (line 120)
496+ - [x] Keyboard support: ` tabIndex={0} ` + Enter/Space activation
497+ - [x] Added ` labels.connected ` to i18n/common.ts for proper translation
498+
499+ ** Files Modified** :
500+
501+ - ` packages/frontend/app/page.tsx ` - Root structure with site_name and right-nav region
502+ - ` packages/frontend/app/nav-tab.tsx ` - ARIA props and keyboard accessibility
503+ - ` packages/frontend/app/connection-indicator.tsx ` - Status live region with i18n labels
504+ - ` packages/frontend/i18n/common.ts ` - Added labels.connected
505+
506+ #### ** P1 - Important Improvements** ⏳ PENDING
486507
487508- [ ] ** active-content.tsx** - Content router
488509 - [ ] Dynamic content: Announce when switching pages
489510 - [ ] Loading states: ` aria-busy ` indication
490511 - [ ] Error states: ARIA alert or live region
491512
492- - [ ] ** Banners** - Informational/warning banners
493- - [ ] All banners: ` role="region" aria-label="Information " `
513+ - [ ] ** Banners** - Informational/warning banners (5 files)
514+ - [ ] All banners: ` role="region" aria-label="... " `
494515 - [ ] ` i18n-banner.tsx ` - Language selection
495516 - [ ] ` verify-email-banner.tsx ` - Email verification
496517 - [ ] ` version-warning.tsx ` - Version alerts
497518 - [ ] ` insecure-test-mode-banner.tsx ` - Test mode warning
498- - [ ] Close buttons: ` aria-label="Close" `
519+ - [ ] ` warnings.tsx ` - Cookie/storage warnings
520+
521+ - [ ] ** Notifications** - Notification indicators
522+ - [ ] Notification badges: ` aria-label ` with count
523+ - [ ] Live region: ` aria-live="polite" ` for count changes
499524
500- - [ ] ** Connection Status** - Network status indicator
501- - [ ] Status indicator: ` aria-label ` with current state
502- - [ ] Updates: ` aria-live="polite" ` for status changes
503- - [ ] Tooltip text: Accessible to keyboard users
525+ - [ ] ** projects-nav.tsx** - Project tabs navigation
526+ - [ ] Container: ` aria-label="Open projects" `
527+ - [ ] Tab semantics already handled by Ant Design Tabs
504528
505529### Phase 13: Forms & Settings ⏳ PENDING
506530
0 commit comments