From 169c417250f64c31bcc61669963f7942b47070cd Mon Sep 17 00:00:00 2001 From: Chris Holdgraf Date: Fri, 7 Jan 2022 16:39:45 -0800 Subject: [PATCH] Add ability to specify custom icon images --- docs/_static/pydata-logo-square.png | Bin 0 -> 11081 bytes docs/conf.py | 8 +- docs/user_guide/configuring.rst | 82 +++++++++++++++--- .../assets/styles/index.scss | 4 + .../theme/pydata_sphinx_theme/icon-links.html | 18 ++-- tests/test_build.py | 40 +++++++++ tests/test_build/icon_links.html | 24 ----- tests/test_build/navbar_icon_links.html | 43 +++++++++ 8 files changed, 177 insertions(+), 42 deletions(-) create mode 100644 docs/_static/pydata-logo-square.png delete mode 100644 tests/test_build/icon_links.html create mode 100644 tests/test_build/navbar_icon_links.html diff --git a/docs/_static/pydata-logo-square.png b/docs/_static/pydata-logo-square.png new file mode 100644 index 0000000000000000000000000000000000000000..8c23c23da85e207aab89c867966fad7e4999d8d9 GIT binary patch literal 11081 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/", # required + # Icon class (if type=='fontawesome'), or path to local image (if type=='local') + "icon": "fab fa-github-square", + # Whether icon should be a FontAwesome class, or a local file + "type": "fontawesome OR local", # Default is fontawesome + } + ] + } + +There are two kinds of icons you can use, described below: + +FontAwesome icons +----------------- + +`FontAwesome `_ is a collection of icons that are +commonly used in websites. They include both generic shape icons (e.g., "arrow-down"), +as well as brand-specific icons (e.g. "github"). + +You can use FontAwesome icons by specifying ``type=="fontawesome"``, and +specifying a FontAwesome class in the ``icon`` value. +The value of ``icon`` can be any full +`FontAwesome 5 Free `__ icon. +In addition to the main icon class, e.g. ``fa-cat``, the "style" class must +also be provided e.g. `fab` for *branding*, or `fas` for *solid*. + +Here are several examples: .. code:: python @@ -46,28 +83,24 @@ following configuration: "name": "GitHub", "url": "https://github.com//", "icon": "fab fa-github-square", + "type": "fontawesome", }, { "name": "GitLab", "url": "https://gitlab.com//", "icon": "fab fa-gitlab", + "type": "fontawesome", }, { "name": "Twitter", "url": "https://twitter.com/", "icon": "fab fa-twitter-square", + # The default for `type` is `fontawesome` so it is not required here }, ], ... } - -The value of ``icon`` can be any full -`FontAwesome 5 Free `__ icon. -In addition to the main icon class, e.g. ``fa-cat``, the "style" class must -also be provided e.g. `fab` for *branding*, or `fas` for *solid*. - - .. Hint:: To get custom colors like "Twitter blue", use the following in your CSS, @@ -81,8 +114,35 @@ also be provided e.g. `fab` for *branding*, or `fas` for *solid*. This has already been added for the brands that have *shortcuts*. -The below are shortcuts for commonly-used services, but may be removed in a future -release in favor of ``icon_links``: +Local image icons +----------------- + +If you'd like to display an icon image that is not in the FontAwesome icons library, +you may instead specify a path to a local image that will be used for the icon. +To do so, use ``type=="local"``, and add a path to an image +**relative to your documentation root** in the ``icon`` value. +Here is an example: + +.. code:: python + + html_theme_options = { + ... + "icon_links": [ + { + "name": "PyData", + "url": "https://pydata.org", + "icon": "_static/pydata-logo-square.png", + "type": "local", + }, + ], + ... + } + +Icon Link Shortcuts +------------------- + +There are a few shortcuts supported to minimize configuration for commonly-used services. +These may be removed in a future release in favor of ``icon_links``: .. code:: python diff --git a/src/pydata_sphinx_theme/assets/styles/index.scss b/src/pydata_sphinx_theme/assets/styles/index.scss index a0dcf5466a..450852e8bf 100644 --- a/src/pydata_sphinx_theme/assets/styles/index.scss +++ b/src/pydata_sphinx_theme/assets/styles/index.scss @@ -457,6 +457,10 @@ nav.bd-links { color: #0052cc; } } + + img.icon-link-image { + height: 1.5em; + } } /* TOC section headers */ diff --git a/src/pydata_sphinx_theme/theme/pydata_sphinx_theme/icon-links.html b/src/pydata_sphinx_theme/theme/pydata_sphinx_theme/icon-links.html index 4dd3aa9211..0b0b211feb 100644 --- a/src/pydata_sphinx_theme/theme/pydata_sphinx_theme/icon-links.html +++ b/src/pydata_sphinx_theme/theme/pydata_sphinx_theme/icon-links.html @@ -1,8 +1,14 @@ -{%- macro icon_link_nav_item(url, icon, name) -%} +{%- macro icon_link_nav_item(url, icon, name, type) -%} {%- if url | length > 2 %} @@ -11,12 +17,12 @@ diff --git a/tests/test_build.py b/tests/test_build.py index 4e6e0ef2d0..831d000444 100644 --- a/tests/test_build.py +++ b/tests/test_build.py @@ -91,6 +91,46 @@ def test_toc_visibility(sphinx_build_factory): assert "visible" not in index_html.select(".toc-h3 ul")[0].attrs["class"] +def test_icon_links(sphinx_build_factory, file_regression): + html_theme_options_icon_links = { + "icon_links": [ + { + "name": "FONTAWESOME", + "url": "https://site1.org", + "icon": "FACLASS", + "type": "fontawesome", + }, + { + "name": "FONTAWESOME DEFAULT", + "url": "https://site2.org", + "icon": "FADEFAULTCLASS", + # No type so we can test that the default is fontawesome + }, + { + "name": "LOCAL FILE", + "url": "https://site3.org", + "icon": "emptylogo.png", # Logo is our only test site img + "type": "local", + }, + { + "name": "WRONG TYPE", + "url": "https://site4.org", + "icon": "WRONG TYPE", + # Because the type is inccorect, this should output an error `span` + "type": "incorrecttype", + }, + ] + } + confoverrides = {"html_theme_options": html_theme_options_icon_links} + + sphinx_build = sphinx_build_factory("base", confoverrides=confoverrides).build() + # Navbar should have the right icons + icon_links = sphinx_build.html_tree("index.html").select("#navbar-icon-links")[0] + file_regression.check( + icon_links.prettify(), basename="navbar_icon_links", extension=".html" + ) + + def test_logo(sphinx_build_factory): """Test that the logo is shown by default, project title if no logo.""" sphinx_build = sphinx_build_factory("base").build() diff --git a/tests/test_build/icon_links.html b/tests/test_build/icon_links.html deleted file mode 100644 index c315052760..0000000000 --- a/tests/test_build/icon_links.html +++ /dev/null @@ -1,24 +0,0 @@ - diff --git a/tests/test_build/navbar_icon_links.html b/tests/test_build/navbar_icon_links.html new file mode 100644 index 0000000000..604896a60c --- /dev/null +++ b/tests/test_build/navbar_icon_links.html @@ -0,0 +1,43 @@ +