@inkeep/agents-ui 0.16.0 → 0.16.1

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.
Files changed (85) hide show
  1. package/dist/color-mode/index.js +4 -4
  2. package/dist/node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs +9 -0
  3. package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +2 -2
  4. package/dist/primitives/atoms/cmdk/index.cjs +1 -1
  5. package/dist/primitives/atoms/cmdk/index.js +14 -2
  6. package/dist/primitives/atoms/combobox.d.ts +104 -0
  7. package/dist/primitives/atoms/portal.js +3 -3
  8. package/dist/primitives/atoms/select.cjs +1 -1
  9. package/dist/primitives/atoms/select.js +2 -2
  10. package/dist/primitives/atoms/shadow/context.js +4 -4
  11. package/dist/primitives/components/embedded-chat/chat-error-helpers.cjs +3 -0
  12. package/dist/primitives/components/embedded-chat/chat-error-helpers.d.ts +26 -0
  13. package/dist/primitives/components/embedded-chat/chat-error-helpers.js +32 -0
  14. package/dist/primitives/components/embedded-chat/file-upload-input.cjs +1 -1
  15. package/dist/primitives/components/embedded-chat/file-upload-input.d.ts +1 -1
  16. package/dist/primitives/components/embedded-chat/file-upload-input.js +119 -116
  17. package/dist/primitives/components/embedded-chat/image-preview-modal.js +3 -3
  18. package/dist/primitives/components/embedded-chat/use-inkeep-chat.cjs +2 -4
  19. package/dist/primitives/components/embedded-chat/use-inkeep-chat.d.ts +1 -2
  20. package/dist/primitives/components/embedded-chat/use-inkeep-chat.js +305 -278
  21. package/dist/primitives/components/embedded-chat/use-stream-processor.cjs +1 -1
  22. package/dist/primitives/components/embedded-chat/use-stream-processor.js +1 -1
  23. package/dist/primitives/components/embedded-chat.cjs +1 -1
  24. package/dist/primitives/components/embedded-chat.d.ts +1 -2
  25. package/dist/primitives/components/embedded-chat.js +23 -23
  26. package/dist/primitives/components/embedded-search/search-provider.js +3 -3
  27. package/dist/primitives/components/embedded-search.cjs +1 -1
  28. package/dist/primitives/components/embedded-search.d.ts +1 -1
  29. package/dist/primitives/components/embedded-search.js +3 -3
  30. package/dist/primitives/components/modal/modal-provider.js +2 -2
  31. package/dist/primitives/components/modal.js +3 -3
  32. package/dist/primitives/components/sidebar-chat/index.js +1 -1
  33. package/dist/primitives/providers/base-events-provider.cjs +1 -1
  34. package/dist/primitives/providers/base-events-provider.js +22 -22
  35. package/dist/primitives/providers/chat-bubble-provider.js +1 -1
  36. package/dist/primitives/providers/chat-form-provider.d.ts +1 -1
  37. package/dist/primitives/providers/chat-form-provider.js +4 -4
  38. package/dist/primitives/providers/chat-history-provider.js +3 -3
  39. package/dist/primitives/providers/config-provider.js +3 -3
  40. package/dist/primitives/providers/feedback-provider.js +3 -3
  41. package/dist/primitives/providers/form-field-provider.js +3 -3
  42. package/dist/primitives/providers/help-menu-provider.js +4 -4
  43. package/dist/primitives/providers/hover-popover-provider.js +3 -3
  44. package/dist/primitives/providers/image-preview-provider.js +5 -5
  45. package/dist/primitives/providers/markdown-provider.js +2 -2
  46. package/dist/primitives/providers/message-provider.js +1 -1
  47. package/dist/primitives/providers/sidebar-chat-provider.js +3 -3
  48. package/dist/primitives/providers/source-item-provider.js +3 -3
  49. package/dist/primitives/providers/widget-provider.js +2 -2
  50. package/dist/primitives/utils/misc.cjs +1 -1
  51. package/dist/primitives/utils/misc.js +2 -2
  52. package/dist/react/chat-button.js +1 -1
  53. package/dist/react/embedded-chat.cjs +1 -1
  54. package/dist/react/embedded-chat.js +5 -5
  55. package/dist/react/embedded-search.cjs +1 -1
  56. package/dist/react/embedded-search.js +18 -18
  57. package/dist/styled/components/chat-bubble.js +4 -4
  58. package/dist/styled/components/chat-button.cjs +1 -1
  59. package/dist/styled/components/chat-button.js +9 -9
  60. package/dist/styled/components/chat-history.cjs +1 -1
  61. package/dist/styled/components/chat-history.js +22 -22
  62. package/dist/styled/components/embedded-chat/file-upload-input.cjs +1 -1
  63. package/dist/styled/components/embedded-chat/file-upload-input.js +71 -72
  64. package/dist/styled/components/embedded-chat/image-preview-modal.js +5 -5
  65. package/dist/styled/components/embedded-chat.cjs +1 -1
  66. package/dist/styled/components/embedded-chat.js +198 -198
  67. package/dist/styled/components/embedded-search.cjs +1 -1
  68. package/dist/styled/components/embedded-search.js +65 -65
  69. package/dist/styled/components/loading-indicator.cjs +1 -1
  70. package/dist/styled/components/loading-indicator.js +1 -1
  71. package/dist/styled/components/message.cjs +1 -1
  72. package/dist/styled/components/message.js +90 -90
  73. package/dist/styled/components/modal.js +3 -3
  74. package/dist/styled/components/searchbar.js +8 -8
  75. package/dist/styled/components/sidebar-chat.cjs +1 -1
  76. package/dist/styled/components/sidebar-chat.js +5 -5
  77. package/dist/styled/inkeep.css.cjs +13 -3
  78. package/dist/styled/inkeep.css.js +13 -3
  79. package/dist/theme/utils/generate-theme-variables.js +6 -6
  80. package/package.json +1 -1
  81. package/dist/node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.0.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs +0 -9
  82. /package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.cjs +0 -0
  83. /package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +0 -0
  84. /package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/shim/index.cjs +0 -0
  85. /package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/shim/index.js +0 -0
