src/CompanyGroupBundle/Resources/views/pages/admin/_sidebar.html.twig line 1

Open in your IDE?
  1. {# Admin panel sidebar — included in all admin pages #}
  2. <div class="hb-admin-sidebar">
  3.     <div class="hb-admin-sidebar__brand">
  4.         <span class="hb-admin-sidebar__logo">🐝</span>
  5.         <span class="hb-admin-sidebar__title">HoneyBee Admin</span>
  6.     </div>
  7.     <nav class="hb-admin-nav">
  8.         <a href="{{ path('super_admin_command_center') }}"
  9.            class="hb-admin-nav__item {{ app.request.get('_route') == 'super_admin_command_center' ? 'is-active' : '' }}">
  10.             <i class="ft-grid"></i> Dashboard
  11.         </a>
  12.         <div class="hb-admin-nav__group-label">Quotes</div>
  13.         <a href="{{ path('admin_quotes_list') }}"
  14.            class="hb-admin-nav__item {{ app.request.get('_route') starts with 'admin_quote' ? 'is-active' : '' }}">
  15.             <i class="ft-file-text"></i> All Quotes
  16.             {% set _pending_quotes = pending_quotes_count|default(0) %}
  17.             {% if _pending_quotes > 0 %}
  18.                 <span class="hb-admin-badge">{{ _pending_quotes }}</span>
  19.             {% endif %}
  20.         </a>
  21.         <a href="{{ path('admin_quotes_list', {status: 'requested'}) }}"
  22.            class="hb-admin-nav__item hb-admin-nav__item--sub">
  23.             Requested
  24.         </a>
  25.         <a href="{{ path('admin_quotes_list', {status: 'modified'}) }}"
  26.            class="hb-admin-nav__item hb-admin-nav__item--sub">
  27.             Modified
  28.         </a>
  29.         <a href="{{ path('admin_quotes_list', {status: 'accepted'}) }}"
  30.            class="hb-admin-nav__item hb-admin-nav__item--sub">
  31.             Accepted
  32.         </a>
  33.         <a href="{{ path('admin_quotes_list', {status: 'rejected'}) }}"
  34.            class="hb-admin-nav__item hb-admin-nav__item--sub">
  35.             Rejected
  36.         </a>
  37.         <a href="{{ path('admin_quote_create') }}"
  38.            class="hb-admin-nav__item hb-admin-nav__item--action">
  39.             <i class="ft-plus-circle"></i> New Quote
  40.         </a>
  41.         <div class="hb-admin-nav__group-label">Invoices</div>
  42.         <a href="{{ path('admin_invoices_list') }}"
  43.            class="hb-admin-nav__item {{ app.request.get('_route') starts with 'admin_invoice' ? 'is-active' : '' }}">
  44.             <i class="ft-dollar-sign"></i> All Invoices
  45.         </a>
  46.         <a href="{{ path('admin_invoices_list', {status: 'pending'}) }}"
  47.            class="hb-admin-nav__item hb-admin-nav__item--sub">
  48.             Pending
  49.         </a>
  50.         <a href="{{ path('admin_invoices_list', {status: 'paid'}) }}"
  51.            class="hb-admin-nav__item hb-admin-nav__item--sub">
  52.             Paid
  53.         </a>
  54.         <a href="{{ path('admin_invoices_list', {status: 'failed'}) }}"
  55.            class="hb-admin-nav__item hb-admin-nav__item--sub">
  56.             Failed
  57.         </a>
  58.         <div class="hb-admin-nav__group-label">Companies</div>
  59.         <a href="{{ path('super_admin_command_center') }}"
  60.            class="hb-admin-nav__item {{ app.request.get('_route') == 'super_admin_command_center' ? 'is-active' : '' }}">
  61.             <i class="ft-briefcase"></i> All Companies
  62.         </a>
  63.         <a href="{{ path('owner_dashboard') }}"
  64.            class="hb-admin-nav__item {{ app.request.get('_route') starts with 'owner_' ? 'is-active' : '' }}">
  65.             <i class="ft-grid"></i> Owner Portal
  66.         </a>
  67.         <div class="hb-admin-nav__group-label">Support</div>
  68.         <a href="{{ path('ticket_list') }}"
  69.            class="hb-admin-nav__item {{ app.request.get('_route') starts with 'ticket' ? 'is-active' : '' }}">
  70.             <i class="ft-alert-circle"></i> All Tickets
  71.         </a>
  72.         <a href="{{ path('ticket_create') }}"
  73.            class="hb-admin-nav__item hb-admin-nav__item--action">
  74.             <i class="ft-plus-circle"></i> New Ticket
  75.         </a>
  76.     </nav>
  77. </div>
  78. <style>
  79. .hb-admin-sidebar {
  80.     position: fixed;
  81.     top: 0; left: 0;
  82.     width: 220px;
  83.     height: 100vh;
  84.     background: linear-gradient(180deg, #0f2952 0%, #1a3d6e 100%);
  85.     display: flex;
  86.     flex-direction: column;
  87.     z-index: 900;
  88.     overflow-y: auto;
  89.     box-shadow: 4px 0 18px rgba(15,41,82,0.18);
  90. }
  91. .hb-admin-sidebar__brand {
  92.     display: flex;
  93.     align-items: center;
  94.     gap: 10px;
  95.     padding: 22px 20px 18px;
  96.     border-bottom: 1px solid rgba(255,255,255,0.08);
  97. }
  98. .hb-admin-sidebar__logo { font-size: 1.5rem; }
  99. .hb-admin-sidebar__title {
  100.     font-size: 0.92rem;
  101.     font-weight: 700;
  102.     color: #fff;
  103.     letter-spacing: 0.02em;
  104. }
  105. .hb-admin-nav { padding: 10px 0 30px; flex: 1; }
  106. .hb-admin-nav__group-label {
  107.     font-size: 0.65rem;
  108.     font-weight: 700;
  109.     text-transform: uppercase;
  110.     letter-spacing: 0.12em;
  111.     color: rgba(255,255,255,0.35);
  112.     padding: 16px 20px 4px;
  113. }
  114. .hb-admin-nav__item {
  115.     display: flex;
  116.     align-items: center;
  117.     gap: 9px;
  118.     padding: 9px 20px;
  119.     color: rgba(255,255,255,0.72);
  120.     font-size: 0.865rem;
  121.     text-decoration: none;
  122.     transition: background 0.15s, color 0.15s;
  123.     border-radius: 0;
  124.     position: relative;
  125. }
  126. .hb-admin-nav__item:hover,
  127. .hb-admin-nav__item.is-active {
  128.     background: rgba(255,255,255,0.10);
  129.     color: #fff;
  130.     text-decoration: none;
  131. }
  132. .hb-admin-nav__item.is-active::before {
  133.     content: '';
  134.     position: absolute;
  135.     left: 0; top: 0; bottom: 0;
  136.     width: 3px;
  137.     background: #f5c518;
  138.     border-radius: 0 2px 2px 0;
  139. }
  140. .hb-admin-nav__item--sub {
  141.     padding-left: 40px;
  142.     font-size: 0.815rem;
  143.     color: rgba(255,255,255,0.52);
  144. }
  145. .hb-admin-nav__item--sub:hover { color: rgba(255,255,255,0.85); }
  146. .hb-admin-nav__item--action {
  147.     margin: 6px 12px;
  148.     padding: 8px 14px;
  149.     background: rgba(245,197,24,0.12);
  150.     border: 1px solid rgba(245,197,24,0.3);
  151.     border-radius: 7px;
  152.     color: #f5c518;
  153.     font-weight: 600;
  154. }
  155. .hb-admin-nav__item--action:hover {
  156.     background: rgba(245,197,24,0.22);
  157.     color: #f5c518;
  158. }
  159. .hb-admin-nav__divider {
  160.     height: 1px;
  161.     background: rgba(255,255,255,0.08);
  162.     margin: 10px 20px;
  163. }
  164. .hb-admin-badge {
  165.     margin-left: auto;
  166.     background: #e74c3c;
  167.     color: #fff;
  168.     font-size: 0.68rem;
  169.     font-weight: 700;
  170.     border-radius: 10px;
  171.     padding: 1px 7px;
  172.     min-width: 18px;
  173.     text-align: center;
  174. }
  175. /* Push main content right when sidebar is present */
  176. .hb-admin-layout { margin-left: 220px; }
  177. @media (max-width: 900px) {
  178.     .hb-admin-sidebar { display: none; }
  179.     .hb-admin-layout { margin-left: 0; }
  180. }
  181. </style>