From adfbaa9161f5bce1fd250a7736b8f5904064be0d Mon Sep 17 00:00:00 2001 From: Dimitrie Hoekstra Date: Thu, 16 Jul 2026 11:01:47 +0200 Subject: [PATCH 01/58] Add outcome and use-case lens IA, mega nav, utility bar, and AI page rework Template-content pages for the three-lens navigation model: operational use-case pages tagged by industry and value with an AI build layer and Expert dock, outcome lens pages derived from those tags, derived use-case grids on industry pages and systematic cross-link includes, a full-width mega navigation with hover intent and animated underlines across both headers, a top utility bar implementing the intent of PR 5067, homepage use-case links, and an Industrial AI page reworked against the competitor research. --- nuxt/components/AppHeader.vue | 108 ++++-- src/_includes/base.js | 16 + src/_includes/components/events-banner.njk | 76 ----- src/_includes/components/expert-dock.njk | 20 ++ .../components/industry-use-cases.njk | 27 ++ src/_includes/components/top-utility-bar.njk | 75 ++++ src/_includes/components/use-case-chips.njk | 44 +++ src/_includes/components/use-case-links.njk | 23 ++ src/_includes/layouts/base.njk | 120 +++++-- src/_includes/layouts/industry.njk | 5 + src/_includes/layouts/use-case.njk | 38 +++ src/_includes/layouts/value.njk | 92 +++++ src/ai.njk | 323 ++++++++++-------- src/css/style.css | 194 +++++++++++ src/index.njk | 21 +- src/industries/automotive.njk | 6 + src/outcomes.njk | 50 +++ src/outcomes/ai-readiness-data-foundation.njk | 17 + src/outcomes/asset-reliability.njk | 17 + src/outcomes/labor-operational-efficiency.njk | 17 + src/outcomes/outcomes.json | 4 + src/outcomes/production-performance.njk | 17 + src/outcomes/quality-compliance.njk | 17 + src/use-cases.njk | 32 +- src/use-cases/continuous-improvement.njk | 101 ++++++ src/use-cases/edge-connectivity.njk | 10 + src/use-cases/equipment-monitoring.njk | 101 ++++++ src/use-cases/governed-ai-access.njk | 101 ++++++ src/use-cases/operational-data-pipelines.njk | 101 ++++++ src/use-cases/production-monitoring.njk | 14 + src/use-cases/quality-validation.njk | 101 ++++++ src/use-cases/shop-floor-communication.njk | 102 ++++++ src/use-cases/system-diagnostics.njk | 101 ++++++ src/use-cases/track-and-trace.njk | 101 ++++++ src/use-cases/workforce-assignment.njk | 101 ++++++ 35 files changed, 1997 insertions(+), 296 deletions(-) delete mode 100644 src/_includes/components/events-banner.njk create mode 100644 src/_includes/components/expert-dock.njk create mode 100644 src/_includes/components/industry-use-cases.njk create mode 100644 src/_includes/components/top-utility-bar.njk create mode 100644 src/_includes/components/use-case-chips.njk create mode 100644 src/_includes/components/use-case-links.njk create mode 100644 src/_includes/layouts/value.njk create mode 100644 src/outcomes.njk create mode 100644 src/outcomes/ai-readiness-data-foundation.njk create mode 100644 src/outcomes/asset-reliability.njk create mode 100644 src/outcomes/labor-operational-efficiency.njk create mode 100644 src/outcomes/outcomes.json create mode 100644 src/outcomes/production-performance.njk create mode 100644 src/outcomes/quality-compliance.njk create mode 100644 src/use-cases/continuous-improvement.njk create mode 100644 src/use-cases/equipment-monitoring.njk create mode 100644 src/use-cases/governed-ai-access.njk create mode 100644 src/use-cases/operational-data-pipelines.njk create mode 100644 src/use-cases/quality-validation.njk create mode 100644 src/use-cases/shop-floor-communication.njk create mode 100644 src/use-cases/system-diagnostics.njk create mode 100644 src/use-cases/track-and-trace.njk create mode 100644 src/use-cases/workforce-assignment.njk diff --git a/nuxt/components/AppHeader.vue b/nuxt/components/AppHeader.vue index 890543e9df..6e3af07502 100644 --- a/nuxt/components/AppHeader.vue +++ b/nuxt/components/AppHeader.vue @@ -11,6 +11,20 @@ onMounted(() => { } } + // Mobile nav: dropdown sections expand on tap, not hover + document.querySelectorAll('header .ff-nav-dropdown > span').forEach((trigger) => { + trigger.addEventListener('click', (e) => { + if (window.innerWidth < 768) { + e.preventDefault() + e.stopPropagation() + const li = trigger.parentElement + const wasOpen = li.classList.contains('mobile-expanded') + li.parentElement.querySelectorAll('.mobile-expanded').forEach(el => el.classList.remove('mobile-expanded')) + if (!wasOpen) li.classList.add('mobile-expanded') + } + }) + }) + const nav = document.getElementById('nav-content') const headerNav = document.querySelector('.ff-header nav') const moreItem = document.getElementById('nav-more') @@ -123,7 +137,7 @@ onMounted(() => {
  • Platform -