- Implemented comprehensive trainer navigation system:
  * Horizontal and vertical navigation layouts
  * Multi-level menu with dropdowns for Events, Venues, Organizers, Profile
  * Responsive mobile navigation with hamburger menu
  * Keyboard navigation support (Arrow keys, Enter, Escape)
  * Active page highlighting
  * Master trainer menu items for users with appropriate role
- Created breadcrumb system:
  * Automatic breadcrumb generation based on URL structure
  * Shortcode support [hvac_breadcrumbs]
  * SEO-friendly with structured data (Schema.org)
  * Multiple style options (default, pills, arrows)
  * Responsive design
- Technical implementation:
  * HVAC_Trainer_Navigation class for menu management
  * HVAC_Breadcrumbs class for breadcrumb generation
  * CSS for both navigation and breadcrumbs
  * JavaScript for interactive menu behaviors
  * Template part for easy inclusion
Navigation provides easy access to all trainer features and improves UX.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
		
	
			
		
			
				
	
	
		
			340 lines
		
	
	
		
			No EOL
		
	
	
		
			6.8 KiB
		
	
	
	
		
			CSS
		
	
	
	
	
	
			
		
		
	
	
			340 lines
		
	
	
		
			No EOL
		
	
	
		
			6.8 KiB
		
	
	
	
		
			CSS
		
	
	
	
	
	
| /**
 | |
|  * HVAC Trainer Navigation Styles
 | |
|  *
 | |
|  * @package HVAC_Community_Events
 | |
|  * @version 2.0.0
 | |
|  */
 | |
| 
 | |
| /* Navigation Container */
 | |
| .hvac-trainer-nav {
 | |
|     background-color: #f8f9fa;
 | |
|     border-bottom: 2px solid #e0e0e0;
 | |
|     position: relative;
 | |
|     z-index: 100;
 | |
| }
 | |
| 
 | |
| /* Horizontal Navigation */
 | |
| .hvac-trainer-nav-horizontal .hvac-nav-menu {
 | |
|     display: flex;
 | |
|     list-style: none;
 | |
|     margin: 0;
 | |
|     padding: 0;
 | |
|     max-width: 1200px;
 | |
|     margin: 0 auto;
 | |
| }
 | |
| 
 | |
| .hvac-trainer-nav-horizontal .hvac-nav-item {
 | |
|     position: relative;
 | |
| }
 | |
| 
 | |
| .hvac-trainer-nav-horizontal .hvac-nav-link {
 | |
|     display: flex;
 | |
|     align-items: center;
 | |
|     gap: 0.5rem;
 | |
|     padding: 1rem 1.25rem;
 | |
|     color: #333;
 | |
|     text-decoration: none;
 | |
|     font-weight: 500;
 | |
|     transition: all 0.3s ease;
 | |
|     white-space: nowrap;
 | |
| }
 | |
| 
 | |
| .hvac-trainer-nav-horizontal .hvac-nav-link:hover {
 | |
|     background-color: #e9ecef;
 | |
|     color: #0274be;
 | |
| }
 | |
| 
 | |
| .hvac-trainer-nav-horizontal .hvac-nav-active > .hvac-nav-link {
 | |
|     background-color: #0274be;
 | |
|     color: white;
 | |
| }
 | |
| 
 | |
| /* Vertical Navigation */
 | |
| .hvac-trainer-nav-vertical {
 | |
|     width: 260px;
 | |
|     background-color: #fff;
 | |
|     border-right: 1px solid #e0e0e0;
 | |
|     min-height: 100vh;
 | |
| }
 | |
| 
 | |
| .hvac-trainer-nav-vertical .hvac-nav-menu {
 | |
|     list-style: none;
 | |
|     margin: 0;
 | |
|     padding: 0;
 | |
| }
 | |
| 
 | |
| .hvac-trainer-nav-vertical .hvac-nav-item {
 | |
|     border-bottom: 1px solid #f0f0f0;
 | |
| }
 | |
| 
 | |
| .hvac-trainer-nav-vertical .hvac-nav-link {
 | |
|     display: flex;
 | |
|     align-items: center;
 | |
|     gap: 0.75rem;
 | |
|     padding: 1rem 1.5rem;
 | |
|     color: #333;
 | |
|     text-decoration: none;
 | |
|     font-weight: 500;
 | |
|     transition: all 0.3s ease;
 | |
| }
 | |
| 
 | |
| .hvac-trainer-nav-vertical .hvac-nav-link:hover {
 | |
|     background-color: #f8f9fa;
 | |
|     color: #0274be;
 | |
|     padding-left: 2rem;
 | |
| }
 | |
| 
 | |
| .hvac-trainer-nav-vertical .hvac-nav-active > .hvac-nav-link {
 | |
|     background-color: #e3f2fd;
 | |
|     color: #0274be;
 | |
|     border-left: 4px solid #0274be;
 | |
| }
 | |
| 
 | |
| /* Icons */
 | |
| .hvac-nav-link .dashicons {
 | |
|     font-size: 20px;
 | |
|     width: 20px;
 | |
|     height: 20px;
 | |
| }
 | |
| 
 | |
| .hvac-nav-arrow {
 | |
|     margin-left: auto;
 | |
|     font-size: 14px !important;
 | |
|     transition: transform 0.3s ease;
 | |
| }
 | |
| 
 | |
| .hvac-nav-has-submenu:hover .hvac-nav-arrow,
 | |
| .hvac-nav-has-submenu.hvac-nav-open .hvac-nav-arrow {
 | |
|     transform: rotate(180deg);
 | |
| }
 | |
| 
 | |
| /* Submenu */
 | |
| .hvac-nav-submenu {
 | |
|     list-style: none;
 | |
|     margin: 0;
 | |
|     padding: 0;
 | |
|     background-color: white;
 | |
|     box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
 | |
|     min-width: 200px;
 | |
|     display: none;
 | |
| }
 | |
| 
 | |
| /* Horizontal Submenu */
 | |
| .hvac-trainer-nav-horizontal .hvac-nav-submenu {
 | |
|     position: absolute;
 | |
|     top: 100%;
 | |
|     left: 0;
 | |
|     border: 1px solid #e0e0e0;
 | |
|     border-radius: 0 0 4px 4px;
 | |
| }
 | |
| 
 | |
| .hvac-trainer-nav-horizontal .hvac-nav-has-submenu:hover .hvac-nav-submenu,
 | |
| .hvac-trainer-nav-horizontal[data-submenu="always"] .hvac-nav-submenu {
 | |
|     display: block;
 | |
| }
 | |
| 
 | |
| /* Vertical Submenu */
 | |
| .hvac-trainer-nav-vertical .hvac-nav-submenu {
 | |
|     position: static;
 | |
|     box-shadow: none;
 | |
|     background-color: #f8f9fa;
 | |
| }
 | |
| 
 | |
| .hvac-trainer-nav-vertical .hvac-nav-has-submenu:hover .hvac-nav-submenu,
 | |
| .hvac-trainer-nav-vertical .hvac-nav-has-submenu.hvac-nav-open .hvac-nav-submenu,
 | |
| .hvac-trainer-nav-vertical[data-submenu="always"] .hvac-nav-submenu {
 | |
|     display: block;
 | |
| }
 | |
| 
 | |
| /* Submenu Items */
 | |
| .hvac-nav-subitem {
 | |
|     border-bottom: 1px solid #f0f0f0;
 | |
| }
 | |
| 
 | |
| .hvac-nav-subitem:last-child {
 | |
|     border-bottom: none;
 | |
| }
 | |
| 
 | |
| .hvac-nav-sublink {
 | |
|     display: flex;
 | |
|     align-items: center;
 | |
|     gap: 0.5rem;
 | |
|     padding: 0.75rem 1rem;
 | |
|     color: #666;
 | |
|     text-decoration: none;
 | |
|     font-size: 0.9rem;
 | |
|     transition: all 0.3s ease;
 | |
| }
 | |
| 
 | |
| .hvac-trainer-nav-vertical .hvac-nav-sublink {
 | |
|     padding-left: 3rem;
 | |
| }
 | |
| 
 | |
| .hvac-nav-sublink:hover {
 | |
|     background-color: #f8f9fa;
 | |
|     color: #0274be;
 | |
| }
 | |
| 
 | |
| .hvac-nav-subitem.hvac-nav-active .hvac-nav-sublink {
 | |
|     color: #0274be;
 | |
|     font-weight: 600;
 | |
| }
 | |
| 
 | |
| /* Mobile Navigation */
 | |
| .hvac-nav-mobile-toggle {
 | |
|     display: none;
 | |
|     background: none;
 | |
|     border: none;
 | |
|     padding: 0.5rem;
 | |
|     cursor: pointer;
 | |
| }
 | |
| 
 | |
| .hvac-nav-toggle-icon {
 | |
|     display: block;
 | |
|     width: 24px;
 | |
|     height: 2px;
 | |
|     background-color: #333;
 | |
|     position: relative;
 | |
|     transition: background-color 0.3s ease;
 | |
| }
 | |
| 
 | |
| .hvac-nav-toggle-icon::before,
 | |
| .hvac-nav-toggle-icon::after {
 | |
|     content: '';
 | |
|     display: block;
 | |
|     width: 24px;
 | |
|     height: 2px;
 | |
|     background-color: #333;
 | |
|     position: absolute;
 | |
|     left: 0;
 | |
|     transition: transform 0.3s ease;
 | |
| }
 | |
