@inkeep/cxkit-primitives 0.5.81 → 0.5.83

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 s=require("react"),p=require("@radix-ui/react-use-controllable-state"),d=require("../../providers/base-events-provider.cjs"),f=l=>{const{isOpen:t,onOpenChange:c,shortcutKey:o}=l??{},{logEvent:i}=d.useBaseEvents(),[r=!1,n]=p.useControllableState({prop:t,defaultProp:t,onChange:c}),a=s.useRef(!0);return s.useEffect(()=>{if(a.current){a.current=!1;return}i({eventName:r?"modal_opened":"modal_closed",properties:{}})},[r]),s.useEffect(()=>{const u=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",u),()=>document.removeEventListener("keydown",u)},[o,n,t]),{isOpen:r,setOpen:n,shortcutKey:o}};exports.useInkeepModal=f;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),f=require("@radix-ui/react-use-controllable-state"),g=require("../../providers/base-events-provider.cjs"),m=require("../use-component-trigger.cjs"),y=l=>{const{isOpen:r,onOpenChange:i,defaultOpen:c=!1,shortcutKey:o,triggerSelector:p="[data-inkeep-modal-trigger]"}=l??{},{logEvent:d}=g.useBaseEvents(),[n=c,t]=f.useControllableState({prop:r,defaultProp:r,onChange:i});m.useComponentTrigger({triggerSelector:p,onTriggerClick:()=>t(!n)});const a=s.useRef(!0);return s.useEffect(()=>{if(a.current){a.current=!1;return}d({eventName:n?"modal_opened":"modal_closed",properties:{}})},[n]),s.useEffect(()=>{const u=e=>{o&&(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===o.toLowerCase()&&(e.preventDefault(),e.stopPropagation(),t(!0)),e.key==="Escape"&&r&&(e.preventDefault(),t(!1))};return document.addEventListener("keydown",u),()=>document.removeEventListener("keydown",u)},[o,t,r]),{isOpen:n,setOpen:t,shortcutKey:o}};exports.useInkeepModal=y;
@@ -1,33 +1,45 @@
1
1
  "use client";
2
- import { useRef as i, useEffect as p } from "react";
3
- import { useControllableState as f } from "@radix-ui/react-use-controllable-state";
4
- import { useBaseEvents as d } from "../../providers/base-events-provider.js";
5
- const k = (u) => {
6
- const { isOpen: o, onOpenChange: l, shortcutKey: t } = u ?? {}, { logEvent: c } = d(), [r = !1, n] = f({
7
- prop: o,
8
- defaultProp: o,
2
+ import { useRef as f, useEffect as p } from "react";
3
+ import { useControllableState as m } from "@radix-ui/react-use-controllable-state";
4
+ import { useBaseEvents as g } from "../../providers/base-events-provider.js";
5
+ import { useComponentTrigger as y } from "../use-component-trigger.js";
6
+ const O = (i) => {
7
+ const {
8
+ isOpen: t,
9
+ onOpenChange: l,
10
+ defaultOpen: u = !1,
11
+ shortcutKey: r,
12
+ triggerSelector: c = "[data-inkeep-modal-trigger]"
13
+ } = i ?? {}, { logEvent: d } = g(), [n = u, o] = m({
14
+ prop: t,
15
+ defaultProp: t,
9
16
  onChange: l
10
- }), s = i(!0);
17
+ });
18
+ y({
19
+ triggerSelector: c,
20
+ onTriggerClick: () => o(!n)
21
+ });
22
+ const s = f(!0);
11
23
  return p(() => {
12
24
  if (s.current) {
13
25
  s.current = !1;
14
26
  return;
15
27
  }
16
- c({
17
- eventName: r ? "modal_opened" : "modal_closed",
28
+ d({
29
+ eventName: n ? "modal_opened" : "modal_closed",
18
30
  properties: {}
19
31
  });
20
- }, [r]), p(() => {
32
+ }, [n]), p(() => {
21
33
  const a = (e) => {
22
- t && (e.metaKey || e.ctrlKey) && e.key.toLowerCase() === t.toLowerCase() && (e.preventDefault(), e.stopPropagation(), n(!0)), e.key === "Escape" && o && (e.preventDefault(), n(!1));
34
+ r && (e.metaKey || e.ctrlKey) && e.key.toLowerCase() === r.toLowerCase() && (e.preventDefault(), e.stopPropagation(), o(!0)), e.key === "Escape" && t && (e.preventDefault(), o(!1));
23
35
  };
24
36
  return document.addEventListener("keydown", a), () => document.removeEventListener("keydown", a);
25
- }, [t, n, o]), {
26
- isOpen: r,
27
- setOpen: n,
28
- shortcutKey: t
37
+ }, [r, o, t]), {
38
+ isOpen: n,
39
+ setOpen: o,
40
+ shortcutKey: r
29
41
  };
30
42
  };
31
43
  export {
32
- k as useInkeepModal
44
+ O as useInkeepModal
33
45
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),d=require("react"),c=require("../factory.cjs"),n=require("../../providers/sidebar-chat-provider.cjs"),p=require("./use-sidebar-chat-resizer.cjs"),b=require("./use-sidebar-chat-trigger.cjs"),R=require("../presence.cjs"),S=require("../../utils/misc.cjs"),l=require("../../utils/split-props.cjs"),g=c.ikp(R.Presence,{_id:"sidebarChat__Root"}),C=({triggerSelector:i})=>(b.useSidebarChatTrigger(i),null),P=["position","triggerSelector","minWidth","maxWidth","defaultWidth","defaultOpen","autoCloseThreshold"],u=d.forwardRef((i,r)=>{const[t,o]=l.splitProps(i,P),e=n.useInkeepSidebarChat(t);return s.jsxs(n.SidebarChatProvider,{value:e,children:[s.jsx(C,{triggerSelector:t.triggerSelector||"[data-inkeep-sidebar-chat-trigger]"}),s.jsx(g,{ref:r,present:e.isOpen,"data-sidebar":"","data-position":e.position,"data-open":S.dataAttr(e.isOpen),style:{"--width":`${e.width}px`},...o})]})}),m=c.ikp("div",{_id:"sidebarChat__Resizer"}),h=d.forwardRef((i,r)=>{const{position:t}=n.useSidebarChat(),{onMouseDown:o,resizerRef:e}=p.useSidebarChatResizer();return s.jsx(m,{ref:a=>{typeof r=="function"?r(a):r&&(r.current=a),e.current=a},"data-position":t,onMouseDown:o,...i})});exports.Resizer=h;exports.Root=u;exports.SidebarChatPrimitiveResizer=h;exports.SidebarChatPrimitiveRoot=u;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),d=require("react"),c=require("../factory.cjs"),o=require("../../providers/sidebar-chat-provider.cjs"),h=require("./use-sidebar-chat-resizer.cjs"),b=require("../use-component-trigger.cjs"),g=require("../presence.cjs"),C=require("../../utils/misc.cjs"),R=require("../../utils/split-props.cjs"),l=c.ikp(g.Presence,{_id:"sidebarChat__Root"}),S=({triggerSelector:t})=>{const{isOpen:e,setOpen:i}=o.useSidebarChat();return b.useComponentTrigger({triggerSelector:t,onTriggerClick:()=>i(!e)}),null},P=["position","triggerSelector","minWidth","maxWidth","defaultWidth","defaultOpen","autoCloseThreshold","isOpen","onOpenChange"],u=d.forwardRef((t,e)=>{const[i,n]=R.splitProps(t,P),r=o.useInkeepSidebarChat(i);return s.jsxs(o.SidebarChatProvider,{value:r,children:[s.jsx(S,{triggerSelector:i.triggerSelector||"[data-inkeep-sidebar-chat-trigger]"}),s.jsx(l,{ref:e,present:r.isOpen,"data-sidebar":"","data-position":r.position,"data-open":C.dataAttr(r.isOpen),style:{"--width":`${r.width}px`},...n})]})}),m=c.ikp("div",{_id:"sidebarChat__Resizer"}),p=d.forwardRef((t,e)=>{const{position:i}=o.useSidebarChat(),{onMouseDown:n,resizerRef:r}=h.useSidebarChatResizer();return s.jsx(m,{ref:a=>{typeof e=="function"?e(a):e&&(e.current=a),r.current=a},"data-position":i,onMouseDown:n,...t})});exports.Resizer=p;exports.Root=u;exports.SidebarChatPrimitiveResizer=p;exports.SidebarChatPrimitiveRoot=u;
@@ -1,35 +1,43 @@
1
- import { jsxs as p, jsx as a } from "react/jsx-runtime";
2
- import { forwardRef as d } from "react";
3
- import { ikp as n } from "../factory.js";
4
- import { useInkeepSidebarChat as m, SidebarChatProvider as c, useSidebarChat as h } from "../../providers/sidebar-chat-provider.js";
1
+ import { jsxs as m, jsx as n } from "react/jsx-runtime";
2
+ import { forwardRef as a } from "react";
3
+ import { ikp as d } from "../factory.js";
4
+ import { useInkeepSidebarChat as c, SidebarChatProvider as h, useSidebarChat as p } from "../../providers/sidebar-chat-provider.js";
5
5
  import { useSidebarChatResizer as f } from "./use-sidebar-chat-resizer.js";
6
- import { useSidebarChatTrigger as u } from "./use-sidebar-chat-trigger.js";
7
- import { Presence as b } from "../presence.js";
6
+ import { useComponentTrigger as u } from "../use-component-trigger.js";
7
+ import { Presence as g } from "../presence.js";
8
8
  import { dataAttr as l } from "../../utils/misc.js";
9
- import { splitProps as R } from "../../utils/split-props.js";
10
- const S = n(b, {
9
+ import { splitProps as b } from "../../utils/split-props.js";
10
+ const C = d(g, {
11
11
  _id: "sidebarChat__Root"
12
- }), g = ({ triggerSelector: e }) => (u(e), null), C = [
12
+ }), R = ({ triggerSelector: t }) => {
13
+ const { isOpen: e, setOpen: i } = p();
14
+ return u({
15
+ triggerSelector: t,
16
+ onTriggerClick: () => i(!e)
17
+ }), null;
18
+ }, S = [
13
19
  "position",
14
20
  "triggerSelector",
15
21
  "minWidth",
16
22
  "maxWidth",
17
23
  "defaultWidth",
18
24
  "defaultOpen",
19
- "autoCloseThreshold"
20
- ], j = d((e, t) => {
21
- const [i, o] = R(e, C), r = m(i);
22
- return /* @__PURE__ */ p(c, { value: r, children: [
23
- /* @__PURE__ */ a(
24
- g,
25
+ "autoCloseThreshold",
26
+ "isOpen",
27
+ "onOpenChange"
28
+ ], j = a((t, e) => {
29
+ const [i, o] = b(t, S), r = c(i);
30
+ return /* @__PURE__ */ m(h, { value: r, children: [
31
+ /* @__PURE__ */ n(
32
+ R,
25
33
  {
26
34
  triggerSelector: i.triggerSelector || "[data-inkeep-sidebar-chat-trigger]"
27
35
  }
28
36
  ),
29
- /* @__PURE__ */ a(
30
- S,
37
+ /* @__PURE__ */ n(
38
+ C,
31
39
  {
32
- ref: t,
40
+ ref: e,
33
41
  present: r.isOpen,
34
42
  "data-sidebar": "",
35
43
  "data-position": r.position,
@@ -41,19 +49,19 @@ const S = n(b, {
41
49
  }
42
50
  )
43
51
  ] });
44
- }), P = n("div", {
52
+ }), P = d("div", {
45
53
  _id: "sidebarChat__Resizer"
46
- }), y = d((e, t) => {
47
- const { position: i } = h(), { onMouseDown: o, resizerRef: r } = f();
48
- return /* @__PURE__ */ a(
54
+ }), y = a((t, e) => {
55
+ const { position: i } = p(), { onMouseDown: o, resizerRef: r } = f();
56
+ return /* @__PURE__ */ n(
49
57
  P,
50
58
  {
51
59
  ref: (s) => {
52
- typeof t == "function" ? t(s) : t && (t.current = s), r.current = s;
60
+ typeof e == "function" ? e(s) : e && (e.current = s), r.current = s;
53
61
  },
54
62
  "data-position": i,
55
63
  onMouseDown: o,
56
- ...e
64
+ ...t
57
65
  }
58
66
  );
59
67
  });
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),R=require("../../providers/sidebar-chat-provider.cjs"),M=()=>{const{width:r,setWidth:o,position:u,minWidth:s,maxWidth:i,autoCloseThreshold:f,close:c}=R.useSidebarChat(),v=e.useRef(null),n=e.useRef(!1),d=e.useRef(0),a=e.useRef(0),l=s*f;return e.useEffect(()=>{const t=b=>{if(!n.current)return;const m=b.clientX-d.current,g=u==="right"?-m:m,w=a.current+g;if(w<l){c();return}const y=Math.max(s,Math.min(i,w));o(y)},h=()=>{n.current=!1,document.body.style.cursor="",document.body.style.userSelect=""};return window.addEventListener("mousemove",t),window.addEventListener("mouseup",h),()=>{window.removeEventListener("mousemove",t),window.removeEventListener("mouseup",h)}},[o,u,s,i,c,l]),{onMouseDown:e.useCallback(t=>{n.current=!0,d.current=t.clientX,a.current=r,document.body.style.cursor="ew-resize",document.body.style.userSelect="none",t.preventDefault()},[r]),resizerRef:v}};exports.useSidebarChatResizer=M;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),R=require("../../providers/sidebar-chat-provider.cjs"),p=()=>{const{width:r,setWidth:o,position:u,minWidth:s,maxWidth:i,autoCloseThreshold:w,setOpen:c}=R.useSidebarChat(),v=e.useRef(null),n=e.useRef(!1),d=e.useRef(0),a=e.useRef(0),l=s*w;return e.useEffect(()=>{const t=b=>{if(!n.current)return;const m=b.clientX-d.current,g=u==="right"?-m:m,f=a.current+g;if(f<l){c(!1);return}const y=Math.max(s,Math.min(i,f));o(y)},h=()=>{n.current=!1,document.body.style.cursor="",document.body.style.userSelect=""};return window.addEventListener("mousemove",t),window.addEventListener("mouseup",h),()=>{window.removeEventListener("mousemove",t),window.removeEventListener("mouseup",h)}},[o,u,s,i,l,c]),{onMouseDown:e.useCallback(t=>{n.current=!0,d.current=t.clientX,a.current=r,document.body.style.cursor="ew-resize",document.body.style.userSelect="none",t.preventDefault()},[r]),resizerRef:v}};exports.useSidebarChatResizer=p;
@@ -2,29 +2,29 @@
2
2
  import { useRef as t, useEffect as b, useCallback as D } from "react";
3
3
  import { useSidebarChat as M } from "../../providers/sidebar-chat-provider.js";
4
4
  const L = () => {
5
- const { width: r, setWidth: s, position: u, minWidth: n, maxWidth: c, autoCloseThreshold: f, close: i } = M(), v = t(null), o = t(!1), d = t(0), a = t(0), l = n * f;
5
+ const { width: s, setWidth: r, position: u, minWidth: n, maxWidth: i, autoCloseThreshold: f, setOpen: c } = M(), v = t(null), o = t(!1), d = t(0), a = t(0), l = n * f;
6
6
  return b(() => {
7
- const e = (g) => {
7
+ const e = (p) => {
8
8
  if (!o.current) return;
9
- const h = g.clientX - d.current, p = u === "right" ? -h : h, w = a.current + p;
9
+ const h = p.clientX - d.current, g = u === "right" ? -h : h, w = a.current + g;
10
10
  if (w < l) {
11
- i();
11
+ c(!1);
12
12
  return;
13
13
  }
14
- const y = Math.max(n, Math.min(c, w));
15
- s(y);
14
+ const y = Math.max(n, Math.min(i, w));
15
+ r(y);
16
16
  }, m = () => {
17
17
  o.current = !1, document.body.style.cursor = "", document.body.style.userSelect = "";
18
18
  };
19
19
  return window.addEventListener("mousemove", e), window.addEventListener("mouseup", m), () => {
20
20
  window.removeEventListener("mousemove", e), window.removeEventListener("mouseup", m);
21
21
  };
22
- }, [s, u, n, c, i, l]), {
22
+ }, [r, u, n, i, l, c]), {
23
23
  onMouseDown: D(
24
24
  (e) => {
25
- o.current = !0, d.current = e.clientX, a.current = r, document.body.style.cursor = "ew-resize", document.body.style.userSelect = "none", e.preventDefault();
25
+ o.current = !0, d.current = e.clientX, a.current = s, document.body.style.cursor = "ew-resize", document.body.style.userSelect = "none", e.preventDefault();
26
26
  },
27
- [r]
27
+ [s]
28
28
  ),
29
29
  resizerRef: v
30
30
  };
@@ -0,0 +1 @@
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),i=n=>{const{triggerSelector:e,onTriggerClick:t}=n;o.useEffect(()=>{const r=c=>{c.target?.matches?.(e)&&t?.()};return document.addEventListener("click",r),()=>{document.removeEventListener("click",r)}},[e,t])};exports.useComponentTrigger=i;
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import { useEffect as o } from "react";
3
+ const s = (c) => {
4
+ const { triggerSelector: e, onTriggerClick: t } = c;
5
+ o(() => {
6
+ const r = (n) => {
7
+ n.target?.matches?.(e) && t?.();
8
+ };
9
+ return document.addEventListener("click", r), () => {
10
+ document.removeEventListener("click", r);
11
+ };
12
+ }, [e, t]);
13
+ };
14
+ export {
15
+ s as useComponentTrigger
16
+ };
package/dist/index.d.cts CHANGED
@@ -3919,6 +3919,14 @@ export declare interface SidebarChatProps {
3919
3919
  * @default false
3920
3920
  */
3921
3921
  defaultOpen?: boolean;
3922
+ /**
3923
+ * Controls whether the sidebar chat is open.
3924
+ */
3925
+ isOpen?: boolean;
3926
+ /**
3927
+ * Handler called when the sidebar chat opens or closes.
3928
+ */
3929
+ onOpenChange?: (isOpen: boolean) => void;
3922
3930
  /**
3923
3931
  * Threshold factor for auto-closing when resizing.
3924
3932
  * When dragging below (minWidth * autoCloseThreshold), the sidebar will auto-close.
@@ -4157,18 +4165,15 @@ declare const useInkeepSearch: () => {
4157
4165
  setShowSearchResults: Dispatch<SetStateAction<boolean>>;
4158
4166
  };
4159
4167
 
4160
- export declare const useInkeepSidebarChat: ({ position, minWidth, maxWidth, defaultWidth, defaultOpen, autoCloseThreshold, }: SidebarChatProps) => {
4168
+ export declare const useInkeepSidebarChat: ({ position, minWidth, maxWidth, defaultWidth, defaultOpen, autoCloseThreshold, isOpen, onOpenChange, }: SidebarChatProps) => {
4161
4169
  width: number;
4162
4170
  setWidth: Dispatch<SetStateAction<number>>;
4163
4171
  position: "left" | "right";
4164
4172
  minWidth: number;
4165
4173
  maxWidth: number;
4166
4174
  autoCloseThreshold: number;
4175
+ setOpen: Dispatch<SetStateAction<boolean | undefined>>;
4167
4176
  isOpen: boolean;
4168
- setIsOpen: Dispatch<SetStateAction<boolean>>;
4169
- toggle: () => void;
4170
- open: () => void;
4171
- close: () => void;
4172
4177
  };
4173
4178
 
4174
4179
  /**
@@ -4233,11 +4238,8 @@ export declare const useOptionalSidebarChat: () => {
4233
4238
  minWidth: number;
4234
4239
  maxWidth: number;
4235
4240
  autoCloseThreshold: number;
4241
+ setOpen: Dispatch<SetStateAction<boolean | undefined>>;
4236
4242
  isOpen: boolean;
4237
- setIsOpen: Dispatch<SetStateAction<boolean>>;
4238
- toggle: () => void;
4239
- open: () => void;
4240
- close: () => void;
4241
4243
  } | undefined;
4242
4244
 
4243
4245
  export declare type UserContextValue = {
@@ -4281,11 +4283,8 @@ export declare const useSidebarChat: () => {
4281
4283
  minWidth: number;
4282
4284
  maxWidth: number;
4283
4285
  autoCloseThreshold: number;
4286
+ setOpen: Dispatch<SetStateAction<boolean | undefined>>;
4284
4287
  isOpen: boolean;
4285
- setIsOpen: Dispatch<SetStateAction<boolean>>;
4286
- toggle: () => void;
4287
- open: () => void;
4288
- close: () => void;
4289
4288
  };
4290
4289
 
4291
4290
  export declare const useSourceItem: () => SourceItemContextValue;
package/dist/index.d.ts CHANGED
@@ -3919,6 +3919,14 @@ export declare interface SidebarChatProps {
3919
3919
  * @default false
3920
3920
  */
3921
3921
  defaultOpen?: boolean;
3922
+ /**
3923
+ * Controls whether the sidebar chat is open.
3924
+ */
3925
+ isOpen?: boolean;
3926
+ /**
3927
+ * Handler called when the sidebar chat opens or closes.
3928
+ */
3929
+ onOpenChange?: (isOpen: boolean) => void;
3922
3930
  /**
3923
3931
  * Threshold factor for auto-closing when resizing.
3924
3932
  * When dragging below (minWidth * autoCloseThreshold), the sidebar will auto-close.
@@ -4157,18 +4165,15 @@ declare const useInkeepSearch: () => {
4157
4165
  setShowSearchResults: Dispatch<SetStateAction<boolean>>;
4158
4166
  };
4159
4167
 
4160
- export declare const useInkeepSidebarChat: ({ position, minWidth, maxWidth, defaultWidth, defaultOpen, autoCloseThreshold, }: SidebarChatProps) => {
4168
+ export declare const useInkeepSidebarChat: ({ position, minWidth, maxWidth, defaultWidth, defaultOpen, autoCloseThreshold, isOpen, onOpenChange, }: SidebarChatProps) => {
4161
4169
  width: number;
4162
4170
  setWidth: Dispatch<SetStateAction<number>>;
4163
4171
  position: "left" | "right";
4164
4172
  minWidth: number;
4165
4173
  maxWidth: number;
4166
4174
  autoCloseThreshold: number;
4175
+ setOpen: Dispatch<SetStateAction<boolean | undefined>>;
4167
4176
  isOpen: boolean;
4168
- setIsOpen: Dispatch<SetStateAction<boolean>>;
4169
- toggle: () => void;
4170
- open: () => void;
4171
- close: () => void;
4172
4177
  };
4173
4178
 
4174
4179
  /**
@@ -4233,11 +4238,8 @@ export declare const useOptionalSidebarChat: () => {
4233
4238
  minWidth: number;
4234
4239
  maxWidth: number;
4235
4240
  autoCloseThreshold: number;
4241
+ setOpen: Dispatch<SetStateAction<boolean | undefined>>;
4236
4242
  isOpen: boolean;
4237
- setIsOpen: Dispatch<SetStateAction<boolean>>;
4238
- toggle: () => void;
4239
- open: () => void;
4240
- close: () => void;
4241
4243
  } | undefined;
4242
4244
 
4243
4245
  export declare type UserContextValue = {
@@ -4281,11 +4283,8 @@ export declare const useSidebarChat: () => {
4281
4283
  minWidth: number;
4282
4284
  maxWidth: number;
4283
4285
  autoCloseThreshold: number;
4286
+ setOpen: Dispatch<SetStateAction<boolean | undefined>>;
4284
4287
  isOpen: boolean;
4285
- setIsOpen: Dispatch<SetStateAction<boolean>>;
4286
- toggle: () => void;
4287
- open: () => void;
4288
- close: () => void;
4289
4288
  };
4290
4289
 
4291
4290
  export declare const useSourceItem: () => SourceItemContextValue;
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const B=require("react/jsx-runtime"),t=require("react"),f=require("../atoms/api/analytics/events.cjs"),b=require("./config-provider.cjs"),x=require("./user-provider.cjs"),E=t.createContext(void 0),q=({children:e})=>{const{baseSettings:s,componentType:r}=b.useInkeepConfig(),{apiKey:i,analyticsApiBaseUrl:c,tags:a,privacyPreferences:m,env:g,analyticsProperties:v}=s,{userProperties:u}=x.useUser(),l=t.useMemo(()=>({widgetLibraryVersion:"0.5.81",componentType:r,tags:a}),[r,a]),d=!m.optOutAllAnalytics&&g!=="development",P={logEvent:t.useCallback(async n=>{const o={...l,...n.properties,...v},p={eventName:n.eventName,properties:o,userProperties:u},y=["modal_opened","modal_closed"].includes(n.eventName);if(d&&!y){if("conversation"in o&&!o.conversation?.id)return;f.logEvent(p,i,c)}s.onEvent?.(p)},[d,s,i,c,u,l,v])};return B.jsx(E.Provider,{value:P,children:e})},C=()=>{const e=t.useContext(E);if(!e)throw new Error("useBaseEvents must be used within a BaseEventsProvider");return e};exports.BaseEventsProvider=q;exports.useBaseEvents=C;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const B=require("react/jsx-runtime"),t=require("react"),f=require("../atoms/api/analytics/events.cjs"),b=require("./config-provider.cjs"),x=require("./user-provider.cjs"),E=t.createContext(void 0),q=({children:e})=>{const{baseSettings:s,componentType:r}=b.useInkeepConfig(),{apiKey:i,analyticsApiBaseUrl:c,tags:a,privacyPreferences:m,env:g,analyticsProperties:v}=s,{userProperties:u}=x.useUser(),l=t.useMemo(()=>({widgetLibraryVersion:"0.5.83",componentType:r,tags:a}),[r,a]),d=!m.optOutAllAnalytics&&g!=="development",P={logEvent:t.useCallback(async n=>{const o={...l,...n.properties,...v},p={eventName:n.eventName,properties:o,userProperties:u},y=["modal_opened","modal_closed"].includes(n.eventName);if(d&&!y){if("conversation"in o&&!o.conversation?.id)return;f.logEvent(p,i,c)}s.onEvent?.(p)},[d,s,i,c,u,l,v])};return B.jsx(E.Provider,{value:P,children:e})},C=()=>{const e=t.useContext(E);if(!e)throw new Error("useBaseEvents must be used within a BaseEventsProvider");return e};exports.BaseEventsProvider=q;exports.useBaseEvents=C;
@@ -7,7 +7,7 @@ import { useUser as A } from "./user-provider.js";
7
7
  const u = B(void 0), $ = ({ children: e }) => {
8
8
  const { baseSettings: t, componentType: s } = w(), { apiKey: r, analyticsApiBaseUrl: i, tags: a, privacyPreferences: d, env: E, analyticsProperties: c } = t, { userProperties: v } = A(), p = P(
9
9
  () => ({
10
- widgetLibraryVersion: "0.5.81",
10
+ widgetLibraryVersion: "0.5.83",
11
11
  componentType: s,
12
12
  tags: a
13
13
  }),
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("react/jsx-runtime"),t=require("react"),s=t.createContext(void 0),b=({children:e,value:o})=>S.jsx(s.Provider,{value:o,children:e}),l=()=>{const e=t.useContext(s);if(!e)throw new Error("useSidebarChat must be used within a SidebarChatProvider");return e},p=()=>t.useContext(s),x=250,g=600,I=420,v=({position:e="right",minWidth:o=x,maxWidth:n=g,defaultWidth:a=I,defaultOpen:i=!1,autoCloseThreshold:c=.7})=>{const[u,d]=t.useState(Math.min(a,Math.floor((o+n)/2))),[h,r]=t.useState(i);return{width:u,setWidth:d,position:e,minWidth:o,maxWidth:n,autoCloseThreshold:c,isOpen:h,setIsOpen:r,toggle:()=>r(C=>!C),open:()=>r(!0),close:()=>r(!1)}};exports.SidebarChatProvider=b;exports.useInkeepSidebarChat=v;exports.useOptionalSidebarChat=p;exports.useSidebarChat=l;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("react/jsx-runtime"),l=require("@radix-ui/react-use-controllable-state"),r=require("react"),o=r.createContext(void 0),p=({children:e,value:t})=>S.jsx(o.Provider,{value:t,children:e}),x=()=>{const e=r.useContext(o);if(!e)throw new Error("useSidebarChat must be used within a SidebarChatProvider");return e},v=()=>r.useContext(o),I=250,P=600,f=420,M=({position:e="right",minWidth:t=I,maxWidth:n=P,defaultWidth:s=f,defaultOpen:i=!1,autoCloseThreshold:u=.7,isOpen:a,onOpenChange:c})=>{const[d,C]=r.useState(Math.min(s,Math.floor((t+n)/2))),[h=i,b]=l.useControllableState({prop:a,defaultProp:a,onChange:c});return{width:d,setWidth:C,position:e,minWidth:t,maxWidth:n,autoCloseThreshold:u,setOpen:b,isOpen:h}};exports.SidebarChatProvider=p;exports.useInkeepSidebarChat=M;exports.useOptionalSidebarChat=v;exports.useSidebarChat=x;
@@ -1,37 +1,41 @@
1
1
  "use client";
2
- import { jsx as p } from "react/jsx-runtime";
3
- import { createContext as b, useContext as c, useState as s } from "react";
4
- const n = b(void 0), D = ({ children: t, value: e }) => /* @__PURE__ */ p(n.Provider, { value: e, children: t }), M = () => {
5
- const t = c(n);
2
+ import { jsx as b } from "react/jsx-runtime";
3
+ import { useControllableState as S } from "@radix-ui/react-use-controllable-state";
4
+ import { createContext as l, useContext as s, useState as f } from "react";
5
+ const o = l(void 0), M = ({ children: t, value: e }) => /* @__PURE__ */ b(o.Provider, { value: e, children: t }), P = () => {
6
+ const t = s(o);
6
7
  if (!t)
7
8
  throw new Error("useSidebarChat must be used within a SidebarChatProvider");
8
9
  return t;
9
- }, T = () => c(n), S = 250, x = 600, f = 420, H = ({
10
+ }, T = () => s(o), x = 250, m = 600, I = 420, H = ({
10
11
  position: t = "right",
11
- minWidth: e = S,
12
- maxWidth: r = x,
13
- defaultWidth: a = f,
12
+ minWidth: e = x,
13
+ maxWidth: r = m,
14
+ defaultWidth: a = I,
14
15
  defaultOpen: i = !1,
15
- autoCloseThreshold: u = 0.7
16
+ autoCloseThreshold: c = 0.7,
17
+ isOpen: n,
18
+ onOpenChange: u
16
19
  }) => {
17
- const [d, h] = s(Math.min(a, Math.floor((e + r) / 2))), [C, o] = s(i);
20
+ const [d, h] = f(Math.min(a, Math.floor((e + r) / 2))), [C = i, p] = S({
21
+ prop: n,
22
+ defaultProp: n,
23
+ onChange: u
24
+ });
18
25
  return {
19
26
  width: d,
20
27
  setWidth: h,
21
28
  position: t,
22
29
  minWidth: e,
23
30
  maxWidth: r,
24
- autoCloseThreshold: u,
25
- isOpen: C,
26
- setIsOpen: o,
27
- toggle: () => o((l) => !l),
28
- open: () => o(!0),
29
- close: () => o(!1)
31
+ autoCloseThreshold: c,
32
+ setOpen: p,
33
+ isOpen: C
30
34
  };
31
35
  };
32
36
  export {
33
- D as SidebarChatProvider,
37
+ M as SidebarChatProvider,
34
38
  H as useInkeepSidebarChat,
35
39
  T as useOptionalSidebarChat,
36
- M as useSidebarChat
40
+ P as useSidebarChat
37
41
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/cxkit-primitives",
3
- "version": "0.5.81",
3
+ "version": "0.5.83",
4
4
  "description": "",
5
5
  "license": "Inkeep, Inc. Customer License (IICL) v1.1",
6
6
  "homepage": "",
@@ -63,9 +63,9 @@
63
63
  "remark-gfm": "^4.0.1",
64
64
  "unist-util-visit": "^5.0.0",
65
65
  "use-sync-external-store": "^1.4.0",
66
- "@inkeep/cxkit-color-mode": "0.5.81",
67
- "@inkeep/cxkit-theme": "0.5.81",
68
- "@inkeep/cxkit-types": "0.5.81"
66
+ "@inkeep/cxkit-color-mode": "0.5.83",
67
+ "@inkeep/cxkit-theme": "0.5.83",
68
+ "@inkeep/cxkit-types": "0.5.83"
69
69
  },
70
70
  "devDependencies": {
71
71
  "@biomejs/biome": "1.9.4",
@@ -1 +0,0 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react"),a=require("../../providers/sidebar-chat-provider.cjs"),n=e=>{const{toggle:t}=a.useSidebarChat();c.useEffect(()=>{const r=i=>{i.target?.matches?.(e)&&t()};return document.addEventListener("click",r),()=>{document.removeEventListener("click",r)}},[e,t])};exports.useSidebarChatTrigger=n;
@@ -1,17 +0,0 @@
1
- "use client";
2
- import { useEffect as n } from "react";
3
- import { useSidebarChat as i } from "../../providers/sidebar-chat-provider.js";
4
- const m = (e) => {
5
- const { toggle: t } = i();
6
- n(() => {
7
- const r = (c) => {
8
- c.target?.matches?.(e) && t();
9
- };
10
- return document.addEventListener("click", r), () => {
11
- document.removeEventListener("click", r);
12
- };
13
- }, [e, t]);
14
- };
15
- export {
16
- m as useSidebarChatTrigger
17
- };