@netlify/spark-ui 1.8.5 → 1.8.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,13 @@
1
+ class n {
2
+ /**
3
+ * Pushes an event payload into the dataLayer.
4
+ * @param eventName e.g. 'www:search_new_query'
5
+ * @param payload additional key/value data
6
+ */
7
+ track(t, e = {}) {
8
+ typeof gtag == "function" ? gtag("event", t, { ...e }) : console.error(`gtag is not defined. Event [${t}] failed.`);
9
+ }
10
+ }
11
+ export {
12
+ n as A
13
+ };
@@ -1,19 +1,35 @@
1
- import { u as a } from "../../../chunks/jsxRuntime.module.Bzuv3cXw.js";
2
- import { C as t, K as r } from "../../../chunks/ChatInterface.BD7rlv4H.js";
3
- import '../../../assets/AskNetlify.css';function n(e) {
4
- return /* @__PURE__ */ a(
5
- r,
1
+ import { u as t } from "../../../chunks/jsxRuntime.module.Bzuv3cXw.js";
2
+ import { A as a } from "../../../chunks/hooks.module.DGkdD5n9.js";
3
+ import { C as s, K as i } from "../../../chunks/ChatInterface.BD7rlv4H.js";
4
+ import { A as c } from "../../../chunks/analytics.Ch1vuuOl.js";
5
+ import '../../../assets/AskNetlify.css';function k(o) {
6
+ const e = a(new c());
7
+ return /* @__PURE__ */ t(
8
+ i,
6
9
  {
7
10
  integrationId: "3c0789a6-c6a8-4fbc-b0cc-235f9e4a6351",
8
11
  callbacks: {
9
12
  askAI: {
10
- onQuerySubmit: (o) => console.log("Question asked:", o.question)
13
+ onQuerySubmit: (r) => {
14
+ var n;
15
+ (n = e == null ? void 0 : e.current) == null || n.track("ask:new_query", {
16
+ question: r.question,
17
+ thread_id: r.threadId
18
+ });
19
+ },
20
+ onAnswerGenerationCompleted: (r) => {
21
+ var n;
22
+ (n = e == null ? void 0 : e.current) == null || n.track("ask:answer_generated", {
23
+ question_id: r.questionAnswerId,
24
+ answer_length: r.answer.length
25
+ });
26
+ }
11
27
  }
12
28
  },
13
- children: /* @__PURE__ */ a(t, { ...e })
29
+ children: /* @__PURE__ */ t(s, { ...o })
14
30
  }
15
31
  );
16
32
  }
17
33
  export {
18
- n as default
34
+ k as default
19
35
  };
@@ -1,37 +1,28 @@
1
- import { A as y, y as h, q as k } from "../../../../chunks/hooks.module.DGkdD5n9.js";
2
- class s {
3
- /**
4
- * Pushes an event payload into the dataLayer.
5
- * @param eventName e.g. 'www:search_new_query'
6
- * @param payload additional key/value data
7
- */
8
- track(n, i = {}) {
9
- typeof gtag == "function" ? gtag("event", n, { ...i }) : console.error(`gtag is not defined. Event [${n}] failed.`);
10
- }
11
- }
12
- function p(r, n) {
13
- const l = y(new s()).current, e = (c) => c.debug_mode = !0;
1
+ import { A as y, y as h, q as d } from "../../../../chunks/hooks.module.DGkdD5n9.js";
2
+ import { A as k } from "../../../../chunks/analytics.Ch1vuuOl.js";
3
+ function b(r, l) {
4
+ const n = y(new k()).current, e = (c) => c.debug_mode = !0;
14
5
  return h(() => {
15
6
  if (!(r != null && r.searchTerm)) return;
16
7
  const c = { query: r == null ? void 0 : r.searchTerm };
17
- n && e(c), l.track("search:new_query", c);
8
+ l && e(c), n.track("search:new_query", c);
18
9
  }, [r == null ? void 0 : r.searchTerm]), h(() => {
19
10
  if (!(r != null && r.results)) return;
20
11
  const c = { query: r == null ? void 0 : r.searchTerm };
21
- n && e(c), r != null && r.searchTerm && r.results.length === 0 && l.track("search:no_results", c);
12
+ l && e(c), r != null && r.searchTerm && r.results.length === 0 && n.track("search:no_results", c);
22
13
  }, [r == null ? void 0 : r.results]), {
23
- handleClick: k((c) => {
24
- var f;
14
+ handleClick: d((c) => {
15
+ var i;
25
16
  const o = c.target.closest("a");
26
17
  if (!o) return;
27
- const g = (f = o.querySelector(".n-search-link-label")) == null ? void 0 : f.innerHTML, d = o.getAttribute("href") || void 0, u = {
28
- resultTitle: g,
29
- resultUrl: d
18
+ const f = (i = o.querySelector(".n-search-link-label")) == null ? void 0 : i.innerHTML, m = o.getAttribute("href") || void 0, u = {
19
+ resultTitle: f,
20
+ resultUrl: m
30
21
  };
31
- n && e(u), l.track("search:result_selected", u);
22
+ l && e(u), n.track("search:result_selected", u);
32
23
  }, [])
33
24
  };
34
25
  }
35
26
  export {
36
- p as useSearchLogger
27
+ b as useSearchLogger
37
28
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@netlify/spark-ui",
3
3
  "description": "Assets, design tokens, components, and utilities",
4
- "version": "1.8.5",
4
+ "version": "1.8.7",
5
5
  "type": "module",
6
6
  "main": "dist/components/preact/index.js",
7
7
  "types": "dist/components/preact/index.d.ts",
@@ -1,4 +1,6 @@
1
+ import { useRef } from 'preact/hooks';
1
2
  import { KapaProvider } from '@kapaai/react-sdk';
3
+ import Analytics from '../../../analytics/analytics';
2
4
  import ChatInterface from './components/ChatInterface';
3
5
  import './AskNetlify.css';
4
6
 
@@ -7,12 +9,24 @@ interface AskNetlifyProps {
7
9
  }
8
10
 
9
11
  export default function AskNetlify(props: AskNetlifyProps) {
12
+ const analyticsRef = useRef<Analytics>(new Analytics());
10
13
  return (
11
14
  <KapaProvider
12
15
  integrationId="3c0789a6-c6a8-4fbc-b0cc-235f9e4a6351"
13
16
  callbacks={{
14
17
  askAI: {
15
- onQuerySubmit: data => console.log('Question asked:', data.question),
18
+ onQuerySubmit: data => {
19
+ analyticsRef?.current?.track('ask:new_query', {
20
+ question: data.question,
21
+ thread_id: data.threadId,
22
+ });
23
+ },
24
+ onAnswerGenerationCompleted: data => {
25
+ analyticsRef?.current?.track('ask:answer_generated', {
26
+ question_id: data.questionAnswerId,
27
+ answer_length: data.answer.length,
28
+ });
29
+ },
16
30
  },
17
31
  }}
18
32
  >