@@ -1,6 +1,6 @@
1
- import { jsx as x, jsxs as J } from "react/jsx-runtime";
2
- import { useContext as O, createContext as T, useState as N, useCallback as A, useEffect as j, useMemo as Q, memo as q } from "react";
3
- const L = ["light", "dark"], B = "(prefers-color-scheme: dark)", F = typeof window > "u", D = T(void 0), G = {
1
+ import { jsxs as J, jsx as x } from "react/jsx-runtime";
2
+ import { useState as N, useCallback as A, useEffect as j, useMemo as T, useContext as O, createContext as Q, memo as q } from "react";
3
+ const L = ["light", "dark"], B = "(prefers-color-scheme: dark)", F = typeof window > "u", D = Q(void 0), G = {
4
4
  setColorMode: (e) => {
5
5
  },
6
6
  colorModes: []
@@ -72,7 +72,7 @@ const oe = (e) => (O(D), /* @__PURE__ */ x(Z, { ...e })), W = () => {
72
72
  }, [u]), j(() => {
73
73
  g(e ?? c);
74
74
  }, [e, c]);
75
- const p = Q(
75
+ const p = T(
76
76
  () => ({
77
77
  colorMode: c,
78
78
  setColorMode: u,
@@ -0,0 +1,9 @@
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../../../../../_virtual/use-sync-external-store-shim.development.cjs"),h=require("react");/**
2
+ * @license React
3
+ * use-sync-external-store-shim.development.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var f;function T(){return f||(f=1,process.env.NODE_ENV!=="production"&&(function(){function d(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}function S(e,t){c||o.startTransition===void 0||(c=!0,console.error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."));var r=t();if(!l){var u=t();_(r,u)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),l=!0)}u=p({inst:{value:r,getSnapshot:t}});var n=u[0].inst,s=u[1];return y(function(){n.value=r,n.getSnapshot=t,a(n)&&s({inst:n})},[e,r,t]),E(function(){return a(n)&&s({inst:n}),e(function(){a(n)&&s({inst:n})})},[e]),L(r),r}function a(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!_(e,r)}catch{return!0}}function O(e,t){return t()}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var o=h,_=typeof Object.is=="function"?Object.is:d,p=o.useState,E=o.useEffect,y=o.useLayoutEffect,L=o.useDebugValue,c=!1,l=!1,v=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?O:S;i.__exports.useSyncExternalStore=o.useSyncExternalStore!==void 0?o.useSyncExternalStore:v,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()),i.__exports}exports.__require=T;
@@ -12,7 +12,7 @@ import h from "react";
12
12
  */
13
13
  var l;
14
14
  function A() {
15
- return l ? s : (l = 1, process.env.NODE_ENV !== "production" && function() {
15
+ return l ? s : (l = 1, process.env.NODE_ENV !== "production" && (function() {
16
16
  function d(e, t) {
17
17
  return e === t && (e !== 0 || 1 / e === 1 / t) || e !== e && t !== t;
18
18
  }
@@ -61,7 +61,7 @@ function A() {
61
61
  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart == "function" && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
62
62
  var o = h, _ = typeof Object.is == "function" ? Object.is : d, p = o.useState, E = o.useEffect, L = o.useLayoutEffect, y = o.useDebugValue, f = !1, c = !1, v = typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u" ? O : S;
63
63
  s.useSyncExternalStore = o.useSyncExternalStore !== void 0 ? o.useSyncExternalStore : v, typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ < "u" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop == "function" && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
64
- }(), s);
64
+ })(), s);
65
65
  }
66
66
  export {
67
67
  A as __require
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("react/jsx-runtime"),D=require("../dialog.cjs"),G=require("react"),je=require("./command-score.cjs"),I=require("@radix-ui/react-primitive"),q=require("@radix-ui/react-id"),Pe=require("../../../node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.0.0/node_modules/use-sync-external-store/shim/index.cjs"),Ae=require("../../constants/search.cjs"),_e=require("../../utils/compose-event-handlers.cjs"),Me=require("../../providers/widget-provider.cjs"),Le=require("../shadow/context.cjs");function Oe(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,s.get?s:{enumerable:!0,get:()=>t[r]})}}return n.default=t,Object.freeze(n)}const c=Oe(G),O='[cmdk-group=""]',ee='[cmdk-group-items=""]',qe='[cmdk-group-heading=""]',de='[cmdk-item=""]',ae=`${de}:not([aria-disabled="true"])`,te="cmdk-item-select",_="data-value",fe=(t,n,r)=>je.commandScore(t,n,r??[]),me=c.createContext(void 0),V=()=>c.useContext(me),ve=c.createContext(void 0),K=()=>c.useContext(ve),he=c.createContext(void 0),re=c.forwardRef((t,n)=>{const r=M(()=>new Set),s=M(()=>new Map),a=M(()=>new Map),f=M(()=>new Set),i=we(t),{label:h,children:d,value:S,onValueChange:E,filter:w,shouldFilter:C,loop:y,disablePointerSelection:A=!1,vimBindings:B=!0,defaultSearch:ne,...$}=t,g=M(()=>({search:ne??"",value:t.value??t.defaultValue??"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),U=q.useId(),z=q.useId(),H=q.useId(),R=c.useRef(null),b=Ge();j(()=>{if(S!==void 0){const e=S.trim();g.current.value=e,x.emit()}},[S]),j(()=>{b(6,ce)},[]);const F=Le.useShadow(),x=c.useMemo(()=>({subscribe:e=>(f.current.add(e),()=>f.current.delete(e)),snapshot:()=>g.current,setState:(e,l,o)=>{if(!Object.is(g.current[e],l)){if(g.current[e]=l,e==="search")X(),J(),b(1,Q);else if(e==="value"&&(F?.shadowHost?.shadowRoot?.activeElement?.hasAttribute("cmdk-input")||b(1,()=>{k()?.focus()}),b(7,()=>{g.current.selectedItemId=k()?.id,x.emit()}),o||b(5,ce),i.current?.value!==void 0)){const p=l??"";i.current.onValueChange?.(p);return}x.emit()}},emit:()=>{f.current.forEach(e=>e())}}),[]),W=c.useMemo(()=>({value:(e,l,o)=>{l!==a.current.get(e)?.value&&(a.current.set(e,{value:l,keywords:o}),g.current.filtered.items.set(e,oe(l,o)),b(2,()=>{J(),x.emit()}))},item:(e,l)=>(r.current.add(e),l&&(s.current.has(l)?s.current?.get(l)?.add(e):s.current.set(l,new Set([e]))),b(3,()=>{X(),J(),g.current.value||Q(),x.emit()}),()=>{a.current.delete(e),r.current.delete(e),g.current.filtered.items.delete(e);const o=k();b(4,()=>{X(),o?.getAttribute("id")===e&&Q(),x.emit()})}),group:e=>(s.current.has(e)||s.current.set(e,new Set),()=>{a.current.delete(e),s.current.delete(e)}),filter:()=>!!i.current.shouldFilter,label:h||t["aria-label"]||"",getDisablePointerSelection:()=>!!i.current.disablePointerSelection,listId:U,inputId:H,labelId:z,listInnerRef:R}),[]);function oe(e,l){const o=i.current?.filter??fe;return e?o?.(e,g.current.search,l):0}function J(){if(!g.current.search||i.current.shouldFilter===!1)return;const e=g.current.filtered.items,l=[];g.current.filtered.groups.forEach(u=>{const m=s.current.get(u);let p=0;m.forEach(Z=>{const ke=e.get(Z);p=Math.max(ke,p)}),l.push([u,p])});const o=R.current;L().sort((u,m)=>{const p=u.getAttribute("id"),Z=m.getAttribute("id");return(e.get(Z)??0)-(e.get(p)??0)}).forEach(u=>{const m=u.closest(ee);if(m){const p=u.parentElement===m?u:u.closest(`${ee} > *`);p&&m.appendChild(p)}else{const p=u.parentElement===o?u:u.closest(`${ee} > *`);p&&o?.appendChild(p)}}),l.sort((u,m)=>m[1]-u[1]).forEach(u=>{const m=R.current?.querySelector(`${O}[${_}="${encodeURIComponent(u[0])}"]`);m?.parentElement?.appendChild(m)})}function Q(){const l=L().find(o=>o.getAttribute("aria-disabled")!=="true"&&o.getAttribute("data-value")!==Ae.ASK_AI_TRIGGER_VALUE)?.getAttribute(_);x.setState("value",l||void 0)}function X(){if(!g.current.search||i.current.shouldFilter===!1){g.current.filtered.count=r.current.size;return}g.current.filtered.groups=new Set;let e=0;for(const l of r.current){const o=a.current.get(l)?.value??"",u=a.current.get(l)?.keywords??[],m=oe(o,u);g.current.filtered.items.set(l,m),m>0&&e++}for(const[l,o]of s.current)for(const u of o){const m=g.current.filtered.items.get(u);if(m&&m>0){g.current.filtered.groups.add(l);break}}g.current.filtered.count=e}function ce(){const e=k();e&&(e.parentElement?.firstChild===e&&e.closest(O)?.querySelector(qe)?.scrollIntoView({block:"nearest"}),e.scrollIntoView({block:"nearest"}))}function k(){return R.current?.querySelector(`${de}[aria-selected="true"]`)}function L(){return Array.from(R.current?.querySelectorAll(ae)||[])}function se(e){const o=L()[e];o&&x.setState("value",o.getAttribute(_))}function Y(e){const l=k(),o=L(),u=o.findIndex(p=>p===l);let m=o[u+e];i.current?.loop&&(m=u+e<0?o[o.length-1]:u+e===o.length?o[0]:o[u+e]),m&&x.setState("value",m.getAttribute(_))}function ie(e){let o=k()?.closest(O),u;for(;o&&!u;)o=e>0?Fe(o,O):De(o,O),u=o?.querySelector(ae);u?x.setState("value",u.getAttribute(_)):Y(e)}const Ie=()=>se(L().length-1),le=e=>{e.preventDefault(),e.metaKey?Ie():e.altKey?ie(1):Y(1)},ue=e=>{e.preventDefault(),e.metaKey?se(0):e.altKey?ie(-1):Y(-1)},Re=Me.useWidget();return v.jsxs(I.Primitive.div,{ref:n,tabIndex:-1,...$,"cmdk-root":"",onKeyDown:e=>{if(Re?.view==="search"&&($.onKeyDown?.(e),!e.defaultPrevented))switch(e.key){case"n":case"j":{B&&e.ctrlKey&&le(e);break}case"ArrowDown":{le(e);break}case"p":case"k":{B&&e.ctrlKey&&ue(e);break}case"ArrowUp":{ue(e);break}case"Enter":if(!e.nativeEvent.isComposing&&e.keyCode!==229){e.preventDefault();const l=k();if(l){const o=new Event(te);l.dispatchEvent(o)}}}},style:{display:"contents"},children:[v.jsx("label",{"cmdk-label":"",htmlFor:W.inputId,id:W.labelId,style:Ne,children:h}),N(t,e=>v.jsx(ve.Provider,{value:x,children:v.jsx(me.Provider,{value:W,children:e})}))]})}),ge=c.forwardRef((t,n)=>{const{id:r}=t,s=c.useRef(null),a=c.useContext(he),f=V(),i=we(t),h=i.current?.forceMount??a?.forceMount;j(()=>{if(!h)return f.item(r,a?.id)},[h]);const d=ye(r,s,[t.value,t.children,s],t.keywords),S=K(),E=P(b=>b.value&&b.value===d.current),w=P(b=>h||f.filter()===!1?!0:b.search?b.filtered.items.get(r)>0:!0);c.useEffect(()=>{const b=s.current;if(!b||t.disabled)return;const F=()=>y("keyboard");return b.addEventListener(te,F),()=>b.removeEventListener(te,F)},[w,t.onSelect,t.disabled]);const C=G.useCallback(()=>{S.setState("value",d.current,!0)},[S,d]),y=G.useCallback((b="click")=>{C(),i.current.onSelect?.({value:d.current,trigger:b})},[C,i,d]);if(!w)return null;const{disabled:A,value:B,onSelect:ne,forceMount:$,keywords:g,onClick:U,...z}=t,H=G.useMemo(()=>T([s,n]),[s,n]),R=_e.composeEventHandlers(U,y);return v.jsx(I.Primitive.div,{ref:H,...z,id:r,"cmdk-item":"",role:"option","aria-disabled":!!A,"aria-selected":!!E,"data-disabled":!!A,"data-selected":!!E,onPointerMove:A||f.getDisablePointerSelection()?void 0:C,onClick:A?void 0:R,onFocus:A?void 0:C,children:t.children})}),Te=c.forwardRef((t,n)=>{const{heading:r,children:s,forceMount:a,...f}=t,i=q.useId(),h=c.useRef(null),d=c.useRef(null),S=q.useId(),E=V(),w=P(y=>a||E.filter()===!1?!0:y.search?y.filtered.groups.has(i):!0);j(()=>E.group(i),[]),ye(i,h,[t.value,t.heading,d]);const C=c.useMemo(()=>({id:i,forceMount:a}),[a]);return v.jsxs(I.Primitive.div,{ref:T([h,n]),...f,"cmdk-group":"",role:"presentation",hidden:w?void 0:!0,children:[r&&v.jsx("div",{ref:d,"cmdk-group-heading":"","aria-hidden":!0,id:S,children:r}),N(t,y=>v.jsx("div",{"cmdk-group-items":"",role:"group","aria-labelledby":r?S:void 0,children:v.jsx(he.Provider,{value:C,children:y})}))]})}),be=c.forwardRef((t,n)=>{const{alwaysRender:r,...s}=t,a=c.useRef(null),f=P(i=>!i.search);return!r&&!f?null:v.jsx(I.Primitive.div,{ref:T([a,n]),...s,"cmdk-separator":"",role:"separator"})}),pe=c.forwardRef((t,n)=>{const{onValueChange:r,...s}=t,a=t.value!=null,f=K(),i=P(d=>d.search),h=V();return c.useEffect(()=>{t.value!=null&&f.setState("search",t.value)},[t.value]),v.jsx(I.Primitive.input,{ref:n,...s,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":h.listId,"aria-labelledby":h.labelId,id:h.inputId,type:"text",value:a?t.value:i,onChange:d=>{a||f.setState("search",d.target.value),r?.(d.target.value)}})}),Se=c.forwardRef((t,n)=>{const{children:r,label:s="Suggestions",...a}=t,f=c.useRef(null),i=c.useRef(null),h=V();return c.useEffect(()=>{if(i.current&&f.current){const d=i.current,S=f.current;let E;const w=new ResizeObserver(()=>{E=requestAnimationFrame(()=>{const C=d.offsetHeight;S.style.setProperty("--cmdk-list-height",C.toFixed(1)+"px")})});return w.observe(d),()=>{cancelAnimationFrame(E),w.unobserve(d)}}},[]),v.jsx(I.Primitive.div,{ref:T([f,n]),...a,"cmdk-list":"",tabIndex:-1,"aria-label":s,id:h.listId,children:N(t,d=>v.jsx("div",{ref:T([i,h.listInnerRef]),"cmdk-list-sizer":"",children:d}))})}),xe=c.forwardRef((t,n)=>{const{open:r,onOpenChange:s,overlayClassName:a,contentClassName:f,container:i,...h}=t;return v.jsx(D.Root,{open:r,onOpenChange:s,children:v.jsxs(D.Portal,{container:i,children:[v.jsx(D.Overlay,{"cmdk-overlay":"",className:a}),v.jsx(D.Content,{"aria-label":t.label,"cmdk-dialog":"",className:f,children:v.jsx(re,{ref:n,...h})})]})})}),Ee=c.forwardRef((t,n)=>P(s=>s.filtered.count===0)?v.jsx(I.Primitive.div,{ref:n,...t,"cmdk-empty":"",role:"presentation"}):null),Ce=c.forwardRef((t,n)=>{const{progress:r,children:s,label:a="Loading...",...f}=t;return v.jsx(I.Primitive.div,{ref:n,...f,"cmdk-loading":"",role:"progressbar","aria-valuenow":r,"aria-valuemin":0,"aria-valuemax":100,"aria-label":a,children:N(t,i=>v.jsx("div",{"aria-hidden":!0,children:i}))})}),Ve=Object.assign(re,{List:Se,Item:ge,Input:pe,Group:Te,Separator:be,Dialog:xe,Empty:Ee,Loading:Ce});function Fe(t,n){let r=t.nextElementSibling;for(;r;){if(r.matches(n))return r;r=r.nextElementSibling}}function De(t,n){let r=t.previousElementSibling;for(;r;){if(r.matches(n))return r;r=r.previousElementSibling}}function we(t){const n=c.useRef(t);return j(()=>{n.current=t}),n}const j=typeof window>"u"?c.useEffect:c.useLayoutEffect;function M(t){const n=c.useRef(void 0);return n.current===void 0&&(n.current=t()),n}function T(t){return n=>{t.forEach(r=>{typeof r=="function"?r(n):r!=null&&(r.current=n)})}}function P(t){const n=K(),r=()=>t(n.snapshot());return Pe.shimExports.useSyncExternalStore(n.subscribe,r,r)}function ye(t,n,r,s=[]){const a=c.useRef(void 0),f=V();return j(()=>{const i=(()=>{for(const d of r){if(typeof d=="string")return d.trim();if(typeof d=="object"&&"current"in d)return d.current?d.current.textContent?.trim():a.current}})(),h=s.map(d=>d.trim());f.value(t,i,h),n.current?.setAttribute(_,i),a.current=i}),a}const Ge=()=>{const[t,n]=c.useState(),r=M(()=>new Map);return j(()=>{r.current.forEach(s=>s()),r.current=new Map},[t]),(s,a)=>{r.current.set(s,a),n({})}};function Ke(t){const n=t.type;return typeof n=="function"?n(t.props):"render"in n?n.render(t.props):t}function N({asChild:t,children:n},r){return t&&c.isValidElement(n)?c.cloneElement(Ke(n),{ref:n.ref},r(n.props.children)):r(n)}const Ne={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};exports.Command=Ve;exports.CommandDialog=xe;exports.CommandEmpty=Ee;exports.CommandInput=pe;exports.CommandItem=ge;exports.CommandList=Se;exports.CommandLoading=Ce;exports.CommandRoot=re;exports.CommandSeparator=be;exports.defaultFilter=fe;exports.useCommandState=P;exports.useCommandStore=K;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("react/jsx-runtime"),D=require("../dialog.cjs"),G=require("react"),je=require("./command-score.cjs"),I=require("@radix-ui/react-primitive"),q=require("@radix-ui/react-id"),Pe=require("../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128/node_modules/use-sync-external-store/shim/index.cjs"),Ae=require("../../constants/search.cjs"),_e=require("../../utils/compose-event-handlers.cjs"),Me=require("../../providers/widget-provider.cjs"),Le=require("../shadow/context.cjs");function Oe(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,s.get?s:{enumerable:!0,get:()=>t[r]})}}return n.default=t,Object.freeze(n)}const c=Oe(G),O='[cmdk-group=""]',ee='[cmdk-group-items=""]',qe='[cmdk-group-heading=""]',de='[cmdk-item=""]',ae=`${de}:not([aria-disabled="true"])`,te="cmdk-item-select",_="data-value",fe=(t,n,r)=>je.commandScore(t,n,r??[]),me=c.createContext(void 0),V=()=>c.useContext(me),ve=c.createContext(void 0),K=()=>c.useContext(ve),he=c.createContext(void 0),re=c.forwardRef((t,n)=>{const r=M(()=>new Set),s=M(()=>new Map),a=M(()=>new Map),f=M(()=>new Set),i=we(t),{label:h,children:d,value:S,onValueChange:E,filter:w,shouldFilter:C,loop:y,disablePointerSelection:A=!1,vimBindings:B=!0,defaultSearch:ne,...$}=t,g=M(()=>({search:ne??"",value:t.value??t.defaultValue??"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),U=q.useId(),z=q.useId(),H=q.useId(),R=c.useRef(null),b=Ge();j(()=>{if(S!==void 0){const e=S.trim();g.current.value=e,x.emit()}},[S]),j(()=>{b(6,ce)},[]);const F=Le.useShadow(),x=c.useMemo(()=>({subscribe:e=>(f.current.add(e),()=>f.current.delete(e)),snapshot:()=>g.current,setState:(e,l,o)=>{if(!Object.is(g.current[e],l)){if(g.current[e]=l,e==="search")X(),J(),b(1,Q);else if(e==="value"&&(F?.shadowHost?.shadowRoot?.activeElement?.hasAttribute("cmdk-input")||b(1,()=>{k()?.focus()}),b(7,()=>{g.current.selectedItemId=k()?.id,x.emit()}),o||b(5,ce),i.current?.value!==void 0)){const p=l??"";i.current.onValueChange?.(p);return}x.emit()}},emit:()=>{f.current.forEach(e=>e())}}),[]),W=c.useMemo(()=>({value:(e,l,o)=>{l!==a.current.get(e)?.value&&(a.current.set(e,{value:l,keywords:o}),g.current.filtered.items.set(e,oe(l,o)),b(2,()=>{J(),x.emit()}))},item:(e,l)=>(r.current.add(e),l&&(s.current.has(l)?s.current?.get(l)?.add(e):s.current.set(l,new Set([e]))),b(3,()=>{X(),J(),g.current.value||Q(),x.emit()}),()=>{a.current.delete(e),r.current.delete(e),g.current.filtered.items.delete(e);const o=k();b(4,()=>{X(),o?.getAttribute("id")===e&&Q(),x.emit()})}),group:e=>(s.current.has(e)||s.current.set(e,new Set),()=>{a.current.delete(e),s.current.delete(e)}),filter:()=>!!i.current.shouldFilter,label:h||t["aria-label"]||"",getDisablePointerSelection:()=>!!i.current.disablePointerSelection,listId:U,inputId:H,labelId:z,listInnerRef:R}),[]);function oe(e,l){const o=i.current?.filter??fe;return e?o?.(e,g.current.search,l):0}function J(){if(!g.current.search||i.current.shouldFilter===!1)return;const e=g.current.filtered.items,l=[];g.current.filtered.groups.forEach(u=>{const m=s.current.get(u);let p=0;m.forEach(Z=>{const ke=e.get(Z);p=Math.max(ke,p)}),l.push([u,p])});const o=R.current;L().sort((u,m)=>{const p=u.getAttribute("id"),Z=m.getAttribute("id");return(e.get(Z)??0)-(e.get(p)??0)}).forEach(u=>{const m=u.closest(ee);if(m){const p=u.parentElement===m?u:u.closest(`${ee} > *`);p&&m.appendChild(p)}else{const p=u.parentElement===o?u:u.closest(`${ee} > *`);p&&o?.appendChild(p)}}),l.sort((u,m)=>m[1]-u[1]).forEach(u=>{const m=R.current?.querySelector(`${O}[${_}="${encodeURIComponent(u[0])}"]`);m?.parentElement?.appendChild(m)})}function Q(){const l=L().find(o=>o.getAttribute("aria-disabled")!=="true"&&o.getAttribute("data-value")!==Ae.ASK_AI_TRIGGER_VALUE)?.getAttribute(_);x.setState("value",l||void 0)}function X(){if(!g.current.search||i.current.shouldFilter===!1){g.current.filtered.count=r.current.size;return}g.current.filtered.groups=new Set;let e=0;for(const l of r.current){const o=a.current.get(l)?.value??"",u=a.current.get(l)?.keywords??[],m=oe(o,u);g.current.filtered.items.set(l,m),m>0&&e++}for(const[l,o]of s.current)for(const u of o){const m=g.current.filtered.items.get(u);if(m&&m>0){g.current.filtered.groups.add(l);break}}g.current.filtered.count=e}function ce(){const e=k();e&&(e.parentElement?.firstChild===e&&e.closest(O)?.querySelector(qe)?.scrollIntoView({block:"nearest"}),e.scrollIntoView({block:"nearest"}))}function k(){return R.current?.querySelector(`${de}[aria-selected="true"]`)}function L(){return Array.from(R.current?.querySelectorAll(ae)||[])}function se(e){const o=L()[e];o&&x.setState("value",o.getAttribute(_))}function Y(e){const l=k(),o=L(),u=o.findIndex(p=>p===l);let m=o[u+e];i.current?.loop&&(m=u+e<0?o[o.length-1]:u+e===o.length?o[0]:o[u+e]),m&&x.setState("value",m.getAttribute(_))}function ie(e){let o=k()?.closest(O),u;for(;o&&!u;)o=e>0?Fe(o,O):De(o,O),u=o?.querySelector(ae);u?x.setState("value",u.getAttribute(_)):Y(e)}const Ie=()=>se(L().length-1),le=e=>{e.preventDefault(),e.metaKey?Ie():e.altKey?ie(1):Y(1)},ue=e=>{e.preventDefault(),e.metaKey?se(0):e.altKey?ie(-1):Y(-1)},Re=Me.useWidget();return v.jsxs(I.Primitive.div,{ref:n,tabIndex:-1,...$,"cmdk-root":"",onKeyDown:e=>{if(Re?.view==="search"&&($.onKeyDown?.(e),!e.defaultPrevented))switch(e.key){case"n":case"j":{B&&e.ctrlKey&&le(e);break}case"ArrowDown":{le(e);break}case"p":case"k":{B&&e.ctrlKey&&ue(e);break}case"ArrowUp":{ue(e);break}case"Enter":if(!e.nativeEvent.isComposing&&e.keyCode!==229){e.preventDefault();const l=k();if(l){const o=new Event(te);l.dispatchEvent(o)}}}},style:{display:"contents"},children:[v.jsx("label",{"cmdk-label":"",htmlFor:W.inputId,id:W.labelId,style:Ne,children:h}),N(t,e=>v.jsx(ve.Provider,{value:x,children:v.jsx(me.Provider,{value:W,children:e})}))]})}),ge=c.forwardRef((t,n)=>{const{id:r}=t,s=c.useRef(null),a=c.useContext(he),f=V(),i=we(t),h=i.current?.forceMount??a?.forceMount;j(()=>{if(!h)return f.item(r,a?.id)},[h]);const d=ye(r,s,[t.value,t.children,s],t.keywords),S=K(),E=P(b=>b.value&&b.value===d.current),w=P(b=>h||f.filter()===!1?!0:b.search?b.filtered.items.get(r)>0:!0);c.useEffect(()=>{const b=s.current;if(!b||t.disabled)return;const F=()=>y("keyboard");return b.addEventListener(te,F),()=>b.removeEventListener(te,F)},[w,t.onSelect,t.disabled]);const C=G.useCallback(()=>{S.setState("value",d.current,!0)},[S,d]),y=G.useCallback((b="click")=>{C(),i.current.onSelect?.({value:d.current,trigger:b})},[C,i,d]);if(!w)return null;const{disabled:A,value:B,onSelect:ne,forceMount:$,keywords:g,onClick:U,...z}=t,H=G.useMemo(()=>T([s,n]),[s,n]),R=_e.composeEventHandlers(U,y);return v.jsx(I.Primitive.div,{ref:H,...z,id:r,"cmdk-item":"",role:"option","aria-disabled":!!A,"aria-selected":!!E,"data-disabled":!!A,"data-selected":!!E,onPointerMove:A||f.getDisablePointerSelection()?void 0:C,onClick:A?void 0:R,onFocus:A?void 0:C,children:t.children})}),Te=c.forwardRef((t,n)=>{const{heading:r,children:s,forceMount:a,...f}=t,i=q.useId(),h=c.useRef(null),d=c.useRef(null),S=q.useId(),E=V(),w=P(y=>a||E.filter()===!1?!0:y.search?y.filtered.groups.has(i):!0);j(()=>E.group(i),[]),ye(i,h,[t.value,t.heading,d]);const C=c.useMemo(()=>({id:i,forceMount:a}),[a]);return v.jsxs(I.Primitive.div,{ref:T([h,n]),...f,"cmdk-group":"",role:"presentation",hidden:w?void 0:!0,children:[r&&v.jsx("div",{ref:d,"cmdk-group-heading":"","aria-hidden":!0,id:S,children:r}),N(t,y=>v.jsx("div",{"cmdk-group-items":"",role:"group","aria-labelledby":r?S:void 0,children:v.jsx(he.Provider,{value:C,children:y})}))]})}),be=c.forwardRef((t,n)=>{const{alwaysRender:r,...s}=t,a=c.useRef(null),f=P(i=>!i.search);return!r&&!f?null:v.jsx(I.Primitive.div,{ref:T([a,n]),...s,"cmdk-separator":"",role:"separator"})}),pe=c.forwardRef((t,n)=>{const{onValueChange:r,...s}=t,a=t.value!=null,f=K(),i=P(d=>d.search),h=V();return c.useEffect(()=>{t.value!=null&&f.setState("search",t.value)},[t.value]),v.jsx(I.Primitive.input,{ref:n,...s,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":h.listId,"aria-labelledby":h.labelId,id:h.inputId,type:"text",value:a?t.value:i,onChange:d=>{a||f.setState("search",d.target.value),r?.(d.target.value)}})}),Se=c.forwardRef((t,n)=>{const{children:r,label:s="Suggestions",...a}=t,f=c.useRef(null),i=c.useRef(null),h=V();return c.useEffect(()=>{if(i.current&&f.current){const d=i.current,S=f.current;let E;const w=new ResizeObserver(()=>{E=requestAnimationFrame(()=>{const C=d.offsetHeight;S.style.setProperty("--cmdk-list-height",C.toFixed(1)+"px")})});return w.observe(d),()=>{cancelAnimationFrame(E),w.unobserve(d)}}},[]),v.jsx(I.Primitive.div,{ref:T([f,n]),...a,"cmdk-list":"",tabIndex:-1,"aria-label":s,id:h.listId,children:N(t,d=>v.jsx("div",{ref:T([i,h.listInnerRef]),"cmdk-list-sizer":"",children:d}))})}),xe=c.forwardRef((t,n)=>{const{open:r,onOpenChange:s,overlayClassName:a,contentClassName:f,container:i,...h}=t;return v.jsx(D.Root,{open:r,onOpenChange:s,children:v.jsxs(D.Portal,{container:i,children:[v.jsx(D.Overlay,{"cmdk-overlay":"",className:a}),v.jsx(D.Content,{"aria-label":t.label,"cmdk-dialog":"",className:f,children:v.jsx(re,{ref:n,...h})})]})})}),Ee=c.forwardRef((t,n)=>P(s=>s.filtered.count===0)?v.jsx(I.Primitive.div,{ref:n,...t,"cmdk-empty":"",role:"presentation"}):null),Ce=c.forwardRef((t,n)=>{const{progress:r,children:s,label:a="Loading...",...f}=t;return v.jsx(I.Primitive.div,{ref:n,...f,"cmdk-loading":"",role:"progressbar","aria-valuenow":r,"aria-valuemin":0,"aria-valuemax":100,"aria-label":a,children:N(t,i=>v.jsx("div",{"aria-hidden":!0,children:i}))})}),Ve=Object.assign(re,{List:Se,Item:ge,Input:pe,Group:Te,Separator:be,Dialog:xe,Empty:Ee,Loading:Ce});function Fe(t,n){let r=t.nextElementSibling;for(;r;){if(r.matches(n))return r;r=r.nextElementSibling}}function De(t,n){let r=t.previousElementSibling;for(;r;){if(r.matches(n))return r;r=r.previousElementSibling}}function we(t){const n=c.useRef(t);return j(()=>{n.current=t}),n}const j=typeof window>"u"?c.useEffect:c.useLayoutEffect;function M(t){const n=c.useRef(void 0);return n.current===void 0&&(n.current=t()),n}function T(t){return n=>{t.forEach(r=>{typeof r=="function"?r(n):r!=null&&(r.current=n)})}}function P(t){const n=K(),r=()=>t(n.snapshot());return Pe.shimExports.useSyncExternalStore(n.subscribe,r,r)}function ye(t,n,r,s=[]){const a=c.useRef(void 0),f=V();return j(()=>{const i=(()=>{for(const d of r){if(typeof d=="string")return d.trim();if(typeof d=="object"&&"current"in d)return d.current?d.current.textContent?.trim():a.current}})(),h=s.map(d=>d.trim());f.value(t,i,h),n.current?.setAttribute(_,i),a.current=i}),a}const Ge=()=>{const[t,n]=c.useState(),r=M(()=>new Map);return j(()=>{r.current.forEach(s=>s()),r.current=new Map},[t]),(s,a)=>{r.current.set(s,a),n({})}};function Ke(t){const n=t.type;return typeof n=="function"?n(t.props):"render"in n?n.render(t.props):t}function N({asChild:t,children:n},r){return t&&c.isValidElement(n)?c.cloneElement(Ke(n),{ref:n.ref},r(n.props.children)):r(n)}const Ne={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};exports.Command=Ve;exports.CommandDialog=xe;exports.CommandEmpty=Ee;exports.CommandInput=pe;exports.CommandItem=ge;exports.CommandList=Se;exports.CommandLoading=Ce;exports.CommandRoot=re;exports.CommandSeparator=be;exports.defaultFilter=fe;exports.useCommandState=P;exports.useCommandStore=K;
@@ -1,11 +1,11 @@
1
- import { jsxs as Z, jsx as p } from "react/jsx-runtime";
1
+ import { jsx as p, jsxs as Z } from "react/jsx-runtime";
2
2
  import { Root as Ee, Portal as Ce, Overlay as we, Content as ye } from "../dialog.js";
3
3
  import * as c from "react";
4
4
  import { useCallback as le, useMemo as Ie } from "react";
5
5
  import { commandScore as Re } from "./command-score.js";
6
6
  import { Primitive as R } from "@radix-ui/react-primitive";
7
7
  import { useId as F } from "@radix-ui/react-id";
8
- import { s as ke } from "../../../node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.0.0/node_modules/use-sync-external-store/shim/index.js";
8
+ import { s as ke } from "../../../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128/node_modules/use-sync-external-store/shim/index.js";
9
9
  import { ASK_AI_TRIGGER_VALUE as xe } from "../../constants/search.js";
10
10
  import { composeEventHandlers as Ae } from "../../utils/compose-event-handlers.js";
11
11
  import { useWidget as _e } from "../../providers/widget-provider.js";
@@ -224,6 +224,18 @@ const T = '[cmdk-group=""]', X = '[cmdk-group-items=""]', Me = '[cmdk-group-head
224
224
  ie(e);
225
225
  break;
226
226
  }
227
+ // case 'Home': {
228
+ // // First item
229
+ // e.preventDefault()
230
+ // updateSelectedToIndex(0)
231
+ // break
232
+ // }
233
+ // case 'End': {
234
+ // // Last item
235
+ // e.preventDefault()
236
+ // last()
237
+ // break
238
+ // }
227
239
  case "Enter":
228
240
  if (!e.nativeEvent.isComposing && e.keyCode !== 229) {
229
241
  e.preventDefault();
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Combobox atom using @zag-js/combobox.
3
+ * Uncontrolled: use defaultValue only (value is always string[]).
4
+ * When multiple, selected values are shown as tags; search via stateful options + onInputValueChange.
5
+ * getRootNode supports Shadow DOM / iframe.
6
+ */
7
+ import * as combobox from '@zag-js/combobox';
8
+ import * as React from 'react';
9
+ export interface ComboboxOption {
10
+ label: string;
11
+ value: string;
12
+ }
13
+ export interface ComboboxRootProps {
14
+ children?: React.ReactNode;
15
+ /** Initial selected values (always array; single = [one value]). */
16
+ defaultValue?: string[];
17
+ /** Full list of options (same shape as SelectItem). */
18
+ items: ComboboxOption[];
19
+ multiple?: boolean;
20
+ placeholder?: string;
21
+ name?: string;
22
+ disabled?: boolean;
23
+ required?: boolean;
24
+ id?: string;
25
+ /** Called when selection changes. Details.value is string[]. */
26
+ onValueChange?: (details: {
27
+ value: string[];
28
+ }) => void;
29
+ /** For form validation styling */
30
+ 'data-invalid'?: string | boolean;
31
+ }
32
+ declare const ComboboxRoot: React.ForwardRefExoticComponent<ComboboxRootProps & React.RefAttributes<HTMLDivElement>>;
33
+ export interface ComboboxControlProps {
34
+ children?: React.ReactNode;
35
+ className?: string;
36
+ style?: React.CSSProperties;
37
+ }
38
+ declare const ComboboxControl: React.ForwardRefExoticComponent<ComboboxControlProps & React.RefAttributes<HTMLDivElement>>;
39
+ export interface ComboboxInputProps extends Omit<React.ComponentPropsWithoutRef<'input'>, 'value' | 'defaultValue'> {
40
+ }
41
+ declare const ComboboxInput: React.ForwardRefExoticComponent<ComboboxInputProps & React.RefAttributes<HTMLInputElement>>;
42
+ export interface ComboboxTriggerProps {
43
+ children?: React.ReactNode;
44
+ className?: string;
45
+ style?: React.CSSProperties;
46
+ }
47
+ declare const ComboboxTrigger: React.ForwardRefExoticComponent<ComboboxTriggerProps & React.RefAttributes<HTMLButtonElement>>;
48
+ declare const ComboboxPositioner: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
49
+ export interface ComboboxContentProps {
50
+ children?: React.ReactNode;
51
+ className?: string;
52
+ style?: React.CSSProperties;
53
+ }
54
+ declare const ComboboxContent: React.ForwardRefExoticComponent<ComboboxContentProps & React.RefAttributes<HTMLDivElement>>;
55
+ export interface ComboboxListProps {
56
+ children?: React.ReactNode;
57
+ className?: string;
58
+ style?: React.CSSProperties;
59
+ }
60
+ declare const ComboboxList: React.ForwardRefExoticComponent<ComboboxListProps & React.RefAttributes<HTMLDivElement>>;
61
+ export interface ComboboxListItemsProps {
62
+ /** Render prop receiving filtered options. When empty, children([]) is called so you can render ListEmpty. */
63
+ children: (options: ComboboxOption[]) => React.ReactNode;
64
+ }
65
+ /** Provides filtered options to children. Use inside ComboboxList. When options are empty, render FormFieldComboboxListEmpty in your children. */
66
+ declare const ComboboxListItems: React.FC<ComboboxListItemsProps>;
67
+ export interface ComboboxListEmptyProps {
68
+ children?: React.ReactNode;
69
+ className?: string;
70
+ style?: React.CSSProperties;
71
+ }
72
+ /** Shown when the list has no options. Use inside ComboboxList when options.length === 0. Default children: "No results found". */
73
+ declare const ComboboxListEmpty: React.ForwardRefExoticComponent<ComboboxListEmptyProps & React.RefAttributes<HTMLDivElement>>;
74
+ export interface ComboboxItemProps {
75
+ children?: React.ReactNode;
76
+ item: ComboboxOption;
77
+ className?: string;
78
+ style?: React.CSSProperties;
79
+ }
80
+ declare const ComboboxItemComponent: React.ForwardRefExoticComponent<ComboboxItemProps & React.RefAttributes<HTMLDivElement>>;
81
+ export interface ComboboxItemTextProps {
82
+ children?: React.ReactNode;
83
+ className?: string;
84
+ style?: React.CSSProperties;
85
+ }
86
+ declare const ComboboxItemText: React.ForwardRefExoticComponent<ComboboxItemTextProps & React.RefAttributes<HTMLSpanElement>>;
87
+ export interface ComboboxItemIndicatorProps {
88
+ children?: React.ReactNode;
89
+ className?: string;
90
+ style?: React.CSSProperties;
91
+ }
92
+ declare const ComboboxItemIndicator: React.ForwardRefExoticComponent<ComboboxItemIndicatorProps & React.RefAttributes<HTMLSpanElement>>;
93
+ type ComboboxApi = ReturnType<typeof combobox.connect>;
94
+ declare function useComboboxApi(): ComboboxApi;
95
+ declare function useComboboxOptions(): ComboboxOption[];
96
+ /** Renders selected values as removable tags. Use inside ComboboxControl when multiple is true. */
97
+ export interface ComboboxSelectedTagsProps {
98
+ className?: string;
99
+ style?: React.CSSProperties;
100
+ renderTag?: (item: ComboboxOption) => React.ReactNode;
101
+ }
102
+ declare const ComboboxSelectedTags: React.ForwardRefExoticComponent<ComboboxSelectedTagsProps & React.RefAttributes<HTMLDivElement>>;
103
+ export { ComboboxRoot, ComboboxControl, ComboboxInput, ComboboxTrigger, ComboboxContent, ComboboxList, ComboboxListItems, ComboboxListEmpty, ComboboxItemComponent as ComboboxItem, ComboboxItemText, ComboboxItemIndicator, ComboboxSelectedTags, ComboboxPositioner, };
104
+ export { useComboboxApi, useComboboxOptions };
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { useRef as c, useReducer as i, useLayoutEffect as p, useEffect as m, createElement as h } from "react";
2
+ import { useRef as c, useReducer as i, createElement as p, useLayoutEffect as m, useEffect as h } from "react";
3
3
  import { createPortal as E } from "react-dom";
4
- const y = typeof document < "u" ? p : m;
4
+ const y = typeof document < "u" ? m : h;
5
5
  function C(u) {
6
6
  const { children: f, target: s, tag: a, host: d } = u, r = c(null), e = c(null), [, l] = i((t) => t + 1, 0);
7
7
  y(() => {
@@ -12,7 +12,7 @@ function C(u) {
12
12
  };
13
13
  }, []);
14
14
  const n = s?.current ?? e.current;
15
- return n ? E(f, n) : h("span", { ref: r });
15
+ return n ? E(f, n) : p("span", { ref: r });
16
16
  }
17
17
  export {
18
18
  C as Portal
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime"),rt=require("react"),st=require("react-dom"),He=require("@radix-ui/number"),E=require("@radix-ui/primitive"),ct=require("@radix-ui/react-collection"),H=require("@radix-ui/react-compose-refs"),lt=require("@radix-ui/react-context"),it=require("@radix-ui/react-direction"),at=require("@radix-ui/react-dismissable-layer"),dt=require("@radix-ui/react-focus-guards"),ut=require("@radix-ui/react-focus-scope"),Ie=require("@radix-ui/react-id"),Te=require("@radix-ui/react-popper");require("@radix-ui/react-portal");const _=require("@radix-ui/react-primitive"),pt=require("@radix-ui/react-slot"),ft=require("@radix-ui/react-use-callback-ref"),je=require("@radix-ui/react-use-controllable-state"),B=require("@radix-ui/react-use-layout-effect"),mt=require("aria-hidden"),ht=require("react-remove-scroll");function Pe(o){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const e in o)if(e!=="default"){const i=Object.getOwnPropertyDescriptor(o,e);Object.defineProperty(l,e,i.get?i:{enumerable:!0,get:()=>o[e]})}}return l.default=o,Object.freeze(l)}const t=Pe(rt),ke=Pe(st),ie=Pe(Te),St=[" ","Enter","ArrowUp","ArrowDown"],gt=[" ","Enter"],z="Select",[ae,de,vt]=ct.createCollection(z),[ee,xt]=lt.createContextScope(z,[vt,Te.createPopperScope]),ue=Te.createPopperScope(),[wt,q]=ee(z),[Ct,yt]=ee(z),Ee=o=>{const{__scopeSelect:l,children:e,open:i,defaultOpen:r,onOpenChange:u,value:n,defaultValue:s,onValueChange:c,dir:m,disabled:g,required:C}=o,R=ue(l),[P,y]=t.useState(null),[a,h]=t.useState(null),[v,f]=t.useState(!1),S=it.useDirection(m),[j,M]=je.useControllableState({prop:i,defaultProp:r??!1,onChange:u,caller:z}),[te,b]=je.useControllableState({prop:n,defaultProp:s,onChange:c,caller:z}),L=t.useRef(null),[oe,U]=t.useState(new Set);return d.jsx(ie.Root,{...R,children:d.jsx(wt,{required:C,scope:l,trigger:P,onTriggerChange:y,valueNode:a,onValueNodeChange:h,valueNodeHasChildren:v,onValueNodeHasChildrenChange:f,contentId:Ie.useId(),value:te,onValueChange:b,open:!!j,onOpenChange:M,dir:S,triggerPointerDownPosRef:L,disabled:g,children:d.jsx(ae.Provider,{scope:l,children:d.jsx(Ct,{scope:o.__scopeSelect,onNativeOptionAdd:t.useCallback(O=>{U(A=>new Set(A).add(O))},[]),onNativeOptionRemove:t.useCallback(O=>{U(A=>{const k=new Set(A);return k.delete(O),k})},[]),children:e})})})})};Ee.displayName=z;const Ve="SelectTrigger",Re=t.forwardRef((o,l)=>{const{__scopeSelect:e,disabled:i=!1,...r}=o,u=ue(e),n=q(Ve,e),s=n.disabled||i,c=H.useComposedRefs(l,n.onTriggerChange),m=de(e),g=t.useRef("touch"),[C,R,P]=ot(a=>{const h=m().filter(S=>!S.disabled),v=h.find(S=>S.value===n.value),f=nt(h,a,v);f!==void 0&&n.onValueChange(f.value)}),y=a=>{s||(n.onOpenChange(!0),P()),a&&(n.triggerPointerDownPosRef.current={x:Math.round(a.pageX),y:Math.round(a.pageY)})};return d.jsx(ie.Anchor,{asChild:!0,...u,children:d.jsx(_.Primitive.button,{type:"button",role:"combobox","aria-controls":n.contentId,"aria-expanded":n.open,"aria-required":n.required,"aria-autocomplete":"none",dir:n.dir,"data-state":n.open?"open":"closed",disabled:s,"data-disabled":s?"":void 0,"data-placeholder":tt(n.value)?"":void 0,...r,ref:c,onClick:E.composeEventHandlers(r.onClick,a=>{a.currentTarget.focus(),g.current!=="mouse"&&y(a)}),onPointerDown:E.composeEventHandlers(r.onPointerDown,a=>{g.current=a.pointerType;const h=a.target;h.hasPointerCapture(a.pointerId)&&h.releasePointerCapture(a.pointerId),a.button===0&&a.ctrlKey===!1&&a.pointerType==="mouse"&&(y(a),a.preventDefault())}),onKeyDown:E.composeEventHandlers(r.onKeyDown,a=>{const h=C.current!=="";!(a.ctrlKey||a.altKey||a.metaKey)&&a.key.length===1&&R(a.key),!(h&&a.key===" ")&&St.includes(a.key)&&(y(),a.preventDefault())})})})});Re.displayName=Ve;const Be="SelectValue",be=t.forwardRef((o,l)=>{const{__scopeSelect:e,className:i,style:r,children:u,placeholder:n="",...s}=o,c=q(Be,e),{onValueNodeHasChildrenChange:m}=c,g=u!==void 0,C=H.useComposedRefs(l,c.onValueNodeChange);return B.useLayoutEffect(()=>{m(g)},[m,g]),d.jsx(_.Primitive.span,{...s,ref:C,style:{pointerEvents:"none"},children:tt(c.value)?d.jsx(d.Fragment,{children:n}):u})});be.displayName=Be;const It="SelectIcon",Ne=t.forwardRef((o,l)=>{const{__scopeSelect:e,children:i,...r}=o;return d.jsx(_.Primitive.span,{"aria-hidden":!0,...r,ref:l,children:i||"▼"})});Ne.displayName=It;const Y="SelectContent",_e=t.forwardRef((o,l)=>{const e=q(Y,o.__scopeSelect),[i,r]=t.useState();if(B.useLayoutEffect(()=>{r(new DocumentFragment)},[]),!e.open){const u=i;return u?ke.createPortal(d.jsx(qe,{scope:o.__scopeSelect,children:d.jsx(ae.Slot,{scope:o.__scopeSelect,children:d.jsx("div",{children:o.children})})}),u):null}return d.jsx(Fe,{...o,ref:l})});_e.displayName=Y;const D=10,[qe,F]=ee(Y),Tt="SelectContentImpl",Pt=pt.createSlot("SelectContent.RemoveScroll"),Fe=t.forwardRef((o,l)=>{const{__scopeSelect:e,position:i="item-aligned",onCloseAutoFocus:r,onEscapeKeyDown:u,onPointerDownOutside:n,side:s,sideOffset:c,align:m,alignOffset:g,arrowPadding:C,collisionBoundary:R,collisionPadding:P,sticky:y,hideWhenDetached:a,avoidCollisions:h,...v}=o,f=q(Y,e),[S,j]=t.useState(null),[M,te]=t.useState(null),b=H.useComposedRefs(l,p=>j(p)),[L,oe]=t.useState(null),[U,O]=t.useState(null),A=de(e),[k,X]=t.useState(!1),W=t.useRef(!1);t.useEffect(()=>{if(S)return mt.hideOthers(S)},[S]),dt.useFocusGuards();const Z=t.useCallback(p=>{const[I,...N]=A().map(T=>T.ref.current),[x]=N.slice(-1),w=document.activeElement;for(const T of p)if(T===w||(T?.scrollIntoView({block:"nearest"}),T===I&&M&&(M.scrollTop=0),T===x&&M&&(M.scrollTop=M.scrollHeight),T?.focus(),document.activeElement!==w))return},[A,M]),$=t.useCallback(()=>Z([L,S]),[Z,L,S]);t.useEffect(()=>{k&&$()},[k,$]);const{onOpenChange:J,triggerPointerDownPosRef:V}=f;t.useEffect(()=>{if(S){let p={x:0,y:0};const I=x=>{p={x:Math.abs(Math.round(x.pageX)-(V.current?.x??0)),y:Math.abs(Math.round(x.pageY)-(V.current?.y??0))}},N=x=>{p.x<=10&&p.y<=10?x.preventDefault():S.contains(x.target)||J(!1),document.removeEventListener("pointermove",I),V.current=null};return V.current!==null&&(document.addEventListener("pointermove",I),document.addEventListener("pointerup",N,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",I),document.removeEventListener("pointerup",N,{capture:!0})}}},[S,J,V]),t.useEffect(()=>{const p=()=>J(!1);return window.addEventListener("blur",p),window.addEventListener("resize",p),()=>{window.removeEventListener("blur",p),window.removeEventListener("resize",p)}},[J]);const[pe,se]=ot(p=>{const I=A().filter(w=>!w.disabled),N=I.find(w=>w.ref.current===document.activeElement),x=nt(I,p,N);x&&setTimeout(()=>x.ref.current.focus())}),fe=t.useCallback((p,I,N)=>{const x=!W.current&&!N;(f.value!==void 0&&f.value===I||x)&&(oe(p),x&&(W.current=!0))},[f.value]),me=t.useCallback(()=>S?.focus(),[S]),Q=t.useCallback((p,I,N)=>{const x=!W.current&&!N;(f.value!==void 0&&f.value===I||x)&&O(p)},[f.value]),ce=i==="popper"?ve:Ue,ne=ce===ve?{side:s,sideOffset:c,align:m,alignOffset:g,arrowPadding:C,collisionBoundary:R,collisionPadding:P,sticky:y,hideWhenDetached:a,avoidCollisions:h}:{};return d.jsx(qe,{scope:e,content:S,viewport:M,onViewportChange:te,itemRefCallback:fe,selectedItem:L,onItemLeave:me,itemTextRefCallback:Q,focusSelectedItem:$,selectedItemText:U,position:i,isPositioned:k,searchRef:pe,children:d.jsx(ht.RemoveScroll,{as:Pt,allowPinchZoom:!0,removeScrollBar:!1,children:d.jsx(ut.FocusScope,{asChild:!0,trapped:f.open,onMountAutoFocus:p=>{p.preventDefault()},onUnmountAutoFocus:E.composeEventHandlers(r,p=>{f.trigger?.focus({preventScroll:!0}),p.preventDefault()}),children:d.jsx(at.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:u,onPointerDownOutside:n,onFocusOutside:p=>p.preventDefault(),onDismiss:()=>f.onOpenChange(!1),children:d.jsx(ce,{role:"listbox",id:f.contentId,"data-state":f.open?"open":"closed",dir:f.dir,onContextMenu:p=>p.preventDefault(),...v,...ne,onPlaced:()=>X(!0),ref:b,style:{display:"flex",flexDirection:"column",outline:"none",...v.style},onKeyDown:E.composeEventHandlers(v.onKeyDown,p=>{const I=p.ctrlKey||p.altKey||p.metaKey;if(p.key==="Tab"&&p.preventDefault(),!I&&p.key.length===1&&se(p.key),["ArrowUp","ArrowDown","Home","End"].includes(p.key)){let x=A().filter(w=>!w.disabled).map(w=>w.ref.current);if(["ArrowUp","End"].includes(p.key)&&(x=x.slice().reverse()),["ArrowUp","ArrowDown"].includes(p.key)){const w=p.target,T=x.indexOf(w);x=x.slice(T+1)}setTimeout(()=>Z(x)),p.preventDefault()}})})})})})})});Fe.displayName=Tt;const Et="SelectItemAlignedPosition",Ue=t.forwardRef((o,l)=>{const{__scopeSelect:e,onPlaced:i,...r}=o,u=q(Y,e),n=F(Y,e),[s,c]=t.useState(null),[m,g]=t.useState(null),C=H.useComposedRefs(l,b=>g(b)),R=de(e),P=t.useRef(!1),y=t.useRef(!0),{viewport:a,selectedItem:h,selectedItemText:v,focusSelectedItem:f}=n,S=t.useCallback(()=>{if(u.trigger&&u.valueNode&&s&&m&&a&&h&&v){const b=u.trigger.getBoundingClientRect(),L=m.getBoundingClientRect(),oe=u.valueNode.getBoundingClientRect(),U=v.getBoundingClientRect();if(u.dir!=="rtl"){const w=U.left-L.left,T=oe.left-w,K=b.left-T,G=b.width+K,he=Math.max(G,L.width),Se=window.innerWidth-D,ge=He.clamp(T,[D,Math.max(D,Se-he)]);s.style.minWidth=G+"px",s.style.left=ge+"px"}else{const w=L.right-U.right,T=window.innerWidth-oe.right-w,K=window.innerWidth-b.right-T,G=b.width+K,he=Math.max(G,L.width),Se=window.innerWidth-D,ge=He.clamp(T,[D,Math.max(D,Se-he)]);s.style.minWidth=G+"px",s.style.right=ge+"px"}const O=R(),A=window.innerHeight-D*2,k=a.scrollHeight,X=window.getComputedStyle(m),W=Number.parseInt(X.borderTopWidth,10),Z=Number.parseInt(X.paddingTop,10),$=Number.parseInt(X.borderBottomWidth,10),J=Number.parseInt(X.paddingBottom,10),V=W+Z+k+J+$,pe=Math.min(h.offsetHeight*5,V),se=window.getComputedStyle(a),fe=Number.parseInt(se.paddingTop,10),me=Number.parseInt(se.paddingBottom,10),Q=b.top+b.height/2-D,ce=A-Q,ne=h.offsetHeight/2,p=h.offsetTop+ne,I=W+Z+p,N=V-I;if(I<=Q){const w=O.length>0&&h===O[O.length-1].ref.current;s.style.bottom="0px";const T=m.clientHeight-a.offsetTop-a.offsetHeight,K=Math.max(ce,ne+(w?me:0)+T+$),G=I+K;s.style.height=G+"px"}else{const w=O.length>0&&h===O[0].ref.current;s.style.top="0px";const K=Math.max(Q,W+a.offsetTop+(w?fe:0)+ne)+N;s.style.height=K+"px",a.scrollTop=I-Q+a.offsetTop}s.style.margin=`${D}px 0`,s.style.minHeight=pe+"px",s.style.maxHeight=A+"px",i?.(),requestAnimationFrame(()=>P.current=!0)}},[R,u.trigger,u.valueNode,s,m,a,h,v,u.dir,i]);B.useLayoutEffect(()=>S(),[S]);const[j,M]=t.useState();B.useLayoutEffect(()=>{m&&M(window.getComputedStyle(m).zIndex)},[m]);const te=t.useCallback(b=>{b&&y.current===!0&&(S(),f?.(),y.current=!1)},[S,f]);return d.jsx(bt,{scope:e,contentWrapper:s,shouldExpandOnScrollRef:P,onScrollButtonChange:te,children:d.jsx("div",{ref:c,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:j},children:d.jsx(_.Primitive.div,{...r,ref:C,style:{boxSizing:"border-box",maxHeight:"100%",...r.style}})})})});Ue.displayName=Et;const Rt="SelectPopperPosition",ve=t.forwardRef((o,l)=>{const{__scopeSelect:e,align:i="start",collisionPadding:r=D,...u}=o,n=ue(e);return d.jsx(ie.Content,{...n,...u,ref:l,align:i,collisionPadding:r,style:{boxSizing:"border-box",...u.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});ve.displayName=Rt;const[bt,Me]=ee(Y,{}),xe="SelectViewport",Oe=t.forwardRef((o,l)=>{const{__scopeSelect:e,nonce:i,...r}=o,u=F(xe,e),n=Me(xe,e),s=H.useComposedRefs(l,u.onViewportChange),c=t.useRef(0);return d.jsxs(d.Fragment,{children:[d.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:i}),d.jsx(ae.Slot,{scope:e,children:d.jsx(_.Primitive.div,{"data-radix-select-viewport":"",role:"presentation",...r,ref:s,style:{position:"relative",flex:1,overflow:"hidden auto",...r.style},onScroll:E.composeEventHandlers(r.onScroll,m=>{const g=m.currentTarget,{contentWrapper:C,shouldExpandOnScrollRef:R}=n;if(R?.current&&C){const P=Math.abs(c.current-g.scrollTop);if(P>0){const y=window.innerHeight-D*2,a=Number.parseFloat(C.style.minHeight),h=Number.parseFloat(C.style.height),v=Math.max(a,h);if(v<y){const f=v+P,S=Math.min(y,f),j=f-S;C.style.height=S+"px",C.style.bottom==="0px"&&(g.scrollTop=j>0?j:0,C.style.justifyContent="flex-end")}}}c.current=g.scrollTop})})})]})});Oe.displayName=xe;const We="SelectGroup",[Nt,_t]=ee(We),Ke=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o,r=Ie.useId();return d.jsx(Nt,{scope:e,id:r,children:d.jsx(_.Primitive.div,{role:"group","aria-labelledby":r,...i,ref:l})})});Ke.displayName=We;const Ge="SelectLabel",ze=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o,r=_t(Ge,e);return d.jsx(_.Primitive.div,{id:r.id,...i,ref:l})});ze.displayName=Ge;const le="SelectItem",[Mt,Ye]=ee(le),Ae=t.forwardRef((o,l)=>{const{__scopeSelect:e,value:i,disabled:r=!1,textValue:u,...n}=o,s=q(le,e),c=F(le,e),m=s.value===i,[g,C]=t.useState(u??""),[R,P]=t.useState(!1),y=H.useComposedRefs(l,f=>c.itemRefCallback?.(f,i,r)),a=Ie.useId(),h=t.useRef("touch"),v=()=>{r||(s.onValueChange(i),s.onOpenChange(!1))};if(i==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return d.jsx(Mt,{scope:e,value:i,disabled:r,textId:a,isSelected:m,onItemTextChange:t.useCallback(f=>{C(S=>S||(f?.textContent??"").trim())},[]),children:d.jsx(ae.ItemSlot,{scope:e,value:i,disabled:r,textValue:g,children:d.jsx(_.Primitive.div,{role:"option","aria-labelledby":a,"data-highlighted":R?"":void 0,"aria-selected":m&&R,"data-state":m?"checked":"unchecked","aria-disabled":r||void 0,"data-disabled":r?"":void 0,tabIndex:r?void 0:-1,...n,ref:y,onFocus:E.composeEventHandlers(n.onFocus,()=>P(!0)),onBlur:E.composeEventHandlers(n.onBlur,()=>P(!1)),onClick:E.composeEventHandlers(n.onClick,()=>{h.current!=="mouse"&&v()}),onPointerUp:E.composeEventHandlers(n.onPointerUp,()=>{h.current==="mouse"&&v()}),onPointerDown:E.composeEventHandlers(n.onPointerDown,f=>{h.current=f.pointerType}),onPointerMove:E.composeEventHandlers(n.onPointerMove,f=>{h.current=f.pointerType,r?c.onItemLeave?.():h.current==="mouse"&&f.currentTarget.focus({preventScroll:!0})}),onPointerLeave:E.composeEventHandlers(n.onPointerLeave,f=>{f.currentTarget===document.activeElement&&c.onItemLeave?.()}),onKeyDown:E.composeEventHandlers(n.onKeyDown,f=>{c.searchRef?.current!==""&&f.key===" "||(gt.includes(f.key)&&v(),f.key===" "&&f.preventDefault())})})})})});Ae.displayName=le;const re="SelectItemText",De=t.forwardRef((o,l)=>{const{__scopeSelect:e,className:i,style:r,...u}=o,n=q(re,e),s=F(re,e),c=Ye(re,e),m=yt(re,e),[g,C]=t.useState(null),R=H.useComposedRefs(l,v=>C(v),c.onItemTextChange,v=>s.itemTextRefCallback?.(v,c.value,c.disabled)),P=g?.textContent,y=t.useMemo(()=>d.jsx("option",{value:c.value,disabled:c.disabled,children:P},c.value),[c.disabled,c.value,P]),{onNativeOptionAdd:a,onNativeOptionRemove:h}=m;return B.useLayoutEffect(()=>(a(y),()=>h(y)),[a,h,y]),d.jsxs(d.Fragment,{children:[d.jsx(_.Primitive.span,{id:c.textId,...u,ref:R}),c.isSelected&&n.valueNode&&!n.valueNodeHasChildren?ke.createPortal(u.children,n.valueNode):null]})});De.displayName=re;const Xe="SelectItemIndicator",Le=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o;return Ye(Xe,e).isSelected?d.jsx(_.Primitive.span,{"aria-hidden":!0,...i,ref:l}):null});Le.displayName=Xe;const we="SelectScrollUpButton",Ze=t.forwardRef((o,l)=>{const e=F(we,o.__scopeSelect),i=Me(we,o.__scopeSelect),[r,u]=t.useState(!1),n=H.useComposedRefs(l,i.onScrollButtonChange);return B.useLayoutEffect(()=>{if(e.viewport&&e.isPositioned){let s=function(){const m=c.scrollTop>0;u(m)};const c=e.viewport;return s(),c.addEventListener("scroll",s),()=>c.removeEventListener("scroll",s)}},[e.viewport,e.isPositioned]),r?d.jsx(Je,{...o,ref:n,onAutoScroll:()=>{const{viewport:s,selectedItem:c}=e;s&&c&&(s.scrollTop=s.scrollTop-c.offsetHeight)}}):null});Ze.displayName=we;const Ce="SelectScrollDownButton",$e=t.forwardRef((o,l)=>{const e=F(Ce,o.__scopeSelect),i=Me(Ce,o.__scopeSelect),[r,u]=t.useState(!1),n=H.useComposedRefs(l,i.onScrollButtonChange);return B.useLayoutEffect(()=>{if(e.viewport&&e.isPositioned){let s=function(){const m=c.scrollHeight-c.clientHeight,g=Math.ceil(c.scrollTop)<m;u(g)};const c=e.viewport;return s(),c.addEventListener("scroll",s),()=>c.removeEventListener("scroll",s)}},[e.viewport,e.isPositioned]),r?d.jsx(Je,{...o,ref:n,onAutoScroll:()=>{const{viewport:s,selectedItem:c}=e;s&&c&&(s.scrollTop=s.scrollTop+c.offsetHeight)}}):null});$e.displayName=Ce;const Je=t.forwardRef((o,l)=>{const{__scopeSelect:e,onAutoScroll:i,...r}=o,u=F("SelectScrollButton",e),n=t.useRef(null),s=de(e),c=t.useCallback(()=>{n.current!==null&&(window.clearInterval(n.current),n.current=null)},[]);return t.useEffect(()=>()=>c(),[c]),B.useLayoutEffect(()=>{s().find(g=>g.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[s]),d.jsx(_.Primitive.div,{"aria-hidden":!0,...r,ref:l,style:{flexShrink:0,...r.style},onPointerDown:E.composeEventHandlers(r.onPointerDown,()=>{n.current===null&&(n.current=window.setInterval(i,50))}),onPointerMove:E.composeEventHandlers(r.onPointerMove,()=>{u.onItemLeave?.(),n.current===null&&(n.current=window.setInterval(i,50))}),onPointerLeave:E.composeEventHandlers(r.onPointerLeave,()=>{c()})})}),Ot="SelectSeparator",Qe=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o;return d.jsx(_.Primitive.div,{"aria-hidden":!0,...i,ref:l})});Qe.displayName=Ot;const ye="SelectArrow",et=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o,r=ue(e),u=q(ye,e),n=F(ye,e);return u.open&&n.position==="popper"?d.jsx(ie.Arrow,{...r,...i,ref:l}):null});et.displayName=ye;function tt(o){return o===""||o===void 0}function ot(o){const l=ft.useCallbackRef(o),e=t.useRef(""),i=t.useRef(0),r=t.useCallback(n=>{const s=e.current+n;l(s),function c(m){e.current=m,window.clearTimeout(i.current),m!==""&&(i.current=window.setTimeout(()=>c(""),1e3))}(s)},[l]),u=t.useCallback(()=>{e.current="",window.clearTimeout(i.current)},[]);return t.useEffect(()=>()=>window.clearTimeout(i.current),[]),[e,r,u]}function nt(o,l,e){const r=l.length>1&&Array.from(l).every(m=>m===l[0])?l[0]:l,u=e?o.indexOf(e):-1;let n=At(o,Math.max(u,0));r.length===1&&(n=n.filter(m=>m!==e));const c=n.find(m=>m.textValue.toLowerCase().startsWith(r.toLowerCase()));return c!==e?c:void 0}function At(o,l){return o.map((e,i)=>o[(l+i)%o.length])}const Dt=Ee,Lt=Re,Ht=be,jt=Ne,kt=_e,Vt=Oe,Bt=Ae,qt=De,Ft=Le;exports.Content=kt;exports.Icon=jt;exports.Item=Bt;exports.ItemIndicator=Ft;exports.ItemText=qt;exports.Root=Dt;exports.Select=Ee;exports.SelectArrow=et;exports.SelectContent=_e;exports.SelectGroup=Ke;exports.SelectIcon=Ne;exports.SelectItem=Ae;exports.SelectItemIndicator=Le;exports.SelectItemText=De;exports.SelectLabel=ze;exports.SelectScrollDownButton=$e;exports.SelectScrollUpButton=Ze;exports.SelectSeparator=Qe;exports.SelectTrigger=Re;exports.SelectValue=be;exports.SelectViewport=Oe;exports.Trigger=Lt;exports.Value=Ht;exports.Viewport=Vt;exports.createSelectScope=xt;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime"),rt=require("react"),st=require("react-dom"),He=require("@radix-ui/number"),E=require("@radix-ui/primitive"),ct=require("@radix-ui/react-collection"),H=require("@radix-ui/react-compose-refs"),lt=require("@radix-ui/react-context"),it=require("@radix-ui/react-direction"),at=require("@radix-ui/react-dismissable-layer"),dt=require("@radix-ui/react-focus-guards"),ut=require("@radix-ui/react-focus-scope"),Ie=require("@radix-ui/react-id"),Te=require("@radix-ui/react-popper");require("@radix-ui/react-portal");const _=require("@radix-ui/react-primitive"),pt=require("@radix-ui/react-slot"),ft=require("@radix-ui/react-use-callback-ref"),je=require("@radix-ui/react-use-controllable-state"),B=require("@radix-ui/react-use-layout-effect"),mt=require("aria-hidden"),ht=require("react-remove-scroll");function Pe(o){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const e in o)if(e!=="default"){const i=Object.getOwnPropertyDescriptor(o,e);Object.defineProperty(l,e,i.get?i:{enumerable:!0,get:()=>o[e]})}}return l.default=o,Object.freeze(l)}const t=Pe(rt),ke=Pe(st),ie=Pe(Te),St=[" ","Enter","ArrowUp","ArrowDown"],gt=[" ","Enter"],z="Select",[ae,de,vt]=ct.createCollection(z),[ee,xt]=lt.createContextScope(z,[vt,Te.createPopperScope]),ue=Te.createPopperScope(),[wt,q]=ee(z),[Ct,yt]=ee(z),Ee=o=>{const{__scopeSelect:l,children:e,open:i,defaultOpen:r,onOpenChange:u,value:n,defaultValue:s,onValueChange:c,dir:m,disabled:g,required:C}=o,R=ue(l),[P,y]=t.useState(null),[a,h]=t.useState(null),[v,f]=t.useState(!1),S=it.useDirection(m),[j,M]=je.useControllableState({prop:i,defaultProp:r??!1,onChange:u,caller:z}),[te,b]=je.useControllableState({prop:n,defaultProp:s,onChange:c,caller:z}),L=t.useRef(null),[oe,U]=t.useState(new Set);return d.jsx(ie.Root,{...R,children:d.jsx(wt,{required:C,scope:l,trigger:P,onTriggerChange:y,valueNode:a,onValueNodeChange:h,valueNodeHasChildren:v,onValueNodeHasChildrenChange:f,contentId:Ie.useId(),value:te,onValueChange:b,open:!!j,onOpenChange:M,dir:S,triggerPointerDownPosRef:L,disabled:g,children:d.jsx(ae.Provider,{scope:l,children:d.jsx(Ct,{scope:o.__scopeSelect,onNativeOptionAdd:t.useCallback(O=>{U(A=>new Set(A).add(O))},[]),onNativeOptionRemove:t.useCallback(O=>{U(A=>{const k=new Set(A);return k.delete(O),k})},[]),children:e})})})})};Ee.displayName=z;const Ve="SelectTrigger",Re=t.forwardRef((o,l)=>{const{__scopeSelect:e,disabled:i=!1,...r}=o,u=ue(e),n=q(Ve,e),s=n.disabled||i,c=H.useComposedRefs(l,n.onTriggerChange),m=de(e),g=t.useRef("touch"),[C,R,P]=ot(a=>{const h=m().filter(S=>!S.disabled),v=h.find(S=>S.value===n.value),f=nt(h,a,v);f!==void 0&&n.onValueChange(f.value)}),y=a=>{s||(n.onOpenChange(!0),P()),a&&(n.triggerPointerDownPosRef.current={x:Math.round(a.pageX),y:Math.round(a.pageY)})};return d.jsx(ie.Anchor,{asChild:!0,...u,children:d.jsx(_.Primitive.button,{type:"button",role:"combobox","aria-controls":n.contentId,"aria-expanded":n.open,"aria-required":n.required,"aria-autocomplete":"none",dir:n.dir,"data-state":n.open?"open":"closed",disabled:s,"data-disabled":s?"":void 0,"data-placeholder":tt(n.value)?"":void 0,...r,ref:c,onClick:E.composeEventHandlers(r.onClick,a=>{a.currentTarget.focus(),g.current!=="mouse"&&y(a)}),onPointerDown:E.composeEventHandlers(r.onPointerDown,a=>{g.current=a.pointerType;const h=a.target;h.hasPointerCapture(a.pointerId)&&h.releasePointerCapture(a.pointerId),a.button===0&&a.ctrlKey===!1&&a.pointerType==="mouse"&&(y(a),a.preventDefault())}),onKeyDown:E.composeEventHandlers(r.onKeyDown,a=>{const h=C.current!=="";!(a.ctrlKey||a.altKey||a.metaKey)&&a.key.length===1&&R(a.key),!(h&&a.key===" ")&&St.includes(a.key)&&(y(),a.preventDefault())})})})});Re.displayName=Ve;const Be="SelectValue",be=t.forwardRef((o,l)=>{const{__scopeSelect:e,className:i,style:r,children:u,placeholder:n="",...s}=o,c=q(Be,e),{onValueNodeHasChildrenChange:m}=c,g=u!==void 0,C=H.useComposedRefs(l,c.onValueNodeChange);return B.useLayoutEffect(()=>{m(g)},[m,g]),d.jsx(_.Primitive.span,{...s,ref:C,style:{pointerEvents:"none"},children:tt(c.value)?d.jsx(d.Fragment,{children:n}):u})});be.displayName=Be;const It="SelectIcon",Ne=t.forwardRef((o,l)=>{const{__scopeSelect:e,children:i,...r}=o;return d.jsx(_.Primitive.span,{"aria-hidden":!0,...r,ref:l,children:i||"▼"})});Ne.displayName=It;const Y="SelectContent",_e=t.forwardRef((o,l)=>{const e=q(Y,o.__scopeSelect),[i,r]=t.useState();if(B.useLayoutEffect(()=>{r(new DocumentFragment)},[]),!e.open){const u=i;return u?ke.createPortal(d.jsx(qe,{scope:o.__scopeSelect,children:d.jsx(ae.Slot,{scope:o.__scopeSelect,children:d.jsx("div",{children:o.children})})}),u):null}return d.jsx(Fe,{...o,ref:l})});_e.displayName=Y;const D=10,[qe,F]=ee(Y),Tt="SelectContentImpl",Pt=pt.createSlot("SelectContent.RemoveScroll"),Fe=t.forwardRef((o,l)=>{const{__scopeSelect:e,position:i="item-aligned",onCloseAutoFocus:r,onEscapeKeyDown:u,onPointerDownOutside:n,side:s,sideOffset:c,align:m,alignOffset:g,arrowPadding:C,collisionBoundary:R,collisionPadding:P,sticky:y,hideWhenDetached:a,avoidCollisions:h,...v}=o,f=q(Y,e),[S,j]=t.useState(null),[M,te]=t.useState(null),b=H.useComposedRefs(l,p=>j(p)),[L,oe]=t.useState(null),[U,O]=t.useState(null),A=de(e),[k,X]=t.useState(!1),W=t.useRef(!1);t.useEffect(()=>{if(S)return mt.hideOthers(S)},[S]),dt.useFocusGuards();const Z=t.useCallback(p=>{const[I,...N]=A().map(T=>T.ref.current),[x]=N.slice(-1),w=document.activeElement;for(const T of p)if(T===w||(T?.scrollIntoView({block:"nearest"}),T===I&&M&&(M.scrollTop=0),T===x&&M&&(M.scrollTop=M.scrollHeight),T?.focus(),document.activeElement!==w))return},[A,M]),$=t.useCallback(()=>Z([L,S]),[Z,L,S]);t.useEffect(()=>{k&&$()},[k,$]);const{onOpenChange:J,triggerPointerDownPosRef:V}=f;t.useEffect(()=>{if(S){let p={x:0,y:0};const I=x=>{p={x:Math.abs(Math.round(x.pageX)-(V.current?.x??0)),y:Math.abs(Math.round(x.pageY)-(V.current?.y??0))}},N=x=>{p.x<=10&&p.y<=10?x.preventDefault():S.contains(x.target)||J(!1),document.removeEventListener("pointermove",I),V.current=null};return V.current!==null&&(document.addEventListener("pointermove",I),document.addEventListener("pointerup",N,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",I),document.removeEventListener("pointerup",N,{capture:!0})}}},[S,J,V]),t.useEffect(()=>{const p=()=>J(!1);return window.addEventListener("blur",p),window.addEventListener("resize",p),()=>{window.removeEventListener("blur",p),window.removeEventListener("resize",p)}},[J]);const[pe,se]=ot(p=>{const I=A().filter(w=>!w.disabled),N=I.find(w=>w.ref.current===document.activeElement),x=nt(I,p,N);x&&setTimeout(()=>x.ref.current.focus())}),fe=t.useCallback((p,I,N)=>{const x=!W.current&&!N;(f.value!==void 0&&f.value===I||x)&&(oe(p),x&&(W.current=!0))},[f.value]),me=t.useCallback(()=>S?.focus(),[S]),Q=t.useCallback((p,I,N)=>{const x=!W.current&&!N;(f.value!==void 0&&f.value===I||x)&&O(p)},[f.value]),ce=i==="popper"?ve:Ue,ne=ce===ve?{side:s,sideOffset:c,align:m,alignOffset:g,arrowPadding:C,collisionBoundary:R,collisionPadding:P,sticky:y,hideWhenDetached:a,avoidCollisions:h}:{};return d.jsx(qe,{scope:e,content:S,viewport:M,onViewportChange:te,itemRefCallback:fe,selectedItem:L,onItemLeave:me,itemTextRefCallback:Q,focusSelectedItem:$,selectedItemText:U,position:i,isPositioned:k,searchRef:pe,children:d.jsx(ht.RemoveScroll,{as:Pt,allowPinchZoom:!0,removeScrollBar:!1,children:d.jsx(ut.FocusScope,{asChild:!0,trapped:f.open,onMountAutoFocus:p=>{p.preventDefault()},onUnmountAutoFocus:E.composeEventHandlers(r,p=>{f.trigger?.focus({preventScroll:!0}),p.preventDefault()}),children:d.jsx(at.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:u,onPointerDownOutside:n,onFocusOutside:p=>p.preventDefault(),onDismiss:()=>f.onOpenChange(!1),children:d.jsx(ce,{role:"listbox",id:f.contentId,"data-state":f.open?"open":"closed",dir:f.dir,onContextMenu:p=>p.preventDefault(),...v,...ne,onPlaced:()=>X(!0),ref:b,style:{display:"flex",flexDirection:"column",outline:"none",...v.style},onKeyDown:E.composeEventHandlers(v.onKeyDown,p=>{const I=p.ctrlKey||p.altKey||p.metaKey;if(p.key==="Tab"&&p.preventDefault(),!I&&p.key.length===1&&se(p.key),["ArrowUp","ArrowDown","Home","End"].includes(p.key)){let x=A().filter(w=>!w.disabled).map(w=>w.ref.current);if(["ArrowUp","End"].includes(p.key)&&(x=x.slice().reverse()),["ArrowUp","ArrowDown"].includes(p.key)){const w=p.target,T=x.indexOf(w);x=x.slice(T+1)}setTimeout(()=>Z(x)),p.preventDefault()}})})})})})})});Fe.displayName=Tt;const Et="SelectItemAlignedPosition",Ue=t.forwardRef((o,l)=>{const{__scopeSelect:e,onPlaced:i,...r}=o,u=q(Y,e),n=F(Y,e),[s,c]=t.useState(null),[m,g]=t.useState(null),C=H.useComposedRefs(l,b=>g(b)),R=de(e),P=t.useRef(!1),y=t.useRef(!0),{viewport:a,selectedItem:h,selectedItemText:v,focusSelectedItem:f}=n,S=t.useCallback(()=>{if(u.trigger&&u.valueNode&&s&&m&&a&&h&&v){const b=u.trigger.getBoundingClientRect(),L=m.getBoundingClientRect(),oe=u.valueNode.getBoundingClientRect(),U=v.getBoundingClientRect();if(u.dir!=="rtl"){const w=U.left-L.left,T=oe.left-w,K=b.left-T,G=b.width+K,he=Math.max(G,L.width),Se=window.innerWidth-D,ge=He.clamp(T,[D,Math.max(D,Se-he)]);s.style.minWidth=G+"px",s.style.left=ge+"px"}else{const w=L.right-U.right,T=window.innerWidth-oe.right-w,K=window.innerWidth-b.right-T,G=b.width+K,he=Math.max(G,L.width),Se=window.innerWidth-D,ge=He.clamp(T,[D,Math.max(D,Se-he)]);s.style.minWidth=G+"px",s.style.right=ge+"px"}const O=R(),A=window.innerHeight-D*2,k=a.scrollHeight,X=window.getComputedStyle(m),W=Number.parseInt(X.borderTopWidth,10),Z=Number.parseInt(X.paddingTop,10),$=Number.parseInt(X.borderBottomWidth,10),J=Number.parseInt(X.paddingBottom,10),V=W+Z+k+J+$,pe=Math.min(h.offsetHeight*5,V),se=window.getComputedStyle(a),fe=Number.parseInt(se.paddingTop,10),me=Number.parseInt(se.paddingBottom,10),Q=b.top+b.height/2-D,ce=A-Q,ne=h.offsetHeight/2,p=h.offsetTop+ne,I=W+Z+p,N=V-I;if(I<=Q){const w=O.length>0&&h===O[O.length-1].ref.current;s.style.bottom="0px";const T=m.clientHeight-a.offsetTop-a.offsetHeight,K=Math.max(ce,ne+(w?me:0)+T+$),G=I+K;s.style.height=G+"px"}else{const w=O.length>0&&h===O[0].ref.current;s.style.top="0px";const K=Math.max(Q,W+a.offsetTop+(w?fe:0)+ne)+N;s.style.height=K+"px",a.scrollTop=I-Q+a.offsetTop}s.style.margin=`${D}px 0`,s.style.minHeight=pe+"px",s.style.maxHeight=A+"px",i?.(),requestAnimationFrame(()=>P.current=!0)}},[R,u.trigger,u.valueNode,s,m,a,h,v,u.dir,i]);B.useLayoutEffect(()=>S(),[S]);const[j,M]=t.useState();B.useLayoutEffect(()=>{m&&M(window.getComputedStyle(m).zIndex)},[m]);const te=t.useCallback(b=>{b&&y.current===!0&&(S(),f?.(),y.current=!1)},[S,f]);return d.jsx(bt,{scope:e,contentWrapper:s,shouldExpandOnScrollRef:P,onScrollButtonChange:te,children:d.jsx("div",{ref:c,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:j},children:d.jsx(_.Primitive.div,{...r,ref:C,style:{boxSizing:"border-box",maxHeight:"100%",...r.style}})})})});Ue.displayName=Et;const Rt="SelectPopperPosition",ve=t.forwardRef((o,l)=>{const{__scopeSelect:e,align:i="start",collisionPadding:r=D,...u}=o,n=ue(e);return d.jsx(ie.Content,{...n,...u,ref:l,align:i,collisionPadding:r,style:{boxSizing:"border-box",...u.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});ve.displayName=Rt;const[bt,Me]=ee(Y,{}),xe="SelectViewport",Oe=t.forwardRef((o,l)=>{const{__scopeSelect:e,nonce:i,...r}=o,u=F(xe,e),n=Me(xe,e),s=H.useComposedRefs(l,u.onViewportChange),c=t.useRef(0);return d.jsxs(d.Fragment,{children:[d.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:i}),d.jsx(ae.Slot,{scope:e,children:d.jsx(_.Primitive.div,{"data-radix-select-viewport":"",role:"presentation",...r,ref:s,style:{position:"relative",flex:1,overflow:"hidden auto",...r.style},onScroll:E.composeEventHandlers(r.onScroll,m=>{const g=m.currentTarget,{contentWrapper:C,shouldExpandOnScrollRef:R}=n;if(R?.current&&C){const P=Math.abs(c.current-g.scrollTop);if(P>0){const y=window.innerHeight-D*2,a=Number.parseFloat(C.style.minHeight),h=Number.parseFloat(C.style.height),v=Math.max(a,h);if(v<y){const f=v+P,S=Math.min(y,f),j=f-S;C.style.height=S+"px",C.style.bottom==="0px"&&(g.scrollTop=j>0?j:0,C.style.justifyContent="flex-end")}}}c.current=g.scrollTop})})})]})});Oe.displayName=xe;const We="SelectGroup",[Nt,_t]=ee(We),Ke=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o,r=Ie.useId();return d.jsx(Nt,{scope:e,id:r,children:d.jsx(_.Primitive.div,{role:"group","aria-labelledby":r,...i,ref:l})})});Ke.displayName=We;const Ge="SelectLabel",ze=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o,r=_t(Ge,e);return d.jsx(_.Primitive.div,{id:r.id,...i,ref:l})});ze.displayName=Ge;const le="SelectItem",[Mt,Ye]=ee(le),Ae=t.forwardRef((o,l)=>{const{__scopeSelect:e,value:i,disabled:r=!1,textValue:u,...n}=o,s=q(le,e),c=F(le,e),m=s.value===i,[g,C]=t.useState(u??""),[R,P]=t.useState(!1),y=H.useComposedRefs(l,f=>c.itemRefCallback?.(f,i,r)),a=Ie.useId(),h=t.useRef("touch"),v=()=>{r||(s.onValueChange(i),s.onOpenChange(!1))};if(i==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return d.jsx(Mt,{scope:e,value:i,disabled:r,textId:a,isSelected:m,onItemTextChange:t.useCallback(f=>{C(S=>S||(f?.textContent??"").trim())},[]),children:d.jsx(ae.ItemSlot,{scope:e,value:i,disabled:r,textValue:g,children:d.jsx(_.Primitive.div,{role:"option","aria-labelledby":a,"data-highlighted":R?"":void 0,"aria-selected":m&&R,"data-state":m?"checked":"unchecked","aria-disabled":r||void 0,"data-disabled":r?"":void 0,tabIndex:r?void 0:-1,...n,ref:y,onFocus:E.composeEventHandlers(n.onFocus,()=>P(!0)),onBlur:E.composeEventHandlers(n.onBlur,()=>P(!1)),onClick:E.composeEventHandlers(n.onClick,()=>{h.current!=="mouse"&&v()}),onPointerUp:E.composeEventHandlers(n.onPointerUp,()=>{h.current==="mouse"&&v()}),onPointerDown:E.composeEventHandlers(n.onPointerDown,f=>{h.current=f.pointerType}),onPointerMove:E.composeEventHandlers(n.onPointerMove,f=>{h.current=f.pointerType,r?c.onItemLeave?.():h.current==="mouse"&&f.currentTarget.focus({preventScroll:!0})}),onPointerLeave:E.composeEventHandlers(n.onPointerLeave,f=>{f.currentTarget===document.activeElement&&c.onItemLeave?.()}),onKeyDown:E.composeEventHandlers(n.onKeyDown,f=>{c.searchRef?.current!==""&&f.key===" "||(gt.includes(f.key)&&v(),f.key===" "&&f.preventDefault())})})})})});Ae.displayName=le;const re="SelectItemText",De=t.forwardRef((o,l)=>{const{__scopeSelect:e,className:i,style:r,...u}=o,n=q(re,e),s=F(re,e),c=Ye(re,e),m=yt(re,e),[g,C]=t.useState(null),R=H.useComposedRefs(l,v=>C(v),c.onItemTextChange,v=>s.itemTextRefCallback?.(v,c.value,c.disabled)),P=g?.textContent,y=t.useMemo(()=>d.jsx("option",{value:c.value,disabled:c.disabled,children:P},c.value),[c.disabled,c.value,P]),{onNativeOptionAdd:a,onNativeOptionRemove:h}=m;return B.useLayoutEffect(()=>(a(y),()=>h(y)),[a,h,y]),d.jsxs(d.Fragment,{children:[d.jsx(_.Primitive.span,{id:c.textId,...u,ref:R}),c.isSelected&&n.valueNode&&!n.valueNodeHasChildren?ke.createPortal(u.children,n.valueNode):null]})});De.displayName=re;const Xe="SelectItemIndicator",Le=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o;return Ye(Xe,e).isSelected?d.jsx(_.Primitive.span,{"aria-hidden":!0,...i,ref:l}):null});Le.displayName=Xe;const we="SelectScrollUpButton",Ze=t.forwardRef((o,l)=>{const e=F(we,o.__scopeSelect),i=Me(we,o.__scopeSelect),[r,u]=t.useState(!1),n=H.useComposedRefs(l,i.onScrollButtonChange);return B.useLayoutEffect(()=>{if(e.viewport&&e.isPositioned){let s=function(){const m=c.scrollTop>0;u(m)};const c=e.viewport;return s(),c.addEventListener("scroll",s),()=>c.removeEventListener("scroll",s)}},[e.viewport,e.isPositioned]),r?d.jsx(Je,{...o,ref:n,onAutoScroll:()=>{const{viewport:s,selectedItem:c}=e;s&&c&&(s.scrollTop=s.scrollTop-c.offsetHeight)}}):null});Ze.displayName=we;const Ce="SelectScrollDownButton",$e=t.forwardRef((o,l)=>{const e=F(Ce,o.__scopeSelect),i=Me(Ce,o.__scopeSelect),[r,u]=t.useState(!1),n=H.useComposedRefs(l,i.onScrollButtonChange);return B.useLayoutEffect(()=>{if(e.viewport&&e.isPositioned){let s=function(){const m=c.scrollHeight-c.clientHeight,g=Math.ceil(c.scrollTop)<m;u(g)};const c=e.viewport;return s(),c.addEventListener("scroll",s),()=>c.removeEventListener("scroll",s)}},[e.viewport,e.isPositioned]),r?d.jsx(Je,{...o,ref:n,onAutoScroll:()=>{const{viewport:s,selectedItem:c}=e;s&&c&&(s.scrollTop=s.scrollTop+c.offsetHeight)}}):null});$e.displayName=Ce;const Je=t.forwardRef((o,l)=>{const{__scopeSelect:e,onAutoScroll:i,...r}=o,u=F("SelectScrollButton",e),n=t.useRef(null),s=de(e),c=t.useCallback(()=>{n.current!==null&&(window.clearInterval(n.current),n.current=null)},[]);return t.useEffect(()=>()=>c(),[c]),B.useLayoutEffect(()=>{s().find(g=>g.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[s]),d.jsx(_.Primitive.div,{"aria-hidden":!0,...r,ref:l,style:{flexShrink:0,...r.style},onPointerDown:E.composeEventHandlers(r.onPointerDown,()=>{n.current===null&&(n.current=window.setInterval(i,50))}),onPointerMove:E.composeEventHandlers(r.onPointerMove,()=>{u.onItemLeave?.(),n.current===null&&(n.current=window.setInterval(i,50))}),onPointerLeave:E.composeEventHandlers(r.onPointerLeave,()=>{c()})})}),Ot="SelectSeparator",Qe=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o;return d.jsx(_.Primitive.div,{"aria-hidden":!0,...i,ref:l})});Qe.displayName=Ot;const ye="SelectArrow",et=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o,r=ue(e),u=q(ye,e),n=F(ye,e);return u.open&&n.position==="popper"?d.jsx(ie.Arrow,{...r,...i,ref:l}):null});et.displayName=ye;function tt(o){return o===""||o===void 0}function ot(o){const l=ft.useCallbackRef(o),e=t.useRef(""),i=t.useRef(0),r=t.useCallback(n=>{const s=e.current+n;l(s),(function c(m){e.current=m,window.clearTimeout(i.current),m!==""&&(i.current=window.setTimeout(()=>c(""),1e3))})(s)},[l]),u=t.useCallback(()=>{e.current="",window.clearTimeout(i.current)},[]);return t.useEffect(()=>()=>window.clearTimeout(i.current),[]),[e,r,u]}function nt(o,l,e){const r=l.length>1&&Array.from(l).every(m=>m===l[0])?l[0]:l,u=e?o.indexOf(e):-1;let n=At(o,Math.max(u,0));r.length===1&&(n=n.filter(m=>m!==e));const c=n.find(m=>m.textValue.toLowerCase().startsWith(r.toLowerCase()));return c!==e?c:void 0}function At(o,l){return o.map((e,i)=>o[(l+i)%o.length])}const Dt=Ee,Lt=Re,Ht=be,jt=Ne,kt=_e,Vt=Oe,Bt=Ae,qt=De,Ft=Le;exports.Content=kt;exports.Icon=jt;exports.Item=Bt;exports.ItemIndicator=Ft;exports.ItemText=qt;exports.Root=Dt;exports.Select=Ee;exports.SelectArrow=et;exports.SelectContent=_e;exports.SelectGroup=Ke;exports.SelectIcon=Ne;exports.SelectItem=Ae;exports.SelectItemIndicator=Le;exports.SelectItemText=De;exports.SelectLabel=ze;exports.SelectScrollDownButton=$e;exports.SelectScrollUpButton=Ze;exports.SelectSeparator=Qe;exports.SelectTrigger=Re;exports.SelectValue=be;exports.SelectViewport=Oe;exports.Trigger=Lt;exports.Value=Ht;exports.Viewport=Vt;exports.createSelectScope=xt;
@@ -733,9 +733,9 @@ function $e(o) {
733
733
  const i = st(o), e = t.useRef(""), l = t.useRef(0), r = t.useCallback(
734
734
  (n) => {
735
735
  const c = e.current + n;
736
- i(c), function s(f) {
736
+ i(c), (function s(f) {
737
737
  e.current = f, window.clearTimeout(l.current), f !== "" && (l.current = window.setTimeout(() => s(""), 1e3));
738
- }(c);
738
+ })(c);
739
739
  },
740
740
  [i]
741
741
  ), d = t.useCallback(() => {
@@ -1,16 +1,16 @@
1
1
  "use client";
2
- import { jsxs as f, jsx as o } from "react/jsx-runtime";
3
- import { createContext as w, useContext as p, useState as i, useMemo as v } from "react";
2
+ import { jsx as o, jsxs as f } from "react/jsx-runtime";
3
+ import { useState as i, useMemo as w, createContext as p, useContext as v } from "react";
4
4
  import S from "./root.js";
5
5
  import { useId as k } from "@radix-ui/react-id";
6
- const c = w(void 0), y = () => p(c);
6
+ const c = p(void 0), y = () => v(c);
7
7
  function I({
8
8
  wrapperStyles: t = {},
9
9
  children: s,
10
10
  customStyles: d,
11
11
  styles: u
12
12
  }) {
13
- const [n, l] = i(null), [r, h] = i(null), m = v(() => ({ shadowHost: n, rootElement: r }), [n, r]), x = k(), a = S.div;
13
+ const [n, l] = i(null), [r, h] = i(null), m = w(() => ({ shadowHost: n, rootElement: r }), [n, r]), x = k(), a = S.div;
14
14
  return /* @__PURE__ */ f(
15
15
  a,
16
16
  {
@@ -0,0 +1,3 @@
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../../hooks/use-inkeep-api-client.cjs");function r(t){const e=Number(t.code)||Number(t.statusCode);if(e&&!Number.isNaN(e))return e;try{const s=Number(JSON.parse(t.message??"").status);return s&&!Number.isNaN(s)?s:null}catch{return null}}function o(t){const e=r(t),s=n.parseAuthError(e??0,{detail:t.message??""});return s!==null?s:e===401?"session":null}function a(t){const e=r(t);return e===400||e===429}const u=`Hmm..
2
+
3
+ It seems I might be having some issues right now. Please clear the chat and try again.`,E="Please try again.",i="You're sending requests too quickly. Please wait a moment and try again.",c=8e3;exports.DEFAULT_ERROR_MESSAGE=u;exports.RATE_LIMIT_MESSAGE=i;exports.RECOVERABLE_FALLBACK_MESSAGE=E;exports.RECOVERABLE_NOTIFICATION_DURATION_MS=c;exports.isRecoverableError=a;exports.resolveHttpStatusCode=r;exports.resolveStreamingAuthError=o;
@@ -0,0 +1,26 @@
1
+ export interface ErrorWithCode extends Error {
2
+ code?: string | number;
3
+ statusCode?: number;
4
+ }
5
+ /**
6
+ * Extracts the HTTP status code from an AI SDK transport error.
7
+ *
8
+ * The status may live in error.code, error.statusCode, or inside a JSON-stringified
9
+ * error.message body ({ status: 400, ... }). Returns null if unparseable.
10
+ */
11
+ export declare function resolveHttpStatusCode(error: Error): number | null;
12
+ /**
13
+ * Classifies a streaming-transport error as a PoW or session auth failure, or null.
14
+ */
15
+ export declare function resolveStreamingAuthError(error: Error): 'pow' | 'session' | null;
16
+ /**
17
+ * Recoverable errors are input-validation failures where the user can fix
18
+ * their input and retry without clearing the conversation.
19
+ *
20
+ * Allowlist approach: unknown/unparseable errors default to non-recoverable (blocking).
21
+ */
22
+ export declare function isRecoverableError(error: Error): boolean;
23
+ export declare const DEFAULT_ERROR_MESSAGE = "Hmm.. \n\nIt seems I might be having some issues right now. Please clear the chat and try again.";
24
+ export declare const RECOVERABLE_FALLBACK_MESSAGE = "Please try again.";
25
+ export declare const RATE_LIMIT_MESSAGE = "You're sending requests too quickly. Please wait a moment and try again.";
26
+ export declare const RECOVERABLE_NOTIFICATION_DURATION_MS = 8000;
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { parseAuthError as r } from "../../hooks/use-inkeep-api-client.js";
3
+ function n(t) {
4
+ const e = Number(t.code) || Number(t.statusCode);
5
+ if (e && !Number.isNaN(e)) return e;
6
+ try {
7
+ const s = Number(JSON.parse(t.message ?? "").status);
8
+ return s && !Number.isNaN(s) ? s : null;
9
+ } catch {
10
+ return null;
11
+ }
12
+ }
13
+ function a(t) {
14
+ const e = n(t), s = r(e ?? 0, { detail: t.message ?? "" });
15
+ return s !== null ? s : e === 401 ? "session" : null;
16
+ }
17
+ function u(t) {
18
+ const e = n(t);
19
+ return e === 400 || e === 429;
20
+ }
21
+ const i = `Hmm..
22
+
23
+ It seems I might be having some issues right now. Please clear the chat and try again.`, c = "Please try again.", l = "You're sending requests too quickly. Please wait a moment and try again.", m = 8e3;
24
+ export {
25
+ i as DEFAULT_ERROR_MESSAGE,
26
+ l as RATE_LIMIT_MESSAGE,
27
+ c as RECOVERABLE_FALLBACK_MESSAGE,
28
+ m as RECOVERABLE_NOTIFICATION_DURATION_MS,
29
+ u as isRecoverableError,
30
+ n as resolveHttpStatusCode,
31
+ a as resolveStreamingAuthError
32
+ };
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),d=require("react"),E=require("../../atoms/icons/custom-icon.cjs"),g=require("../../providers/image-preview-provider.cjs"),k=require("../../providers/message-provider.cjs"),u=require("./chat-provider.cjs"),l=require("../../atoms/file-upload.cjs"),_=require("../../utils/misc.cjs"),c=require("../../utils/compose-event-handlers.cjs"),a=require("../factory.cjs"),M=require("../../providers/config-provider.cjs"),x={"application/pdf":"filePdf","text/plain":"fileText","text/markdown":"fileMarkdown","text/html":"fileHtml","text/csv":"fileCsv","text/x-log":"fileLog","application/json":"fileJson"};function F(e){return e.startsWith("image/")}const p={"image/png":[".png"],"image/jpeg":[".jpg",".jpeg"],"image/webp":[".webp"],"application/pdf":[".pdf"],"text/plain":[".txt"],"text/markdown":[".md"],"text/html":[".html"],"text/csv":[".csv"],"text/x-log":[".log"],"application/json":[".json"]},j=new Set(Object.keys(p)),T=Object.values(p).flat().join(", "),P=10,f=1024*1024*10,L=Object.entries(p).reduce((e,[i,t])=>{for(const n of t)e[n]=i;return e},{});function N(e){if(e.type)return e;const i=`.${e.name.split(".").pop()?.toLowerCase()}`,t=L[i];return t?new File([e],e.name,{type:t}):e}function w(e){if(!e.length)return null;const i=t=>e.some(n=>n.errors.includes(t));return i("TOO_MANY_FILES")?{title:"Attachment limit reached",message:`You can only attach up to ${P} files per message.`}:i("FILE_INVALID_TYPE")?{title:"Unsupported file type",message:`Only ${T} files are supported.`}:i("FILE_TOO_LARGE")?{title:"File too large",message:`Files must be smaller than ${f/1024/1024}MB.`}:i("FILE_EXISTS")?{title:"File already exists",message:`The file "${e.find(n=>n.errors.includes("FILE_EXISTS"))?.file.name??"file"}" is already attached to this message.`}:{title:"File rejected",message:"This file could not be added."}}const y=a.ikp("div",{_id:"aiChatMessage__Files"}),A=({children:e,...i})=>{const{message:t}=k.useMessage();if(t.role!=="user")return null;const n=(t.parts??[]).filter(s=>{if(s.type!=="file")return!1;const r=s.mediaType;return j.has(r??"")});return n.length?o.jsx(y,{...i,children:e(n)}):null},S=a.ikp("button",{_id:"aiChatMessage__File"}),U=({url:e,name:i,mediaType:t,onClick:n,...s})=>{const{openImagePreview:r}=g.useImagePreview(),[m,v]=d.useState(!0),h=d.useMemo(()=>new File([],i??"file",{type:t}),[i,t]);return o.jsx(b.Provider,{value:{file:h,objectUrl:e,isLoading:m,setIsLoading:v,onRemove:()=>{}},children:o.jsx(S,{type:"button","aria-label":F(t??"")?`Preview ${i??"file"}`:`Open ${i??"file"} in new tab`,"data-loading":_.dataAttr(m),onClick:c.composeEventHandlers(n,()=>{if(F(t??""))r({url:e,name:i??"file"});else if(e)if(e.startsWith("data:")){const I=document.createElement("a");I.href=e,I.download=i??"file",I.click()}else window.open(e,"_blank","noopener,noreferrer")}),...s})})},R=a.ikp("div",{_id:"aiChatInput__Fieldset"}),O=e=>{const i=l.useFileUploadApi();return o.jsx(R,{...i.getDropzoneProps({disableClick:!0}),"data-drag-over":_.dataAttr(i.dragging),...e})},D=({...e})=>{const{files:i,setFiles:t,showInputNotification:n}=u.useChat();return o.jsx(l.FileUploadRoot,{accept:p,maxFiles:P,maxFileSize:f,preventDocumentDrop:!0,acceptedFiles:i,onFileAccept:s=>t(s.files),onFileReject:s=>{const r=w(s.files);r&&n(r)},children:o.jsx(O,{...e})})},H=a.ikp("div",{_id:"aiChatInput__DropZone"}),q=a.ikp("div",{_id:"aiChatInput__Notification"}),X=e=>{const{inputNotification:i}=u.useChat();return i?o.jsx(q,{role:"alert",...e}):null},B=a.ikp("p",{_id:"aiChatInput__NotificationTitle"}),$=e=>{const{inputNotification:i}=u.useChat();return i?.title?o.jsx(B,{...e,children:i.title}):null},Y=a.ikp("p",{_id:"aiChatInput__NotificationMessage"}),Z=e=>{const{inputNotification:i}=u.useChat();return o.jsx(Y,{...e,children:i?.message})},z=a.ikp("button",{_id:"aiChatInput__NotificationClose"}),K=({onClick:e,...i})=>{const{clearInputNotification:t}=u.useChat();return o.jsx(z,{type:"button","aria-label":"Dismiss",onClick:c.composeEventHandlers(e,t),...i})},V=a.ikp("div",{_id:"aiChatInput__NotificationContent"}),W=a.ikp("div",{_id:"aiChatInput__NotificationHeader"}),G=a.ikp(E.CustomIcon,{_id:"aiChatInput__FileUploadButtonIcon",iconKey:"fileUpload"}),J=a.ikp("button",{_id:"aiChatInput__FileUploadButton"}),Q=e=>{const{aiChatSettings:i}=M.useInkeepConfig(),t=l.useFileUploadApi(),{onClick:n,...s}=e;return o.jsx(J,{type:"button","aria-label":"Upload file",disabled:i.isViewOnly,onClick:c.composeEventHandlers(n,()=>t.openFilePicker()),...s})},ee=a.ikp("input",{_id:"aiChatInput__FileInput"}),ie=e=>{const i=l.useFileUploadApi();return o.jsx(ee,{...e,...i.getHiddenInputProps()})},te=a.ikp("div",{_id:"aiChatInput__FileList"}),ne=({children:e,...i})=>{const n=l.useFileUploadApi().acceptedFiles;return n.length?o.jsx(te,{...i,children:e(n)}):null},b=d.createContext(null);function C(){const e=d.useContext(b);if(!e)throw new Error("useFileContext must be used within EmbeddedChatPrimitiveFileItem");return e}const oe=a.ikp("div",{_id:"aiChatInput__FileItem"}),ae=({file:e,...i})=>{const t=l.useFileUploadApi(),[n,s]=d.useState(void 0),[r,m]=d.useState(!0);d.useEffect(()=>t.createFileUrl(e,h=>{s(h),m(!0)}),[e]);const v=()=>t.deleteFile(e);return o.jsx(b.Provider,{value:{file:e,objectUrl:n,isLoading:r,setIsLoading:m,onRemove:v},children:o.jsx(oe,{"data-loading":_.dataAttr(r),...i})})},se=a.ikp("button",{_id:"aiChatInput__FilePreviewTrigger"}),re=({onClick:e,...i})=>{const{objectUrl:t,file:n}=C(),{openImagePreview:s}=g.useImagePreview();return o.jsx(se,{type:"button","aria-label":`Preview ${n.name}`,disabled:!t,onClick:c.composeEventHandlers(e,()=>{t&&s({url:t,name:n.name})}),...i})},de=a.ikp("span",{_id:"aiChatInput__FileContent"}),le=e=>o.jsx(de,{...e}),ce=a.ikp("img",{_id:"aiChatInput__FileThumbnail"}),me=({onLoad:e,...i})=>{const{objectUrl:t,file:n,setIsLoading:s}=C();return o.jsx(ce,{src:t,alt:n.name,onLoad:c.composeEventHandlers(e,()=>s(!1)),...i})},ue=({className:e})=>{const{file:i}=C(),t=x[N(i).type]??"fileText";return o.jsx(E.CustomIcon,{iconKey:t,className:e})},pe=a.ikp("span",{_id:"aiChatInput__FileName"}),Ce=e=>{const{file:i}=C();return o.jsx(pe,{...e,children:i.name})},ve=a.ikp("button",{_id:"aiChatInput__FileRemove"}),he=a.ikp(E.CustomIcon,{_id:"aiChatInput__FileRemoveIcon",iconKey:"close"}),Ie=({onClick:e,...i})=>{const{onRemove:t}=C();return o.jsx(ve,{type:"button","aria-label":"Remove file",onClick:c.composeEventHandlers(e,t),...i})};exports.ACCEPTED_FILE_EXTENSIONS=T;exports.ACCEPTED_FILE_MIME_TYPES=j;exports.EmbeddedChatPrimitiveDropZone=H;exports.EmbeddedChatPrimitiveFileContent=le;exports.EmbeddedChatPrimitiveFileInput=ie;exports.EmbeddedChatPrimitiveFileItem=ae;exports.EmbeddedChatPrimitiveFileList=ne;exports.EmbeddedChatPrimitiveFileName=Ce;exports.EmbeddedChatPrimitiveFilePreviewTrigger=re;exports.EmbeddedChatPrimitiveFileRemove=Ie;exports.EmbeddedChatPrimitiveFileRemoveIcon=he;exports.EmbeddedChatPrimitiveFileThumbnail=me;exports.EmbeddedChatPrimitiveFileTypeIcon=ue;exports.EmbeddedChatPrimitiveFileUploadButton=Q;exports.EmbeddedChatPrimitiveFileUploadButtonIcon=G;exports.EmbeddedChatPrimitiveInputFieldset=D;exports.EmbeddedChatPrimitiveInputNotification=X;exports.EmbeddedChatPrimitiveInputNotificationClose=K;exports.EmbeddedChatPrimitiveInputNotificationContent=V;exports.EmbeddedChatPrimitiveInputNotificationHeader=W;exports.EmbeddedChatPrimitiveInputNotificationMessage=Z;exports.EmbeddedChatPrimitiveInputNotificationTitle=$;exports.EmbeddedChatPrimitiveMessageFile=U;exports.EmbeddedChatPrimitiveMessageFiles=A;exports.FILE_ACCEPT_MAP=p;exports.FILE_TYPE_ICON_MAP=x;exports.MAX_FILES=P;exports.MAX_FILE_SIZE=f;exports.isImageMimeType=F;exports.normalizeFileType=N;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),d=require("react"),E=require("../../atoms/icons/custom-icon.cjs"),g=require("../../providers/image-preview-provider.cjs"),k=require("../../providers/message-provider.cjs"),u=require("./chat-provider.cjs"),l=require("../../atoms/file-upload.cjs"),_=require("../../utils/misc.cjs"),c=require("../../utils/compose-event-handlers.cjs"),a=require("../factory.cjs"),M=require("../../providers/config-provider.cjs"),x={"application/pdf":"filePdf","text/plain":"fileText","text/markdown":"fileMarkdown","text/html":"fileHtml","text/csv":"fileCsv","text/x-log":"fileLog","application/json":"fileJson"};function F(e){return e.startsWith("image/")}const p={"image/png":[".png"],"image/jpeg":[".jpg",".jpeg"],"image/webp":[".webp"],"application/pdf":[".pdf"],"text/plain":[".txt"],"text/markdown":[".md"],"text/html":[".html"],"text/csv":[".csv"],"text/x-log":[".log"],"application/json":[".json"]},j=new Set(Object.keys(p)),T=Object.values(p).flat().join(", "),P=10,f=1024*1024*10,L=Object.entries(p).reduce((e,[i,t])=>{for(const n of t)e[n]=i;return e},{});function N(e){if(e.type)return e;const i=`.${e.name.split(".").pop()?.toLowerCase()}`,t=L[i];return t?new File([e],e.name,{type:t}):e}function w(e){if(!e.length)return null;const i=t=>e.some(n=>n.errors.includes(t));return i("TOO_MANY_FILES")?{title:"Attachment limit reached",message:`You can only attach up to ${P} files per message.`}:i("FILE_INVALID_TYPE")?{title:"Unsupported file type",message:`Only ${T} files are supported.`}:i("FILE_TOO_LARGE")?{title:"File too large",message:`Files must be smaller than ${f/1024/1024}MB.`}:i("FILE_EXISTS")?{title:"File already exists",message:`The file "${e.find(n=>n.errors.includes("FILE_EXISTS"))?.file.name??"file"}" is already attached to this message.`}:{title:"File rejected",message:"This file could not be added."}}const y=a.ikp("div",{_id:"aiChatMessage__Files"}),A=({children:e,...i})=>{const{message:t}=k.useMessage();if(t.role!=="user")return null;const n=(t.parts??[]).filter(s=>{if(s.type!=="file")return!1;const r=s.mediaType;return j.has(r??"")});return n.length?o.jsx(y,{...i,children:e(n)}):null},S=a.ikp("button",{_id:"aiChatMessage__File"}),U=({url:e,name:i,mediaType:t,onClick:n,...s})=>{const{openImagePreview:r}=g.useImagePreview(),[m,v]=d.useState(!0),h=d.useMemo(()=>new File([],i??"file",{type:t}),[i,t]);return o.jsx(b.Provider,{value:{file:h,objectUrl:e,isLoading:m,setIsLoading:v,onRemove:()=>{}},children:o.jsx(S,{type:"button","aria-label":F(t??"")?`Preview ${i??"file"}`:`Open ${i??"file"} in new tab`,"data-loading":_.dataAttr(m),onClick:c.composeEventHandlers(n,()=>{if(F(t??""))r({url:e,name:i??"file"});else if(e)if(e.startsWith("data:")){const I=document.createElement("a");I.href=e,I.download=i??"file",I.click()}else window.open(e,"_blank","noopener,noreferrer")}),...s})})},R=a.ikp("div",{_id:"aiChatInput__Fieldset"}),O=e=>{const i=l.useFileUploadApi();return o.jsx(R,{...i.getDropzoneProps({disableClick:!0}),"data-drag-over":_.dataAttr(i.dragging),...e})},D=({...e})=>{const{files:i,setFiles:t,showInputNotification:n}=u.useChat();return o.jsx(l.FileUploadRoot,{accept:p,maxFiles:P,maxFileSize:f,preventDocumentDrop:!0,acceptedFiles:i,onFileAccept:s=>t(s.files),onFileReject:s=>{const r=w(s.files);r&&n(r)},children:o.jsx(O,{...e})})},H=a.ikp("div",{_id:"aiChatInput__DropZone"}),q=a.ikp("div",{_id:"aiChatInput__Notification"}),X=e=>{const{inputNotification:i}=u.useChat();return i?o.jsx(q,{role:"alert",...e}):null},B=a.ikp("p",{_id:"aiChatInput__NotificationTitle"}),$=({children:e,...i})=>{const{inputNotification:t}=u.useChat();return t?.title?o.jsxs(B,{...i,children:[e,t.title]}):null},Y=a.ikp("p",{_id:"aiChatInput__NotificationMessage"}),Z=e=>{const{inputNotification:i}=u.useChat();return o.jsx(Y,{...e,children:i?.message})},z=a.ikp("button",{_id:"aiChatInput__NotificationClose"}),K=({onClick:e,...i})=>{const{clearInputNotification:t}=u.useChat();return o.jsx(z,{type:"button","aria-label":"Dismiss",onClick:c.composeEventHandlers(e,t),...i})},V=a.ikp("div",{_id:"aiChatInput__NotificationContent"}),W=a.ikp("div",{_id:"aiChatInput__NotificationHeader"}),G=a.ikp(E.CustomIcon,{_id:"aiChatInput__FileUploadButtonIcon",iconKey:"fileUpload"}),J=a.ikp("button",{_id:"aiChatInput__FileUploadButton"}),Q=e=>{const{aiChatSettings:i}=M.useInkeepConfig(),t=l.useFileUploadApi(),{onClick:n,...s}=e;return o.jsx(J,{type:"button","aria-label":"Upload file",disabled:i.isViewOnly,onClick:c.composeEventHandlers(n,()=>t.openFilePicker()),...s})},ee=a.ikp("input",{_id:"aiChatInput__FileInput"}),ie=e=>{const i=l.useFileUploadApi();return o.jsx(ee,{...e,...i.getHiddenInputProps()})},te=a.ikp("div",{_id:"aiChatInput__FileList"}),ne=({children:e,...i})=>{const n=l.useFileUploadApi().acceptedFiles;return n.length?o.jsx(te,{...i,children:e(n)}):null},b=d.createContext(null);function C(){const e=d.useContext(b);if(!e)throw new Error("useFileContext must be used within EmbeddedChatPrimitiveFileItem");return e}const oe=a.ikp("div",{_id:"aiChatInput__FileItem"}),ae=({file:e,...i})=>{const t=l.useFileUploadApi(),[n,s]=d.useState(void 0),[r,m]=d.useState(!0);d.useEffect(()=>t.createFileUrl(e,h=>{s(h),m(!0)}),[e]);const v=()=>t.deleteFile(e);return o.jsx(b.Provider,{value:{file:e,objectUrl:n,isLoading:r,setIsLoading:m,onRemove:v},children:o.jsx(oe,{"data-loading":_.dataAttr(r),...i})})},se=a.ikp("button",{_id:"aiChatInput__FilePreviewTrigger"}),re=({onClick:e,...i})=>{const{objectUrl:t,file:n}=C(),{openImagePreview:s}=g.useImagePreview();return o.jsx(se,{type:"button","aria-label":`Preview ${n.name}`,disabled:!t,onClick:c.composeEventHandlers(e,()=>{t&&s({url:t,name:n.name})}),...i})},de=a.ikp("span",{_id:"aiChatInput__FileContent"}),le=e=>o.jsx(de,{...e}),ce=a.ikp("img",{_id:"aiChatInput__FileThumbnail"}),me=({onLoad:e,...i})=>{const{objectUrl:t,file:n,setIsLoading:s}=C();return o.jsx(ce,{src:t,alt:n.name,onLoad:c.composeEventHandlers(e,()=>s(!1)),...i})},ue=({className:e})=>{const{file:i}=C(),t=x[N(i).type]??"fileText";return o.jsx(E.CustomIcon,{iconKey:t,className:e})},pe=a.ikp("span",{_id:"aiChatInput__FileName"}),Ce=e=>{const{file:i}=C();return o.jsx(pe,{...e,children:i.name})},ve=a.ikp("button",{_id:"aiChatInput__FileRemove"}),he=a.ikp(E.CustomIcon,{_id:"aiChatInput__FileRemoveIcon",iconKey:"close"}),Ie=({onClick:e,...i})=>{const{onRemove:t}=C();return o.jsx(ve,{type:"button","aria-label":"Remove file",onClick:c.composeEventHandlers(e,t),...i})};exports.ACCEPTED_FILE_EXTENSIONS=T;exports.ACCEPTED_FILE_MIME_TYPES=j;exports.EmbeddedChatPrimitiveDropZone=H;exports.EmbeddedChatPrimitiveFileContent=le;exports.EmbeddedChatPrimitiveFileInput=ie;exports.EmbeddedChatPrimitiveFileItem=ae;exports.EmbeddedChatPrimitiveFileList=ne;exports.EmbeddedChatPrimitiveFileName=Ce;exports.EmbeddedChatPrimitiveFilePreviewTrigger=re;exports.EmbeddedChatPrimitiveFileRemove=Ie;exports.EmbeddedChatPrimitiveFileRemoveIcon=he;exports.EmbeddedChatPrimitiveFileThumbnail=me;exports.EmbeddedChatPrimitiveFileTypeIcon=ue;exports.EmbeddedChatPrimitiveFileUploadButton=Q;exports.EmbeddedChatPrimitiveFileUploadButtonIcon=G;exports.EmbeddedChatPrimitiveInputFieldset=D;exports.EmbeddedChatPrimitiveInputNotification=X;exports.EmbeddedChatPrimitiveInputNotificationClose=K;exports.EmbeddedChatPrimitiveInputNotificationContent=V;exports.EmbeddedChatPrimitiveInputNotificationHeader=W;exports.EmbeddedChatPrimitiveInputNotificationMessage=Z;exports.EmbeddedChatPrimitiveInputNotificationTitle=$;exports.EmbeddedChatPrimitiveMessageFile=U;exports.EmbeddedChatPrimitiveMessageFiles=A;exports.FILE_ACCEPT_MAP=p;exports.FILE_TYPE_ICON_MAP=x;exports.MAX_FILES=P;exports.MAX_FILE_SIZE=f;exports.isImageMimeType=F;exports.normalizeFileType=N;
@@ -29,7 +29,7 @@ export declare const EmbeddedChatPrimitiveDropZone: React.ForwardRefExoticCompon
29
29
  declare const PrimitiveInputNotification: React.ForwardRefExoticComponent< PolymorphicProps & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "_id"> & Partial<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "_id">>>;
30
30
  export declare const EmbeddedChatPrimitiveInputNotification: (props: ComponentPropsWithRef<typeof PrimitiveInputNotification>) => import("react/jsx-runtime").JSX.Element | null;
31
31
  declare const PrimitiveInputNotificationTitle: React.ForwardRefExoticComponent< PolymorphicProps & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "_id"> & Partial<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "_id">>>;
32
- export declare const EmbeddedChatPrimitiveInputNotificationTitle: (props: ComponentPropsWithRef<typeof PrimitiveInputNotificationTitle>) => import("react/jsx-runtime").JSX.Element | null;
32
+ export declare const EmbeddedChatPrimitiveInputNotificationTitle: ({ children, ...props }: ComponentPropsWithRef<typeof PrimitiveInputNotificationTitle>) => import("react/jsx-runtime").JSX.Element | null;
33
33
  declare const PrimitiveInputNotificationMessage: React.ForwardRefExoticComponent< PolymorphicProps & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "_id"> & Partial<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "_id">>>;
34
34
  export declare const EmbeddedChatPrimitiveInputNotificationMessage: (props: ComponentPropsWithRef<typeof PrimitiveInputNotificationMessage>) => import("react/jsx-runtime").JSX.Element;
35
35
  declare const PrimitiveInputNotificationClose: React.ForwardRefExoticComponent< PolymorphicProps & Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "_id"> & Partial<Pick<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "_id">>>;