@inkeep/cxkit-primitives 0.5.34 → 0.5.36

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"),te=require("../../providers/config-provider.cjs"),se=require("../../hooks/use-media-query.cjs"),re=require("./search-query.graphql.cjs"),ne=require("./transform-results.cjs"),ce=require("../../providers/search-events-provider.cjs"),ae=require("../../hooks/use-instant-update.cjs"),ue=require("../../utils/graphql-client.cjs"),oe=()=>{const{baseSettings:B,searchSettings:H}=te.useInkeepConfig(),{apiKey:T,aiApiBaseUrl:$,userAuthToken:h,filters:Q}=B,{maxResults:w,placeholder:q,defaultQuery:z,debounceTimeMs:C,onQueryChange:D,searchFunctionsRef:K,tabs:u,filters:k}=H,{logEvent:v}=ce.useSearchEvents(),[n,E]=t.useState(z),M=t.useRef(null),[I,f]=t.useState(!1),[W,d]=t.useState(null),[G,o]=t.useState("NONE"),J=t.useCallback(e=>{o(e)},[]),[y,b]=t.useState([]),s=ne.useTransformResults(y,n),A=u?.length?typeof u[0]=="string"?u[0]:u[0][0]:"All",[m,P]=t.useState(A),{disableTransition:U,disabled:V}=ae.useInstantUpdate(),X=t.useCallback(e=>{U(),P(e);const r=s[e][0].id;o(r)},[s,U]);t.useEffect(()=>{let e=m in s?m:Object.keys(s)[0];if(!s[e]?.length){const a=Object.keys(s).find(i=>s[i]?.length);a?e=a:e=A}if(!e)return;P(e);const r=s[e]?.[0];r&&o(r.id)},[s]);const g=se.useMediaQuery("(max-width: 768px)"),l=t.useRef({}),S=t.useRef(null),p=t.useRef(null);t.useImperativeHandle(K,()=>({updateQuery(e){E(e)},focusInput:()=>{M.current?.focus()}}));const _=`${$}/graphql`,j=t.useMemo(()=>({Authorization:`Bearer ${T}`,"Content-Type":"application/json",...h?{"User-Token":h}:{}}),[T,h]),F=t.useCallback(async e=>{const r=new AbortController;S.current=r;try{d(null);const i=(await ue.graphqlRequest(_,re.default,{searchInput:e},j,r.signal))?.search.searchHits;l.current[e.searchQuery]=i,b(i)}catch(a){if(a.name==="AbortError")return;d("Failed to fetch search results. Please try again.")}finally{f(!1)}},[_,j]),L=t.useCallback(e=>{const r=l.current[e.searchQuery];v({eventName:"search_query_response_received",properties:{searchQuery:e.searchQuery,totalResults:r?.length}})},[]),N=()=>{S.current&&(S.current.abort(),f(!1))},O=t.useCallback(e=>{if(p.current&&window.clearTimeout(p.current),!e.searchQuery){N(),b([]),d(null);return}p.current=window.setTimeout(()=>{N(),v({eventName:"search_query_submitted",properties:{searchQuery:e.searchQuery}}),l.current[e.searchQuery]?(b(l.current[e.searchQuery]),L(e)):(f(!0),F(e).then(()=>{L(e)}))},C)},[C,F]),R=t.useMemo(()=>({searchQuery:n,filters:{...Q,...k,limit:w}}),[n,w,Q,k]);t.useEffect(()=>{D?.(R.searchQuery),O(R)},[O,R]);const c=t.useRef(null),[Y,x]=t.useState(!1);t.useEffect(()=>(c.current!==null&&window.clearTimeout(c.current),n?c.current=window.setTimeout(()=>{x(!0)},400):x(!1),()=>{c.current!==null&&window.clearTimeout(c.current)}),[n]);const Z=t.useCallback(e=>E(e.target.value),[]),ee=t.useMemo(()=>q||(g?"Search...":"Search for anything..."),[q,g]);return{results:s,resultsList:y,hasContent:Y&&(y.length>0||I),loading:I,error:W,query:n,onInput:Z,placeholder:ee,tab:m,onTabChange:X,selectedItem:G,setSelectedItem:o,onSelectedItemChange:J,transitionsDisabled:V,inputRef:M,isMobile:g}};exports.useInkeepSearch=oe;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),te=require("../../providers/config-provider.cjs"),se=require("../../hooks/use-media-query.cjs"),re=require("./search-query.graphql.cjs"),ne=require("./transform-results.cjs"),ce=require("../../providers/search-events-provider.cjs"),ue=require("../../hooks/use-instant-update.cjs"),ae=require("../../utils/graphql-client.cjs"),oe=()=>{const{baseSettings:B,searchSettings:H}=te.useInkeepConfig(),{apiKey:Q,aiApiBaseUrl:$,userAuthToken:h,filters:T}=B,{maxResults:q,placeholder:w,defaultQuery:z,debounceTimeMs:C,onQueryChange:D,searchFunctionsRef:K,tabs:a,filters:k}=H,{logEvent:v}=ce.useSearchEvents(),[n,E]=t.useState(z),M=t.useRef(null),[I,f]=t.useState(!1),[W,d]=t.useState(null),[G,o]=t.useState("NONE"),J=t.useCallback(e=>{o(e)},[]),[y,b]=t.useState([]),s=ne.useTransformResults(y,n),A=a?.length?typeof a[0]=="string"?a[0]:a[0][0]:"All",[m,P]=t.useState(A),{disableTransition:U,disabled:V}=ue.useInstantUpdate(),X=t.useCallback(e=>{U(),P(e);const r=s[e][0]?s[e][0]?.id:void 0;o(r)},[s,U]);t.useEffect(()=>{let e=m in s?m:Object.keys(s)[0];if(!s[e]?.length){const u=Object.keys(s).find(i=>s[i]?.length);u?e=u:e=A}if(!e)return;P(e);const r=s[e]?.[0];r&&o(r.id)},[s]);const g=se.useMediaQuery("(max-width: 768px)"),l=t.useRef({}),S=t.useRef(null),p=t.useRef(null);t.useImperativeHandle(K,()=>({updateQuery(e){E(e)},focusInput:()=>{M.current?.focus()}}));const _=`${$}/graphql`,j=t.useMemo(()=>({Authorization:`Bearer ${Q}`,"Content-Type":"application/json",...h?{"User-Token":h}:{}}),[Q,h]),F=t.useCallback(async e=>{const r=new AbortController;S.current=r;try{d(null);const i=(await ae.graphqlRequest(_,re.default,{searchInput:e},j,r.signal))?.search.searchHits;l.current[e.searchQuery]=i,b(i)}catch(u){if(u.name==="AbortError")return;d("Failed to fetch search results. Please try again.")}finally{f(!1)}},[_,j]),L=t.useCallback(e=>{const r=l.current[e.searchQuery];v({eventName:"search_query_response_received",properties:{searchQuery:e.searchQuery,totalResults:r?.length}})},[]),N=()=>{S.current&&(S.current.abort(),f(!1))},O=t.useCallback(e=>{if(p.current&&window.clearTimeout(p.current),!e.searchQuery){N(),b([]),d(null);return}p.current=window.setTimeout(()=>{N(),v({eventName:"search_query_submitted",properties:{searchQuery:e.searchQuery}}),l.current[e.searchQuery]?(b(l.current[e.searchQuery]),L(e)):(f(!0),F(e).then(()=>{L(e)}))},C)},[C,F]),R=t.useMemo(()=>({searchQuery:n,filters:{...T,...k,limit:q}}),[n,q,T,k]);t.useEffect(()=>{D?.(R.searchQuery),O(R)},[O,R]);const c=t.useRef(null),[Y,x]=t.useState(!1);t.useEffect(()=>(c.current!==null&&window.clearTimeout(c.current),n?c.current=window.setTimeout(()=>{x(!0)},400):x(!1),()=>{c.current!==null&&window.clearTimeout(c.current)}),[n]);const Z=t.useCallback(e=>E(e.target.value),[]),ee=t.useMemo(()=>w||(g?"Search...":"Search for anything..."),[w,g]);return{results:s,resultsList:y,hasContent:Y&&(y.length>0||I),loading:I,error:W,query:n,onInput:Z,placeholder:ee,tab:m,onTabChange:X,selectedItem:G,setSelectedItem:o,onSelectedItemChange:J,transitionsDisabled:V,inputRef:M,isMobile:g}};exports.useInkeepSearch=oe;
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { useState as s, useRef as l, useCallback as o, useEffect as S, useImperativeHandle as oe, useMemo as C } from "react";
2
+ import { useState as s, useRef as l, useCallback as o, useEffect as w, useImperativeHandle as oe, useMemo as v } from "react";
3
3
  import { useInkeepConfig as ce } from "../../providers/config-provider.js";
