(icons)=
Wagtail comes with an SVG icon set. The icons are used throughout the admin interface.
Elements that use icons are:
This document describes how to choose, add and customise icons.
An icon name corresponds with the value of id
in the SVG file: <svg id="<name>"
.
Icons are SVG files in the Wagtail admin template folder.
Alternatively, enable the styleguide to view the available icons and their names.
Draw or download an icon and save it in a template folder:
# app/templates/app_name/toucan.svg
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 800" id="icon-toucan">
<!-- This work is licensed under a CC0 license. https://creativecommons.org/publicdomain/zero/1.0/ -->
<path fill="currentColor" d="M321 662v1a41 41 0 1 1-83-2V470c0-129 71-221 222-221 122 0 153-42 153-93 0-34-18-60-53-72v-4c147 23 203 146 203 257 0 107-80 247-277 247v79a41 41 0 1 1-82-1v46a41 41 0 0 1-83 0v-46Z"/>
<path fill="currentColor" d="M555 136a23 23 0 1 0-46 0 23 23 0 0 0 46 0Zm-69-57H175c-60 0-137 36-137 145l9-8 367 6 72 18V79Z"/>
</svg>
The svg
tag should:
id="icon-<name>"
attribute, icons are referenced by this namexmlns="http://www.w3.org/2000/svg"
attributeviewBox="..."
attributeSet <path fill="currentColor"
to give the icon the current color.
Add the icon with the register_icons
hook.
@hooks.register("register_icons")
def register_icons(icons):
return icons + ['app_name/toucan.svg']
Use an icon in a custom template:
{% load wagtailadmin_tags %}
{% icon name="toucan" classname="..." title="..." %}
@hooks.register("register_icons")
def register_icons(icons):
icons.remove("wagtailadmin/icons/time.svg") # Remove the original icon
icons.append("path/to/time.svg") # Add the new icon
return icons
When several applications provide different versions of the same template, the application listed first in INSTALLED_APPS
has precedence.
Place your app before any Wagtail apps in INSTALLED_APPS
.
Wagtail icons live in wagtail/admin/templates/wagtailadmin/icons/
.
Place your own SVG files in <your_app>/templates/wagtailadmin/icons/
.