@inkeep/cxkit-primitives 0.0.0-dev-20250304224156 → 0.0.0-dev-20250305004041

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.
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),W=require("../../providers/config-provider.cjs"),G=require("../../hooks/use-media-query.cjs"),J=require("./search-query.graphql.cjs"),V=require("./transform-results.cjs"),X=require("../../providers/search-events-provider.cjs"),Y=require("../../hooks/use-instant-update.cjs"),Z=require("../../utils/graphql-client.cjs"),ee=()=>{const{baseSettings:_,searchSettings:j}=W.useInkeepConfig(),{apiKey:p,aiApiBaseUrl:L,userAuthToken:l}=_,{maxResults:R,placeholder:S,defaultQuery:N,debounceTimeMs:Q,onQueryChange:O,searchFunctionsRef:x}=j,{logEvent:q}=X.useSearchEvents(),[c,C]=t.useState(N),T=t.useRef(null),[k,v]=t.useState(!1),[B,i]=t.useState(null),[F,a]=t.useState("NONE"),H=t.useCallback(e=>{a(e)},[]),[h,d]=t.useState([]),s=V.useTransformResults(h,c),[f,E]=t.useState("All"),{disableTransition:M,disabled:$}=Y.useInstantUpdate(),z=t.useCallback(e=>{M(),E(e),a(s[e][0].id)},[s,M]);t.useEffect(()=>{let e=f in s?f:Object.keys(s)[0];if(!s[e]?.length){const n=Object.keys(s).find(u=>s[u]?.length);n?e=n:e="All"}if(!e)return;E(e);const r=s[e]?.[0];r&&a(r.id)},[s]);const y=G.useMediaQuery("(max-width: 768px)"),o=t.useRef({}),b=t.useRef(null),m=t.useRef(null);t.useImperativeHandle(x,()=>({updateQuery(e){C(e)},focusInput:()=>{T.current?.focus()}}));const w=`${L}/graphql`,A=t.useMemo(()=>({Authorization:`Bearer ${p}`,"Content-Type":"application/json",...l?{"User-Token":l}:{}}),[p,l]),I=t.useCallback(async e=>{b.current&&b.current.abort();const r=new AbortController;b.current=r;try{v(!0),i(null);const u=(await Z.graphqlRequest(w,J.default,{searchInput:e},A))?.search.searchHits;o.current[e.searchQuery]=u,d(u)}catch(n){if(n.name==="AbortError")return;i("Failed to fetch search results. Please try again.")}v(!1)},[w,A]),P=t.useCallback(e=>{const r=o.current[e.searchQuery];q({eventName:"search_query_response_received",properties:{searchQuery:e.searchQuery,totalResults:r?.length}})},[]),U=t.useCallback(e=>{if(m.current&&window.clearTimeout(m.current),!e.searchQuery){d([]),i(null);return}m.current=window.setTimeout(()=>{q({eventName:"search_query_submitted",properties:{searchQuery:e.searchQuery}}),o.current[e.searchQuery]?(d(o.current[e.searchQuery]),P(e)):I(e).then(()=>{P(e)})},Q)},[Q,I]),g=t.useMemo(()=>({searchQuery:c,filters:{limit:R}}),[c,R]);t.useEffect(()=>{O?.(g.searchQuery),U(g)},[U,g]);const D=t.useCallback(e=>C(e.target.value),[]),K=t.useMemo(()=>S||(y?"Search...":"Search for anything..."),[S,y]);return{results:s,resultsList:h,hasContent:h.length>0||k,loading:k,error:B,query:c,onInput:D,placeholder:K,tab:f,onTabChange:z,selectedItem:F,setSelectedItem:a,onSelectedItemChange:H,transitionsDisabled:$,inputRef:T,isMobile:y}};exports.useInkeepSearch=ee;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),W=require("../../providers/config-provider.cjs"),G=require("../../hooks/use-media-query.cjs"),J=require("./search-query.graphql.cjs"),V=require("./transform-results.cjs"),X=require("../../providers/search-events-provider.cjs"),Y=require("../../hooks/use-instant-update.cjs"),Z=require("../../utils/graphql-client.cjs"),ee=()=>{const{baseSettings:_,searchSettings:j}=W.useInkeepConfig(),{apiKey:p,aiApiBaseUrl:L,userAuthToken:l}=_,{maxResults:S,placeholder:R,defaultQuery:N,debounceTimeMs:Q,onQueryChange:O,searchFunctionsRef:x}=j,{logEvent:q}=X.useSearchEvents(),[c,C]=t.useState(N),T=t.useRef(null),[k,v]=t.useState(!1),[B,i]=t.useState(null),[F,a]=t.useState("NONE"),H=t.useCallback(e=>{a(e)},[]),[h,d]=t.useState([]),s=V.useTransformResults(h,c),[f,E]=t.useState("All"),{disableTransition:M,disabled:$}=Y.useInstantUpdate(),z=t.useCallback(e=>{M(),E(e);const r=s[e][0].id;setTimeout(()=>{a(r)},0)},[s,M]);t.useEffect(()=>{let e=f in s?f:Object.keys(s)[0];if(!s[e]?.length){const n=Object.keys(s).find(u=>s[u]?.length);n?e=n:e="All"}if(!e)return;E(e);const r=s[e]?.[0];r&&a(r.id)},[s]);const y=G.useMediaQuery("(max-width: 768px)"),o=t.useRef({}),b=t.useRef(null),m=t.useRef(null);t.useImperativeHandle(x,()=>({updateQuery(e){C(e)},focusInput:()=>{T.current?.focus()}}));const w=`${L}/graphql`,A=t.useMemo(()=>({Authorization:`Bearer ${p}`,"Content-Type":"application/json",...l?{"User-Token":l}:{}}),[p,l]),I=t.useCallback(async e=>{b.current&&b.current.abort();const r=new AbortController;b.current=r;try{v(!0),i(null);const u=(await Z.graphqlRequest(w,J.default,{searchInput:e},A))?.search.searchHits;o.current[e.searchQuery]=u,d(u)}catch(n){if(n.name==="AbortError")return;i("Failed to fetch search results. Please try again.")}v(!1)},[w,A]),P=t.useCallback(e=>{const r=o.current[e.searchQuery];q({eventName:"search_query_response_received",properties:{searchQuery:e.searchQuery,totalResults:r?.length}})},[]),U=t.useCallback(e=>{if(m.current&&window.clearTimeout(m.current),!e.searchQuery){d([]),i(null);return}m.current=window.setTimeout(()=>{q({eventName:"search_query_submitted",properties:{searchQuery:e.searchQuery}}),o.current[e.searchQuery]?(d(o.current[e.searchQuery]),P(e)):I(e).then(()=>{P(e)})},Q)},[Q,I]),g=t.useMemo(()=>({searchQuery:c,filters:{limit:S}}),[c,S]);t.useEffect(()=>{O?.(g.searchQuery),U(g)},[U,g]);const D=t.useCallback(e=>C(e.target.value),[]),K=t.useMemo(()=>R||(y?"Search...":"Search for anything..."),[R,y]);return{results:s,resultsList:h,hasContent:h.length>0||k,loading:k,error:B,query:c,onInput:D,placeholder:K,tab:f,onTabChange:z,selectedItem:F,setSelectedItem:a,onSelectedItemChange:H,transitionsDisabled:$,inputRef:T,isMobile:y}};exports.useInkeepSearch=ee;
@@ -11,7 +11,7 @@ export declare const useInkeepSearch: () => {
11
11
  onInput: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
12
12
  placeholder: string;
13
13
  tab: string;
14
- onTabChange: (value: string) => void;
14
+ onTabChange: (newTab: string) => void;
15
15
  selectedItem: string | undefined;
16
16
  setSelectedItem: Dispatch<SetStateAction<string | undefined>>;
17
17
  onSelectedItemChange: (value: string) => void;
@@ -11,7 +11,7 @@ export declare const useInkeepSearch: () => {
11
11
  onInput: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
12
12
  placeholder: string;
13
13
  tab: string;
14
- onTabChange: (value: string) => void;
14
+ onTabChange: (newTab: string) => void;
15
15
  selectedItem: string | undefined;
16
16
  setSelectedItem: Dispatch<SetStateAction<string | undefined>>;
17
17
  onSelectedItemChange: (value: string) => void;
@@ -12,29 +12,33 @@ const me = () => {
12
12
  maxResults: S,
13
13
  placeholder: C,
14
14
  defaultQuery: H,
15
- debounceTimeMs: k,
15
+ debounceTimeMs: v,
16
16
  onQueryChange: P,
17
17
  searchFunctionsRef: $
18
- } = B, { logEvent: v } = re(), [c, w] = s(H), A = l(null), [q, E] = s(!1), [z, f] = s(null), [D, a] = s("NONE"), K = n((e) => {
18
+ } = B, { logEvent: k } = re(), [c, w] = s(H), A = l(null), [q, E] = s(!1), [z, f] = s(null), [D, a] = s("NONE"), K = n((e) => {
19
19
  a(e);
20
- }, []), [m, d] = s([]), t = te(m, c), [p, _] = s("All"), { disableTransition: x, disabled: W } = se(), G = n(
20
+ }, []), [m, d] = s([]), t = te(m, c), [p, I] = s("All"), { disableTransition: _, disabled: W } = se(), G = n(
21
21
  (e) => {
22
- x(), _(e), a(t[e][0].id);
22
+ _(), I(e);
23
+ const r = t[e][0].id;
24
+ setTimeout(() => {
25
+ a(r);
26
+ }, 0);
23
27
  },
24
- [t, x]
28
+ [t, _]
25
29
  );
26
30
  j(() => {
27
31
  let e = p in t ? p : Object.keys(t)[0];
28
32
  if (!t[e]?.length) {
29
- const o = Object.keys(t).find((u) => t[u]?.length);
33
+ const o = Object.keys(t).find((i) => t[i]?.length);
30
34
  o ? e = o : e = "All";
31
35
  }
32
36
  if (!e) return;
33
- _(e);
37
+ I(e);
34
38
  const r = t[e]?.[0];
35
39
  r && a(r.id);
36
40
  }, [t]);
37
- const y = Z("(max-width: 768px)"), i = l({}), b = l(null), g = l(null);
41
+ const y = Z("(max-width: 768px)"), u = l({}), b = l(null), g = l(null);
38
42
  X($, () => ({
39
43
  updateQuery(e) {
40
44
  w(e);
@@ -43,7 +47,7 @@ const me = () => {
43
47
  A.current?.focus();
44
48
  }
45
49
  }));
46
- const I = `${F}/graphql`, L = R(
50
+ const x = `${F}/graphql`, L = R(
47
51
  () => ({
48
52
  Authorization: `Bearer ${T}`,
49
53
  "Content-Type": "application/json",
@@ -57,8 +61,8 @@ const me = () => {
57
61
  b.current = r;
58
62
  try {
59
63
  E(!0), f(null);
60
- const u = (await ne(I, ee, { searchInput: e }, L))?.search.searchHits;
61
- i.current[e.searchQuery] = u, d(u);
64
+ const i = (await ne(x, ee, { searchInput: e }, L))?.search.searchHits;
65
+ u.current[e.searchQuery] = i, d(i);
62
66
  } catch (o) {
63
67
  if (o.name === "AbortError")
64
68
  return;
@@ -66,10 +70,10 @@ const me = () => {
66
70
  }
67
71
  E(!1);
68
72
  },
69
- [I, L]
73
+ [x, L]
70
74
  ), N = n((e) => {
71
- const r = i.current[e.searchQuery];
72
- v({
75
+ const r = u.current[e.searchQuery];
76
+ k({
73
77
  eventName: "search_query_response_received",
74
78
  properties: {
75
79
  searchQuery: e.searchQuery,
@@ -83,17 +87,17 @@ const me = () => {
83
87
  return;
84
88
  }
85
89
  g.current = window.setTimeout(() => {
86
- v({
90
+ k({
87
91
  eventName: "search_query_submitted",
88
92
  properties: {
89
93
  searchQuery: e.searchQuery
90
94
  }
91
- }), i.current[e.searchQuery] ? (d(i.current[e.searchQuery]), N(e)) : M(e).then(() => {
95
+ }), u.current[e.searchQuery] ? (d(u.current[e.searchQuery]), N(e)) : M(e).then(() => {
92
96
  N(e);
93
97
  });
94
- }, k);
98
+ }, v);
95
99
  },
96
- [k, M]
100
+ [v, M]
97
101
  ), Q = R(
98
102
  () => ({
99
103
  searchQuery: c,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/cxkit-primitives",
3
- "version": "0.0.0-dev-20250304224156",
3
+ "version": "0.0.0-dev-20250305004041",
4
4
  "description": "",
5
5
  "license": "Inkeep, Inc. Customer License (IICL) v1.1",
6
6
  "homepage": "",
@@ -54,9 +54,9 @@
54
54
  "react-textarea-autosize": "8.5.7",
55
55
  "rehype-raw": "7.0.0",
56
56
  "unist-util-visit": "^5.0.0",
57
- "@inkeep/cxkit-color-mode": "0.0.0-dev-20250304224156",
58
- "@inkeep/cxkit-theme": "0.0.0-dev-20250304224156",
59
- "@inkeep/cxkit-types": "0.0.0-dev-20250304224156"
57
+ "@inkeep/cxkit-color-mode": "0.0.0-dev-20250305004041",
58
+ "@inkeep/cxkit-theme": "0.0.0-dev-20250305004041",
59
+ "@inkeep/cxkit-types": "0.0.0-dev-20250305004041"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@biomejs/biome": "1.9.4",