FossilRepo

fossilrepo / templates / includes / sidebar.html
Source Blame History 227 lines
0e40dc2… ragelink 1 <aside aria-label="Sidebar navigation" x-data="{ collapsed: localStorage.getItem('sidebarCollapsed') === 'true', projectsOpen: true, docsOpen: false }"
4ce269c… ragelink 2 :class="collapsed ? 'w-14' : 'w-60'"
4ce269c… ragelink 3 class="hidden lg:flex lg:flex-col flex-shrink-0 bg-gray-900 border-r border-gray-700 overflow-y-auto overflow-x-hidden transition-all duration-200">
c588255… ragelink 4
c588255… ragelink 5 <nav class="flex-1 px-2 py-3 space-y-1 overflow-y-auto">
c588255… ragelink 6
c588255… ragelink 7 <!-- Expand button (collapsed state only) — prominent, centered -->
c588255… ragelink 8 <button x-show="collapsed" style="display:none"
c588255… ragelink 9 @click="collapsed = false; localStorage.setItem('sidebarCollapsed', 'false')"
c588255… ragelink 10 class="flex items-center justify-center w-full rounded-md px-2 py-2 mb-1 text-gray-400 hover:text-white hover:bg-gray-800 transition-colors"
c588255… ragelink 11 title="Expand sidebar">
c588255… ragelink 12 <svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor">
4ce269c… ragelink 13 <path stroke-linecap="round" stroke-linejoin="round" d="M11.25 4.5l7.5 7.5-7.5 7.5m-6-15l7.5 7.5-7.5 7.5" />
4ce269c… ragelink 14 </svg>
4ce269c… ragelink 15 </button>
4ce269c… ragelink 16
c588255… ragelink 17 <!-- Dashboard + collapse toggle (expanded state) -->
c588255… ragelink 18 <div class="flex items-center gap-1" :class="collapsed && 'justify-center'">
c588255… ragelink 19 <a href="{% url 'dashboard' %}"
c588255… ragelink 20 class="flex items-center gap-2 rounded-md px-2 py-2 text-sm font-medium {% if request.path == '/dashboard/' %}bg-gray-800 text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
c588255… ragelink 21 :class="collapsed ? '' : 'flex-1'"
c588255… ragelink 22 :title="collapsed ? 'Dashboard' : ''">
c588255… ragelink 23 <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
c588255… ragelink 24 <path stroke-linecap="round" stroke-linejoin="round" d="M2.25 12l8.954-8.955a1.126 1.126 0 011.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25" />
c588255… ragelink 25 </svg>
c588255… ragelink 26 <span x-show="!collapsed" class="truncate">Dashboard</span>
c588255… ragelink 27 </a>
c588255… ragelink 28 <button x-show="!collapsed" @click="collapsed = true; localStorage.setItem('sidebarCollapsed', 'true')"
c588255… ragelink 29 class="flex-shrink-0 rounded-md p-1.5 text-gray-500 hover:text-gray-300 hover:bg-gray-800 transition-colors"
c588255… ragelink 30 title="Collapse sidebar">
c588255… ragelink 31 <svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
c588255… ragelink 32 <path stroke-linecap="round" stroke-linejoin="round" d="M18.75 19.5l-7.5-7.5 7.5-7.5m-6 15L5.25 12l7.5-7.5" />
c588255… ragelink 33 </svg>
c588255… ragelink 34 </button>
c588255… ragelink 35 </div>
c588255… ragelink 36
c588255… ragelink 37 <!-- Explore -->
c588255… ragelink 38 <a href="{% url 'explore' %}"
c588255… ragelink 39 class="flex items-center gap-2 rounded-md px-2 py-2 text-sm font-medium {% if request.path == '/explore/' %}bg-gray-800 text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
c588255… ragelink 40 :title="collapsed ? 'Explore' : ''">
4ce269c… ragelink 41 <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
c588255… ragelink 42 <path stroke-linecap="round" stroke-linejoin="round" d="M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0112 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0121 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0112 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 013 12c0-1.605.42-3.113 1.157-4.418" />
4ce269c… ragelink 43 </svg>
c588255… ragelink 44 <span x-show="!collapsed" class="truncate">Explore</span>
4ce269c… ragelink 45 </a>
4ce269c… ragelink 46
4ce269c… ragelink 47 <!-- Projects section -->
4ce269c… ragelink 48 {% if perms.projects.view_project %}
4ce269c… ragelink 49 <div>
4ce269c… ragelink 50 <button @click="collapsed ? (collapsed = false, projectsOpen = true) : (projectsOpen = !projectsOpen)"
4ce269c… ragelink 51 class="flex items-center justify-between w-full rounded-md px-2 py-2 text-sm font-medium {% if '/projects/' in request.path %}text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
4ce269c… ragelink 52 :title="collapsed ? 'Projects' : ''">
4ce269c… ragelink 53 <span class="flex items-center gap-2">
4ce269c… ragelink 54 <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
4ce269c… ragelink 55 <path stroke-linecap="round" stroke-linejoin="round" d="M2.25 12.75V12A2.25 2.25 0 014.5 9.75h15A2.25 2.25 0 0121.75 12v.75m-8.69-6.44l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z" />
4ce269c… ragelink 56 </svg>
4ce269c… ragelink 57 <span x-show="!collapsed" class="truncate">Projects</span>
4ce269c… ragelink 58 </span>
4ce269c… ragelink 59 <svg x-show="!collapsed" class="h-4 w-4 transition-transform" :class="projectsOpen && 'rotate-90'" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
4ce269c… ragelink 60 <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" />
4ce269c… ragelink 61 </svg>
4ce269c… ragelink 62 </button>
4ce269c… ragelink 63 <div x-show="projectsOpen && !collapsed" x-collapse class="ml-4 mt-1 space-y-0.5 border-l border-gray-700 pl-2">
c588255… ragelink 64 {% for entry in sidebar_grouped %}
c588255… ragelink 65 <div class="mt-2">
c588255… ragelink 66 <div class="flex items-center gap-1.5 px-2 py-1 text-xs font-semibold text-gray-500 uppercase tracking-wider">
c588255… ragelink 67 <svg class="h-3 w-3" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
c588255… ragelink 68 <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 00-1.883 2.542l.857 6a2.25 2.25 0 002.227 1.932H19.05a2.25 2.25 0 002.227-1.932l.857-6a2.25 2.25 0 00-1.883-2.542m-16.5 0V6A2.25 2.25 0 016 3.75h3.879a1.5 1.5 0 011.06.44l2.122 2.12a1.5 1.5 0 001.06.44H18A2.25 2.25 0 0120.25 9v.776" />
4ce269c… ragelink 69 </svg>
c588255… ragelink 70 {{ entry.group.name }}
c588255… ragelink 71 </div>
c588255… ragelink 72 {% for project in entry.projects %}
c588255… ragelink 73 {% include "includes/_sidebar_project.html" %}
c588255… ragelink 74 {% endfor %}
c588255… ragelink 75 </div>
c588255… ragelink 76 {% endfor %}
c588255… ragelink 77 {% for project in sidebar_ungrouped %}
c588255… ragelink 78 {% include "includes/_sidebar_project.html" %}
4ce269c… ragelink 79 {% endfor %}
4ce269c… ragelink 80 {% if perms.projects.add_project %}
4ce269c… ragelink 81 <a href="{% url 'projects:create' %}"
4ce269c… ragelink 82 class="block rounded-md px-2 py-1.5 text-sm text-gray-600 hover:text-brand-light">
4ce269c… ragelink 83 + New
4ce269c… ragelink 84 </a>
4ce269c… ragelink 85 {% endif %}
4ce269c… ragelink 86 </div>
4ce269c… ragelink 87 </div>
4ce269c… ragelink 88 {% endif %}
4ce269c… ragelink 89
45192ef… ragelink 90 <!-- Knowledge Base (org wiki — user-editable) -->
4ce269c… ragelink 91 {% if perms.pages.view_page %}
45192ef… ragelink 92 <div x-data="{ kbOpen: false }">
45192ef… ragelink 93 <button @click="collapsed ? (collapsed = false, kbOpen = true) : (kbOpen = !kbOpen)"
45192ef… ragelink 94 class="flex items-center justify-between w-full rounded-md px-2 py-2 text-sm font-medium text-gray-400 hover:bg-gray-800 hover:text-white"
45192ef… ragelink 95 :title="collapsed ? 'Knowledge Base' : ''">
4ce269c… ragelink 96 <span class="flex items-center gap-2">
4ce269c… ragelink 97 <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
45192ef… ragelink 98 <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 00-1.883 2.542l.857 6a2.25 2.25 0 002.227 1.932H19.05a2.25 2.25 0 002.227-1.932l.857-6a2.25 2.25 0 00-1.883-2.542m-16.5 0V6A2.25 2.25 0 016 3.75h3.879a1.5 1.5 0 011.06.44l2.122 2.12a1.5 1.5 0 001.06.44H18A2.25 2.25 0 0120.25 9v.776" />
4ce269c… ragelink 99 </svg>
45192ef… ragelink 100 <span x-show="!collapsed" class="truncate">Knowledge Base</span>
4ce269c… ragelink 101 </span>
45192ef… ragelink 102 <svg x-show="!collapsed" class="h-4 w-4 transition-transform" :class="kbOpen && 'rotate-90'" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
4ce269c… ragelink 103 <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" />
4ce269c… ragelink 104 </svg>
4ce269c… ragelink 105 </button>
45192ef… ragelink 106 <div x-show="kbOpen && !collapsed" x-collapse class="ml-4 mt-1 space-y-0.5 border-l border-gray-700 pl-3">
45192ef… ragelink 107 {% for p in sidebar_kb_pages %}
4ce269c… ragelink 108 <a href="{% url 'pages:detail' slug=p.slug %}"
4ce269c… ragelink 109 class="block rounded-md px-3 py-1.5 text-sm {% if p.slug in request.path %}text-brand-light font-medium{% else %}text-gray-500 hover:text-gray-300{% endif %} truncate">
4ce269c… ragelink 110 {{ p.name }}
4ce269c… ragelink 111 </a>
4ce269c… ragelink 112 {% endfor %}
45192ef… ragelink 113 {% if sidebar_kb_pages|length == 0 %}
45192ef… ragelink 114 <p class="px-3 py-1.5 text-xs text-gray-600">No articles yet.</p>
45192ef… ragelink 115 {% endif %}
4ce269c… ragelink 116 {% if perms.pages.add_page %}
4ce269c… ragelink 117 <a href="{% url 'pages:create' %}"
4ce269c… ragelink 118 class="block rounded-md px-3 py-1.5 text-sm text-gray-600 hover:text-brand-light">
4ce269c… ragelink 119 + New
4ce269c… ragelink 120 </a>
4ce269c… ragelink 121 {% endif %}
7e1aaf6… ragelink 122 </div>
7e1aaf6… ragelink 123 </div>
7e1aaf6… ragelink 124 {% endif %}
7e1aaf6… ragelink 125
7e1aaf6… ragelink 126 <!-- FossilRepo Docs (product docs — read-only) -->
7e1aaf6… ragelink 127 {% if sidebar_product_docs %}
7e1aaf6… ragelink 128 <div x-data="{ docsOpen: false }">
7e1aaf6… ragelink 129 <button @click="collapsed ? (collapsed = false, docsOpen = true) : (docsOpen = !docsOpen)"
7e1aaf6… ragelink 130 class="flex items-center justify-between w-full rounded-md px-2 py-2 text-sm font-medium {% if '/kb/' in request.path %}text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
7e1aaf6… ragelink 131 :title="collapsed ? 'FossilRepo Docs' : ''">
7e1aaf6… ragelink 132 <span class="flex items-center gap-2">
7e1aaf6… ragelink 133 <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
7e1aaf6… ragelink 134 <path stroke-linecap="round" stroke-linejoin="round" d="M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25" />
7e1aaf6… ragelink 135 </svg>
7e1aaf6… ragelink 136 <span x-show="!collapsed" class="truncate">FossilRepo Docs</span>
7e1aaf6… ragelink 137 </span>
7e1aaf6… ragelink 138 <svg x-show="!collapsed" class="h-4 w-4 transition-transform" :class="docsOpen && 'rotate-90'" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
7e1aaf6… ragelink 139 <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" />
7e1aaf6… ragelink 140 </svg>
7e1aaf6… ragelink 141 </button>
7e1aaf6… ragelink 142 <div x-show="docsOpen && !collapsed" x-collapse class="ml-4 mt-1 space-y-0.5 border-l border-gray-700 pl-3">
7e1aaf6… ragelink 143 {% for p in sidebar_product_docs %}
7e1aaf6… ragelink 144 <a href="{% url 'pages:detail' slug=p.slug %}"
7e1aaf6… ragelink 145 class="block rounded-md px-3 py-1.5 text-sm {% if p.slug in request.path %}text-brand-light font-medium{% else %}text-gray-500 hover:text-gray-300{% endif %} truncate">
7e1aaf6… ragelink 146 {{ p.name }}
7e1aaf6… ragelink 147 </a>
7e1aaf6… ragelink 148 {% endfor %}
c588255… ragelink 149 </div>
c588255… ragelink 150 </div>
c588255… ragelink 151 {% endif %}
c588255… ragelink 152
c588255… ragelink 153 <!-- FossilSCM Guide -->
4ce269c… ragelink 154 <a href="{% url 'fossil:docs' slug='fossil-scm' %}"
4ce269c… ragelink 155 class="flex items-center gap-2 rounded-md px-2 py-2 text-sm font-medium {% if '/fossil/docs/' in request.path %}bg-gray-800 text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
c588255… ragelink 156 :title="collapsed ? 'FossilSCM Guide' : ''">
4ce269c… ragelink 157 <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
4ce269c… ragelink 158 <path stroke-linecap="round" stroke-linejoin="round" d="M4.26 10.147a60.438 60.438 0 00-.491 6.347A48.62 48.62 0 0112 20.904a48.62 48.62 0 018.232-4.41 60.46 60.46 0 00-.491-6.347m-15.482 0a50.636 50.636 0 00-2.658-.813A59.906 59.906 0 0112 3.493a59.903 59.903 0 0110.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0112 13.489a50.702 50.702 0 017.74-3.342M6.75 15a.75.75 0 100-1.5.75.75 0 000 1.5zm0 0v-3.675A55.378 55.378 0 0112 8.443m-7.007 11.55A5.981 5.981 0 006.75 15.75v-1.5" />
4ce269c… ragelink 159 </svg>
c588255… ragelink 160 <span x-show="!collapsed" class="truncate">FossilSCM Guide</span>
c588255… ragelink 161 </a>
c588255… ragelink 162
c588255… ragelink 163 <!-- Admin section (collapsible) -->
c588255… ragelink 164 {% if perms.organization.view_organization or user.is_staff %}
c588255… ragelink 165 <div x-data="{ adminOpen: window.location.pathname.includes('/settings/') || window.location.pathname.includes('/projects/groups/') }">
c588255… ragelink 166 <button @click="collapsed ? (collapsed = false, adminOpen = true) : (adminOpen = !adminOpen)"
c588255… ragelink 167 class="flex items-center justify-between w-full rounded-md px-2 py-2 text-sm font-medium {% if '/settings/' in request.path or '/projects/groups/' in request.path %}text-white{% else %}text-gray-400 hover:bg-gray-800 hover:text-white{% endif %}"
c588255… ragelink 168 :title="collapsed ? 'Admin' : ''">
c588255… ragelink 169 <span class="flex items-center gap-2">
c588255… ragelink 170 <svg class="h-4 w-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
c588255… ragelink 171 <path stroke-linecap="round" stroke-linejoin="round" d="M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 011.37.49l1.296 2.247a1.125 1.125 0 01-.26 1.431l-1.003.827c-.293.24-.438.613-.431.992a6.759 6.759 0 010 .255c-.007.378.138.75.43.99l1.005.828c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 01-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.57 6.57 0 01-.22.128c-.331.183-.581.495-.644.869l-.213 1.28c-.09.543-.56.941-1.11.941h-2.594c-.55 0-1.02-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 01-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 01-1.369-.49l-1.297-2.247a1.125 1.125 0 01.26-1.431l1.004-.827c.292-.24.437-.613.43-.992a6.932 6.932 0 010-.255c.007-.378-.138-.75-.43-.99l-1.004-.828a1.125 1.125 0 01-.26-1.43l1.297-2.247a1.125 1.125 0 011.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.087.22-.128.332-.183.582-.495.644-.869l.214-1.281z" />
c588255… ragelink 172 <path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />
c588255… ragelink 173 </svg>
c588255… ragelink 174 <span x-show="!collapsed" class="truncate">Admin</span>
c588255… ragelink 175 </span>
c588255… ragelink 176 <svg x-show="!collapsed" class="h-4 w-4 transition-transform" :class="adminOpen && 'rotate-90'" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
c588255… ragelink 177 <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" />
c588255… ragelink 178 </svg>
c588255… ragelink 179 </button>
c588255… ragelink 180 <div x-show="adminOpen && !collapsed" x-collapse class="ml-4 mt-1 space-y-0.5 border-l border-gray-700 pl-2">
c588255… ragelink 181 {% if perms.projects.view_projectgroup %}
c588255… ragelink 182 <a href="{% url 'projects:group_list' %}"
c588255… ragelink 183 class="flex items-center gap-1.5 rounded-md px-2 py-1 text-xs {% if '/projects/groups/' in request.path %}text-brand-light font-medium{% else %}text-gray-500 hover:text-gray-300{% endif %}">
c588255… ragelink 184 Groups
c588255… ragelink 185 </a>
c588255… ragelink 186 {% endif %}
c588255… ragelink 187 {% if perms.organization.view_team %}
c588255… ragelink 188 <a href="{% url 'organization:team_list' %}"
c588255… ragelink 189 class="flex items-center gap-1.5 rounded-md px-2 py-1 text-xs {% if '/settings/teams/' in request.path %}text-brand-light font-medium{% else %}text-gray-500 hover:text-gray-300{% endif %}">
c588255… ragelink 190 Teams
c588255… ragelink 191 </a>
c588255… ragelink 192 {% endif %}
c588255… ragelink 193 {% if perms.organization.view_organization %}
c588255… ragelink 194 <a href="{% url 'organization:role_list' %}"
c588255… ragelink 195 class="flex items-center gap-1.5 rounded-md px-2 py-1 text-xs {% if '/settings/roles/' in request.path %}text-brand-light font-medium{% else %}text-gray-500 hover:text-gray-300{% endif %}">
c588255… ragelink 196 Roles
c588255… ragelink 197 </a>
c588255… ragelink 198 {% endif %}
c588255… ragelink 199 <a href="{% url 'organization:members' %}"
c588255… ragelink 200 class="flex items-center gap-1.5 rounded-md px-2 py-1 text-xs {% if '/settings/members/' in request.path %}text-brand-light font-medium{% else %}text-gray-500 hover:text-gray-300{% endif %}">
c588255… ragelink 201 Members
c588255… ragelink 202 </a>
c588255… ragelink 203 {% if perms.organization.view_organization %}
c588255… ragelink 204 <a href="{% url 'organization:settings' %}"
c588255… ragelink 205 class="flex items-center gap-1.5 rounded-md px-2 py-1 text-xs {% if request.path == '/settings/' %}text-brand-light font-medium{% else %}text-gray-500 hover:text-gray-300{% endif %}">
c588255… ragelink 206 Settings
c588255… ragelink 207 </a>
c588255… ragelink 208 {% endif %}
c588255… ragelink 209 {% if user.is_superuser or perms.organization.change_organization %}
c588255… ragelink 210 <a href="{% url 'organization:audit_log' %}"
c588255… ragelink 211 class="flex items-center gap-1.5 rounded-md px-2 py-1 text-xs {% if '/settings/audit/' in request.path %}text-brand-light font-medium{% else %}text-gray-500 hover:text-gray-300{% endif %}">
c588255… ragelink 212 Audit Log
c588255… ragelink 213 </a>
c588255… ragelink 214 {% endif %}
c588255… ragelink 215 {% if user.is_staff %}
c588255… ragelink 216 <a href="{% url 'admin:index' %}"
c588255… ragelink 217 class="flex items-center gap-1.5 rounded-md px-2 py-1 text-xs text-gray-500 hover:text-gray-300">
c588255… ragelink 218 Super Admin
c588255… ragelink 219 </a>
c588255… ragelink 220 {% endif %}
c588255… ragelink 221 </div>
c588255… ragelink 222 </div>
4ce269c… ragelink 223 {% endif %}
4ce269c… ragelink 224
4ce269c… ragelink 225 </nav>
c588255… ragelink 226
4ce269c… ragelink 227 </aside>

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button