From ff94e01fd422b9cbc990e623dae900d34b63fd35 Mon Sep 17 00:00:00 2001 From: Nik Richers Date: Fri, 19 Sep 2025 08:27:11 -0700 Subject: [PATCH 01/25] Add API reference links in footer and dropdown --- site/.gitignore | 3 ++- site/_quarto.yml | 9 +++++++-- site/developer/model-testing/testing-overview.qmd | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/site/.gitignore b/site/.gitignore index ea48dacc92..78c6374415 100644 --- a/site/.gitignore +++ b/site/.gitignore @@ -5,4 +5,5 @@ /.luarc.json # Environment -site/.env \ No newline at end of file +site/.env +**/*.quarto_ipynb diff --git a/site/_quarto.yml b/site/_quarto.yml index 8247f87cc2..0c10953cf8 100644 --- a/site/_quarto.yml +++ b/site/_quarto.yml @@ -49,9 +49,13 @@ website: - text: "{{< fa bullhorn >}} Releases" file: releases/all-releases.qmd - text: "---" - - text: "{{< fa cube >}} Python Library" + - text: "{{< fa cube >}} Library" - text: "{{< fa code >}} {{< var validmind.developer >}}" file: developer/validmind-library.qmd + - text: "{{< fa code >}} Python API" + file: validmind/validmind.qmd + - text: "{{< fa code >}} Public REST API" + file: reference/validmind-rest-api-vm.qmd - text: "---" - text: "{{< fa graduation-cap >}} {{< var validmind.training >}}" - text: "{{< fa building-columns >}} Training Courses" @@ -194,7 +198,8 @@ website:
  • For developers
  • For validators
  • Code samples
  • -
  • API Reference
  • +
  • Python API
  • +
  • Public REST API
  • - text: | diff --git a/site/developer/model-testing/testing-overview.qmd b/site/developer/model-testing/testing-overview.qmd index fa10654b03..3600079326 100644 --- a/site/developer/model-testing/testing-overview.qmd +++ b/site/developer/model-testing/testing-overview.qmd @@ -152,4 +152,4 @@ Absolutely! {{< var vm.product >}} supports custom tests that you develop yourse ## {{< var validmind.api >}} reference -[{{< var validmind.developer >}} API Reference](/validmind/validmind.qmd){target="_blank" .button .button-green} +[{{< var validmind.developer >}} Python API Reference](/validmind/validmind.qmd){target="_blank" .button .button-green} From cf51414a6cc1fb1e24bc2fa9db0c88b066c69307 Mon Sep 17 00:00:00 2001 From: Nik Richers Date: Fri, 19 Sep 2025 09:03:19 -0700 Subject: [PATCH 02/25] Reduce Guides section from three to two columns and reshuffle content --- site/_quarto.yml | 10 ++++------ site/styles.css | 4 ---- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/site/_quarto.yml b/site/_quarto.yml index 0c10953cf8..212c25a41b 100644 --- a/site/_quarto.yml +++ b/site/_quarto.yml @@ -175,18 +175,16 @@ website: diff --git a/site/styles.css b/site/styles.css index 26bd84cdbf..c8e773cc3e 100644 --- a/site/styles.css +++ b/site/styles.css @@ -939,10 +939,6 @@ body::before { flex: 1; } -.footer-user-guides-column-3 { - min-width: 125px; - flex: 1; -} .page-footer ul, .page-footer ul li { From 0fa9d62c03336ca78d21a1ba4a61b4021a7f5258 Mon Sep 17 00:00:00 2001 From: Nik Richers Date: Fri, 19 Sep 2025 10:22:43 -0700 Subject: [PATCH 03/25] Move footer CSS into /assets/styles --- site/assets/styles/_footer.scss | 274 ++++++++++++++++++++++++++++++++ site/styles.css | 248 +---------------------------- site/theme.scss | 2 + 3 files changed, 277 insertions(+), 247 deletions(-) create mode 100644 site/assets/styles/_footer.scss diff --git a/site/assets/styles/_footer.scss b/site/assets/styles/_footer.scss new file mode 100644 index 0000000000..8ca64690c4 --- /dev/null +++ b/site/assets/styles/_footer.scss @@ -0,0 +1,274 @@ +/* Footer Styles */ + +/* Nav footer hover styles */ +a.nav-link:not(nav#TOC a.nav-link, .nav-footer a:hover, #nav-menu-log-in:hover):before, +a.dropdown-item:before { + content: ""; + position: absolute; + display: block; + width: 100%; + height: 2px; + bottom: 0; + left: 0; + background-color: #ffffff; + transform: scaleX(0); + transition: transform 0.3s ease; +} + +/* Cookie preferences link */ +.cookie-preferences-link { + font-size: 1em !important; + min-height: 0px; +} + +#custom-cookie-preferences { + display: block; + margin-top: 0.5em; + text-align: left; + color: #fff; + font-weight: 500; + text-decoration: underline; + cursor: pointer; +} + +/* Page footer */ +.page-footer { + display: flex; + flex-wrap: wrap; + align-items: flex-start; + background: #4e868b; + color: #fff; +} + +/* Footer logo section */ +.footer-logo-info { + display: flex; + flex-direction: column; + align-items: flex-start; + flex: 0 1 200px; + min-width: 200px; + max-width: 400px; +} + +.footer-logo { + width: 140px; + margin-bottom: 0.15em; +} + +.footer-logo-column { + display: flex; + flex-direction: row; + width: 100%; + margin-top: 0.25em; +} + +.footer-company-info { + font-size: 1em; + display: flex; + flex-direction: column; + align-items: flex-start; + margin-left: 0.25em; +} + +.footer-company-info > * { + margin: 0; + padding: 0; + white-space: normal; + max-width: 100%; +} + +.footer-company-info a { + display: inline-block; + text-decoration: none; +} + +.footer-company-legal { + font-size: 1em !important; +} + +/* Remove external link icons from footer */ +.footer a.external::after { + content: none !important; + background-image: none !important; + margin-left: 0 !important; + padding-right: 0 !important; +} + +/* Footer sections */ +.footer-heading { + font-weight: bold; + font-size: 1.2em; +} + +.footer-section { + display: flex; + flex-direction: column; + gap: 0.25rem; + color: #fff; +} + +.footer-section ul { + list-style: none; + margin-left: 0 !important; + margin-right: 0 !important; + padding-left: 0 !important; + padding-right: 0 !important; +} + +.footer-section, +.footer-section ul, +.footer-section li, +.footer-section a, +.footer-heading { + text-align: left !important; +} + +.footer-link, .footer-section a { + color: #fff; + text-decoration: none; + font-weight: 400; + font-size: 1.1em; +} + +.footer-section a:hover, .footer-link:hover { + text-decoration: underline; +} + +/* Footer user guides sections */ +.footer-user-guides { + flex: 4 1 0; /* Make center section much wider */ + min-width: 300px; + max-width: 600px; +} + +.footer-user-guides-columns { + display: flex; + gap: 1rem; +} + +.footer-user-guides-column-1 { + min-width: 125px; + flex: 1; +} + +.footer-user-guides-column-2 { + min-width: 160px; + flex: 1; +} + +.page-footer ul, +.page-footer ul li { + list-style: none !important; + margin-left: 0 !important; + margin-right: 0 !important; + padding-left: 0 !important; +} + +/* Make Quarto's footer slots align at the top and reduce spacing */ +.nav-footer { + display: flex !important; + align-items: flex-start !important; + justify-content: space-between !important; + gap: 0 !important; + width: 100%; + padding: 20px 0px; + background: #26818B; +} + +/* Remove default padding/margin from slot containers */ +.nav-footer-left, .nav-footer-center, .nav-footer-right { + margin: 0.5rem !important; + padding: 0.5rem !important; + display: flex !important; + flex-direction: row !important; + align-items: flex-start !important; + min-width: 0; + margin-right: 0.25rem; + flex: 0 1 auto !important; + min-width: 0 !important; +} + +.nav-footer-center .nav-item { + margin-right: 1.5rem; +} + +.nav-footer-center .nav-item:last-child { + margin-right: 0; +} + +/* Remove extra spacing from the User Guides section since it handles its own internal spacing */ +.nav-footer-center .nav-item:first-child { + margin-right: 0; +} + +/* Remove any extra margin from User Guides section */ +.footer-user-guides { + margin-right: -0.5rem; +} + +/* Responsive: stack footer columns and allow full width on small screens */ +@media (max-width: 1124px) { + .nav-footer-center, + .nav-footer-right { + display: none !important; + } +} + +@media (min-width: 1125px) { + .nav-footer-center, + .nav-footer-right { + display: flex !important; + } +} + +@media (max-width: 768px) { + .page-footer, + .quarto-nav-footer { + flex-direction: column !important; + align-items: stretch !important; + } + + .nav-footer-left, + .nav-footer-center, + .nav-footer-right { + flex-direction: column !important; + width: 100% !important; + min-width: 0 !important; + max-width: 100% !important; + } + + .nav-footer-center, + .nav-footer-right { + display: none; + } + + .footer-logo-info, + .footer-user-guides, + .footer-section { + max-width: 100% !important; + min-width: 0 !important; + width: 100% !important; + margin-bottom: 1.5em; + } + + .footer-company-info { + font-size: 1em; + font-weight: normal; + display: flex; + flex-direction: column; + align-items: flex-start; + margin-left: 0.25em; + } + + .footer-company-info > * { + margin: 0 !important; + padding: 0 !important; + font-size: inherit; + white-space: normal; + } + + .footer-user-guides-columns { + flex-direction: column; + gap: 0.5em; + } +} diff --git a/site/styles.css b/site/styles.css index c8e773cc3e..2191f05dd9 100644 --- a/site/styles.css +++ b/site/styles.css @@ -57,7 +57,7 @@ a.nav-link, a.dropdown-item { position: relative; } -a.nav-link:not(nav#TOC a.nav-link, .nav-footer a:hover, #nav-menu-log-in:hover):before, +a.nav-link:not(nav#TOC a.nav-link, #nav-menu-log-in:hover):before, a.dropdown-item:before { content: ""; position: absolute; @@ -818,207 +818,10 @@ body::before { display: none; /* Hide the default close button if not needed */ } -/* Added for the new footer */ -.page-footer { - display: flex; - flex-wrap: wrap; - align-items: flex-start; - background: #4e868b; - color: #fff; -} - -.footer-logo-info { - display: flex; - flex-direction: column; - align-items: flex-start; - flex: 0 1 200px; - min-width: 200px; - max-width: 400px; -} - -.footer-logo { - width: 140px; - margin-bottom: 0.15em; -} - -.footer-logo-column { - display: flex; - flex-direction: row; - width: 100%; - margin-top: 0.25em; -} - -.footer-company-info { - font-size: 1em; - display: flex; - flex-direction: column; - align-items: flex-start; - margin-left: 0.25em; -} - -.footer-company-info > * { - margin: 0; - padding: 0; - white-space: normal; - max-width: 100%; -} - -.footer-company-info a { - display: inline-block; - text-decoration: none; -} - -.footer-company-legal { - font-size: 1em !important; -} - -.footer a.external::after { - content: none !important; - background-image: none !important; - margin-left: 0 !important; - padding-right: 0 !important; -} - -.cookie-preferences-link { - font-size: 1em !important; - min-height: 0px; -} - -#custom-cookie-preferences { - display: block; - margin-top: 0.5em; - text-align: left; - color: #fff; - font-weight: 500; - text-decoration: underline; - cursor: pointer; -} - -.footer-heading { - font-weight: bold; - font-size: 1.2em; -} - -.footer-section ul { - list-style: none; - margin-left: 0 !important; - margin-right: 0 !important; - padding-left: 0 !important; - padding-right: 0 !important; -} - -.footer-link, .footer-section a { - color: #fff; - text-decoration: none; - font-weight: 400; - font-size: 1.1em; -} - -.footer-section a:hover, .footer-link:hover { - text-decoration: underline; -} -.footer-user-guides { - flex: 4 1 0; /* Make center section much wider */ - min-width: 300px; - max-width: 600px; -} - -.footer-user-guides-columns { - display: flex; - gap: 1rem; -} - -.footer-user-guides-column-1 { - min-width: 125px; - flex: 1; -} - -.footer-user-guides-column-2 { - min-width: 160px; - flex: 1; -} - - -.page-footer ul, -.page-footer ul li { - list-style: none !important; - margin-left: 0 !important; - margin-right: 0 !important; - padding-left: 0 !important; -} - -/* Make Quarto's footer slots align at the top and reduce spacing */ -.nav-footer { - display: flex !important; - align-items: flex-start !important; - justify-content: space-between !important; - gap: 0 !important; - width: 100%; - padding: 20px 0px; - background: #26818B; -} - -/* Remove default padding/margin from slot containers */ -.nav-footer-left, .nav-footer-center, .nav-footer-right { - margin: 0.5rem !important; - padding: 0.5rem !important; - display: flex !important; - flex-direction: row !important; - align-items: flex-start !important; - min-width: 0; - margin-right: 0.25rem; - flex: 0 1 auto !important; - min-width: 0 !important; -} - -.nav-footer-center .nav-item { - margin-right: 1.5rem; -} -.nav-footer-center .nav-item:last-child { - margin-right: 0; -} -/* Remove extra spacing from the User Guides section since it handles its own internal spacing */ -.nav-footer-center .nav-item:first-child { - margin-right: 0; -} -/* Remove any extra margin from User Guides section */ -.footer-user-guides { - margin-right: -0.5rem; -} - -.footer-section { - display: flex; - flex-direction: column; - gap: 0.25rem; - color: #fff; -} - -.footer-section, -.footer-section ul, -.footer-section li, -.footer-section a, -.footer-heading { - text-align: left !important; -} - -/* Responsive: stack footer columns and allow full width on small screens */ -@media (max-width: 1124px) { - .nav-footer-center, - .nav-footer-right { - display: none !important; - } -} - -@media (min-width: 1125px) { - .nav-footer-center, - .nav-footer-right { - display: flex !important; - } -} @media (max-width: 768px) { #nav-menu-log-in { @@ -1048,54 +851,5 @@ body::before { .search-shortcut { display: none !important; } - .page-footer, - .quarto-nav-footer { - flex-direction: column !important; - align-items: stretch !important; - } - - .nav-footer-left, - .nav-footer-center, - .nav-footer-right { - flex-direction: column !important; - width: 100% !important; - min-width: 0 !important; - max-width: 100% !important; - } - - .nav-footer-center, - .nav-footer-right { - display: none; - } - - .footer-logo-info, - .footer-user-guides, - .footer-section { - max-width: 100% !important; - min-width: 0 !important; - width: 100% !important; - margin-bottom: 1.5em; - } - - .footer-company-info { - font-size: 1em; - font-weight: normal; - display: flex; - flex-direction: column; - align-items: flex-start; - margin-left: 0.25em; - } - - .footer-company-info > * { - margin: 0 !important; - padding: 0 !important; - font-size: inherit; - white-space: normal; - } - - .footer-user-guides-columns { - flex-direction: column; - gap: 0.5em; - } } diff --git a/site/theme.scss b/site/theme.scss index 8b0da24f2e..fcfe8c9749 100644 --- a/site/theme.scss +++ b/site/theme.scss @@ -70,3 +70,5 @@ $mermaid-label-fg-color: #36454F; color: #111; border-color: #de257e; } + +@import 'assets/styles/_footer.scss'; From 756a55d2c3b82cc26d481c138a15ef7bc297ed28 Mon Sep 17 00:00:00 2001 From: Nik Richers Date: Fri, 19 Sep 2025 12:20:57 -0700 Subject: [PATCH 04/25] Check out .gitignore from main --- site/.gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/site/.gitignore b/site/.gitignore index 78c6374415..ea48dacc92 100644 --- a/site/.gitignore +++ b/site/.gitignore @@ -5,5 +5,4 @@ /.luarc.json # Environment -site/.env -**/*.quarto_ipynb +site/.env \ No newline at end of file From 7e84d8b728c71d0f9d2e3a0f139dd9c5fa5202cf Mon Sep 17 00:00:00 2001 From: Nik Richers Date: Fri, 19 Sep 2025 15:40:03 -0700 Subject: [PATCH 05/25] Re-add Assess to footer and simplify dropdown --- site/_quarto.yml | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/site/_quarto.yml b/site/_quarto.yml index 212c25a41b..716b6eda95 100644 --- a/site/_quarto.yml +++ b/site/_quarto.yml @@ -38,27 +38,25 @@ website: right: - text: "{{< fa book-open >}} Documentation" menu: - - text: "{{< fa circle-info >}} About {{< var vm.product >}}" + - text: "About {{< var vm.product >}}" file: about/overview.qmd - - text: "{{< fa rocket >}} Get Started" + - text: "Get Started" file: get-started/get-started.qmd - - text: "{{< fa book >}} Guides" + - text: "Guides" file: guide/guides.qmd - - text: "{{< fa envelope-open-text >}} Support" + - text: "Support" file: support/support.qmd - - text: "{{< fa bullhorn >}} Releases" + - text: "Releases" file: releases/all-releases.qmd - text: "---" - - text: "{{< fa cube >}} Library" - - text: "{{< fa code >}} {{< var validmind.developer >}}" + - text: "{{< var validmind.developer >}}" file: developer/validmind-library.qmd - - text: "{{< fa code >}} Python API" + - text: "Python API" file: validmind/validmind.qmd - - text: "{{< fa code >}} Public REST API" + - text: "Public REST API" file: reference/validmind-rest-api-vm.qmd - text: "---" - - text: "{{< fa graduation-cap >}} {{< var validmind.training >}}" - - text: "{{< fa building-columns >}} Training Courses" + - text: "Training Courses" file: training/training.qmd # The log in menu is defined in _quarto-development.yml, _quarto-staging.yml, and _quarto-production.yml as not all environments have the same login options. @@ -175,14 +173,15 @@ website: