upskill-event-manager/assets/css/hvac-trainer-navigation.css
bengizmo 70b78a069f feat: Add navigation menu system and breadcrumb functionality
- 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>
2025-07-30 16:45:58 -03:00

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;
}