4
4
  import { useMediaQuery as ae } from "../../hooks/use-media-query.js";
5
5
  import le from "./search-query.graphql.js";
@@ -7,8 +7,8 @@ import { useTransformResults as ue } from "./transform-results.js";
7
7
  import { useSearchEvents as ie } from "../../providers/search-events-provider.js";
8
8
  import { useInstantUpdate as he } from "../../hooks/use-instant-update.js";
9
9
  import { graphqlRequest as fe } from "../../utils/graphql-client.js";
10
- const Re = () => {
11
- const { baseSettings: D, searchSettings: K } = ce(), { apiKey: v, aiApiBaseUrl: W, userAuthToken: m, filters: k } = D, {
10
+ const Te = () => {
11
+ const { baseSettings: D, searchSettings: K } = ce(), { apiKey: C, aiApiBaseUrl: W, userAuthToken: m, filters: k } = D, {
12
12
  maxResults: q,
13
13
  placeholder: A,
14
14
  defaultQuery: G,
@@ -22,12 +22,12 @@ const Re = () => {
22
22
  }, []), [p, b] = s([]), t = ue(p, n), M = u?.length ? typeof u[0] == "string" ? u[0] : u[0][0] : "All", [g, N] = s(M), { disableTransition: U, disabled: ee } = he(), te = o(
23
23
  (e) => {
24
24
  U(), N(e);
25
- const r = t[e][0].id;
25
+ const r = t[e][0] ? t[e][0]?.id : void 0;
26
26
  i(r);
27
27
  },
28
28
  [t, U]
29
29
  );
30
- S(() => {
30
+ w(() => {
31
31
  let e = g in t ? g : Object.keys(t)[0];
32
32
  if (!t[e]?.length) {
33
33
  const a = Object.keys(t).find((f) => t[f]?.length);
@@ -38,7 +38,7 @@ const Re = () => {
38
38
  const r = t[e]?.[0];
39
39
  r && i(r.id);
40
40
  }, [t]);
41
- const T = ae("(max-width: 768px)"), h = l({}), Q = l(null), R = l(null);
41
+ const Q = ae("(max-width: 768px)"), h = l({}), R = l(null), T = l(null);
42
42
  oe(V, () => ({
43
43
  updateQuery(e) {
44
44
  x(e);
@@ -47,17 +47,17 @@ const Re = () => {
47
47
  F.current?.focus();
48
48
  }
49
49
  }));
50
- const j = `${W}/graphql`, O = C(
50
+ const j = `${W}/graphql`, O = v(
51
51
  () => ({
52
- Authorization: `Bearer ${v}`,
52
+ Authorization: `Bearer ${C}`,
53
53
  "Content-Type": "application/json",
54
54
  ...m ? { "User-Token": m } : {}
55
55
  }),
56
- [v, m]
56
+ [C, m]
57
57
  ), B = o(
58
58
  async (e) => {
59
59
  const r = new AbortController();
60
- Q.current = r;
60
+ R.current = r;
61
61
  try {
62
62
  y(null);
63
63
  const f = (await fe(
@@ -87,14 +87,14 @@ const Re = () => {
87
87
  }
88
88
  });
89
89
  }, []), P = () => {
90
- Q.current && (Q.current.abort(), d(!1));
90
+ R.current && (R.current.abort(), d(!1));
91
91
  }, $ = o(
92
92
  (e) => {
93
- if (R.current && window.clearTimeout(R.current), !e.searchQuery) {
93
+ if (T.current && window.clearTimeout(T.current), !e.searchQuery) {
94
94
  P(), b([]), y(null);
95
95
  return;
96
96
  }
97
- R.current = window.setTimeout(() => {
97
+ T.current = window.setTimeout(() => {
98
98
  P(), _({
99
99
  eventName: "search_query_submitted",
100
100
  properties: {
@@ -106,7 +106,7 @@ const Re = () => {
106
106
  }, E);
107
107
  },
108
108
  [E, B]
109
- ), w = C(
109
+ ), S = v(
110
110
  () => ({
111
111
  searchQuery: n,
112
112
  filters: {
@@ -117,11 +117,11 @@ const Re = () => {
117
117
  }),
118
118
  [n, q, k, I]
119
119
  );
120
- S(() => {
121
- J?.(w.searchQuery), $(w);
122
- }, [$, w]);
120
+ w(() => {
121
+ J?.(S.searchQuery), $(S);
122
+ }, [$, S]);
123
123
  const c = l(null), [re, z] = s(!1);
124
- S(() => (c.current !== null && window.clearTimeout(c.current), n ? c.current = window.setTimeout(() => {
124
+ w(() => (c.current !== null && window.clearTimeout(c.current), n ? c.current = window.setTimeout(() => {
125
125
  z(!0);
126
126
  }, 400) : z(!1), () => {
127
127
  c.current !== null && window.clearTimeout(c.current);
@@ -129,9 +129,9 @@ const Re = () => {
129
129
  const se = o(
130
130
  (e) => x(e.target.value),
131
131
  []
132
- ), ne = C(
133
- () => A || (T ? "Search..." : "Search for anything..."),
134
- [A, T]
132
+ ), ne = v(
133
+ () => A || (Q ? "Search..." : "Search for anything..."),
134
+ [A, Q]
135
135
  );
136
136
  return {
137
137
  results: t,
@@ -149,9 +149,9 @@ const Re = () => {
149
149
  onSelectedItemChange: Z,
150
150
  transitionsDisabled: ee,
151
151
  inputRef: F,
152
- isMobile: T
152
+ isMobile: Q
153
153
  };
154
154
  };
155
155
  export {
156
- Re as useInkeepSearch
156
+ Te as useInkeepSearch
157
157
  };
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("react/jsx-runtime"),t=require("react"),y=require("../atoms/api/analytics/events.cjs"),B=require("./config-provider.cjs"),b=require("./user-provider.cjs"),p=t.createContext(void 0),f=({children:e})=>{const{baseSettings:s,componentType:n}=B.useInkeepConfig(),{apiKey:o,analyticsApiBaseUrl:r,tags:i,privacyPreferences:d,env:E}=s,{userProperties:c}=b.useUser(),a=t.useMemo(()=>({widgetLibraryVersion:"0.5.34",componentType:n,tags:i}),[n,i]),u=!d.optOutAllAnalytics&&E!=="development",g={logEvent:t.useCallback(async v=>{const m={...a,...v.properties},l={eventName:v.eventName,properties:m,userProperties:c};u&&y.logEvent(l,o,r),s.onEvent?.(l)},[u,s,o,r,c,a])};return P.jsx(p.Provider,{value:g,children:e})},x=()=>{const e=t.useContext(p);if(!e)throw new Error("useBaseEvents must be used within a BaseEventsProvider");return e};exports.BaseEventsProvider=f;exports.useBaseEvents=x;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const P=require("react/jsx-runtime"),t=require("react"),y=require("../atoms/api/analytics/events.cjs"),B=require("./config-provider.cjs"),b=require("./user-provider.cjs"),p=t.createContext(void 0),f=({children:e})=>{const{baseSettings:s,componentType:n}=B.useInkeepConfig(),{apiKey:o,analyticsApiBaseUrl:r,tags:i,privacyPreferences:d,env:E}=s,{userProperties:c}=b.useUser(),a=t.useMemo(()=>({widgetLibraryVersion:"0.5.36",componentType:n,tags:i}),[n,i]),u=!d.optOutAllAnalytics&&E!=="development",g={logEvent:t.useCallback(async v=>{const m={...a,...v.properties},l={eventName:v.eventName,properties:m,userProperties:c};u&&y.logEvent(l,o,r),s.onEvent?.(l)},[u,s,o,r,c,a])};return P.jsx(p.Provider,{value:g,children:e})},x=()=>{const e=t.useContext(p);if(!e)throw new Error("useBaseEvents must be used within a BaseEventsProvider");return e};exports.BaseEventsProvider=f;exports.useBaseEvents=x;
@@ -7,7 +7,7 @@ import { useUser as b } from "./user-provider.js";
7
7
  const m = x(void 0), U = ({ children: e }) => {
8
8
  const { baseSettings: t, componentType: o } = C(), { apiKey: n, analyticsApiBaseUrl: s, tags: r, privacyPreferences: u, env: l } = t, { userProperties: i } = b(), a = d(
9
9
  () => ({
10
- widgetLibraryVersion: "0.5.34",
10
+ widgetLibraryVersion: "0.5.36",
11
11
  componentType: o,
12
12
  tags: r
13
13
  }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/cxkit-primitives",
3
- "version": "0.5.34",
3
+ "version": "0.5.36",
4
4
  "description": "",
5
5
  "license": "Inkeep, Inc. Customer License (IICL) v1.1",
6
6
  "homepage": "",
@@ -59,9 +59,9 @@
59
59
  "remark-gfm": "^4.0.1",
60
60
  "unist-util-visit": "^5.0.0",
61
61
  "use-sync-external-store": "^1.4.0",
62
- "@inkeep/cxkit-color-mode": "0.5.34",
63
- "@inkeep/cxkit-theme": "0.5.34",
64
- "@inkeep/cxkit-types": "0.5.34"
62
+ "@inkeep/cxkit-color-mode": "0.5.36",
63
+ "@inkeep/cxkit-theme": "0.5.36",
64
+ "@inkeep/cxkit-types": "0.5.36"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@biomejs/biome": "1.9.4",