@inkeep/cxkit-primitives 0.5.22 → 0.5.24

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,140 +1,143 @@
1
1
  "use client";
2
- import { useState as s, useRef as l, useCallback as n, useEffect as B, useImperativeHandle as Z, useMemo as T } from "react";
3
- import { useInkeepConfig as ee } from "../../providers/config-provider.js";
4
- import { useMediaQuery as te } from "../../hooks/use-media-query.js";
5
- import re from "./search-query.graphql.js";
6
- import { useTransformResults as se } from "./transform-results.js";
7
- import { useSearchEvents as ne } from "../../providers/search-events-provider.js";
8
- import { useInstantUpdate as oe } from "../../hooks/use-instant-update.js";
9
- import { graphqlRequest as ce } from "../../utils/graphql-client.js";
10
- const pe = () => {
11
- const { baseSettings: F, searchSettings: H } = ee(), { apiKey: S, aiApiBaseUrl: P, userAuthToken: h } = F, {
12
- maxResults: C,
13
- placeholder: v,
14
- defaultQuery: $,
15
- debounceTimeMs: k,
16
- onQueryChange: z,
17
- searchFunctionsRef: D,
18
- tabs: f
19
- } = H, { logEvent: w } = ne(), [c, q] = s($), E = l(null), [A, I] = s(!1), [K, m] = s(null), [W, a] = s("NONE"), G = n((e) => {
2
+ import { useState as s, useRef as l, useCallback as n, useEffect as H, useImperativeHandle as te, useMemo as T } from "react";
3
+ import { useInkeepConfig as re } from "../../providers/config-provider.js";
4
+ import { useMediaQuery as se } from "../../hooks/use-media-query.js";
5
+ import ne from "./search-query.graphql.js";
6
+ import { useTransformResults as oe } from "./transform-results.js";
7
+ import { useSearchEvents as ce } from "../../providers/search-events-provider.js";
8
+ import { useInstantUpdate as ae } from "../../hooks/use-instant-update.js";
9
+ import { graphqlRequest as ie } from "../../utils/graphql-client.js";
10
+ const be = () => {
11
+ const { baseSettings: P, searchSettings: $ } = re(), { apiKey: S, aiApiBaseUrl: z, userAuthToken: h, filters: C } = P, {
12
+ maxResults: v,
13
+ placeholder: k,
14
+ defaultQuery: D,
15
+ debounceTimeMs: w,
16
+ onQueryChange: K,
17
+ searchFunctionsRef: W,
18
+ tabs: f,
19
+ filters: q
20
+ } = $, { logEvent: E } = ce(), [c, A] = s(D), I = l(null), [_, x] = s(!1), [G, m] = s(null), [J, a] = s("NONE"), V = n((e) => {
20
21
  a(e);
21
- }, []), [d, p] = s([]), t = se(d, c), _ = typeof f?.[0] == "string" ? f[0] : f[0][0], [y, x] = s(_), { disableTransition: L, disabled: J } = oe(), V = n(
22
+ }, []), [d, p] = s([]), t = oe(d, c), F = typeof f?.[0] == "string" ? f[0] : f[0][0], [y, L] = s(F), { disableTransition: M, disabled: X } = ae(), Y = n(
22
23
  (e) => {
23
- L(), x(e);
24
+ M(), L(e);
24
25
  const r = t[e][0].id;
25
26
  a(r);
26
27
  },
27
- [t, L]
28
+ [t, M]
28
29
  );
29
- B(() => {
30
+ H(() => {
30
31
  let e = y in t ? y : Object.keys(t)[0];
31
32
  if (!t[e]?.length) {
32
- const o = Object.keys(t).find((i) => t[i]?.length);
33
- o ? e = o : e = _;
33
+ const o = Object.keys(t).find((u) => t[u]?.length);
34
+ o ? e = o : e = F;
34
35
  }
35
36
  if (!e) return;
36
- x(e);
37
+ L(e);
37
38
  const r = t[e]?.[0];
38
39
  r && a(r.id);
39
40
  }, [t]);
40
- const b = te("(max-width: 768px)"), u = l({}), g = l(null), Q = l(null);
41
- Z(D, () => ({
41
+ const b = se("(max-width: 768px)"), i = l({}), g = l(null), Q = l(null);
42
+ te(W, () => ({
42
43
  updateQuery(e) {
43
- q(e);
44
+ A(e);
44
45
  },
45
46
  focusInput: () => {
46
- E.current?.focus();
47
+ I.current?.focus();
47
48
  }
48
49
  }));
49
- const M = `${P}/graphql`, N = T(
50
+ const N = `${z}/graphql`, U = T(
50
51
  () => ({
51
52
  Authorization: `Bearer ${S}`,
52
53
  "Content-Type": "application/json",
53
54
  ...h ? { "User-Token": h } : {}
54
55
  }),
55
56
  [S, h]
56
- ), U = n(
57
+ ), j = n(
57
58
  async (e) => {
58
59
  g.current && g.current.abort();
59
60
  const r = new AbortController();
60
61
  g.current = r;
61
62
  try {
62
- I(!0), m(null);
63
- const i = (await ce(M, re, { searchInput: e }, N))?.search.searchHits;
64
- u.current[e.searchQuery] = i, p(i);
63
+ x(!0), m(null);
64
+ const u = (await ie(N, ne, { searchInput: e }, U))?.search.searchHits;
65
+ i.current[e.searchQuery] = u, p(u);
65
66
  } catch (o) {
66
67
  if (o.name === "AbortError")
67
68
  return;
68
69
  m("Failed to fetch search results. Please try again.");
69
70
  }
70
- I(!1);
71
+ x(!1);
71
72
  },
72
- [M, N]
73
- ), j = n((e) => {
74
- const r = u.current[e.searchQuery];
75
- w({
73
+ [N, U]
74
+ ), O = n((e) => {
75
+ const r = i.current[e.searchQuery];
76
+ E({
76
77
  eventName: "search_query_response_received",
77
78
  properties: {
78
79
  searchQuery: e.searchQuery,
79
80
  totalResults: r?.length
80
81
  }
81
82
  });
82
- }, []), O = n(
83
+ }, []), B = n(
83
84
  (e) => {
84
85
  if (Q.current && window.clearTimeout(Q.current), !e.searchQuery) {
85
86
  p([]), m(null);
86
87
  return;
87
88
  }
88
89
  Q.current = window.setTimeout(() => {
89
- w({
90
+ E({
90
91
  eventName: "search_query_submitted",
91
92
  properties: {
92
93
  searchQuery: e.searchQuery
93
94
  }
94
- }), u.current[e.searchQuery] ? (p(u.current[e.searchQuery]), j(e)) : U(e).then(() => {
95
- j(e);
95
+ }), i.current[e.searchQuery] ? (p(i.current[e.searchQuery]), O(e)) : j(e).then(() => {
96
+ O(e);
96
97
  });
97
- }, k);
98
+ }, w);
98
99
  },
99
- [k, U]
100
+ [w, j]
100
101
  ), R = T(
101
102
  () => ({
102
103
  searchQuery: c,
103
104
  filters: {
104
- limit: C
105
+ ...C,
106
+ ...q,
107
+ limit: v
105
108
  }
106
109
  }),
107
- [c, C]
110
+ [c, v, C, q]
108
111
  );
109
- B(() => {
110
- z?.(R.searchQuery), O(R);
111
- }, [O, R]);
112
- const X = n(
113
- (e) => q(e.target.value),
112
+ H(() => {
113
+ K?.(R.searchQuery), B(R);
114
+ }, [B, R]);
115
+ const Z = n(
116
+ (e) => A(e.target.value),
114
117
  []
115
- ), Y = T(
116
- () => v || (b ? "Search..." : "Search for anything..."),
117
- [v, b]
118
+ ), ee = T(
119
+ () => k || (b ? "Search..." : "Search for anything..."),
120
+ [k, b]
118
121
  );
119
122
  return {
120
123
  results: t,
121
124
  resultsList: d,
122
- hasContent: d.length > 0 || A,
123
- loading: A,
124
- error: K,
125
+ hasContent: d.length > 0 || _,
126
+ loading: _,
127
+ error: G,
125
128
  query: c,
126
- onInput: X,
127
- placeholder: Y,
129
+ onInput: Z,
130
+ placeholder: ee,
128
131
  tab: y,
129
- onTabChange: V,
130
- selectedItem: W,
132
+ onTabChange: Y,
133
+ selectedItem: J,
131
134
  setSelectedItem: a,
132
- onSelectedItemChange: G,
133
- transitionsDisabled: J,
134
- inputRef: E,
135
+ onSelectedItemChange: V,
136
+ transitionsDisabled: X,
137
+ inputRef: I,
135
138
  isMobile: b
136
139
  };
137
140
  };
138
141
  export {
139
- pe as useInkeepSearch
142
+ be as useInkeepSearch
140
143
  };
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),I=require("../atoms/cmdk/index.cjs"),i=require("./factory.cjs"),u=require("../utils/misc.cjs"),m=require("react"),o=require("./embedded-search/search-provider.cjs"),le=require("./tagline-logo-icon.cjs"),_=require("../atoms/icons/custom-icon.cjs"),ue=require("@radix-ui/react-scroll-area"),me=require("@radix-ui/react-tabs"),C=require("../providers/config-provider.cjs"),he=require("../providers/search-events-provider.cjs"),Se=require("../atoms/link.cjs"),h=require("../providers/source-item-provider.cjs"),x=require("../atoms/icons/built-in-icon-renderer.cjs"),be=require("../utils/highlight-emphasis.cjs"),pe=require("../hooks/use-scrolling-fades.cjs"),Ie=require("@inkeep/cxkit-color-mode"),ve=require("../atoms/avatars/ai.cjs"),j=require("./modal/modal-provider.cjs"),P=require("../utils/compose-refs.cjs"),R=require("../utils/compose-event-handlers.cjs"),Re=require("../atoms/shadow/context.cjs");function q(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const g=q(ue),E=q(me),A="__ask_ai__",ge=i.ikp("div",{_id:"aiSearchWrapper"}),w=e=>{const{isHidden:t,hasContent:r,isMobile:s}=o.useSearch(),n=j.useModal();return a.jsx(ge,{"data-hidden":u.dataAttr(t),"data-has-content":u.dataAttr(r),"data-in-modal":u.dataAttr(!!n),"data-mobile":u.dataAttr(s),...e})},_e=i.ikp(I.Command,{_id:"aiSearchRoot"}),B=e=>{const{isHidden:t,selectedItem:r,onSelectedItemChange:s}=o.useSearch();return a.jsx(_e,{"data-hidden":u.dataAttr(t),shouldFilter:!1,loop:!1,value:r,onValueChange:s,...e})},D=i.ikp(I.Command.List,{_id:"aiSearchContent"}),F=m.forwardRef((e,t)=>{const{selectedItem:r}=o.useSearch();return a.jsx(D,{"aria-activedescendant":`aiSearchResults__Item-${r}`,...e,ref:t})}),N=i.ikp("div",{_id:"aiSearchInputGroup"}),O=i.ikp(_.CustomIcon,{_id:"aiSearchInputIcon",iconKey:"search"}),Pe=i.ikp(I.Command.Input,{_id:"aiSearchInput"}),V=m.forwardRef(({onInput:e,...t},r)=>{const{query:s,onInput:n,placeholder:c,inputRef:d,shouldAutoFocusInput:l,selectedItem:S}=o.useSearch(),v=P.useComposedRefs(r,d),b=j.useModal();return m.useEffect(()=>{requestAnimationFrame(()=>{l&&d?.current&&(d.current.focus(),d.current.selectionStart=d.current.value.length)})},[l,d,b?.isOpen]),a.jsx(Pe,{ref:v,placeholder:c,value:s,onInput:R.composeEventHandlers(e,n),"aria-activedescendant":`aiSearchResults__Item-${S}`,...t})}),Ee=i.ikp(x.BuiltInIconRenderer,{_id:"aiSearchLoading",iconSettings:{builtIn:"LuLoaderCircle"}}),M=e=>{const{loading:t,resultsList:r}=o.useSearch();return!t||r.length===0?null:a.jsx(Ee,{...e})},Ae=i.ikp(I.Command.Item,{_id:"aiAskAITrigger",value:A}),H=e=>{const{setSelectedItem:t,results:r,tab:s}=o.useSearch(),n=r[s]?.[0]?.id??"NONE";return a.jsx(Ae,{...e,id:`aiSearchResults__Item-${A}`,tabIndex:0,onPointerLeave:()=>t(n)})},ke=i.ikp("img",{_id:"aiAskAITrigger__Icon"}),U=e=>{const{aiChatSettings:t}=C.useInkeepConfig(),{aiAssistantAvatar:r}=t??{},s=typeof r=="string"?r:r?.light,n=(typeof r=="string"?r:r?.dark)??s,c=Ie.useColorModeValue(s,n),[d,l]=m.useState(c);m.useEffect(()=>{l(c)},[c]);const S=()=>{l(null)};return a.jsx(ke,{asChild:!0,...e,children:d?a.jsx("img",{src:d,alt:"AI Avatar","data-type":"image",onError:R.composeEventHandlers(S),...e}):a.jsx(ve.default,{"data-type":"icon",...e})})},G=i.ikp("span",{_id:"aiAskAITrigger__Label"}),K=i.ikp(_.CustomIcon,{_id:"aiAskAITrigger__Indicator",iconKey:"openLinkInSameTab"}),fe=i.ikp(E.Root,{_id:"aiSearchResults"}),W=e=>{const{tab:t,onTabChange:r,hasContent:s}=o.useSearch();return a.jsx(fe,{value:t,onValueChange:r,"data-has-content":u.dataAttr(s),...e})},Te=i.ikp("div",{_id:"aiSearchResults__Loading"}),$=e=>{const{loading:t,resultsList:r}=o.useSearch();return!t||r.length>0?null:a.jsx(Te,{...e})},Ce=i.ikp(I.Command.Empty,{_id:"aiSearchResults__Empty"}),Q=e=>{const{query:t,loading:r,results:s,tab:n}=o.useSearch(),c=s[n]?.length;return r||!t||c?null:a.jsx(Ce,{children:"No results found.",...e})},ye=i.ikp(E.List,{_id:"aiSearchResults__TabList"}),z=e=>{const{children:t,...r}=e,{searchSettings:{tabs:s}}=C.useInkeepConfig(),{results:n,loading:c,resultsList:d}=o.useSearch();if(c&&d.length===0)return null;const l=Object.keys(n);return!s.length||!l.length?null:a.jsx(ye,{tabIndex:-1,children:u.maybeRender(t,l),...r})},Le=i.ikp(E.Trigger,{_id:"aiSearchResults__Tab"}),J=m.forwardRef((e,t)=>{const r=m.useRef(null),s=P.useComposedRefs(t,r),{tab:n,onClick:c,...d}=e,{results:l,tab:S,inputRef:v}=o.useSearch(),b=l[n].length,p=n===S,k=()=>{v.current?.focus()},f=Re.useShadow();return m.useEffect(()=>{p&&f?.shadowHost?.shadowRoot?.activeElement?.hasAttribute("ikp-tab")&&r.current?.focus()},[p]),a.jsx(Le,{ref:s,"ikp-tab":"",tabIndex:p?0:-1,value:n,children:`${n} (${b})`,onClick:R.composeEventHandlers(c,k),...d})}),xe=i.ikp(g.Root,{_id:"aiSearchResults__ScrollArea"}),X=e=>{const{loading:t,resultsList:r}=o.useSearch();return t&&r.length===0?null:a.jsx(xe,{tabIndex:-1,...e})},je=i.ikp(g.Viewport,{_id:"aiSearchResults__ScrollAreaViewport"}),Y=m.forwardRef(({children:e,...t},r)=>{const s=pe.useScrollingFades(),n=P.useComposedRefs(r,s),{tab:c}=o.useSearch();return m.useEffect(()=>{c&&s.current?.scrollTo({top:0,behavior:"auto"})},[c]),a.jsx(je,{ref:n,tabIndex:-1,children:a.jsx("div",{tabIndex:-1,style:{display:"grid"},children:e}),...t})}),qe=i.ikp(g.ScrollAreaScrollbar,{_id:"aiSearchResults__ScrollAreaScrollbar"}),we=i.ikp(g.ScrollAreaThumb,{_id:"aiSearchResults__ScrollAreaThumb"}),Be=i.ikp(g.Corner,{_id:"aiSearchResults__ScrollAreaCorner"}),De=i.ikp(E.Content,{_id:"aiSearchResults__List"}),Z=e=>{const{children:t,...r}=e,{results:s,tab:n}=o.useSearch(),c=s[n]??[];return a.jsx(De,{value:n,"data-has-results":u.dataAttr(c.length>0),"aria-label":"Search results",children:u.maybeRender(t,c),tabIndex:-1,...r})},Fe=i.ikp(I.Command.Item,{_id:"aiSearchResults__Item",asChild:!0}),ee=m.forwardRef(({item:e,onClick:t,onSelect:r,children:s,...n},c)=>{const{searchSettings:{shouldOpenLinksInNewTab:d}}=C.useInkeepConfig(),{logEvent:l}=he.useSearchEvents(),{query:S,transitionsDisabled:v,selectedItem:b}=o.useSearch(),p=m.useRef(null),k=P.useComposedRefs(c,p),f=()=>{p.current?.click()},y=()=>{l({eventName:"search_result_clicked",properties:{searchQuery:S,title:e.title,url:e.url}})},T=d||!!e.shouldOpenInNewTab,L=b===e.id,de=L||(b==="NONE"||b===A);return a.jsx(h.SourceItemProvider,{source:{...e,isExternal:T},children:a.jsx(Fe,{ref:k,value:e.id,"data-type":e.type,"data-breadcrumbs":!!e.breadcrumbs?.length,"data-disable-transitions":u.dataAttr(v),onSelect:R.composeEventHandlers(r,f),onClick:R.composeEventHandlers(t,y),"data-selected":u.dataAttr(L),tabIndex:de?0:-1,...n,children:a.jsx(Se.LinkWithQueryParams,{href:e.url,isExternal:T,appendToUrl:e.appendToUrl,children:s,id:`aiSearchResults__Item-${e.id}`})})})}),Ne=i.ikp("div",{_id:"aiSearchResults__ItemBreadcrumbs"}),te=e=>{const{source:t}=h.useSourceItem(),{tab:r}=o.useSearch();if(!t.breadcrumbs?.length)return null;const{children:s,...n}=e,d=t.tabs?.find(l=>typeof l!="string"&&l[0]===r)?.[1]?.breadcrumbs??t.breadcrumbs??[];return a.jsx(Ne,{"aria-hidden":"true",children:u.maybeRender(s,d),...n})},Oe=i.ikp(_.CustomIcon,{_id:"aiSearchResults__ItemBreadcrumbIcon",iconKey:"breadcrumbSeparator"}),Ve=i.ikp(x.BuiltInIconRenderer,{_id:"aiSearchResults__ItemIcon"}),re=e=>{const{source:t}=h.useSourceItem();return a.jsx(Ve,{iconSettings:t.icon,"data-type":t.type,...e})},Me=i.ikp("span",{_id:"aiSearchResults__ItemTitle"}),ie=e=>{const{source:t}=h.useSourceItem();return a.jsx(Me,{"data-type":t.type,children:t.title,...e})},He=i.ikp("span",{_id:"aiSearchResults__ItemTag"}),se=e=>{const{source:t}=h.useSourceItem();return a.jsx(He,{"data-type":t.type,children:t.tag,...e})},Ue=i.ikp("span",{_id:"aiSearchResults__ItemDescription"}),ae=e=>{const{source:t}=h.useSourceItem(),{children:r,...s}=e,n=m.useMemo(()=>t.description?be.highlightEmphasis(t.description):[],[t.description]);return n.length?a.jsx(Ue,{"data-type":t.type,"aria-hidden":"true",children:u.maybeRender(r,n),...s}):null},Ge=i.ikp("span",{_id:"aiSearchResults__ItemDescriptionPart"}),ne=e=>{const{part:t,...r}=e,{source:s}=h.useSourceItem();return typeof t=="string"?t:a.jsx(Ge,{"data-type":s.type,children:t.content,"data-highlighted":u.dataAttr(t.highlighted),...r})},Ke=i.ikp(_.CustomIcon,{_id:"aiSearchResults__ItemIndicator"}),ce=e=>{const{source:t}=h.useSourceItem();return a.jsx(Ke,{iconKey:t.isExternal?"openLinkInNewTab":"openLinkInSameTab",...e})},We=i.ikp("div",{_id:"aiSearchFooter"}),oe=e=>{const{resultsList:t}=o.useSearch();return a.jsx(We,{"data-has-results":u.dataAttr(t.length>0),...e})},$e=i.ikp("div",{_id:"aiSearchTagline__Container"}),Qe=i.ikp("span",{_id:"aiSearchTagline__Text",children:"Powered by"}),ze=i.ikp(le.default,{_id:"aiSearchTagline__Logo"}),Je=i.ikp("a",{_id:"aiSearchTagline__BrandName",children:"inkeep",href:"https://www.inkeep.com/",target:"_blank",rel:"noopener noreferrer"});exports.Provider=o.SearchProvider;exports.ASK_AI_TRIGGER_VALUE=A;exports.AskAITrigger=H;exports.AskAITriggerIcon=U;exports.AskAITriggerIndicator=K;exports.AskAITriggerLabel=G;exports.Content=F;exports.EmbeddedSearchInputIcon=O;exports.EmbeddedSearchPrimitiveAskAITrigger=H;exports.EmbeddedSearchPrimitiveAskAITriggerIcon=U;exports.EmbeddedSearchPrimitiveAskAITriggerIndicator=K;exports.EmbeddedSearchPrimitiveAskAITriggerLabel=G;exports.EmbeddedSearchPrimitiveContent=F;exports.EmbeddedSearchPrimitiveFooter=oe;exports.EmbeddedSearchPrimitiveInput=V;exports.EmbeddedSearchPrimitiveInputGroup=N;exports.EmbeddedSearchPrimitiveLoading=M;exports.EmbeddedSearchPrimitiveResults=W;exports.EmbeddedSearchPrimitiveResultsEmpty=Q;exports.EmbeddedSearchPrimitiveResultsItem=ee;exports.EmbeddedSearchPrimitiveResultsItemBreadcrumbs=te;exports.EmbeddedSearchPrimitiveResultsItemDescription=ae;exports.EmbeddedSearchPrimitiveResultsItemDescriptionPart=ne;exports.EmbeddedSearchPrimitiveResultsItemIcon=re;exports.EmbeddedSearchPrimitiveResultsItemIndicator=ce;exports.EmbeddedSearchPrimitiveResultsItemTag=se;exports.EmbeddedSearchPrimitiveResultsItemTitle=ie;exports.EmbeddedSearchPrimitiveResultsList=Z;exports.EmbeddedSearchPrimitiveResultsLoading=$;exports.EmbeddedSearchPrimitiveResultsScrollArea=X;exports.EmbeddedSearchPrimitiveResultsScrollAreaViewport=Y;exports.EmbeddedSearchPrimitiveResultsTab=J;exports.EmbeddedSearchPrimitiveResultsTabList=z;exports.EmbeddedSearchPrimitiveRoot=B;exports.EmbeddedSearchPrimitiveWrapper=w;exports.Footer=oe;exports.Input=V;exports.InputGroup=N;exports.InputIcon=O;exports.Loading=M;exports.PrimitiveContent=D;exports.Results=W;exports.ResultsEmpty=Q;exports.ResultsItem=ee;exports.ResultsItemBreadcrumbIcon=Oe;exports.ResultsItemBreadcrumbs=te;exports.ResultsItemDescription=ae;exports.ResultsItemDescriptionPart=ne;exports.ResultsItemIcon=re;exports.ResultsItemIndicator=ce;exports.ResultsItemTag=se;exports.ResultsItemTitle=ie;exports.ResultsList=Z;exports.ResultsLoading=$;exports.ResultsScrollArea=X;exports.ResultsScrollAreaCorner=Be;exports.ResultsScrollAreaScrollbar=qe;exports.ResultsScrollAreaThumb=we;exports.ResultsScrollAreaViewport=Y;exports.ResultsTab=J;exports.ResultsTabList=z;exports.Root=B;exports.TaglineBrandName=Je;exports.TaglineContainer=$e;exports.TaglineLogo=ze;exports.TaglineText=Qe;exports.Wrapper=w;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),I=require("../atoms/cmdk/index.cjs"),i=require("./factory.cjs"),u=require("../utils/misc.cjs"),m=require("react"),o=require("./embedded-search/search-provider.cjs"),le=require("./tagline-logo-icon.cjs"),_=require("../atoms/icons/custom-icon.cjs"),ue=require("@radix-ui/react-scroll-area"),me=require("@radix-ui/react-tabs"),C=require("../providers/config-provider.cjs"),he=require("../providers/search-events-provider.cjs"),Se=require("../atoms/link.cjs"),h=require("../providers/source-item-provider.cjs"),x=require("../atoms/icons/built-in-icon-renderer.cjs"),be=require("../utils/highlight-emphasis.cjs"),pe=require("../hooks/use-scrolling-fades.cjs"),Ie=require("@inkeep/cxkit-color-mode"),ve=require("../atoms/avatars/ai.cjs"),j=require("./modal/modal-provider.cjs"),P=require("../utils/compose-refs.cjs"),R=require("../utils/compose-event-handlers.cjs"),Re=require("../atoms/shadow/context.cjs");function q(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const g=q(ue),E=q(me),A="__ask_ai__",ge=i.ikp("div",{_id:"aiSearchWrapper"}),w=e=>{const{isHidden:t,hasContent:r,isMobile:s}=o.useSearch(),a=j.useModal();return n.jsx(ge,{"data-hidden":u.dataAttr(t),"data-has-content":u.dataAttr(r),"data-in-modal":u.dataAttr(!!a),"data-mobile":u.dataAttr(s),...e})},_e=i.ikp(I.Command,{_id:"aiSearchRoot"}),B=e=>{const{isHidden:t,selectedItem:r,onSelectedItemChange:s}=o.useSearch();return n.jsx(_e,{"data-hidden":u.dataAttr(t),shouldFilter:!1,loop:!1,value:r,onValueChange:s,...e})},N=i.ikp(I.Command.List,{_id:"aiSearchContent"}),D=m.forwardRef((e,t)=>{const{selectedItem:r}=o.useSearch();return n.jsx(N,{"aria-activedescendant":`aiSearchResults__Item-${r}`,...e,ref:t})}),F=i.ikp("div",{_id:"aiSearchInputGroup"}),O=i.ikp(_.CustomIcon,{_id:"aiSearchInputIcon",iconKey:"search"}),Pe=i.ikp(I.Command.Input,{_id:"aiSearchInput"}),V=m.forwardRef(({onInput:e,...t},r)=>{const{query:s,onInput:a,placeholder:c,inputRef:d,shouldAutoFocusInput:l,selectedItem:S}=o.useSearch(),v=P.useComposedRefs(r,d),b=j.useModal();return m.useEffect(()=>{requestAnimationFrame(()=>{l&&d?.current&&(d.current.focus(),d.current.selectionStart=d.current.value.length)})},[l,d,b?.isOpen]),n.jsx(Pe,{ref:v,placeholder:c,value:s,onInput:R.composeEventHandlers(e,a),"aria-activedescendant":`aiSearchResults__Item-${S}`,...t})}),Ee=i.ikp(x.BuiltInIconRenderer,{_id:"aiSearchLoading",iconSettings:{builtIn:"LuLoaderCircle"}}),M=e=>{const{loading:t,resultsList:r}=o.useSearch();return!t||r.length===0?null:n.jsx(Ee,{...e})},Ae=i.ikp(I.Command.Item,{_id:"aiAskAITrigger",value:A}),H=e=>{const{setSelectedItem:t,results:r,tab:s}=o.useSearch(),a=r[s]?.[0]?.id??"NONE";return n.jsx(Ae,{...e,id:`aiSearchResults__Item-${A}`,tabIndex:0,onPointerLeave:()=>t(a)})},ke=i.ikp("img",{_id:"aiAskAITrigger__Icon"}),U=e=>{const{aiChatSettings:t}=C.useInkeepConfig(),{aiAssistantAvatar:r}=t??{},s=typeof r=="string"?r:r?.light,a=(typeof r=="string"?r:r?.dark)??s,c=Ie.useColorModeValue(s,a),[d,l]=m.useState(c);m.useEffect(()=>{l(c)},[c]);const S=()=>{l(null)};return n.jsx(ke,{asChild:!0,...e,children:d?n.jsx("img",{src:d,alt:"AI Avatar","data-type":"image",onError:R.composeEventHandlers(S),...e}):n.jsx(ve.default,{"data-type":"icon",...e})})},G=i.ikp("span",{_id:"aiAskAITrigger__Label"}),K=i.ikp(_.CustomIcon,{_id:"aiAskAITrigger__Indicator",iconKey:"openLinkInSameTab"}),fe=i.ikp(E.Root,{_id:"aiSearchResults"}),W=e=>{const{tab:t,onTabChange:r,hasContent:s}=o.useSearch();return n.jsx(fe,{value:t,onValueChange:r,"data-has-content":u.dataAttr(s),...e})},Te=i.ikp("div",{_id:"aiSearchResults__Loading"}),$=e=>{const{loading:t,resultsList:r}=o.useSearch();return!t||r.length>0?null:n.jsx(Te,{...e})},Ce=i.ikp(I.Command.Empty,{_id:"aiSearchResults__Empty"}),Q=e=>{const{query:t,loading:r,results:s,tab:a}=o.useSearch(),c=s[a]?.length;return r||!t||c?null:n.jsx(Ce,{children:"No results found.",...e})},ye=i.ikp(E.List,{_id:"aiSearchResults__TabList"}),z=e=>{const{children:t,...r}=e,{searchSettings:{tabs:s}}=C.useInkeepConfig(),{results:a,loading:c,resultsList:d}=o.useSearch();if(c&&d.length===0)return null;const l=Object.keys(a);return!s.length||!l.length?null:n.jsx(ye,{tabIndex:-1,children:u.maybeRender(t,l),...r})},Le=i.ikp(E.Trigger,{_id:"aiSearchResults__Tab"}),J=m.forwardRef((e,t)=>{const r=m.useRef(null),s=P.useComposedRefs(t,r),{tab:a,onClick:c,...d}=e,{results:l,tab:S,inputRef:v}=o.useSearch(),b=l[a].length,p=a===S,k=()=>{v.current?.focus()},f=Re.useShadow();return m.useEffect(()=>{p&&f?.shadowHost?.shadowRoot?.activeElement?.hasAttribute("ikp-tab")&&r.current?.focus()},[p]),n.jsx(Le,{ref:s,"ikp-tab":"",tabIndex:p?0:-1,value:a,children:`${a} (${b})`,onClick:R.composeEventHandlers(c,k),...d})}),xe=i.ikp(g.Root,{_id:"aiSearchResults__ScrollArea"}),X=e=>{const{loading:t,resultsList:r}=o.useSearch();return t&&r.length===0?null:n.jsx(xe,{tabIndex:-1,...e})},je=i.ikp(g.Viewport,{_id:"aiSearchResults__ScrollAreaViewport"}),Y=m.forwardRef(({children:e,...t},r)=>{const s=pe.useScrollingFades(),a=P.useComposedRefs(r,s),{tab:c}=o.useSearch();return m.useEffect(()=>{c&&s.current?.scrollTo({top:0,behavior:"auto"})},[c]),n.jsx(je,{ref:a,tabIndex:-1,children:n.jsx("div",{tabIndex:-1,style:{display:"grid"},children:e}),...t})}),qe=i.ikp(g.ScrollAreaScrollbar,{_id:"aiSearchResults__ScrollAreaScrollbar"}),we=i.ikp(g.ScrollAreaThumb,{_id:"aiSearchResults__ScrollAreaThumb"}),Be=i.ikp(g.Corner,{_id:"aiSearchResults__ScrollAreaCorner"}),Ne=i.ikp(E.Content,{_id:"aiSearchResults__List"}),Z=e=>{const{children:t,...r}=e,{results:s,tab:a}=o.useSearch(),c=s[a]??[];return n.jsx(Ne,{value:a,"data-has-results":u.dataAttr(c.length>0),"aria-label":"Search results",children:u.maybeRender(t,c),tabIndex:-1,...r})},De=i.ikp(I.Command.Item,{_id:"aiSearchResults__Item",asChild:!0}),ee=m.forwardRef(({item:e,onClick:t,onSelect:r,children:s,...a},c)=>{const{searchSettings:{shouldOpenLinksInNewTab:d}}=C.useInkeepConfig(),{logEvent:l}=he.useSearchEvents(),{query:S,transitionsDisabled:v,selectedItem:b}=o.useSearch(),p=m.useRef(null),k=P.useComposedRefs(c,p),f=()=>{p.current?.click()},y=()=>{l({eventName:"search_result_clicked",properties:{searchQuery:S,title:e.title,url:e.url}})},T=e.shouldOpenInNewTab!==void 0?e.shouldOpenInNewTab:d,L=b===e.id,de=L||(b==="NONE"||b===A);return n.jsx(h.SourceItemProvider,{source:{...e,isExternal:T},children:n.jsx(De,{ref:k,value:e.id,"data-type":e.type,"data-breadcrumbs":!!e.breadcrumbs?.length,"data-disable-transitions":u.dataAttr(v),onSelect:R.composeEventHandlers(r,f),onClick:R.composeEventHandlers(t,y),"data-selected":u.dataAttr(L),tabIndex:de?0:-1,...a,children:n.jsx(Se.LinkWithQueryParams,{href:e.url,isExternal:T,appendToUrl:e.appendToUrl,children:s,id:`aiSearchResults__Item-${e.id}`})})})}),Fe=i.ikp("div",{_id:"aiSearchResults__ItemBreadcrumbs"}),te=e=>{const{source:t}=h.useSourceItem(),{tab:r}=o.useSearch();if(!t.breadcrumbs?.length)return null;const{children:s,...a}=e,d=t.tabs?.find(l=>typeof l!="string"&&l[0]===r)?.[1]?.breadcrumbs??t.breadcrumbs??[];return n.jsx(Fe,{"aria-hidden":"true",children:u.maybeRender(s,d),...a})},Oe=i.ikp(_.CustomIcon,{_id:"aiSearchResults__ItemBreadcrumbIcon",iconKey:"breadcrumbSeparator"}),Ve=i.ikp(x.BuiltInIconRenderer,{_id:"aiSearchResults__ItemIcon"}),re=e=>{const{source:t}=h.useSourceItem();return n.jsx(Ve,{iconSettings:t.icon,"data-type":t.type,...e})},Me=i.ikp("span",{_id:"aiSearchResults__ItemTitle"}),ie=e=>{const{source:t}=h.useSourceItem();return n.jsx(Me,{"data-type":t.type,children:t.title,...e})},He=i.ikp("span",{_id:"aiSearchResults__ItemTag"}),se=e=>{const{source:t}=h.useSourceItem();return n.jsx(He,{"data-type":t.type,children:t.tag,...e})},Ue=i.ikp("span",{_id:"aiSearchResults__ItemDescription"}),ne=e=>{const{source:t}=h.useSourceItem(),{children:r,...s}=e,a=m.useMemo(()=>t.description?be.highlightEmphasis(t.description):[],[t.description]);return a.length?n.jsx(Ue,{"data-type":t.type,"aria-hidden":"true",children:u.maybeRender(r,a),...s}):null},Ge=i.ikp("span",{_id:"aiSearchResults__ItemDescriptionPart"}),ae=e=>{const{part:t,...r}=e,{source:s}=h.useSourceItem();return typeof t=="string"?t:n.jsx(Ge,{"data-type":s.type,children:t.content,"data-highlighted":u.dataAttr(t.highlighted),...r})},Ke=i.ikp(_.CustomIcon,{_id:"aiSearchResults__ItemIndicator"}),ce=e=>{const{source:t}=h.useSourceItem();return n.jsx(Ke,{iconKey:t.isExternal?"openLinkInNewTab":"openLinkInSameTab",...e})},We=i.ikp("div",{_id:"aiSearchFooter"}),oe=e=>{const{resultsList:t}=o.useSearch();return n.jsx(We,{"data-has-results":u.dataAttr(t.length>0),...e})},$e=i.ikp("div",{_id:"aiSearchTagline__Container"}),Qe=i.ikp("span",{_id:"aiSearchTagline__Text",children:"Powered by"}),ze=i.ikp(le.default,{_id:"aiSearchTagline__Logo"}),Je=i.ikp("a",{_id:"aiSearchTagline__BrandName",children:"inkeep",href:"https://www.inkeep.com/",target:"_blank",rel:"noopener noreferrer"});exports.Provider=o.SearchProvider;exports.ASK_AI_TRIGGER_VALUE=A;exports.AskAITrigger=H;exports.AskAITriggerIcon=U;exports.AskAITriggerIndicator=K;exports.AskAITriggerLabel=G;exports.Content=D;exports.EmbeddedSearchInputIcon=O;exports.EmbeddedSearchPrimitiveAskAITrigger=H;exports.EmbeddedSearchPrimitiveAskAITriggerIcon=U;exports.EmbeddedSearchPrimitiveAskAITriggerIndicator=K;exports.EmbeddedSearchPrimitiveAskAITriggerLabel=G;exports.EmbeddedSearchPrimitiveContent=D;exports.EmbeddedSearchPrimitiveFooter=oe;exports.EmbeddedSearchPrimitiveInput=V;exports.EmbeddedSearchPrimitiveInputGroup=F;exports.EmbeddedSearchPrimitiveLoading=M;exports.EmbeddedSearchPrimitiveResults=W;exports.EmbeddedSearchPrimitiveResultsEmpty=Q;exports.EmbeddedSearchPrimitiveResultsItem=ee;exports.EmbeddedSearchPrimitiveResultsItemBreadcrumbs=te;exports.EmbeddedSearchPrimitiveResultsItemDescription=ne;exports.EmbeddedSearchPrimitiveResultsItemDescriptionPart=ae;exports.EmbeddedSearchPrimitiveResultsItemIcon=re;exports.EmbeddedSearchPrimitiveResultsItemIndicator=ce;exports.EmbeddedSearchPrimitiveResultsItemTag=se;exports.EmbeddedSearchPrimitiveResultsItemTitle=ie;exports.EmbeddedSearchPrimitiveResultsList=Z;exports.EmbeddedSearchPrimitiveResultsLoading=$;exports.EmbeddedSearchPrimitiveResultsScrollArea=X;exports.EmbeddedSearchPrimitiveResultsScrollAreaViewport=Y;exports.EmbeddedSearchPrimitiveResultsTab=J;exports.EmbeddedSearchPrimitiveResultsTabList=z;exports.EmbeddedSearchPrimitiveRoot=B;exports.EmbeddedSearchPrimitiveWrapper=w;exports.Footer=oe;exports.Input=V;exports.InputGroup=F;exports.InputIcon=O;exports.Loading=M;exports.PrimitiveContent=N;exports.Results=W;exports.ResultsEmpty=Q;exports.ResultsItem=ee;exports.ResultsItemBreadcrumbIcon=Oe;exports.ResultsItemBreadcrumbs=te;exports.ResultsItemDescription=ne;exports.ResultsItemDescriptionPart=ae;exports.ResultsItemIcon=re;exports.ResultsItemIndicator=ce;exports.ResultsItemTag=se;exports.ResultsItemTitle=ie;exports.ResultsList=Z;exports.ResultsLoading=$;exports.ResultsScrollArea=X;exports.ResultsScrollAreaCorner=Be;exports.ResultsScrollAreaScrollbar=qe;exports.ResultsScrollAreaThumb=we;exports.ResultsScrollAreaViewport=Y;exports.ResultsTab=J;exports.ResultsTabList=z;exports.Root=B;exports.TaglineBrandName=Je;exports.TaglineContainer=$e;exports.TaglineLogo=ze;exports.TaglineText=Qe;exports.Wrapper=w;
@@ -6,12 +6,12 @@ import { dataAttr as u, maybeRender as v } from "../utils/misc.js";
6
6
  import { forwardRef as _, useEffect as f, useState as V, useRef as B, useMemo as U } from "react";
7
7
  import { useSearch as l } from "./embedded-search/search-provider.js";
8
8
  import { SearchProvider as Tt } from "./embedded-search/search-provider.js";
9
- import M from "./tagline-logo-icon.js";
9
+ import O from "./tagline-logo-icon.js";
10
10
  import { CustomIcon as P } from "../atoms/icons/custom-icon.js";
11
11
  import * as R from "@radix-ui/react-scroll-area";
12
12
  import * as T from "@radix-ui/react-tabs";
13
13
  import { useInkeepConfig as y } from "../providers/config-provider.js";
14
- import { useSearchEvents as O } from "../providers/search-events-provider.js";
14
+ import { useSearchEvents as M } from "../providers/search-events-provider.js";
15
15
  import { LinkWithQueryParams as $ } from "../atoms/link.js";
16
16
  import { SourceItemProvider as G, useSourceItem as h } from "../providers/source-item-provider.js";
17
17
  import { BuiltInIconRenderer as N } from "../atoms/icons/built-in-icon-renderer.js";
@@ -25,7 +25,7 @@ import { composeEventHandlers as g } from "../utils/compose-event-handlers.js";
25
25
  import { useShadow as j } from "../atoms/shadow/context.js";
26
26
  const C = "__ask_ai__", Q = s("div", {
27
27
  _id: "aiSearchWrapper"
28
- }), Oe = (e) => {
28
+ }), Me = (e) => {
29
29
  const { isHidden: t, hasContent: r, isMobile: i } = l(), n = F();
30
30
  return /* @__PURE__ */ a(
31
31
  Q,
@@ -241,7 +241,7 @@ const C = "__ask_ai__", Q = s("div", {
241
241
  }), ct = _(({ item: e, onClick: t, onSelect: r, children: i, ...n }, o) => {
242
242
  const {
243
243
  searchSettings: { shouldOpenLinksInNewTab: c }
244
- } = y(), { logEvent: d } = O(), { query: p, transitionsDisabled: S, selectedItem: m } = l(), b = B(null), E = A(o, b), L = () => {
244
+ } = y(), { logEvent: d } = M(), { query: p, transitionsDisabled: S, selectedItem: m } = l(), b = B(null), E = A(o, b), L = () => {
245
245
  b.current?.click();
246
246
  }, w = () => {
247
247
  d({
@@ -252,7 +252,7 @@ const C = "__ask_ai__", Q = s("div", {
252
252
  url: e.url
253
253
  }
254
254
  });
255
- }, k = c || !!e.shouldOpenInNewTab, x = m === e.id, D = x || (m === "NONE" || m === C);
255
+ }, k = e.shouldOpenInNewTab !== void 0 ? e.shouldOpenInNewTab : c, x = m === e.id, D = x || (m === "NONE" || m === C);
256
256
  return /* @__PURE__ */ a(G, { source: { ...e, isExternal: k }, children: /* @__PURE__ */ a(
257
257
  le,
258
258
  {
@@ -357,7 +357,7 @@ const C = "__ask_ai__", Q = s("div", {
357
357
  }), _t = s("span", {
358
358
  _id: "aiSearchTagline__Text",
359
359
  children: "Powered by"
360
- }), Rt = s(M, {
360
+ }), Rt = s(O, {
361
361
  _id: "aiSearchTagline__Logo"
362
362
  }), vt = s("a", {
363
363
  _id: "aiSearchTagline__BrandName",
@@ -400,7 +400,7 @@ export {
400
400
  tt as EmbeddedSearchPrimitiveResultsTab,
401
401
  et as EmbeddedSearchPrimitiveResultsTabList,
402
402
  $e as EmbeddedSearchPrimitiveRoot,
403
- Oe as EmbeddedSearchPrimitiveWrapper,
403
+ Me as EmbeddedSearchPrimitiveWrapper,
404
404
  St as Footer,
405
405
  qe as Input,
406
406
  Ke as InputGroup,
@@ -433,5 +433,5 @@ export {
433
433
  gt as TaglineContainer,
434
434
  Rt as TaglineLogo,
435
435
  _t as TaglineText,
436
- Oe as Wrapper
436
+ Me as Wrapper
437
437
  };
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),p=c=>{const{isOpen:s,onOpenChange:l,shortcutKey:a}=c??{},e=n.useCallback(o=>{l?.(o)},[l]),r=n.useCallback(o=>{e(o)},[e]),u=n.useCallback(()=>e(!0),[e]),d=n.useCallback(()=>e(!1),[e]);return n.useEffect(()=>{const o=t=>{a&&(t.metaKey||t.ctrlKey)&&t.key.toLowerCase()===a.toLowerCase()&&(t.preventDefault(),t.stopPropagation(),e(!0)),t.key==="Escape"&&s&&(t.preventDefault(),e(!1))};return document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)},[a,e,s]),{isOpen:s,openModal:u,closeModal:d,handleOpenChange:r,shortcutKey:a}};exports.useInkeepModal=p;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),c=require("@radix-ui/react-use-controllable-state"),p=s=>{const{isOpen:t,onOpenChange:a,shortcutKey:o}=s??{},[l=!1,n]=c.useControllableState({prop:t,defaultProp:t,onChange:a});return u.useEffect(()=>{const r=e=>{o&&(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===o.toLowerCase()&&(e.preventDefault(),e.stopPropagation(),n(!0)),e.key==="Escape"&&t&&(e.preventDefault(),n(!1))};return document.addEventListener("keydown",r),()=>document.removeEventListener("keydown",r)},[o,n,t]),{isOpen:l,setOpen:n,shortcutKey:o}};exports.useInkeepModal=p;
@@ -1,28 +1,21 @@
1
1
  "use client";
2
- import { useCallback as s, useEffect as d } from "react";
3
- const i = (c) => {
4
- const { isOpen: a, onOpenChange: r, shortcutKey: n } = c ?? {}, e = s(
5
- (t) => {
6
- r?.(t);
7
- },
8
- [r]
9
- ), l = s(
10
- (t) => {
11
- e(t);
12
- },
13
- [e]
14
- ), p = s(() => e(!0), [e]), u = s(() => e(!1), [e]);
15
- return d(() => {
16
- const t = (o) => {
17
- n && (o.metaKey || o.ctrlKey) && o.key.toLowerCase() === n.toLowerCase() && (o.preventDefault(), o.stopPropagation(), e(!0)), o.key === "Escape" && a && (o.preventDefault(), e(!1));
2
+ import { useEffect as u } from "react";
3
+ import { useControllableState as l } from "@radix-ui/react-use-controllable-state";
4
+ const i = (s) => {
5
+ const { isOpen: o, onOpenChange: a, shortcutKey: t } = s ?? {}, [p = !1, n] = l({
6
+ prop: o,
7
+ defaultProp: o,
8
+ onChange: a
9
+ });
10
+ return u(() => {
11
+ const r = (e) => {
12
+ t && (e.metaKey || e.ctrlKey) && e.key.toLowerCase() === t.toLowerCase() && (e.preventDefault(), e.stopPropagation(), n(!0)), e.key === "Escape" && o && (e.preventDefault(), n(!1));
18
13
  };
19
- return document.addEventListener("keydown", t), () => document.removeEventListener("keydown", t);
20
- }, [n, e, a]), {
21
- isOpen: a,
22
- openModal: p,
23
- closeModal: u,
24
- handleOpenChange: l,
25
- shortcutKey: n
14
+ return document.addEventListener("keydown", r), () => document.removeEventListener("keydown", r);
15
+ }, [t, n, o]), {
16
+ isOpen: p,
17
+ setOpen: n,
18
+ shortcutKey: t
26
19
  };
27
20
  };
28
21
  export {
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),t=require("../atoms/dialog.cjs"),i=require("./factory.cjs"),d=require("../atoms/icons/custom-icon.cjs"),c=require("./modal/use-inkeep-modal.cjs"),s=require("./modal/modal-provider.cjs"),u=require("../utils/compose-event-handlers.cjs"),m=require("../hooks/use-media-query.cjs"),M=require("../utils/misc.cjs"),p=i.ikp(t.Root,{_id:"modal"}),v=e=>{const{onOpenChange:n,config:l,...a}=e,r=c.useInkeepModal(l);return o.jsx(s.ModalProvider,{modal:r,children:o.jsx(p,{open:r.isOpen,onOpenChange:u.composeEventHandlers(n,r.handleOpenChange),...a})})},C=i.ikp(t.Overlay,{_id:"modal__Overlay"}),y=i.ikp(t.Content,{_id:"modal__Content","aria-describedby":void 0}),_=e=>{const n=m.useMediaQuery("(max-width: 768px)");return o.jsx(y,{"data-mobile":M.dataAttr(n),...e})},q=i.ikp(t.Close,{_id:"modal__Close",children:o.jsx(d.CustomIcon,{iconKey:"close"})}),O=e=>s.useModal()?o.jsx(q,{...e}):null;exports.Close=O;exports.Content=_;exports.Modal=v;exports.Overlay=C;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),t=require("../atoms/dialog.cjs"),i=require("./factory.cjs"),c=require("../atoms/icons/custom-icon.cjs"),u=require("./modal/use-inkeep-modal.cjs"),s=require("./modal/modal-provider.cjs"),m=require("../utils/compose-event-handlers.cjs"),M=require("../hooks/use-media-query.cjs"),p=require("../utils/misc.cjs"),v=i.ikp(t.Root,{_id:"modal"}),C=e=>{const{onOpenChange:n,config:l,...a}=e,r=u.useInkeepModal(l);return o.jsx(s.ModalProvider,{modal:r,children:o.jsx(v,{open:r.isOpen,onOpenChange:m.composeEventHandlers(n,d=>r.setOpen(d)),...a})})},y=i.ikp(t.Overlay,{_id:"modal__Overlay"}),_=i.ikp(t.Content,{_id:"modal__Content","aria-describedby":void 0}),q=e=>{const n=M.useMediaQuery("(max-width: 768px)");return o.jsx(_,{"data-mobile":p.dataAttr(n),...e})},O=i.ikp(t.Close,{_id:"modal__Close",children:o.jsx(c.CustomIcon,{iconKey:"close"})}),x=e=>s.useModal()?o.jsx(O,{...e}):null;exports.Close=x;exports.Content=q;exports.Modal=C;exports.Overlay=y;
@@ -1,40 +1,40 @@
1
1
  "use client";
2
2
  import { jsx as e } from "react/jsx-runtime";
3
- import { Overlay as l, Root as d, Content as m, Close as s } from "../atoms/dialog.js";
4
- import { ikp as n } from "./factory.js";
5
- import { CustomIcon as c } from "../atoms/icons/custom-icon.js";
6
- import { useInkeepModal as p } from "./modal/use-inkeep-modal.js";
7
- import { ModalProvider as C, useModal as M } from "./modal/modal-provider.js";
8
- import { composeEventHandlers as f } from "../utils/compose-event-handlers.js";
9
- import { useMediaQuery as u } from "../hooks/use-media-query.js";
10
- import { dataAttr as v } from "../utils/misc.js";
11
- const _ = n(d, {
3
+ import { Overlay as s, Root as d, Content as m, Close as c } from "../atoms/dialog.js";
4
+ import { ikp as r } from "./factory.js";
5
+ import { CustomIcon as p } from "../atoms/icons/custom-icon.js";
6
+ import { useInkeepModal as C } from "./modal/use-inkeep-modal.js";
7
+ import { ModalProvider as M, useModal as f } from "./modal/modal-provider.js";
8
+ import { composeEventHandlers as u } from "../utils/compose-event-handlers.js";
9
+ import { useMediaQuery as v } from "../hooks/use-media-query.js";
10
+ import { dataAttr as _ } from "../utils/misc.js";
11
+ const O = r(d, {
12
12
  _id: "modal"
13
- }), A = (o) => {
14
- const { onOpenChange: t, config: i, ...a } = o, r = p(i);
15
- return /* @__PURE__ */ e(C, { modal: r, children: /* @__PURE__ */ e(
16
- _,
13
+ }), E = (o) => {
14
+ const { onOpenChange: t, config: i, ...a } = o, n = C(i);
15
+ return /* @__PURE__ */ e(M, { modal: n, children: /* @__PURE__ */ e(
16
+ O,
17
17
  {
18
- open: r.isOpen,
19
- onOpenChange: f(t, r.handleOpenChange),
18
+ open: n.isOpen,
19
+ onOpenChange: u(t, (l) => n.setOpen(l)),
20
20
  ...a
21
21
  }
22
22
  ) });
23
- }, E = n(l, {
23
+ }, H = r(s, {
24
24
  _id: "modal__Overlay"
25
- }), O = n(m, {
25
+ }), y = r(m, {
26
26
  _id: "modal__Content",
27
27
  "aria-describedby": void 0
28
- }), H = (o) => {
29
- const t = u("(max-width: 768px)");
30
- return /* @__PURE__ */ e(O, { "data-mobile": v(t), ...o });
31
- }, h = n(s, {
28
+ }), K = (o) => {
29
+ const t = v("(max-width: 768px)");
30
+ return /* @__PURE__ */ e(y, { "data-mobile": _(t), ...o });
31
+ }, h = r(c, {
32
32
  _id: "modal__Close",
33
- children: /* @__PURE__ */ e(c, { iconKey: "close" })
34
- }), K = (o) => M() ? /* @__PURE__ */ e(h, { ...o }) : null;
33
+ children: /* @__PURE__ */ e(p, { iconKey: "close" })
34
+ }), Q = (o) => f() ? /* @__PURE__ */ e(h, { ...o }) : null;
35
35
  export {
36
- K as Close,
37
- H as Content,
38
- A as Modal,
39
- E as Overlay
36
+ Q as Close,
37
+ K as Content,
38
+ E as Modal,
39
+ H as Overlay
40
40
  };
package/dist/index.d.cts CHANGED
@@ -3541,10 +3541,8 @@ declare const useInkeepIntelligentForm: (props: InkeepIntelligentFormSettings) =
3541
3541
  };
3542
3542
 
3543
3543
  declare const useInkeepModal: (props: InkeepModalSettings | undefined) => {
3544
- isOpen: boolean | undefined;
3545
- openModal: () => void;
3546
- closeModal: () => void;
3547
- handleOpenChange: (newState: boolean) => void;
3544
+ isOpen: boolean;
3545
+ setOpen: Dispatch<SetStateAction<boolean | undefined>>;
3548
3546
  shortcutKey: string | null | undefined;
3549
3547
  };
3550
3548
 
@@ -3615,10 +3613,8 @@ export declare const useMessageAttachments: () => MessageAttachmentsContextValue
3615
3613
  export declare const useMessageFeedback: () => FeedbackContextValue;
3616
3614
 
3617
3615
  export declare const useModal: () => {
3618
- isOpen: boolean | undefined;
3619
- openModal: () => void;
3620
- closeModal: () => void;
3621
- handleOpenChange: (newState: boolean) => void;
3616
+ isOpen: boolean;
3617
+ setOpen: Dispatch<SetStateAction<boolean | undefined>>;
3622
3618
  shortcutKey: string | null | undefined;
3623
3619
  } | undefined;
3624
3620
 
package/dist/index.d.ts CHANGED
@@ -3541,10 +3541,8 @@ declare const useInkeepIntelligentForm: (props: InkeepIntelligentFormSettings) =
3541
3541
  };
3542
3542
 
3543
3543
  declare const useInkeepModal: (props: InkeepModalSettings | undefined) => {
3544
- isOpen: boolean | undefined;
3545
- openModal: () => void;
3546
- closeModal: () => void;
3547
- handleOpenChange: (newState: boolean) => void;
3544
+ isOpen: boolean;
3545
+ setOpen: Dispatch<SetStateAction<boolean | undefined>>;
3548
3546
  shortcutKey: string | null | undefined;
3549
3547
  };
3550
3548
 
@@ -3615,10 +3613,8 @@ export declare const useMessageAttachments: () => MessageAttachmentsContextValue
3615
3613
  export declare const useMessageFeedback: () => FeedbackContextValue;
3616
3614
 
3617
3615
  export declare const useModal: () => {
3618
- isOpen: boolean | undefined;
3619
- openModal: () => void;
3620
- closeModal: () => void;
3621
- handleOpenChange: (newState: boolean) => void;
3616
+ isOpen: boolean;
3617
+ setOpen: Dispatch<SetStateAction<boolean | undefined>>;
3622
3618
  shortcutKey: string | null | undefined;
3623
3619
  } | undefined;
3624
3620
 
@@ -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.22",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.24",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.22",
10
+ widgetLibraryVersion: "0.5.24",
11
11
  componentType: o,
12
12
  tags: r
13
13
  }),
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const q=require("react/jsx-runtime"),o=require("react"),x=require("react-hook-form"),P=require("./conversation-provider.cjs"),w=require("../components/modal/modal-provider.cjs"),M=require("../utils/form.cjs"),j="root.serverError",f=o.createContext(void 0);function h(){const[t,n]=o.useState(null),[S,u]=o.useState(!1),{conversation:i}=P.useInkeepConversation(),v=w.useModal(),F=e=>{n(e)},C=()=>{n(null),u(!1),t?.buttons.close?.action==="close_modal"&&v?.closeModal()},c=o.useMemo(()=>t?.fields.map(e=>{const s=e;return"_type"in e&&e._type==="include_chat_session"&&(s.isRequired=!1,s.inputType="checkbox",i.id||(s.isHidden=!0)),s}),[t?.fields,i.id]),a=c?.find(e=>"_type"in e&&e._type==="include_chat_session"),r=o.useMemo(()=>M.getFormDefaultValues(c),[c]),{control:b,handleSubmit:p,formState:{errors:m,isSubmitting:E},setError:_,reset:l}=x.useForm({defaultValues:r});o.useEffect(()=>{r&&l(r)},[l,r]);const y=p(async e=>{const R=i.id&&a&&e[a.name]?i:null;try{await t?.buttons.submit.onSubmit({values:e,conversation:R}),u(!0)}catch(d){_(j,{message:d instanceof Error?d.message:"Something went wrong."})}}),g=m?.root?.serverError;return{form:t,openForm:F,closeForm:C,handleSubmit:y,isSuccess:S,isSubmitting:E,formError:g,fields:c,errors:m,control:b,defaultValues:r}}const k=({children:t})=>{const n=h();return q.jsx(f.Provider,{value:n,children:t})},V=()=>{const t=o.useContext(f);if(!t)throw new Error("useChatForm must be used within a ChatFormProvider");return t};exports.ChatFormProvider=k;exports.useChatForm=V;exports.useChatFormState=h;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const q=require("react/jsx-runtime"),o=require("react"),x=require("react-hook-form"),P=require("./conversation-provider.cjs"),w=require("../components/modal/modal-provider.cjs"),M=require("../utils/form.cjs"),j="root.serverError",f=o.createContext(void 0);function h(){const[t,n]=o.useState(null),[S,u]=o.useState(!1),{conversation:i}=P.useInkeepConversation(),v=w.useModal(),F=e=>{n(e)},C=()=>{n(null),u(!1),t?.buttons.close?.action==="close_modal"&&v?.setOpen(!1)},c=o.useMemo(()=>t?.fields.map(e=>{const s=e;return"_type"in e&&e._type==="include_chat_session"&&(s.isRequired=!1,s.inputType="checkbox",i.id||(s.isHidden=!0)),s}),[t?.fields,i.id]),a=c?.find(e=>"_type"in e&&e._type==="include_chat_session"),r=o.useMemo(()=>M.getFormDefaultValues(c),[c]),{control:b,handleSubmit:p,formState:{errors:m,isSubmitting:E},setError:_,reset:l}=x.useForm({defaultValues:r});o.useEffect(()=>{r&&l(r)},[l,r]);const y=p(async e=>{const R=i.id&&a&&e[a.name]?i:null;try{await t?.buttons.submit.onSubmit({values:e,conversation:R}),u(!0)}catch(d){_(j,{message:d instanceof Error?d.message:"Something went wrong."})}}),g=m?.root?.serverError;return{form:t,openForm:F,closeForm:C,handleSubmit:y,isSuccess:S,isSubmitting:E,formError:g,fields:c,errors:m,control:b,defaultValues:r}}const k=({children:t})=>{const n=h();return q.jsx(f.Provider,{value:n,children:t})},O=()=>{const t=o.useContext(f);if(!t)throw new Error("useChatForm must be used within a ChatFormProvider");return t};exports.ChatFormProvider=k;exports.useChatForm=O;exports.useChatFormState=h;
@@ -1,20 +1,20 @@
1
1
  "use client";
2
2
  import { jsx as w } from "react/jsx-runtime";
3
- import { useState as d, useMemo as f, useEffect as R, createContext as M, useContext as P } from "react";
3
+ import { useState as f, useMemo as d, useEffect as R, createContext as M, useContext as P } from "react";
4
4
  import { useForm as V } from "react-hook-form";
5
5
  import { useInkeepConversation as k } from "./conversation-provider.js";
6
6
  import { useModal as I } from "../components/modal/modal-provider.js";
7
- import { getFormDefaultValues as j } from "../utils/form.js";
8
- const q = "root.serverError", p = M(void 0);
9
- function A() {
10
- const [t, r] = d(null), [h, c] = d(!1), { conversation: n } = k(), S = I(), b = (o) => {
11
- r(o);
7
+ import { getFormDefaultValues as O } from "../utils/form.js";
8
+ const j = "root.serverError", p = M(void 0);
9
+ function q() {
10
+ const [o, r] = f(null), [h, c] = f(!1), { conversation: n } = k(), S = I(), b = (t) => {
11
+ r(t);
12
12
  }, v = () => {
13
- r(null), c(!1), t?.buttons.close?.action === "close_modal" && S?.closeModal();
14
- }, i = f(() => t?.fields.map((o) => {
15
- const s = o;
16
- return "_type" in o && o._type === "include_chat_session" && (s.isRequired = !1, s.inputType = "checkbox", n.id || (s.isHidden = !0)), s;
17
- }), [t?.fields, n.id]), a = i?.find((o) => "_type" in o && o._type === "include_chat_session"), e = f(() => j(i), [i]), {
13
+ r(null), c(!1), o?.buttons.close?.action === "close_modal" && S?.setOpen(!1);
14
+ }, i = d(() => o?.fields.map((t) => {
15
+ const s = t;
16
+ return "_type" in t && t._type === "include_chat_session" && (s.isRequired = !1, s.inputType = "checkbox", n.id || (s.isHidden = !0)), s;
17
+ }), [o?.fields, n.id]), a = i?.find((t) => "_type" in t && t._type === "include_chat_session"), e = d(() => O(i), [i]), {
18
18
  control: C,
19
19
  handleSubmit: F,
20
20
  formState: { errors: u, isSubmitting: E },
@@ -26,18 +26,18 @@ function A() {
26
26
  R(() => {
27
27
  e && m(e);
28
28
  }, [m, e]);
29
- const x = F(async (o) => {
30
- const g = n.id && a && o[a.name] ? n : null;
29
+ const x = F(async (t) => {
30
+ const g = n.id && a && t[a.name] ? n : null;
31
31
  try {
32
- await t?.buttons.submit.onSubmit({ values: o, conversation: g }), c(!0);
32
+ await o?.buttons.submit.onSubmit({ values: t, conversation: g }), c(!0);
33
33
  } catch (l) {
34
- _(q, {
34
+ _(j, {
35
35
  message: l instanceof Error ? l.message : "Something went wrong."
36
36
  });
37
37
  }
38
38
  }), y = u?.root?.serverError;
39
39
  return {
40
- form: t,
40
+ form: o,
41
41
  openForm: b,
42
42
  closeForm: v,
43
43
  handleSubmit: x,
@@ -50,17 +50,17 @@ function A() {
50
50
  defaultValues: e
51
51
  };
52
52
  }
53
- const G = ({ children: t }) => {
54
- const r = A();
55
- return /* @__PURE__ */ w(p.Provider, { value: r, children: t });
53
+ const G = ({ children: o }) => {
54
+ const r = q();
55
+ return /* @__PURE__ */ w(p.Provider, { value: r, children: o });
56
56
  }, J = () => {
57
- const t = P(p);
58
- if (!t)
57
+ const o = P(p);
58
+ if (!o)
59
59
  throw new Error("useChatForm must be used within a ChatFormProvider");
60
- return t;
60
+ return o;
61
61
  };
62
62
  export {
63
63
  G as ChatFormProvider,
64
64
  J as useChatForm,
65
- A as useChatFormState
65
+ q as useChatFormState
66
66
  };