Skip to content

Commit 9e9f8b0

Browse files
committed
Add bootstrap icons to admin
1 parent 39c78cf commit 9e9f8b0

File tree

12 files changed

+26
-2
lines changed

12 files changed

+26
-2
lines changed

plain-admin/plain/admin/assets/admin/bootstrap-icons.svg

Lines changed: 1 addition & 0 deletions
Loading

plain-admin/plain/admin/templates/admin/base.html

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,16 @@
7474
<div class="flex-grow pl-3.5 pr-5 pt-2">
7575
<div>
7676
{% for section, views in admin_registry.get_nav_sections().items() %}
77-
<div class="mt-4 text-xs tracking-wide uppercase text-stone-300/90">{{ section }}</div>
77+
<div class="mt-4 mb-1 text-sm text-stone-400/80">{{ section }}</div>
7878
{% for view in views %}
7979
{% set url = view.get_view_url() %}
8080
<a
8181
{% if url == request.path or view in parent_view_classes %}data-active{% endif %}
82-
class="data-[active]:bg-white/20 data-[active]:text-white flex items-center px-2 py-1 mt-px -mx-2 text-sm rounded hover:text-stone-300 text-stone-400/80 hover:bg-white/5"
82+
class="data-[active]:bg-white/20 data-[active]:text-white flex items-center px-2 py-1 mt-px -mx-2 text-sm rounded hover:text-stone-300 text-stone-300/90 hover:bg-white/5"
8383
href="{{ url }}">
84+
<svg class="w-3.5 h-3.5 mr-1.5 flex-shrink-0" fill="currentColor">
85+
<use xlink:href="{{ asset('admin/bootstrap-icons.svg') }}#{{ view.get_nav_icon() }}"/>
86+
</svg>
8487
{{ view.get_nav_title() }}
8588
</a>
8689
{% endfor %}

plain-admin/plain/admin/views/base.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class AdminView(AuthViewMixin, TemplateView):
3232
# so you can also use this for pages that can never be bookmarked
3333
nav_section = "App"
3434
nav_title = ""
35+
nav_icon = "app"
3536

3637
links: dict[str] = {}
3738

@@ -115,6 +116,10 @@ def get_nav_title(cls) -> str:
115116
f"Please set a title or nav_title on the {cls} class or implement get_nav_title()."
116117
)
117118

119+
@classmethod
120+
def get_nav_icon(cls) -> str:
121+
return cls.nav_icon
122+
118123
@classmethod
119124
def get_view_url(cls, obj=None) -> str:
120125
if obj:

plain-cache/plain/cache/admin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class ListView(AdminModelListView):
1313
nav_section = "Cache"
1414
model = CachedItem
1515
title = "Cached items"
16+
nav_icon = "archive"
1617
fields = [
1718
"key",
1819
"created_at",

plain-flags/plain/flags/admin.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class ListView(AdminModelListView):
3535
search_fields = ["name", "description"]
3636
cards = [UnusedFlagsCard]
3737
nav_section = "Feature flags"
38+
nav_icon = "flag"
3839

3940
class DetailView(AdminModelDetailView):
4041
model = Flag
@@ -61,6 +62,7 @@ class ListView(AdminModelListView):
6162
]
6263
search_fields = ["flag__name", "key"]
6364
nav_section = "Feature flags"
65+
nav_icon = "flag-fill"
6466

6567
def get_initial_queryset(self):
6668
return self.model.objects.all().select_related("flag")

plain-oauth/plain/oauth/admin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class ListView(AdminModelListView):
3939
nav_section = "OAuth"
4040
model = OAuthConnection
4141
title = "Connections"
42+
nav_icon = "link-45deg"
4243
fields = ["id", "user", "provider_key", "provider_user_id"]
4344
cards = [ProvidersChartCard]
4445

plain-observer/plain/observer/admin.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class TraceViewset(AdminViewset):
1717
class ListView(AdminModelListView):
1818
nav_section = "Observer"
1919
model = Trace
20+
nav_icon = "activity"
2021
fields = [
2122
"trace_id",
2223
"request_id",
@@ -41,6 +42,7 @@ class SpanViewset(AdminViewset):
4142
class ListView(AdminModelListView):
4243
nav_section = "Observer"
4344
model = Span
45+
nav_icon = "diagram-3"
4446
fields = [
4547
"name",
4648
"kind",

plain-pageviews/plain/pageviews/admin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class ListView(AdminModelListView):
2222
model = Pageview
2323
nav_section = "Pageviews"
2424
title = "Pageviews"
25+
nav_icon = "eye"
2526
fields = ["user_id", "url", "timestamp", "session_key"]
2627
search_fields = ["id", "user_id", "url", "session_key"]
2728
cards = [PageviewsTrendCard]

plain-redirection/plain/redirection/admin.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class ListView(AdminModelListView):
3232
model = Redirect
3333
nav_section = "Redirection"
3434
title = "Redirects"
35+
nav_icon = "arrow-right-circle"
3536
fields = ["from_pattern", "to_pattern", "http_status", "order", "enabled"]
3637
search_fields = ["from_pattern", "to_pattern"]
3738
allow_global_search = False
@@ -57,6 +58,7 @@ class ListView(AdminModelListView):
5758
model = RedirectLog
5859
nav_section = "Redirection"
5960
title = "Redirect logs"
61+
nav_icon = "journal-text"
6062
fields = [
6163
"created_at",
6264
"from_url",
@@ -79,6 +81,7 @@ class ListView(AdminModelListView):
7981
model = NotFoundLog
8082
nav_section = "Redirection"
8183
title = "404 logs"
84+
nav_icon = "exclamation-triangle"
8285
fields = ["created_at", "url", "user_agent", "ip_address", "referrer"]
8386
search_fields = ["url", "user_agent", "ip_address", "referrer"]
8487
allow_global_search = False

plain-sessions/plain/sessions/admin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class ListView(AdminModelListView):
2222
fields = ["session_key", "expires_at", "created_at"]
2323
search_fields = ["session_key"]
2424
nav_section = "Sessions"
25+
nav_icon = "person-badge"
2526
queryset_order = ["-created_at"]
2627

2728
class DetailView(AdminModelDetailView):

0 commit comments

Comments
 (0)