2e23a032d3
This PR implements the Hub Navigation system and the Profile Dashboard, while resolving critical session synchronization issues. ### Key Changes - **Hub Navigation**: Introduced `MainHubLayout` with a premium glassmorphism sidebar, providing access to Dashboard, Library, Concepts Map, and Profile. - **Profile Dashboard**: Implemented a high-fidelity Profile page (#27) with learning metrics, AI token usage tracking, and system rank visualization. - **Stability Fixes**: - Resolved an infinite network loop on the `/profile` page by implementing request deduplication and in-memory caching in `IdentityService`. - Added environment-aware guards to prevent illegal JavaScript interop calls during server-side prerendering. - Implemented automatic session invalidation on `401 Unauthorized` responses to handle stale authentication states gracefully. - **Reader Integration**: Added a "Return to Dashboard" option in the reader toolbar (#26). Closes #26 Closes #27 Reviewed-on: #31 Co-authored-by: Marek Jasiński <jasins.marek@gmail.com> Co-committed-by: Marek Jasiński <jasins.marek@gmail.com>
2.5 KiB
2.5 KiB
name, description
| name | description |
|---|---|
| nexus-ui-engine | Design System & Component rules for Blazor |
UI Standards
-
Atomic Design:
- Build reusable components in
NexusReader.UI.Shared/Components. Atoms: Base elements (NexusButton,NexusIcon,NexusTypography).Molecules: Small groups (AiAssistantBubble,KnowledgeCheck).Organisms: High-level sections (KnowledgeGraph,ReaderCanvas).
- Build reusable components in
-
Styling & Isolation:
- Mandatory use of scoped CSS (
.razor.css). - No global CSS except for design tokens in
app.css. - Use
::deeponly when absolutely necessary to style child components.
- Mandatory use of scoped CSS (
-
Design System (Nexus Neon):
- Color Palette:
- Primary Accent:
--nexus-neon(#00ff99) - Used for borders, highlights, and icons. - Dark Mode:
--nexus-bg(#0a0a0a),--nexus-card(#141414). - Light Mode:
--nexus-bg(#f8f9fa),--nexus-card(#ffffff).
- Primary Accent:
- Typography:
- UI Elements:
Inter(Sans-Serif) for controls, menus, and labels. - Reading Content:
Merriweather(Serif) withline-height: 1.65andletter-spacing: -0.01emfor high readability.
- UI Elements:
- Effects:
- Subtle neon glows (
box-shadow: 0 0 15px rgba(0, 255, 153, 0.3)). - Glassmorphism for overlays and modals.
- Subtle neon glows (
- Color Palette:
-
Adaptive Layouts:
- Support
.platform-mobileand.platform-desktopcontext classes. - Handle safe-area insets (
--safe-area-inset-*) for mobile devices. - Immersive Reader (Zen Mode):
- Centered content flow:
max-width: 800px,margin: 0 auto. - Paper-white background:
#F9F9F9for light mode reader canvas. - Dedicated Scrollbars: Custom styled, thin scrollbars with
--nexus-neonaccents. - Reachability: Large
padding-bottom(e.g.,15rem) to ensure comfortable reading of end-of-page content.
- Centered content flow:
- Support
-
Accessibility (A11y):
- Touch Targets: Min
44x44pxon mobile (enforced via CSS variables). - Contrast: Minimum ratio of 4.5:1.
- Semantic HTML: Use appropriate tags (
<button>,<article>,<nav>).
- Touch Targets: Min
-
Interactive Flow:
- AI Assistant interactions must be non-blocking and smoothly transition using CSS animations.
- Interactive elements must have clear
:hover,:active, and:focusstates. - Glass Panel Standard: All primary data panels (
.glass-panel) must implement the following interaction signature:transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1):hoverstate must include:transform: translateY(-4px), increased background opacity, and a subtle--nexus-neonborder highlight (e.g.,rgba(0, 255, 153, 0.2)).