From c524a74d5eb0fa390f50459e5b18d226283bd6db Mon Sep 17 00:00:00 2001 From: Martin Traverse Date: Tue, 5 Nov 2024 11:46:35 +0000 Subject: [PATCH] Update documentation styling with new layout and theme (#468) * Update Sphinx dependencies * Add finTRAC stylesheet and icons * Update Sphinx config and main index page to use the new theme (Wagtail) with finTRAC styling and links * Use toc-hidden to hide the global TOC tree without impacting navigation * Improve display of Sphinx Design cards * Styling for inline code in light and dark mode * Styling for preformatted code samples * Do not use bold for code links in the page nav menu * Update handling of version / release numbers for docs * Add styling for Sphinx Design primary buttons * Update documentation static assets * Update logo alt text for docs --- dev/docgen/docgen-ctrl.py | 4 +- dev/requirements.txt | 15 +- doc/_static/tracdap.css | 338 ++++++++++++++++++++++++++++++++ doc/_static/tracdap_favicon.ico | Bin 0 -> 30035 bytes doc/_static/tracdap_logo.svg | 18 ++ doc/conf.py | 69 ++++--- doc/index.rst | 42 ++-- 7 files changed, 416 insertions(+), 70 deletions(-) create mode 100644 doc/_static/tracdap.css create mode 100644 doc/_static/tracdap_favicon.ico create mode 100644 doc/_static/tracdap_logo.svg diff --git a/dev/docgen/docgen-ctrl.py b/dev/docgen/docgen-ctrl.py index 860598674..5fbb2f75c 100644 --- a/dev/docgen/docgen-ctrl.py +++ b/dev/docgen/docgen-ctrl.py @@ -195,8 +195,8 @@ def get_version_and_release(self): version_result = self._run_subprocess(version_exe, version_args, capture_output=True, use_venv=False) version_output = version_result.stdout.decode("utf-8").strip() - version = re.sub(r"[+-].+$", "", version_output) - release = re.sub(r".*\+.+$", "(latest dev)", version_output) + version = re.sub(r"(\d+\.\d+).*$", r"\1", version_output) + release = re.sub(r"([^+]+)\+.+$", r"\1 (dev)", version_output) self._log.info(f"TRAC D.A.P. version: {version}") self._log.info(f"TRAC D.A.P. release: {release}") diff --git a/dev/requirements.txt b/dev/requirements.txt index e12269f50..77a24a4d1 100644 --- a/dev/requirements.txt +++ b/dev/requirements.txt @@ -7,14 +7,7 @@ grpcio-tools ~= 1.66.1 googleapis-common-protos ~= 1.63 # Doc generation -sphinx ~= 7.2.0 -sphinx-autoapi ~= 3.0.0 -sphinx-design ~= 0.5.0 -sphinxcontrib-fulltoc ~= 1.2 -cloud-sptheme ~= 1.10 - -# Cloud Sphinx theme uses jinja2.Markup, which was deprecated in jinja2 3.0 and removed in 3.1 -# I raised an issue here: foss.heptapod.net/doc-utils/cloud_sptheme/-/issues/47 -# We can use 3.0 until a fix is ready, if no fix comes we can think about changing theme - -jinja2 <3.1 +sphinx ~= 8.0.2 +sphinx-autoapi ~= 3.3.2 +sphinx-design ~= 0.6.1 +sphinx-wagtail-theme ~= 6.3.0 diff --git a/doc/_static/tracdap.css b/doc/_static/tracdap.css new file mode 100644 index 000000000..65c405897 --- /dev/null +++ b/doc/_static/tracdap.css @@ -0,0 +1,338 @@ + + +/* Stick the footer to the bottom of the page */ + +html { + position: relative; + min-height: 100%; +} + +body { + margin: 0 0 120px; +} + +footer { + overflow: hidden; + position: absolute; + height: 120px; + bottom: 0; +} + +img.align-center { + margin-left: auto; + margin-right: auto; + display: block; +} + +/* Allow hiding the TOC tree without affecting global navigation */ + +.toc-hidden { + display: none; +} + +/* Main header & footer color */ + +body { + background-color: #FFFFFF; +} + +.bg-primary { + background-color: #1D3D59 !important; +} + +/* Main headings (light & dark) */ + +div.rst-content h1, +div.rst-content h2, +div.rst-content h3, +div.rst-content h4, +div.rst-content h5, +div.rst-content h6 { + + color: #D9815E; + font-weight: normal; + text-transform: uppercase; +} + +/* Code - matches default link color */ + +code { + color: #3B668C; + font-weight: bolder; +} + +/* Do not use bold for code links in the page nav menu */ + +nav code { + font-weight: normal; +} + +/* Pre-formatted code blocks are the same in dark and light mode */ + +pre { + background-color: #1D3D59 !important; + color: #EEEEEE; +} + +pre > span.linenos { + color: #BBBBBB; + margin-right: 10px; +} + +/* Main buttons (light & dark) */ + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:focus-within, +.btn-primary:not(:disabled):not(.disabled):active, +.btn-primary:not(:disabled):not(.disabled).active { + background-color: #1D3D59; + border-color: #1D3D59 !important; +} + +*:focus { + outline: 2.5px solid #A3C4DA !important; +} + +/* light mode - Links */ + +a, +a.reference, +.btn-link, +.nav-link { + color: #3B668C; + text-decoration-color: #D9815E; +} + +a:focus, +a.reference:focus-within, +a.reference:focus, +a:focus-within, +.btn-link:focus, +.btn-link:focus-within, +.nav-link:focus, +.nav-link:focus-within { + color: #D9815E; + text-decoration-color: #D9815E; + border: none !important; + outline: none !important; +} + +a:hover, +a.reference:hover, +.btn-link:hover, +.nav-link:hover { + color: #D9815E; + text-decoration-color: #EFAD87; + text-decoration-thickness: 2px; +} + +a:not(:disabled):not(.disabled):active, +a:not(:disabled):not(.disabled).active, +a.reference:not(:disabled):not(.disabled):active, +a.reference:not(:disabled):not(.disabled).active, +.btn-link:not(:disabled):not(.disabled):active, +.btn-link:not(:disabled):not(.disabled).active, +.nav-link:not(:disabled):not(.disabled):active, +.nav-link:not(:disabled):not(.disabled).active { + color: #CF7744 !important; + text-decoration-color: #D9815E; + border: none !important; + outline: none !important; +} + +.toc .toctree-expand { + color: #3B668C !important; +} + +.toc .toctree-expand:hover { + color: #D9815E !important; +} + +.toc .current > a { + color: #D9815E; +} + + +/* Sphinx Design Elements */ + +.sd-card-header { + background-color: #F8F8F8; +} + +.sd-card-body { + +} + +.sd-card-footer { + +} + +.sd-btn-outline-primary { + color: #3B668C !important; + border-color: #3B668C !important; + font-weight: bolder; +} + +.sd-btn-outline-primary:hover{ + color: #FFFFFF !important; + background-color: #3B668C !important; +} + + +/* Dark mode - background */ + +body.theme-dark { + background-color: #2A2A2A; +} + +body.theme-dark hr, +body.theme-dark .border, +body.theme-dark .with-border, +body.theme-dark .border-top, +body.theme-dark .border-right, +body.theme-dark .sidebar-container, +body.theme-dark .border-bottom, +body.theme-dark .border-left, +body.theme-dark .search li { + border-color: #3A3A3A !important; +} + +body.theme-dark .bg-primary { + background-color: #1D3D59 !important; +} + +/* Dark mode - Search and light / dark buttons */ + +body.theme-dark .btn-light { + background-color: #1D3D59; + border-color: #3B668C; + color: #CCCCCC; +} + +body.theme-dark .btn-light:hover, +body.theme-dark .btn-light:focus, +body.theme-dark .btn-light:focus-within, +body.theme-dark .btn-light:not(:disabled):not(.disabled):active, +body.theme-dark .btn-light:not(:disabled):not(.disabled).active { + background-color: #3B668C; + color: #CCCCCC; +} + +body.theme-dark .form-control, +body.theme-dark .input-group-text, +body.theme-dark .input-group-text.bg-white { + background-color: #1D3D59 !important; + border-color: #3B668C; + color: #CCCCCC; +} + +/* Dark mode - Code - matches default link color */ + +body.theme-dark code { + color: #A3C4D9; +} + +/* Dark mode - Tables */ + +.table-dark, +body.theme-dark table.docutils:not(.field-list) { + background-color: #1D3D59; + color: #EAEAEA; +} + +.table-dark th, +body.theme-dark table.docutils:not(.field-list) th, +.table-dark td, body.theme-dark table.docutils:not(.field-list) td, +.table-dark thead th { + border-color: #3B668C; +} + +/* Dark mode - Links */ + +body.theme-dark a, +body.theme-dark a.reference, +body.theme-dark .btn-link, +body.theme-dark .nav-link { + /* color: #8eb3c9; */ + color: #A3C4D9; + text-decoration-color: #D9815E; +} + +body.theme-dark a:focus, +body.theme-dark a:focus-within, +body.theme-dark a.reference:focus, +body.theme-dark a.reference:focus-within, +body.theme-dark .btn-link:focus, +body.theme-dark .btn-link:focus-within, +body.theme-dark .nav-link:focus, +body.theme-dark .nav-link:focus-within { + color: #D9815E !important; + text-decoration-color: #D9815E; + text-decoration-thickness: 2px; + border: none !important; + outline: none !important; +} + +body.theme-dark a:hover, +body.theme-dark a.reference:hover, +body.theme-dark .btn-link:hover, +body.theme-dark .nav-link:hover { + color: #D9815E; + text-decoration-color: #cf6b44; + text-decoration-thickness: 2px; + border: none !important; + outline: none !important; +} + +body.theme-dark a:not(:disabled):not(.disabled):active, +body.theme-dark a:not(:disabled):not(.disabled).active, +body.theme-dark a.reference:not(:disabled):not(.disabled):active, +body.theme-dark a.reference:not(:disabled):not(.disabled).active, +body.theme-dark .btn-link:not(:disabled):not(.disabled):active, +body.theme-dark .btn-link:not(:disabled):not(.disabled).active, +body.theme-dark .nav-link:not(:disabled):not(.disabled):active, +body.theme-dark .nav-link:not(:disabled):not(.disabled).active { + color: #EFAD87; + text-decoration-color: #cf6b44; + border: none; +} + +body.theme-dark .toc .toctree-expand { + color: #A3C4D9 !important; + /* Matches the background border color */ + background-color: #3A3A3A; +} + +body.theme-dark .toc .toctree-expand:hover { + color: #D9815E !important; +} + +body.theme-dark .toc .current > a { + color: #D9815E; +} + + +/* Dark Mode - Sphinx Design Elements */ + +body.theme-dark .sd-card-header { + background-color: #343434; +} + +body.theme-dark .sd-card-body { + background-color: #2E2E2E; +} + +body.theme-dark .sd-card-footer { + background-color: #2E2E2E; +} + +body.theme-dark .sd-btn-outline-primary { + color: #A3C4D9 !important; + border-color: #A3C4D9 !important; +} + +body.theme-dark .sd-btn-outline-primary:hover{ + color: #A3C4D9 !important; + background-color: #A3C4D9 !important; +} \ No newline at end of file diff --git a/doc/_static/tracdap_favicon.ico b/doc/_static/tracdap_favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..31320caad77c22dd2a0136d02848d3f6b79504e4 GIT binary patch literal 30035 zcmeFaOU(3Wz8}HGRq3@f|u`(YJC-@jA^Hu^P2 zd>_X?`oW(WYyXl({l`Icy_G-w-rxVtzy7_CZ{ZKW=gNjHm))o155M=C{8RY(`7!prk6(xM*$=8I=Q7MoR- ze@u|yCz$WSByAXfs*9U_f`8b$$g*w_+L`|%dPCIF8NbmnC9J>_wy*Qk)hxFKg(r&aO`IjRN*b2zA~J7 z-38^nomu((pnt5@?fUfqyZ%km-kDP!VS3b6_x2L42iW{S{<)NNy&ioof?vBqA5H*= ze_=SRyrO*b`HSM6n7xh#A!=_!6mHt8c*$+;w_WtS#2y4;@v zyA^)~6MR3sg`eUC$%Ro6e8O=o`^kc%!cX{!!apGxf5GC53rjEJA7Eb@4jc4-(p%Z} zetC)BO?vw|C;h_kFHBmsH!voCE`IfjN&FJxJjZ?FQ*hafFeE?mLl*xe=A(cOiP(=g z=KU3a%`{KZddj_`d~x|+y8G_aubz^PeU4^h=97RUqE8kq9e)zA3-%KxqAt;e=D8?} zKAZIO;qRmv&LrPD(46UcmN$!IM9u4$x8L&HH*eo-twA_H^)F8w^`p**U4P!=7e0GV z{n>Gs#4oQ=_#^E7LGM5K;HWPw{ZkyCJNL6L?(@W782-VuT^08azm0?|h}zF&Ki+QS z!*L%>`ADMj13SiiN)ew@^m{w@Ho@zt*SI$uo8SI_xyD3969h*SpO6%Xf3om-{1YyY zf=`I}vS34+Si4Sf1*w0!70`q2S8c`5wi;g<4%_^0 z&f`C>sd$_FYo__f@+L6rH{0^h{RSK=ZHwzSAAZGd#r1RR|EZbWi=gyxdH1zw6*lwyyxY-|L~n6zCSdHZr7y$5xL+#Kl0sYUpn#?0R0H#Q*0p!CnNKA z`c+s8*R@~>%dH@Y7<&>rOG<`N;%8stA6rqmD}t~%Ww|P#xPS=H*HVB1&(|8Jc@Biv zNmyd&LJ+e}7LdDKkj&S|LW~8%7QVcm*2q$@*2}B4Sza?~c{=Y_kE^u2UJs&B?N^U# zFD?Z|6duoiCs9~vYk@n8OU2wQPbRV+AAvM>7kT93&;C8u^73&}MFBsrm%>>}EPbO_ zpMU@ESmd(-UmW}mKVux+-03QyaEplWSnGnY)rFIy!~LuU|8>i{}Funw2)>Qo(IiWN*Q3fI#LK7(a|NlIl2gB2YXd$ZNI z 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 mZgzRefWp-<;I~0%elCs9eE + + + + + + + + + + + diff --git a/doc/conf.py b/doc/conf.py index 82a9d9174..66bd0cb3a 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -83,12 +83,12 @@ def setup(app): 'autoapi.extension', 'sphinx_design', - 'sphinxcontrib.fulltoc', - 'cloud_sptheme.ext.relbar_links' + "sphinx_wagtail_theme" ] -autosectionlabel_prefix_document = True + +# Auto API configuration autoapi_dirs = [ '../build/doc/code/platform_api', @@ -109,43 +109,52 @@ def setup(app): autoapi_member_order = 'groupwise' autoapi_add_toctree_entry = False -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = [ - '_templates' +# Content generation + +header_links = [ + "GitHub|https://github.com/finos/tracdap", + "fintrac.co.uk|https://fintrac.co.uk/" ] +footer_links = [ + "Website|https://fintrac.co.uk/", + "Contact|https://fintrac.co.uk/contact", + "Legal|https://fintrac.co.uk/legal", +] -# -- Options for HTML output ------------------------------------------------- +autosectionlabel_prefix_document = True + +rst_prolog = """ +.. meta:: + :theme-color: #1D3D59 +""" -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'cloud' -master_doc = 'index' -index_doc = 'index' +# -- Options for HTML output ------------------------------------------------- -relbar_links = [("index", "home")] +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. -html_theme_options = { - 'max_width': '80%', - 'externalrefs': False -} +html_theme = "sphinx_wagtail_theme" +html_css_files = ["tracdap.css"] -html_sidebars = {'**': ['globaltoc.html', 'searchbox.html']} +html_theme_options = dict( + project_name = f"TRAC D.A.P. Documentation (Version {version})", + logo = "tracdap_logo.svg", + logo_alt = "TRAC D.A.P. Logo", + logo_height = 59, + logo_url = "/", + logo_width = 45, -html_show_sphinx = False + github_url = None, + header_links = ",".join(header_links), + footer_links = ",".join(footer_links) +) -html_context = { - 'shorttitle': short_title -} +html_copy_source = False +html_show_sourcelink = False -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -# html_static_path = ['_static'] +html_favicon = "_static/tracdap_favicon.ico" +html_static_path = ["_static"] diff --git a/doc/index.rst b/doc/index.rst index a76a12186..ef444d685 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -17,25 +17,11 @@ TRAC Data & Analytics Platform If you have particular questions or issues, please raise a ticket on our `issue tracker `_. - -.. toctree:: - :hidden: - - overview/index - modelling/index - app_dev/index - deployment/index - reference/index - - .. grid:: 1 2 2 2 :gutter: 3 .. grid-item-card:: - :class-header: sd-bg-light sd-pt-0 sd-pb-1 - :class-body: sd-py-0 - :class-footer: sd-border-0 sd-pt-0 sd-pb-3 - :shadow: md + :class-footer: sd-border-0 **Learn about TRAC** ^^^^^^^^^^^^^^^^^^^^ @@ -51,10 +37,7 @@ TRAC Data & Analytics Platform Platform overview .. grid-item-card:: - :class-header: sd-bg-light sd-pt-0 sd-pb-1 - :class-body: sd-py-0 - :class-footer: sd-border-0 sd-pt-0 sd-pb-3 - :shadow: md + :class-footer: sd-border-0 **Build and run models** ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -70,10 +53,7 @@ TRAC Data & Analytics Platform Modelling .. grid-item-card:: - :class-header: sd-bg-light sd-pt-0 sd-pb-1 - :class-body: sd-py-0 - :class-footer: sd-border-0 sd-pt-0 sd-pb-3 - :shadow: md + :class-footer: sd-border-0 **Build applications and workflows** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -91,10 +71,7 @@ TRAC Data & Analytics Platform App development .. grid-item-card:: - :class-header: sd-bg-light sd-pt-0 sd-pb-1 - :class-body: sd-py-0 - :class-footer: sd-border-0 sd-pt-0 sd-pb-3 - :shadow: md + :class-footer: sd-border-0 **Deploy and manage the platform** @@ -112,6 +89,17 @@ TRAC Data & Analytics Platform Deployment +.. toctree:: + :class: toc-hidden + :maxdepth: 1 + + overview/index + modelling/index + app_dev/index + deployment/index + reference/index + + .. rubric:: Can't find what you're looking for? * :ref:`search` let's you search across all the TRAC documentation