This document describes the visual layout and design specifications for the Business Wallet web user interface. This serves as the design deliverable for FR-0001.
The Business Wallet UI follows these principles:
- Professional and trustworthy: Suitable for organizational use
- Clear information hierarchy: Easy to navigate and understand
- Accessible: WCAG 2.1 Level AA compliant
- Responsive: Works seamlessly on desktop, tablet, and mobile devices
- Modern and clean: Uses contemporary design patterns
The application uses a three-part layout structure:
┌─────────────────────────────────────────────────────┐
│ HEADER (Fixed Top) │
│ Logo | Business Wallet User Info | Avatar │
├──────────┬──────────────────────────────────────────┤
│ │ │
│ SIDEBAR │ MAIN CONTENT AREA │
│ │ │
│ Nav │ Page content rendered here │
│ Items │ via React Router │
│ │ │
│ │ │
├──────────┴──────────────────────────────────────────┤
│ FOOTER │
│ Copyright notice │
└─────────────────────────────────────────────────────┘
Position: Fixed at the top of the viewport Height: ~64px Layout: Flexbox with space-between alignment
Elements:
-
Logo + Title (left side):
- Logo: 48×48px rounded square with "BW" initials
- Background: Blue gradient (#3b82f6 to #2563eb)
- Title: "Business Wallet" in white, 1.5rem font size
-
User Section (right side):
- User name: "Organization Admin" (hidden on mobile)
- Avatar: 36×36px circular with initials "OA"
- Avatar background: Blue (#3b82f6) with light blue border
Styling:
- Background: Gradient from dark blue (#1e3a8a) to slate (#1e293b)
- Color: White text
- Shadow: 0 2px 8px rgba(0,0,0,0.15)
- Padding: 1rem horizontal, responsive
Desktop View:
- Width: 250px
- Position: Fixed left side
- Background: White (#ffffff)
- Border: Right border 1px solid #e2e8f0
- Height: Full viewport height (minus header)
Navigation Items: Each item includes:
- Icon (emoji, 1.25rem): Visual identifier
- Label: Text description
- Active state indicator: 3px blue left border
Navigation Structure:
- 🏠 Home
- 🎫 Credentials
- ✍️ Issue
- 🔗 Share
- 📄 Documents
- ⚙️ Settings
Interaction States:
- Hover: Light gray background (#f1f5f9)
- Active: Light blue background (#eff6ff), blue text (#2563eb), blue left border
- Focus: Blue outline for keyboard navigation
Mobile View (≤768px):
- Converts to horizontal scrollable navigation
- Positioned below header
- Items arranged in a row with icons on top of labels
- Active state: Bottom border instead of left border
Layout:
- Flex: 1 (takes remaining space)
- Padding: 2rem (1.5rem on mobile)
- Background: Light gray (#f8fafc)
- Overflow: Scrollable vertically
Content Rendering:
- React Router Outlet for dynamic page content
- Max content width: Unconstrained (pages control their own max-width)
Position: Bottom of layout Height: Auto (min ~48px) Layout: Centered text
Content:
- Copyright notice: "© 2026 Business Wallet. All rights reserved."
- Font size: 0.875rem
- Color: Gray (#64748b)
Styling:
- Background: White (#ffffff)
- Border: Top border 1px solid #e2e8f0
- Padding: 1rem horizontal
- Primary Blue: #3b82f6 (Buttons, active states, accents)
- Dark Blue: #2563eb (Hover states, darker accents)
- Navy Blue: #1e3a8a (Header gradient start)
- Dark Slate: #1e293b (Dark text, header gradient end)
- Slate: #475569 (Secondary text)
- Gray: #64748b (Tertiary text, placeholder)
- Light Gray: #cbd5e1 (Borders, disabled)
- Very Light Gray: #e2e8f0 (Dividers, subtle borders)
- Background: #f8fafc (Page background)
- White: #ffffff (Cards, sidebar, footer)
- Success: #10b981 (Checkmarks, success states)
- Info: #3b82f6 (Information, links)
- Warning: #f59e0b (Warnings - not yet used)
- Error: #ef4444 (Errors - not yet used)
- Background colors: Navy gradient for header, light gray for main area, white for components
- Text colors: Dark slate for headings, slate/gray for body text
- Interactive elements: Blue for links and active states
- Borders: Light gray shades for subtle separation
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
Oxygen, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;Uses system fonts for optimal performance and native feel.
-
Headings:
- H1 (Page title in header): 1.5rem (24px)
- H2 (Page headings): 2rem (32px), mobile: 1.75rem
- H3 (Section headings): 1.25-1.5rem (20-24px)
-
Body Text:
- Regular: 1rem (16px)
- Small: 0.875rem (14px)
- Large: 1.125rem (18px)
- Regular: 400 (body text)
- Medium: 500 (navigation, labels)
- Semibold: 600 (headings, emphasis)
- Bold: 700 (hero titles, strong emphasis)
- Headings: 1.2
- Body text: 1.5
- Dense text: 1.75
Uses a consistent 8px base unit system:
- 0.25rem = 4px
- 0.5rem = 8px
- 0.75rem = 12px
- 1rem = 16px
- 1.5rem = 24px
- 2rem = 32px
- 3rem = 48px
- Background: White
- Border: 1px solid #e2e8f0
- Border radius: 0.5rem (8px)
- Padding: 1.5rem (24px)
- Shadow on hover: 0 4px 6px rgba(0,0,0,0.1)
- Transition: 0.2s ease
- Hover effect: Slight lift (translateY(-2px))
- Background: White
- Border: 2px dashed #cbd5e1
- Border radius: 0.5rem (8px)
- Padding: 3rem 2rem (mobile: 2rem 1rem)
- Text alignment: Center
- Icon size: 4rem (64px), opacity 0.5
- Primary: Blue background (#3b82f6), white text
- Border radius: 0.375rem (6px)
- Padding: 0.5rem 1rem
- Transition: All 0.2s
- Hover: Darker blue (#2563eb)
- Focus: 2px outline, 2px offset
- Mobile: ≤640px
- Tablet: 641px - 768px
- Desktop: >768px
-
Header:
- Smaller logo (40×40px)
- Smaller title (1.25rem)
- Hide user name, show only avatar
-
Sidebar:
- Converts to horizontal scrollable bar
- Positioned below header
- Icons above labels
- Scrollable if items overflow
-
Main Content:
- Reduced padding (1.5rem → 1rem)
- Full width utilization
-
Feature Cards:
- Single column layout
- Full width cards
- Similar to desktop but with narrower sidebar
- Feature cards may start wrapping to 2 columns
- Full layout as designed
- Sidebar fixed on left (250px)
- Multi-column feature card grid
- Optimal spacing and padding
- All interactive elements are keyboard accessible
- Visible focus indicators (2px blue outline)
- Logical tab order (header → sidebar → main content → footer)
- Semantic HTML elements (header, nav, main, footer)
- ARIA labels where appropriate
- Meaningful link text
- All text meets WCAG AA contrast requirements:
- White text on navy background: >7:1
- Dark text on white background: >12:1
- Gray text on white background: >4.5:1
- Clear visual hierarchy
- Sufficient spacing between interactive elements (min 44×44px touch targets)
- Icons supplemented with text labels
- Clear active/hover states
- Initials: "BW" (Business Wallet)
- Shape: Rounded square (8px border-radius)
- Size: 48×48px (desktop), 40×40px (mobile)
- Background: Linear gradient from #3b82f6 to #2563eb
- Text: White, bold (700 weight), 1.25rem
- Shadow: 0 4px 6px rgba(0,0,0,0.1)
Primary brand color is blue (#3b82f6), representing:
- Trust and security
- Professionalism
- Technology and innovation
- Stability and reliability
The current "BW" placeholder should be replaced with:
- Professional logo design
- SVG format for scalability
- Alt text for accessibility
- Multiple sizes for different contexts
- Hero section with welcome message
- Grid of feature cards (4 items, responsive)
- Clear call-to-action in descriptions
- Page title (H2)
- Page description paragraph
- Placeholder content area
- Consistent spacing and layout
- Dark Mode: Alternative color scheme for low-light environments
- Custom Theming: Organization-specific color customization
- Advanced Navigation: Breadcrumbs, sub-navigation
- Action Buttons: Primary and secondary button styles
- Form Components: Input fields, dropdowns, checkboxes
- Modal Dialogs: For confirmations and detailed views
- Notifications: Toast messages for user feedback
- Data Tables: For credential and document listings
- Search Bar: Global search in header
- User Menu: Dropdown for profile, settings, logout
- Smooth transitions (0.2s ease)
- Subtle hover effects
- Loading states and spinners
- Skeleton screens for content loading
- Micro-interactions for better UX
- Framework: React 19 with TypeScript
- Routing: React Router DOM v7
- Build Tool: Vite
- Styling: CSS with custom properties (no framework)
- Icons: Currently using emoji (to be replaced with icon library)
- Component-scoped CSS files
- Global styles in index.css
- CSS custom properties for theming (future)
- Mobile-first responsive design
- Flexbox for layout
- Minimal CSS framework overhead (custom CSS)
- System fonts for fast loading
- Optimized images and assets
- Code splitting with React Router
- Lazy loading for future pages
- Desktop Home View: Shows header, sidebar, and main content
- Desktop Credentials View: Demonstrates active navigation state
- Mobile View: Shows responsive horizontal navigation
Available in the Color Palette section above.
Available in the Typography section above.
- v1.0 (2026-02-11): Initial layout design with header, sidebar, main area, and footer
- Product Owner reviews design documentation
- Stakeholder feedback collection
- Iterative improvements based on feedback
- Implementation validation
- User testing and refinement
Document Version: 1.0
Last Updated: 2026-02-11
Status: Ready for Review
Deliverable for: FR-0001 - Create basic visual layout for the web UI main page