| 
 | |
| .hvac-nav-toggle-icon::before {
 | |
|     top: -8px;
 | |
| }
 | |
| 
 | |
| .hvac-nav-toggle-icon::after {
 | |
|     top: 8px;
 | |
| }
 | |
| 
 | |
| .hvac-nav-mobile-open .hvac-nav-toggle-icon {
 | |
|     background-color: transparent;
 | |
| }
 | |
| 
 | |
| .hvac-nav-mobile-open .hvac-nav-toggle-icon::before {
 | |
|     transform: rotate(45deg) translateY(8px);
 | |
| }
 | |
| 
 | |
| .hvac-nav-mobile-open .hvac-nav-toggle-icon::after {
 | |
|     transform: rotate(-45deg) translateY(-8px);
 | |
| }
 | |
| 
 | |
| /* Responsive */
 | |
| @media (max-width: 768px) {
 | |
|     .hvac-nav-mobile-toggle {
 | |
|         display: block;
 | |
|         position: absolute;
 | |
|         top: 1rem;
 | |
|         right: 1rem;
 | |
|         z-index: 101;
 | |
|     }
 | |
|     
 | |
|     .hvac-trainer-nav-horizontal .hvac-nav-menu {
 | |
|         display: none;
 | |
|         position: absolute;
 | |
|         top: 100%;
 | |
|         left: 0;
 | |
|         right: 0;
 | |
|         flex-direction: column;
 | |
|         background-color: white;
 | |
|         box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
 | |
|     }
 | |
|     
 | |
|     .hvac-nav-mobile-open .hvac-nav-menu {
 | |
|         display: flex;
 | |
|     }
 | |
|     
 | |
|     .hvac-trainer-nav-horizontal .hvac-nav-link {
 | |
|         padding: 1rem 1.5rem;
 | |
|         border-bottom: 1px solid #f0f0f0;
 | |
|     }
 | |
|     
 | |
|     .hvac-trainer-nav-horizontal .hvac-nav-submenu {
 | |
|         position: static;
 | |
|         width: 100%;
 | |
|         box-shadow: none;
 | |
|         background-color: #f8f9fa;
 | |
|         border: none;
 | |
|         border-radius: 0;
 | |
|     }
 | |
|     
 | |
|     .hvac-trainer-nav-horizontal .hvac-nav-sublink {
 | |
|         padding-left: 3rem;
 | |
|     }
 | |
|     
 | |
|     .hvac-trainer-nav-vertical {
 | |
|         position: fixed;
 | |
|         top: 0;
 | |
|         left: -260px;
 | |
|         height: 100vh;
 | |
|         transition: left 0.3s ease;
 | |
|         z-index: 1000;
 | |
|     }
 | |
|     
 | |
|     .hvac-nav-mobile-open .hvac-trainer-nav-vertical {
 | |
|         left: 0;
 | |
|     }
 | |
| }
 | |
| 
 | |
| /* Integration with existing styles */
 | |
| .hvac-page-wrapper {
 | |
|     padding-top: 0;
 | |
| }
 | |
| 
 | |
| .hvac-trainer-nav + .hvac-page-wrapper {
 | |
|     padding-top: 2rem;
 | |
| }
 | |
| 
 | |
| /* Active state improvements */
 | |
| .hvac-nav-active > .hvac-nav-link .dashicons {
 | |
|     color: inherit;
 | |
| }
 | |
| 
 | |
| /* Accessibility */
 | |
| .hvac-nav-link:focus,
 | |
| .hvac-nav-sublink:focus {
 | |
|     outline: 2px solid #0274be;
 | |
|     outline-offset: 2px;
 | |
| }
 | |
| 
 | |
| /* Loading state */
 | |
| .hvac-nav-loading {
 | |
|     opacity: 0.6;
 | |
|     pointer-events: none;
 | |
| }
 | |
| 
 | |
| /* Dropdown animation */
 | |
| @keyframes slideDown {
 | |
|     from {
 | |
|         opacity: 0;
 | |
|         transform: translateY(-10px);
 | |
|     }
 | |
|     to {
 | |
|         opacity: 1;
 | |
|         transform: translateY(0);
 | |
|     }
 | |
| }
 | |
| 
 | |
| .hvac-nav-submenu {
 | |
|     animation: slideDown 0.3s ease;
 | |
| }
 | |
| 
 | |
| /* Click behavior for submenu */
 | |
| .hvac-trainer-nav[data-submenu="click"] .hvac-nav-has-submenu:hover .hvac-nav-submenu {
 | |
|     display: none;
 | |
| }
 | |
| 
 | |
| .hvac-trainer-nav[data-submenu="click"] .hvac-nav-has-submenu.hvac-nav-open .hvac-nav-submenu {
 | |
|     display: block;
 | |
| } |