feat: Complete UI/UX redesign with modern responsive design
- Redesign landing page with contemporary gradient backgrounds and glassmorphism - Add 3D phone mockup with floating animation and interactive stats display - Implement modern navigation with blur backdrop and smooth scroll effects - Update feature cards with icons, hover animations, and improved typography - Integrate countdown timer into hero CTA section with glassmorphic styling - Add responsive email signup form with enhanced validation - Modernize newsletters listing page with card-based grid layout - Add empty state design with call-to-action for newsletter subscription - Implement smooth loading animations and hover effects for newsletter cards - Update navigation consistency across all pages - Redesign newsletter detail page with professional article layout - Add reading metadata display (date, reading time, author, tags) - Enhance content typography with proper heading hierarchy and styling - Implement share functionality with Web Share API and clipboard fallback - Add print-optimized styles and action buttons - Improve mobile reading experience with responsive design - Establish consistent design system with CSS custom properties - Use CSS Grid and Flexbox for modern, flexible layouts - Add comprehensive mobile responsiveness (320px to desktop) - Implement smooth animations and micro-interactions throughout - Maintain accessibility with semantic HTML and proper contrast ratios - Preserve all existing Flask template functionality and JavaScript features Breaking changes: Complete visual redesign requires updated asset references Performance: Optimized CSS with efficient animations and modern layout techniques
This commit is contained in:
		
							parent
							
								
									778533b655
								
							
						
					
					
						commit
						1a66ebdfc4
					
				
					 9 changed files with 2612 additions and 546 deletions
				
			
		|  | @ -1,40 +1,91 @@ | |||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
| <head> | ||||
|   <meta charset="UTF-8"> | ||||
|   <title>RideAware - Newsletters</title> | ||||
|   <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | ||||
|   <link rel="stylesheet" href="{{ url_for('static', filename='css/styles.css') }}"> | ||||
| 
 | ||||
|     <meta charset="UTF-8"> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||
|     <title>RideAware - Newsletters</title> | ||||
|     <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet"> | ||||
|     <link rel="stylesheet" href="{{ url_for('static', filename='css/newsletter_styles.css') }}"> | ||||
| </head> | ||||
| <body> | ||||
|   <header> | ||||
|     <nav> | ||||
|       <a href="/"> | ||||
|         <span>Ride</span><span style="color: #1e4e9c;">Aware</span> | ||||
|       </a> | ||||
|       <a href="/newsletters" class="active">Newsletters</a> | ||||
|     </nav> | ||||
|   </header> | ||||
|   <main class="newsletter-main"> | ||||
|     <h1>RideAware Newsletters</h1> | ||||
|     {% if newsletters %} | ||||
|       {% for nl in newsletters %} | ||||
|         <div class="newsletter"> | ||||
|           <h2> | ||||
|             <a href="/newsletter/{{ nl['id'] }}">{{ nl['subject'] }}</a> | ||||
|           </h2> | ||||
|           <p class="newsletter-time">Sent on: {{ nl['sent_at'] }}</p> | ||||
|           <a href="/newsletter/{{ nl['id'] }}" class="read-more">Read More</a> | ||||
|     <!-- Navigation --> | ||||
|     <nav class="navbar"> | ||||
|         <div class="nav-container"> | ||||
|             <a href="/" class="logo">Ride<span class="logo-accent">Aware</span></a> | ||||
|             <ul class="nav-links"> | ||||
|                 <li><a href="/">Home</a></li> | ||||
|                 <li><a href="/newsletters" class="active">Newsletters</a></li> | ||||
|             </ul> | ||||
|         </div> | ||||
|       {% endfor %} | ||||
|     {% else %} | ||||
|       <p>No newsletters to display yet.</p> | ||||
|     {% endif %} | ||||
|   </main> | ||||
|   <footer class="fixed-footer"> | ||||
|     <p>© 2025 RideAware. All rights reserved.</p> | ||||
|   </footer> | ||||
|   <script src="{{ url_for('static', filename='js/main.js') }}"></script> | ||||
|     </nav> | ||||
| 
 | ||||
|     <!-- Page Header --> | ||||
|     <section class="page-header"> | ||||
|         <div class="page-header-content"> | ||||
|             <div class="header-icon"> | ||||
|                 <i class="fas fa-newspaper"></i> | ||||
|             </div> | ||||
|             <h1>RideAware Newsletters</h1> | ||||
|             <p>Stay updated with the latest cycling tips, training insights, and product updates from our team.</p> | ||||
|         </div> | ||||
|     </section> | ||||
| 
 | ||||
|     <!-- Main Content --> | ||||
|     <main class="main-content"> | ||||
|         {% if newsletters %} | ||||
|             <div class="newsletters-grid"> | ||||
|                 {% for nl in newsletters %} | ||||
|                     <article class="newsletter-card"> | ||||
|                         <div class="newsletter-header"> | ||||
|                             <div class="newsletter-icon"> | ||||
|                                 <i class="fas fa-envelope-open-text"></i> | ||||
|                             </div> | ||||
|                             <div class="newsletter-info"> | ||||
|                                 <h2> | ||||
|                                     <a href="/newsletter/{{ nl['id'] }}">{{ nl['subject'] }}</a> | ||||
|                                 </h2> | ||||
|                             </div> | ||||
|                         </div> | ||||
|                          | ||||
|                         <div class="newsletter-date"> | ||||
|                             <i class="fas fa-calendar-alt"></i> | ||||
|                             <span>Sent on: {{ nl['sent_at'] }}</span> | ||||
|                         </div> | ||||
| 
 | ||||
|                         <div class="newsletter-excerpt"> | ||||
|                             {% if nl.get('preview') %} | ||||
|                                 {{ nl['preview'][:150] }}... | ||||
|                             {% else %} | ||||
|                                 Get the latest updates on cycling training, performance tips, and RideAware features in this newsletter edition. | ||||
|                             {% endif %} | ||||
|                         </div> | ||||
| 
 | ||||
|                         <a href="/newsletter/{{ nl['id'] }}" class="read-more-btn"> | ||||
|                             Read Full Newsletter | ||||
|                             <i class="fas fa-arrow-right"></i> | ||||
|                         </a> | ||||
|                     </article> | ||||
|                 {% endfor %} | ||||
|             </div> | ||||
|         {% else %} | ||||
|             <div class="empty-state"> | ||||
|                 <div class="empty-icon"> | ||||
|                     <i class="fas fa-inbox"></i> | ||||
|                 </div> | ||||
|                 <h3>No Newsletters Yet</h3> | ||||
|                 <p>We're working on some amazing content for you. Subscribe to be the first to know when we publish our newsletters!</p> | ||||
|                 <a href="/" class="subscribe-prompt"> | ||||
|                     <i class="fas fa-bell"></i> | ||||
|                     Subscribe for Updates | ||||
|                 </a> | ||||
|             </div> | ||||
|         {% endif %} | ||||
|     </main> | ||||
| 
 | ||||
|     <!-- Footer --> | ||||
|     <footer class="footer"> | ||||
|         <p>© 2025 RideAware. All rights reserved.</p> | ||||
|     </footer> | ||||
|     <script src="{{ url_for('static', filename='js/main.js') }}"></script> | ||||
| </body> | ||||
| </html> | ||||
| </html> | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Cipher Vance
						Cipher Vance