From 532a413ab9fb2a97e2cfca5cae215a4d87d849d2 Mon Sep 17 00:00:00 2001 From: Dimitrie Hoekstra Date: Mon, 14 Sep 2026 20:13:38 +0200 Subject: [PATCH 01/31] nav: size the sidebar group headers as headers, and indent their items The group name rendered at caption size, the same weight as the pages under it, so the grouping had to be read rather than seen. It now takes body size and the links sit indented from it. Shared component, so this applies to the handbook and the guides too. --- nuxt/components/SidebarNav.vue | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/nuxt/components/SidebarNav.vue b/nuxt/components/SidebarNav.vue index 4dd32dfe6c..26f5ee5bc9 100644 --- a/nuxt/components/SidebarNav.vue +++ b/nuxt/components/SidebarNav.vue @@ -68,3 +68,19 @@ watch(() => route.path, () => { open.value = false }) + + From 9b4db8c97e09abf4740ab3434a3e3293daf17db0 Mon Sep 17 00:00:00 2001 From: Dimitrie Hoekstra Date: Mon, 14 Sep 2026 20:16:58 +0200 Subject: [PATCH 02/31] docs nav: align the sidebar with the content column, indent items, drop the lone crumb The sidebar started 1.5rem above the page body, so nothing lined up across the top. Its items sit indented further from their group header. A breadcrumb trail of one item names the page you are already on. It now renders only when there is somewhere to go back to. --- nuxt/components/DocsLeftNav.vue | 8 +++++++- nuxt/components/SidebarNav.vue | 2 +- nuxt/pages/docs/[...slug].vue | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/nuxt/components/DocsLeftNav.vue b/nuxt/components/DocsLeftNav.vue index 111f65f44f..e1c697fcea 100644 --- a/nuxt/components/DocsLeftNav.vue +++ b/nuxt/components/DocsLeftNav.vue @@ -17,5 +17,11 @@ const items = computed((): NavigationMenuItem[] => [ diff --git a/nuxt/components/SidebarNav.vue b/nuxt/components/SidebarNav.vue index 26f5ee5bc9..aa7621b46b 100644 --- a/nuxt/components/SidebarNav.vue +++ b/nuxt/components/SidebarNav.vue @@ -81,6 +81,6 @@ watch(() => route.path, () => { open.value = false }) without reading the words. Applied to every link so the existing nesting keeps its relative steps. */ :deep([data-slot="link"]) { - padding-left: 1.125rem; + padding-left: 1.75rem; } diff --git a/nuxt/pages/docs/[...slug].vue b/nuxt/pages/docs/[...slug].vue index 635cbb20f7..5cc7956495 100644 --- a/nuxt/pages/docs/[...slug].vue +++ b/nuxt/pages/docs/[...slug].vue @@ -120,7 +120,7 @@ const surround = computed(() => {
- +
From 5fd2eef2f005b1613b8b78f59939006a7ca7f57e Mon Sep 17 00:00:00 2001 From: Dimitrie Hoekstra Date: Fri, 25 Sep 2026 13:42:49 +0200 Subject: [PATCH 03/31] docs: bring the FlowFuse Expert question box to Nuxt pages FfExpertAsk carries the markup of the old /ai/ page's chat interface and modal and runs the same src/js/ai-expert-modal.js. The script now starts through a named init that runs whether or not DOMContentLoaded has fired, can run again after client-side navigation, and replaces its page-wide click listeners instead of stacking them. Answers come from the Expert service for the hosted site; in a local preview the request fails, as the script itself notes. --- nuxt/components/content/FfExpertAsk.vue | 137 ++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 nuxt/components/content/FfExpertAsk.vue diff --git a/nuxt/components/content/FfExpertAsk.vue b/nuxt/components/content/FfExpertAsk.vue new file mode 100644 index 0000000000..97fb37f2ce --- /dev/null +++ b/nuxt/components/content/FfExpertAsk.vue @@ -0,0 +1,137 @@ + + +