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,32 +1,120 @@ | |||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
| <head> | ||||
|   <meta charset="UTF-8" /> | ||||
|   <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||
|   <title>RideAware - Newsletter Detail</title> | ||||
|   <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 - {{ newsletter.subject if newsletter else 'Newsletter Detail' }}</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">Newsletters</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">Newsletters</a></li> | ||||
|             </ul> | ||||
|         </div> | ||||
|     </nav> | ||||
|   </header> | ||||
|    | ||||
|   <main> | ||||
|     <a href="/newsletters" class="back-link">← Back to Newsletters</a> | ||||
|       <h1>{{ newsletter.subject }}</h1> | ||||
|       <div class="newsletter-content"> | ||||
|         {{ newsletter.body | safe }} | ||||
|       </div> | ||||
|   </main> | ||||
|    | ||||
|   <footer class="normal-footer"> | ||||
|     <p>© 2025 RideAware. All rights reserved.</p> | ||||
|   </footer> | ||||
|   <script src="{{ url_for('static', filename='js/main.js') }}"></script> | ||||
| 
 | ||||
|     <!-- Back Navigation --> | ||||
|     <div class="back-navigation"> | ||||
|         <a href="/newsletters" class="back-link"> | ||||
|             <i class="fas fa-arrow-left"></i> | ||||
|             Back to Newsletters | ||||
|         </a> | ||||
|     </div> | ||||
| 
 | ||||
|     <!-- Main Content --> | ||||
|     <main class="main-content"> | ||||
|         <!-- Newsletter Header --> | ||||
|         <div class="newsletter-header"> | ||||
|             <div class="newsletter-icon"> | ||||
|                 <i class="fas fa-envelope-open-text"></i> | ||||
|             </div> | ||||
|             <h1>{{ newsletter.subject if newsletter else 'Newsletter Title' }}</h1> | ||||
|              | ||||
|             <div class="newsletter-meta"> | ||||
|                 <div class="meta-item"> | ||||
|                     <i class="fas fa-calendar-alt"></i> | ||||
|                     <span>{{ newsletter.sent_at if newsletter else 'Published Date' }}</span> | ||||
|                 </div> | ||||
|                 {% if newsletter and newsletter.get('reading_time') %} | ||||
|                 <div class="meta-item"> | ||||
|                     <i class="fas fa-clock"></i> | ||||
|                     <span>{{ newsletter.reading_time }} min read</span> | ||||
|                 </div> | ||||
|                 {% endif %} | ||||
|                 {% if newsletter and newsletter.get('author') %} | ||||
|                 <div class="meta-item"> | ||||
|                     <i class="fas fa-user"></i> | ||||
|                     <span>{{ newsletter.author }}</span> | ||||
|                 </div> | ||||
|                 {% endif %} | ||||
|             </div> | ||||
| 
 | ||||
|             {% if newsletter and newsletter.get('tags') %} | ||||
|             <div class="newsletter-tags"> | ||||
|                 {% for tag in newsletter.tags %} | ||||
|                 <span class="tag">{{ tag }}</span> | ||||
|                 {% endfor %} | ||||
|             </div> | ||||
|             {% else %} | ||||
|             <div class="newsletter-tags"> | ||||
|                 <span class="tag">Cycling Tips</span> | ||||
|                 <span class="tag">Training</span> | ||||
|                 <span class="tag">Performance</span> | ||||
|             </div> | ||||
|             {% endif %} | ||||
|         </div> | ||||
| 
 | ||||
|         <!-- Newsletter Content --> | ||||
|         <article class="newsletter-content"> | ||||
|             {% if newsletter %} | ||||
|                 {{ newsletter.body | safe }} | ||||
|             {% else %} | ||||
|                 <h2>Welcome to RideAware Newsletter</h2> | ||||
|                 <p>This is a sample newsletter content that demonstrates the modern, clean design of our newsletter system. The content would typically include cycling tips, training advice, and product updates.</p> | ||||
|                  | ||||
|                 <h3>This Week's Highlights</h3> | ||||
|                 <ul> | ||||
|                     <li>New training features released</li> | ||||
|                     <li>Community spotlight on top performers</li> | ||||
|                     <li>Upcoming events and challenges</li> | ||||
|                     <li>Expert tips from professional cyclists</li> | ||||
|                 </ul> | ||||
| 
 | ||||
|                 <blockquote> | ||||
|                     "The bicycle is a curious vehicle. Its passenger is its engine." - John Howard | ||||
|                 </blockquote> | ||||
| 
 | ||||
|                 <p>Stay tuned for more exciting content and updates from the RideAware team. We're committed to helping you achieve your cycling goals with the best tools and community support.</p> | ||||
|             {% endif %} | ||||
|         </article> | ||||
| 
 | ||||
|         <!-- Action Buttons --> | ||||
|         <div class="newsletter-actions"> | ||||
|             <a href="/newsletters" class="action-btn primary"> | ||||
|                 <i class="fas fa-list"></i> | ||||
|                 View All Newsletters | ||||
|             </a> | ||||
|             <button onclick="window.print()" class="action-btn secondary"> | ||||
|                 <i class="fas fa-print"></i> | ||||
|                 Print Newsletter | ||||
|             </button> | ||||
|             <button onclick="shareNewsletter()" class="action-btn secondary"> | ||||
|                 <i class="fas fa-share-alt"></i> | ||||
|                 Share | ||||
|             </button> | ||||
|         </div> | ||||
|     </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