From 4267a304920a2dac49270a2a3094a4a8264d1b59 Mon Sep 17 00:00:00 2001 From: Robert Norrie Date: Tue, 29 Jul 2025 15:02:36 +0100 Subject: [PATCH 1/8] docs:adding code for kapa.ai docs search widget --- docs/docusaurus.config.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index 29ce1844d544..140a10a8cd9a 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -309,6 +309,18 @@ const config: Config = { defer: true, id: 'hs-script-loader', }, + { + src: "https://widget.kapa.ai/kapa-widget.bundle.js", + "data-website-id": "bbb5a478-1363-4c1e-84b5-cdba2c58e5ad", + "data-project-name": "Flagsmith", + "data-project-color": "#5e60cc", + "data-project-logo": "http://docs.flagsmith.com/img/logo.svg", + "data-answer-cta-button-enabled": "true", + "data-answer-cta-button-link": "", + "data-answer-cta-button-text": "Still need help? Reach out to our support team", + "data-modal-disclaimer": "Results are AI generated from our product documentation. [Contact Support to speak to a human](https://help.flagsmith.com/en/).", + async: true, + }, ], clientModules: [ @@ -320,4 +332,4 @@ const config: Config = { export default async function createConfig() { return config; -} +} \ No newline at end of file From 1a209a2f98908fae11472c361e72dccbee223f85 Mon Sep 17 00:00:00 2001 From: kyle-ssg Date: Tue, 29 Jul 2025 17:08:35 +0100 Subject: [PATCH 2/8] Show crisp on support page --- docs/docusaurus.config.ts | 7 +++--- docs/src/theme/Layout/crisp.js | 39 ++++++++++++++++++++++++++++++++++ docs/src/theme/Layout/index.js | 12 +++++++++++ docs/static/js/crisp-chat.js | 9 -------- 4 files changed, 54 insertions(+), 13 deletions(-) create mode 100644 docs/src/theme/Layout/crisp.js create mode 100644 docs/src/theme/Layout/index.js delete mode 100644 docs/static/js/crisp-chat.js diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index 140a10a8cd9a..632e102fbbad 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -302,7 +302,6 @@ const config: Config = { ], scripts: [ - '/js/crisp-chat.js', { src: '//js-eu1.hs-scripts.com/143451822.js', async: true, @@ -316,9 +315,9 @@ const config: Config = { "data-project-color": "#5e60cc", "data-project-logo": "http://docs.flagsmith.com/img/logo.svg", "data-answer-cta-button-enabled": "true", - "data-answer-cta-button-link": "", + "data-answer-cta-button-link": "/support/", "data-answer-cta-button-text": "Still need help? Reach out to our support team", - "data-modal-disclaimer": "Results are AI generated from our product documentation. [Contact Support to speak to a human](https://help.flagsmith.com/en/).", + "data-modal-disclaimer": "Results are AI generated from our product documentation. [Contact Support to speak to a human](https://help.flagsmith.com/en/).", async: true, }, ], @@ -332,4 +331,4 @@ const config: Config = { export default async function createConfig() { return config; -} \ No newline at end of file +} diff --git a/docs/src/theme/Layout/crisp.js b/docs/src/theme/Layout/crisp.js new file mode 100644 index 000000000000..d8db20d24312 --- /dev/null +++ b/docs/src/theme/Layout/crisp.js @@ -0,0 +1,39 @@ +// src/crisp.js +import { useEffect } from 'react'; +import { useLocation } from '@docusaurus/router'; + +export default function CrispLoader() { + const location = useLocation(); + + useEffect(() => { + if (typeof window === 'undefined') { + return; + } + + window.$crisp = window.$crisp || []; + window.CRISP_WEBSITE_ID = '8857f89e-0eb5-4263-ab49-a293872b6c19'; + + if (!document.getElementById('crisp-chat-script')) { + const d = document; + const s = d.createElement('script'); + s.id = 'crisp-chat-script'; + s.src = 'https://client.crisp.chat/l.js'; + s.async = 1; + d.head.appendChild(s); + } + + const kapaEl = document.getElementById('kapa-widget-container'); + + if (location.pathname === '/support/') { + window.$crisp.push(['do', 'chat:show']); + window.__isCrispVisible = true; + if (kapaEl) kapaEl.style.display = 'none'; + } else { + window.$crisp.push(['do', 'chat:hide']); + window.__isCrispVisible = false; + if (kapaEl) kapaEl.style.display = ''; + } + }, [location.pathname]); + + return null; +} diff --git a/docs/src/theme/Layout/index.js b/docs/src/theme/Layout/index.js new file mode 100644 index 000000000000..5b5828bcf8db --- /dev/null +++ b/docs/src/theme/Layout/index.js @@ -0,0 +1,12 @@ +import React from 'react'; +import OriginalLayout from '@theme-original/Layout'; +import CrispLoader from './crisp'; // adjust path if you moved it + +export default function Layout(props) { + return ( + <> + + + + ); +} diff --git a/docs/static/js/crisp-chat.js b/docs/static/js/crisp-chat.js deleted file mode 100644 index d65ea10869f5..000000000000 --- a/docs/static/js/crisp-chat.js +++ /dev/null @@ -1,9 +0,0 @@ -window.$crisp = []; -window.CRISP_WEBSITE_ID = '8857f89e-0eb5-4263-ab49-a293872b6c19'; -(function () { - d = document; - s = d.createElement('script'); - s.src = 'https://client.crisp.chat/l.js'; - s.async = 1; - d.getElementsByTagName('head')[0].appendChild(s); -})(); From f15aa2873aba3d0f4fc948526fb872dd92ca627f Mon Sep 17 00:00:00 2001 From: kyle-ssg Date: Tue, 29 Jul 2025 17:57:13 +0100 Subject: [PATCH 3/8] adjust support check --- docs/src/theme/Layout/crisp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/theme/Layout/crisp.js b/docs/src/theme/Layout/crisp.js index d8db20d24312..79b429e10222 100644 --- a/docs/src/theme/Layout/crisp.js +++ b/docs/src/theme/Layout/crisp.js @@ -24,7 +24,7 @@ export default function CrispLoader() { const kapaEl = document.getElementById('kapa-widget-container'); - if (location.pathname === '/support/') { + if (location.pathname.replace(/\//g, '') === 'support') { window.$crisp.push(['do', 'chat:show']); window.__isCrispVisible = true; if (kapaEl) kapaEl.style.display = 'none'; From f62a9587a5d04b246125bb12405f757d20b9136a Mon Sep 17 00:00:00 2001 From: kyle-ssg Date: Tue, 29 Jul 2025 18:14:03 +0100 Subject: [PATCH 4/8] Adjust help link, auto open widget --- docs/docusaurus.config.ts | 2 +- docs/src/theme/Layout/crisp.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index 632e102fbbad..35e480e087dd 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -317,7 +317,7 @@ const config: Config = { "data-answer-cta-button-enabled": "true", "data-answer-cta-button-link": "/support/", "data-answer-cta-button-text": "Still need help? Reach out to our support team", - "data-modal-disclaimer": "Results are AI generated from our product documentation. [Contact Support to speak to a human](https://help.flagsmith.com/en/).", + "data-modal-disclaimer": "Results are AI generated from our product documentation. [Contact Support to speak to a human](https://docs.flagsmith.com/support).", async: true, }, ], diff --git a/docs/src/theme/Layout/crisp.js b/docs/src/theme/Layout/crisp.js index 79b429e10222..ca2835866fba 100644 --- a/docs/src/theme/Layout/crisp.js +++ b/docs/src/theme/Layout/crisp.js @@ -26,6 +26,7 @@ export default function CrispLoader() { if (location.pathname.replace(/\//g, '') === 'support') { window.$crisp.push(['do', 'chat:show']); + window.$crisp.push(['do', 'chat:open']); window.__isCrispVisible = true; if (kapaEl) kapaEl.style.display = 'none'; } else { From 380abf1aae34334471dd2f502e8788d6fbb3de19 Mon Sep 17 00:00:00 2001 From: kyle-ssg Date: Tue, 29 Jul 2025 18:19:28 +0100 Subject: [PATCH 5/8] Fix kapa loading, auto show widget --- docs/docusaurus.config.ts | 2 +- docs/src/css/custom.css | 4 +++- docs/src/theme/Layout/crisp.js | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index 35e480e087dd..16355a8004c2 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -312,7 +312,7 @@ const config: Config = { src: "https://widget.kapa.ai/kapa-widget.bundle.js", "data-website-id": "bbb5a478-1363-4c1e-84b5-cdba2c58e5ad", "data-project-name": "Flagsmith", - "data-project-color": "#5e60cc", + "data-project-color": "#6633FF", "data-project-logo": "http://docs.flagsmith.com/img/logo.svg", "data-answer-cta-button-enabled": "true", "data-answer-cta-button-link": "/support/", diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index ef99c3df2377..295c51cf2b36 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -9,7 +9,9 @@ .hidden { display: none !important; } - +#kapa-widget-container { + display: none; +} @font-face { font-family: 'Open Sans Regular'; src: url('/static/fonts/open-sans-regular.woff') format('woff'); diff --git a/docs/src/theme/Layout/crisp.js b/docs/src/theme/Layout/crisp.js index ca2835866fba..f84a30dd110f 100644 --- a/docs/src/theme/Layout/crisp.js +++ b/docs/src/theme/Layout/crisp.js @@ -32,7 +32,7 @@ export default function CrispLoader() { } else { window.$crisp.push(['do', 'chat:hide']); window.__isCrispVisible = false; - if (kapaEl) kapaEl.style.display = ''; + if (kapaEl) kapaEl.style.display = 'block'; } }, [location.pathname]); From 4d009c1151b9ea6bfab361262211dbac5f60b668 Mon Sep 17 00:00:00 2001 From: kyle-ssg Date: Tue, 29 Jul 2025 18:21:27 +0100 Subject: [PATCH 6/8] add comment --- docs/src/css/custom.css | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index 295c51cf2b36..5087e2ebd06a 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -9,6 +9,7 @@ .hidden { display: none !important; } +/*Prevents kapa from immediately showing before crisp on support pages*/ #kapa-widget-container { display: none; } From faeba889864b1bdda7b63c9de649951458a51b20 Mon Sep 17 00:00:00 2001 From: kyle-ssg Date: Tue, 29 Jul 2025 18:22:29 +0100 Subject: [PATCH 7/8] Make link relative --- docs/docusaurus.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index 16355a8004c2..4c40f4f0b7d4 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -317,7 +317,7 @@ const config: Config = { "data-answer-cta-button-enabled": "true", "data-answer-cta-button-link": "/support/", "data-answer-cta-button-text": "Still need help? Reach out to our support team", - "data-modal-disclaimer": "Results are AI generated from our product documentation. [Contact Support to speak to a human](https://docs.flagsmith.com/support).", + "data-modal-disclaimer": "Results are AI generated from our product documentation. [Contact Support to speak to a human](/support).", async: true, }, ], From a8dee2705ac0dfb1efe1217d745b809bd3e14a00 Mon Sep 17 00:00:00 2001 From: kyle-ssg Date: Wed, 30 Jul 2025 10:00:58 +0100 Subject: [PATCH 8/8] Remove comment --- docs/src/theme/Layout/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/theme/Layout/index.js b/docs/src/theme/Layout/index.js index 5b5828bcf8db..605f7ccfbb4a 100644 --- a/docs/src/theme/Layout/index.js +++ b/docs/src/theme/Layout/index.js @@ -1,6 +1,6 @@ import React from 'react'; import OriginalLayout from '@theme-original/Layout'; -import CrispLoader from './crisp'; // adjust path if you moved it +import CrispLoader from './crisp'; export default function Layout(props) { return (