@kushagradhawan/kookie-ui 0.1.70 → 0.1.71

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 (87) hide show
  1. package/dist/cjs/components/_internal/shell-bottom.d.ts +2 -21
  2. package/dist/cjs/components/_internal/shell-bottom.d.ts.map +1 -1
  3. package/dist/cjs/components/_internal/shell-bottom.js +1 -1
  4. package/dist/cjs/components/_internal/shell-bottom.js.map +3 -3
  5. package/dist/cjs/components/_internal/shell-inspector.d.ts +10 -21
  6. package/dist/cjs/components/_internal/shell-inspector.d.ts.map +1 -1
  7. package/dist/cjs/components/_internal/shell-inspector.js +1 -1
  8. package/dist/cjs/components/_internal/shell-inspector.js.map +3 -3
  9. package/dist/cjs/components/_internal/shell-prop-helpers.d.ts +7 -0
  10. package/dist/cjs/components/_internal/shell-prop-helpers.d.ts.map +1 -0
  11. package/dist/cjs/components/_internal/shell-prop-helpers.js +2 -0
  12. package/dist/cjs/components/_internal/shell-prop-helpers.js.map +7 -0
  13. package/dist/cjs/components/_internal/shell-sidebar.d.ts +4 -21
  14. package/dist/cjs/components/_internal/shell-sidebar.d.ts.map +1 -1
  15. package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
  16. package/dist/cjs/components/_internal/shell-sidebar.js.map +3 -3
  17. package/dist/cjs/components/chatbar.d.ts +11 -2
  18. package/dist/cjs/components/chatbar.d.ts.map +1 -1
  19. package/dist/cjs/components/chatbar.js +1 -1
  20. package/dist/cjs/components/chatbar.js.map +3 -3
  21. package/dist/cjs/components/schemas/shell.schema.d.ts +70 -70
  22. package/dist/cjs/components/shell.context.d.ts +1 -0
  23. package/dist/cjs/components/shell.context.d.ts.map +1 -1
  24. package/dist/cjs/components/shell.context.js.map +2 -2
  25. package/dist/cjs/components/shell.d.ts +6 -26
  26. package/dist/cjs/components/shell.d.ts.map +1 -1
  27. package/dist/cjs/components/shell.hooks.d.ts +19 -2
  28. package/dist/cjs/components/shell.hooks.d.ts.map +1 -1
  29. package/dist/cjs/components/shell.hooks.js +1 -1
  30. package/dist/cjs/components/shell.hooks.js.map +3 -3
  31. package/dist/cjs/components/shell.js +1 -1
  32. package/dist/cjs/components/shell.js.map +3 -3
  33. package/dist/cjs/components/shell.types.d.ts +21 -0
  34. package/dist/cjs/components/shell.types.d.ts.map +1 -1
  35. package/dist/cjs/components/shell.types.js +1 -1
  36. package/dist/cjs/components/shell.types.js.map +2 -2
  37. package/dist/esm/components/_internal/shell-bottom.d.ts +2 -21
  38. package/dist/esm/components/_internal/shell-bottom.d.ts.map +1 -1
  39. package/dist/esm/components/_internal/shell-bottom.js +1 -1
  40. package/dist/esm/components/_internal/shell-bottom.js.map +3 -3
  41. package/dist/esm/components/_internal/shell-inspector.d.ts +10 -21
  42. package/dist/esm/components/_internal/shell-inspector.d.ts.map +1 -1
  43. package/dist/esm/components/_internal/shell-inspector.js +1 -1
  44. package/dist/esm/components/_internal/shell-inspector.js.map +3 -3
  45. package/dist/esm/components/_internal/shell-prop-helpers.d.ts +7 -0
  46. package/dist/esm/components/_internal/shell-prop-helpers.d.ts.map +1 -0
  47. package/dist/esm/components/_internal/shell-prop-helpers.js +2 -0
  48. package/dist/esm/components/_internal/shell-prop-helpers.js.map +7 -0
  49. package/dist/esm/components/_internal/shell-sidebar.d.ts +4 -21
  50. package/dist/esm/components/_internal/shell-sidebar.d.ts.map +1 -1
  51. package/dist/esm/components/_internal/shell-sidebar.js +1 -1
  52. package/dist/esm/components/_internal/shell-sidebar.js.map +3 -3
  53. package/dist/esm/components/chatbar.d.ts +11 -2
  54. package/dist/esm/components/chatbar.d.ts.map +1 -1
  55. package/dist/esm/components/chatbar.js +1 -1
  56. package/dist/esm/components/chatbar.js.map +3 -3
  57. package/dist/esm/components/schemas/shell.schema.d.ts +70 -70
  58. package/dist/esm/components/shell.context.d.ts +1 -0
  59. package/dist/esm/components/shell.context.d.ts.map +1 -1
  60. package/dist/esm/components/shell.context.js.map +2 -2
  61. package/dist/esm/components/shell.d.ts +6 -26
  62. package/dist/esm/components/shell.d.ts.map +1 -1
  63. package/dist/esm/components/shell.hooks.d.ts +19 -2
  64. package/dist/esm/components/shell.hooks.d.ts.map +1 -1
  65. package/dist/esm/components/shell.hooks.js +1 -1
  66. package/dist/esm/components/shell.hooks.js.map +3 -3
  67. package/dist/esm/components/shell.js +1 -1
  68. package/dist/esm/components/shell.js.map +3 -3
  69. package/dist/esm/components/shell.types.d.ts +21 -0
  70. package/dist/esm/components/shell.types.d.ts.map +1 -1
  71. package/dist/esm/components/shell.types.js.map +2 -2
  72. package/package.json +1 -1
  73. package/schemas/base-button.json +1 -1
  74. package/schemas/button.json +1 -1
  75. package/schemas/icon-button.json +1 -1
  76. package/schemas/index.json +6 -6
  77. package/schemas/toggle-button.json +1 -1
  78. package/schemas/toggle-icon-button.json +1 -1
  79. package/src/components/_internal/shell-bottom.tsx +305 -321
  80. package/src/components/_internal/shell-inspector.tsx +310 -320
  81. package/src/components/_internal/shell-prop-helpers.ts +53 -0
  82. package/src/components/_internal/shell-sidebar.tsx +370 -384
  83. package/src/components/chatbar.tsx +19 -3
  84. package/src/components/shell.context.tsx +1 -0
  85. package/src/components/shell.hooks.ts +67 -2
  86. package/src/components/shell.tsx +186 -200
  87. package/src/components/shell.types.ts +23 -0
@@ -1,2 +1,2 @@
1
- "use strict";var ge=Object.create;var w=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var ve=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var ze=(s,d)=>{for(var a in d)w(s,a,{get:d[a],enumerable:!0})},ne=(s,d,a,c)=>{if(d&&typeof d=="object"||typeof d=="function")for(let l of ve(d))!Ce.call(s,l)&&l!==a&&w(s,l,{get:()=>d[l],enumerable:!(c=Pe(d,l))||c.enumerable});return s};var V=(s,d,a)=>(a=s!=null?ge(Re(s)):{},ne(d||!s||!s.__esModule?w(a,"default",{value:s,enumerable:!0}):a,s)),xe=s=>ne(w({},"__esModule",{value:!0}),s);var Ee={};ze(Ee,{Sidebar:()=>A});module.exports=xe(Ee);var n=V(require("react")),re=V(require("classnames")),B=V(require("../sheet.js")),oe=require("../visually-hidden.js"),W=require("../shell.context.js"),v=require("../shell.hooks.js"),ie=require("./shell-resize.js"),h=require("./shell-handles.js"),_e=require("../shell.types.js");const A=n.forwardRef(({className:s,presentation:d={initial:"overlay",md:"fixed"},expandedSize:a=288,minSize:c=200,maxSize:l=400,resizable:N=!1,collapsible:se=!0,onExpand:I,onCollapse:L,onResize:k,onResizeStart:ae,onResizeEnd:de,snapPoints:le,snapTolerance:ue,collapseThreshold:ce,paneId:T,persistence:H,children:fe,style:be,thinSize:M=64,toggleModes:D,state:p,defaultState:m,onStateChange:F,...y},g)=>{const t=(0,W.useShell)(),$=(0,v.useResponsivePresentation)(d),P=$==="overlay",pe=$==="stacked",f=n.useRef(null),me=n.useCallback(e=>{f.current=e,typeof g=="function"?g(e):g&&(g.current=e)},[g]),j=n.Children.toArray(fe),q=j.filter(e=>n.isValidElement(e)&&e.type===h.SidebarHandle),K=j.filter(e=>!(n.isValidElement(e)&&e.type===h.SidebarHandle)),G=y.onSizeChange,J=y.sizeUpdate,Q=y.sizeUpdateMs,R=n.useMemo(()=>{const e=G,r=J,o=Q??50;if(!e)return()=>{};if(r==="debounce"){let i=null;return(u,S)=>{i&&clearTimeout(i),i=setTimeout(()=>{e(u,S)},o)}}if(r==="throttle"){let i=0;return(u,S)=>{const te=Date.now();te-i>=o&&(i=te,e(u,S))}}return(i,u)=>e(i,u)},[G,J,Q]),ye=n.useId();n.useEffect(()=>(t.setHasSidebar(!0),()=>{t.setHasSidebar(!1)}),[t,ye]);const C=n.useRef(null);n.useEffect(()=>{const e=typeof p<"u";if(C.current===null){C.current=e;return}C.current!==e&&(console.warn("Shell.Sidebar: Switching between controlled and uncontrolled `state` is not supported."),C.current=e)},[p]);const b=(0,v.useResponsiveValue)(p),X=(0,v.useResponsiveValue)(m),Y=n.useRef(!1);n.useEffect(()=>{if(!Y.current&&t.currentBreakpointReady){if(Y.current=!0,typeof p<"u"&&b){t.sidebarMode!==b&&t.setSidebarMode(b);return}if(typeof m<"u"){const e=X??m;t.sidebarMode!==e&&t.setSidebarMode(e),F?.(e,{reason:"init"});return}}},[t.currentBreakpointReady,X,b,p,m]),n.useEffect(()=>{b!==void 0&&t.sidebarMode!==b&&t.setSidebarMode(b)},[t,b]);const z=n.useRef(null);n.useEffect(()=>{typeof p>"u"&&(z.current===null?z.current=t.sidebarMode:z.current!==t.sidebarMode&&(z.current=t.sidebarMode,F?.(t.sidebarMode,{reason:"toggle"})))},[t.sidebarMode,p,F]),n.useEffect(()=>{t.sidebarMode==="expanded"?I?.():L?.()},[t.sidebarMode,I,L]);const Z=t.sidebarMode!=="collapsed",x=n.useMemo(()=>{if(!T||H)return H;const e=`kookie-ui:shell:sidebar:${T}`;return{load:()=>{if(typeof window>"u")return;const o=window.localStorage.getItem(e);return o?Number(o):void 0},save:o=>{typeof window>"u"||window.localStorage.setItem(e,String(o))}}},[T,H]);n.useEffect(()=>{let e=!0;return(async()=>{if(!N||!x?.load||P)return;const r=await x.load();e&&typeof r=="number"&&f.current&&(f.current.style.setProperty("--sidebar-size",`${r}px`),k?.(r))})(),()=>{e=!1}},[N,x,k,P]);const E=(0,W.useShell)(),U=n.useCallback(()=>{const e=m??"expanded";return e==="thin"||e==="expanded"?e:"expanded"},[m]);n.useEffect(()=>{if(!E.setSidebarToggleComputer)return;const e=D??"both",r=o=>{if(e==="both")return o==="collapsed"?"thin":o==="thin"?"expanded":"collapsed";const i=U();return o==="collapsed"?i:o===i?"collapsed":i};return E.setSidebarToggleComputer(r),()=>{E.setSidebarToggleComputer?.(o=>o==="collapsed"?"thin":o==="thin"?"expanded":"collapsed")}},[E,D,U]);const ee=n.useRef(a),Se=n.useRef("expanded");n.useEffect(()=>{t.sidebarMode!=="collapsed"&&(Se.current=t.sidebarMode,ee.current=t.sidebarMode==="thin"?M:a)},[t.sidebarMode,M,a]);const he=N&&!P&&t.sidebarMode==="expanded"?n.createElement(ie.PaneResizeContext.Provider,{value:{containerRef:f,cssVarName:"--sidebar-size",minSize:c,maxSize:l,defaultSize:a,orientation:"vertical",edge:"end",computeNext:(e,r,o)=>{const i=getComputedStyle(f.current).direction==="rtl",u=e-r;return o+(i?-u:u)},onResize:k,onResizeStart:ae,onResizeEnd:e=>{de?.(e),R(e,{reason:"resize"}),x?.save?.(e)},target:"sidebar",collapsible:se,snapPoints:le,snapTolerance:ue??8,collapseThreshold:ce,requestCollapse:()=>t.setSidebarMode("collapsed"),requestToggle:()=>t.togglePane("sidebar")}},q.length>0?q.map((e,r)=>n.cloneElement(e,{key:e.key??r})):n.createElement(h.PaneHandle,null)):null,{state:we,defaultState:Ne,onStateChange:ke,size:Te,defaultSize:He,onSizeChange:De,sizeUpdate:Fe,sizeUpdateMs:$e,...Me}=y,_=n.useCallback(e=>{if(e==null)return;if(typeof e=="number"&&Number.isFinite(e))return e;const r=String(e).trim();if(!r)return;if(r.endsWith("px"))return Number.parseFloat(r);if(r.endsWith("rem")){const i=Number.parseFloat(getComputedStyle(document.documentElement).fontSize||"16")||16;return Number.parseFloat(r)*i}if(r.endsWith("%")){const i=Number.parseFloat(r),u=document.documentElement.clientWidth||window.innerWidth||0;return i/100*u}const o=Number.parseFloat(r);return Number.isFinite(o)?o:void 0},[]);n.useEffect(()=>{if(!f.current)return;const{size:e,defaultSize:r}=y;if(typeof e>"u"&&typeof r<"u"){const o=_(r);if(typeof o=="number"&&Number.isFinite(o)){const S=Math.min((typeof l=="number"?l:void 0)??o,Math.max((typeof c=="number"?c:void 0)??o,o));f.current.style.setProperty("--sidebar-size",`${S}px`),R(S,{reason:"init"})}}},[]);const O=y.size;if(n.useEffect(()=>{if(!f.current||typeof O>"u")return;const e=_(O);if(typeof e=="number"&&Number.isFinite(e)){const i=Math.min((typeof l=="number"?l:void 0)??e,Math.max((typeof c=="number"?c:void 0)??e,e));f.current.style.setProperty("--sidebar-size",`${i}px`),R(i,{reason:"controlled"})}},[O,c,l,_,R]),P){const e=t.sidebarMode!=="collapsed";return n.createElement(B.Root,{open:e,onOpenChange:r=>t.setSidebarMode(r?"expanded":"collapsed")},n.createElement(B.Content,{side:"start",style:{padding:0},width:{initial:`${e?t.sidebarMode==="thin"?M:a:ee.current}px`}},n.createElement(oe.VisuallyHidden,null,n.createElement(B.Title,null,"Navigation")),K))}return n.createElement("div",{...Me,ref:me,className:(0,re.default)("rt-ShellSidebar",s),"data-mode":t.sidebarMode,"data-peek":t.peekTarget==="sidebar"||void 0,"data-presentation":t.currentBreakpointReady?$:void 0,"data-open":t.currentBreakpointReady&&pe&&Z||void 0,style:{...be,"--sidebar-size":`${a}px`,"--sidebar-thin-size":`${M}px`,"--sidebar-min-size":`${c}px`,"--sidebar-max-size":`${l}px`,...t.peekTarget==="sidebar"&&t.sidebarMode==="collapsed"&&!P?(()=>{const e=D??"both",r=t.sidebarMode;let o;if(e==="both")o=r==="collapsed"?"thin":r==="thin"?"expanded":"collapsed";else{const i=U();o=r==="collapsed"?i:"collapsed"}return o==="thin"?{"--peek-sidebar-width":`${M}px`}:{"--peek-sidebar-width":`var(--sidebar-size, ${a}px)`}})():{}}},n.createElement("div",{className:"rt-ShellSidebarContent","data-visible":Z||void 0},K),he)});A.displayName="Shell.Sidebar",A.Handle=h.SidebarHandle;
1
+ "use strict";var ze=Object.create;var R=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var ve=Object.getOwnPropertyNames;var Ce=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Ee=(i,s)=>{for(var l in s)R(i,l,{get:s[l],enumerable:!0})},ne=(i,s,l,y)=>{if(s&&typeof s=="object"||typeof s=="function")for(let d of ve(s))!Re.call(i,d)&&d!==l&&R(i,d,{get:()=>s[d],enumerable:!(y=xe(s,d))||y.enumerable});return i};var $=(i,s,l)=>(l=i!=null?ze(Ce(i)):{},ne(s||!i||!i.__esModule?R(l,"default",{value:i,enumerable:!0}):l,i)),Ne=i=>ne(R({},"__esModule",{value:!0}),i);var ke={};Ee(ke,{Sidebar:()=>_});module.exports=Ne(ke);var t=$(require("react")),re=$(require("classnames")),B=$(require("../sheet.js")),oe=require("../visually-hidden.js"),U=require("../shell.context.js"),E=require("../shell.hooks.js"),ae=require("./shell-resize.js"),ie=require("./shell-prop-helpers.js"),m=require("./shell-handles.js"),De=require("../shell.types.js");const we=["className","children","state","defaultState","onStateChange","thinSize","toggleModes","size","defaultSize","onSizeChange","sizeUpdate","sizeUpdateMs","style"],_=t.forwardRef((i,s)=>{const{className:l,presentation:y={initial:"overlay",md:"fixed"},expandedSize:d=288,minSize:p=200,maxSize:f=400,resizable:N=!1,collapsible:se=!0,onExpand:A,onCollapse:W,onResize:w,onResizeStart:de,onResizeEnd:le,snapPoints:ue,snapTolerance:ce,collapseThreshold:pe,paneId:k,persistence:T,children:fe,style:be,thinSize:S=64,toggleModes:D,state:b,defaultState:M,onStateChange:g,size:L,defaultSize:j,onSizeChange:q,sizeUpdate:K,sizeUpdateMs:Y=50}=i,me=(0,ie.extractPaneDomProps)(i,we),n=(0,U.useShell)(),H=(0,E.useResponsivePresentation)(y),h=H==="overlay",Se=H==="stacked",c=t.useRef(null),he=t.useCallback(e=>{c.current=e,typeof s=="function"?s(e):s&&(s.current=e)},[s]),G=t.Children.toArray(fe),J=G.filter(e=>t.isValidElement(e)&&e.type===m.SidebarHandle),Q=G.filter(e=>!(t.isValidElement(e)&&e.type===m.SidebarHandle)),P=t.useMemo(()=>{const e=q,r=K,o=Y??50;if(!e)return()=>{};if(r==="debounce"){let a=null;return(u,I)=>{a&&clearTimeout(a),a=setTimeout(()=>{e(u,I)},o)}}if(r==="throttle"){let a=0;return(u,I)=>{const te=Date.now();te-a>=o&&(a=te,e(u,I))}}return(a,u)=>e(a,u)},[q,K,Y]),ye=t.useId();t.useEffect(()=>(n.setHasSidebar(!0),()=>{n.setHasSidebar(!1)}),[n,ye]);const z=t.useRef(null);t.useEffect(()=>{const e=typeof b<"u";if(z.current===null){z.current=e;return}z.current!==e&&(console.warn("Shell.Sidebar: Switching between controlled and uncontrolled `state` is not supported."),z.current=e)},[b]);const Me=typeof b=="object"&&b!==null,{resolvedDefault:X}=(0,E.useResponsiveInitialState)({controlledValue:b,defaultValue:M,currentValue:n.sidebarMode,setValue:n.setSidebarMode,breakpointReady:n.currentBreakpointReady,controlledIsResponsive:Me,onResponsiveChange:e=>g?.(e,{reason:"responsive"}),onInit:e=>g?.(e,{reason:"init"})}),x=t.useRef(null);t.useEffect(()=>{typeof b>"u"&&(x.current===null?x.current=n.sidebarMode:x.current!==n.sidebarMode&&(x.current=n.sidebarMode,g?.(n.sidebarMode,{reason:"toggle"})))},[n.sidebarMode,b,g]),t.useEffect(()=>{n.sidebarMode==="expanded"?A?.():W?.()},[n.sidebarMode,A,W]);const Z=n.sidebarMode!=="collapsed",v=t.useMemo(()=>{if(!k||T)return T;const e=`kookie-ui:shell:sidebar:${k}`;return{load:()=>{if(!(typeof window>"u"))try{const o=window.localStorage.getItem(e);return o?Number(o):void 0}catch{return}},save:o=>{if(!(typeof window>"u"))try{window.localStorage.setItem(e,String(o))}catch{}}}},[k,T]);t.useEffect(()=>{let e=!0;return(async()=>{if(!N||!v?.load||h)return;const r=await v.load();e&&typeof r=="number"&&c.current&&(c.current.style.setProperty("--sidebar-size",`${r}px`),w?.(r))})(),()=>{e=!1}},[N,v,w,h]);const C=(0,U.useShell)(),V=t.useCallback(()=>{const e=X??(typeof M=="string"?M:void 0)??"expanded";return e==="thin"||e==="expanded"?e:"expanded"},[X,M]);t.useEffect(()=>{if(!C.setSidebarToggleComputer)return;const e=D??"both",r=o=>{if(e==="both")return o==="collapsed"?"thin":o==="thin"?"expanded":"collapsed";const a=V();return o==="collapsed"?a:o===a?"collapsed":a};return C.setSidebarToggleComputer(r),()=>{C.setSidebarToggleComputer?.(o=>o==="collapsed"?"thin":o==="thin"?"expanded":"collapsed")}},[C,D,V]);const ee=t.useRef(d),ge=t.useRef("expanded");t.useEffect(()=>{n.sidebarMode!=="collapsed"&&(ge.current=n.sidebarMode,ee.current=n.sidebarMode==="thin"?S:d)},[n.sidebarMode,S,d]);const Pe=N&&!h&&n.sidebarMode==="expanded"?t.createElement(ae.PaneResizeContext.Provider,{value:{containerRef:c,cssVarName:"--sidebar-size",minSize:p,maxSize:f,defaultSize:d,orientation:"vertical",edge:"end",computeNext:(e,r,o)=>{const a=getComputedStyle(c.current).direction==="rtl",u=e-r;return o+(a?-u:u)},onResize:w,onResizeStart:de,onResizeEnd:e=>{le?.(e),P(e,{reason:"resize"}),v?.save?.(e)},target:"sidebar",collapsible:se,snapPoints:ue,snapTolerance:ce??8,collapseThreshold:pe,requestCollapse:()=>n.setSidebarMode("collapsed"),requestToggle:()=>n.togglePane("sidebar")}},J.length>0?J.map((e,r)=>t.cloneElement(e,{key:e.key??r})):t.createElement(m.PaneHandle,null)):null,O=t.useCallback(e=>{if(e==null)return;if(typeof e=="number"&&Number.isFinite(e))return e;const r=String(e).trim();if(!r)return;if(r.endsWith("px"))return Number.parseFloat(r);if(r.endsWith("rem")){const a=Number.parseFloat(getComputedStyle(document.documentElement).fontSize||"16")||16;return Number.parseFloat(r)*a}if(r.endsWith("%")){const a=Number.parseFloat(r),u=document.documentElement.clientWidth||window.innerWidth||0;return a/100*u}const o=Number.parseFloat(r);return Number.isFinite(o)?o:void 0},[]);t.useEffect(()=>{if(c.current&&typeof L>"u"&&typeof j<"u"){const e=O(j);if(typeof e=="number"&&Number.isFinite(e)){const a=Math.min((typeof f=="number"?f:void 0)??e,Math.max((typeof p=="number"?p:void 0)??e,e));c.current.style.setProperty("--sidebar-size",`${a}px`),P(a,{reason:"init"})}}},[]);const F=L;if(t.useEffect(()=>{if(!c.current||typeof F>"u")return;const e=O(F);if(typeof e=="number"&&Number.isFinite(e)){const a=Math.min((typeof f=="number"?f:void 0)??e,Math.max((typeof p=="number"?p:void 0)??e,e));c.current.style.setProperty("--sidebar-size",`${a}px`),P(a,{reason:"controlled"})}},[F,p,f,O,P]),h){const e=n.sidebarMode!=="collapsed";return t.createElement(B.Root,{open:e,onOpenChange:r=>n.setSidebarMode(r?"expanded":"collapsed")},t.createElement(B.Content,{side:"start",style:{padding:0},width:{initial:`${e?n.sidebarMode==="thin"?S:d:ee.current}px`}},t.createElement(oe.VisuallyHidden,null,t.createElement(B.Title,null,"Navigation")),Q))}return t.createElement("div",{...me,ref:he,className:(0,re.default)("rt-ShellSidebar",l),"data-mode":n.sidebarMode,"data-peek":n.peekTarget==="sidebar"||void 0,"data-presentation":n.currentBreakpointReady?H:void 0,"data-open":n.currentBreakpointReady&&Se&&Z||void 0,style:{...be,"--sidebar-size":`${d}px`,"--sidebar-thin-size":`${S}px`,"--sidebar-min-size":`${p}px`,"--sidebar-max-size":`${f}px`,...n.peekTarget==="sidebar"&&n.sidebarMode==="collapsed"&&!h?(()=>{const e=D??"both",r=n.sidebarMode;let o;if(e==="both")o=r==="collapsed"?"thin":r==="thin"?"expanded":"collapsed";else{const a=V();o=r==="collapsed"?a:"collapsed"}return o==="thin"?{"--peek-sidebar-width":`${S}px`}:{"--peek-sidebar-width":`var(--sidebar-size, ${d}px)`}})():{}}},t.createElement("div",{className:"rt-ShellSidebarContent","data-visible":Z||void 0},Q),Pe)});_.displayName="Shell.Sidebar",_.Handle=m.SidebarHandle;
2
2
  //# sourceMappingURL=shell-sidebar.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/_internal/shell-sidebar.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport * as Sheet from '../sheet.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { useShell } from '../shell.context.js';\nimport { useResponsivePresentation, useResponsiveValue } from '../shell.hooks.js';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { SidebarHandle, PaneHandle } from './shell-handles.js';\nimport type { Breakpoint, PaneMode, PaneSizePersistence, ResponsivePresentation, SidebarMode, Responsive } from '../shell.types.js';\nimport { _BREAKPOINTS } from '../shell.types.js';\n\ninterface PaneProps extends React.ComponentPropsWithoutRef<'div'> {\n presentation?: ResponsivePresentation;\n mode?: PaneMode;\n defaultMode?: any;\n onModeChange?: (mode: PaneMode | SidebarMode) => void;\n expandedSize?: number;\n minSize?: number;\n maxSize?: number;\n resizable?: boolean;\n collapsible?: boolean;\n onExpand?: () => void;\n onCollapse?: () => void;\n onResize?: (size: number) => void;\n resizer?: React.ReactNode;\n onResizeStart?: (size: number) => void;\n onResizeEnd?: (size: number) => void;\n snapPoints?: number[];\n snapTolerance?: number;\n collapseThreshold?: number;\n paneId?: string;\n persistence?: PaneSizePersistence;\n}\n\ntype SidebarStateChangeMeta = { reason: 'init' | 'toggle' | 'responsive' };\ntype SidebarControlledProps = { state: Responsive<SidebarMode>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; defaultState?: never };\ntype SidebarUncontrolledProps = { defaultState?: SidebarMode | Partial<Record<Breakpoint, SidebarMode>>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; state?: never };\ntype SidebarPublicProps = Omit<PaneProps, 'mode' | 'defaultMode' | 'onModeChange'> & {\n // removed legacy mode props\n thinSize?: number;\n toggleModes?: 'both' | 'single';\n // size API (width when expanded)\n size?: number | string;\n defaultSize?: number | string;\n onSizeChange?: (size: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n} & (SidebarControlledProps | SidebarUncontrolledProps);\n\ntype SidebarComponent = React.ForwardRefExoticComponent<SidebarPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof SidebarHandle };\n\nexport const Sidebar = React.forwardRef<HTMLDivElement, SidebarPublicProps>(\n (\n {\n className,\n presentation = { initial: 'overlay', md: 'fixed' },\n // removed legacy props\n expandedSize = 288,\n minSize = 200,\n maxSize = 400,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n thinSize = 64,\n toggleModes,\n // new state props (XOR)\n state,\n defaultState,\n onStateChange,\n ...props\n },\n ref,\n ) => {\n const shell = useShell();\n const resolvedPresentation = useResponsivePresentation(presentation);\n const isOverlay = resolvedPresentation === 'overlay';\n const isStacked = resolvedPresentation === 'stacked';\n // Phase sequencing is now CSS-driven; no JS-managed phase\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const handleChildren = childArray.filter((el: React.ReactElement) => React.isValidElement(el) && el.type === SidebarHandle);\n const contentChildren = childArray.filter((el: React.ReactElement) => !(React.isValidElement(el) && el.type === SidebarHandle));\n\n // Throttled/debounced emitter for onSizeChange\n const onSizeChange = (props as any).onSizeChange;\n const sizeUpdate = (props as any).sizeUpdate;\n const sizeUpdateMs = (props as any).sizeUpdateMs;\n const emitSizeChange = React.useMemo(() => {\n const cb = onSizeChange as undefined | ((s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => void);\n const strategy = sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = sizeUpdateMs ?? 50;\n if (!cb) return () => {};\n if (strategy === 'debounce') {\n let t: any = null;\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => {\n if (t) clearTimeout(t);\n t = setTimeout(() => {\n cb(s, meta);\n }, ms);\n };\n }\n if (strategy === 'throttle') {\n let last = 0;\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => {\n const now = Date.now();\n if (now - last >= ms) {\n last = now;\n cb(s, meta);\n }\n };\n }\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => cb(s, meta);\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n\n // Register with shell\n const sidebarId = React.useId();\n React.useEffect(() => {\n shell.setHasSidebar(true);\n return () => {\n shell.setHasSidebar(false);\n };\n }, [shell, sidebarId]);\n\n // Dev guards\n const wasControlledRef = React.useRef<boolean | null>(null);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof state !== 'undefined' && typeof defaultState !== 'undefined') {\n console.error('Shell.Sidebar: Do not pass both `state` and `defaultState`. Choose one.');\n }\n if (typeof (props as any).size !== 'undefined' && typeof (props as any).defaultSize !== 'undefined') {\n console.error('Shell.Sidebar: Do not pass both `size` and `defaultSize`. Choose one.');\n }\n }\n\n // Warn on mode switch between controlled/uncontrolled\n React.useEffect(() => {\n const isControlled = typeof state !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Sidebar: Switching between controlled and uncontrolled `state` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [state]);\n\n // Resolve responsive controlled state at top level\n const resolvedState = useResponsiveValue(state);\n const resolvedDefaultState = useResponsiveValue(defaultState as any);\n\n // Honor state/defaultState on mount when uncontrolled\n const didInitRef = React.useRef(false);\n React.useEffect(() => {\n if (didInitRef.current) return;\n if (!shell.currentBreakpointReady) return;\n didInitRef.current = true;\n // Controlled state may be responsive; use resolved value\n if (typeof state !== 'undefined' && resolvedState) {\n if (shell.sidebarMode !== resolvedState) shell.setSidebarMode(resolvedState);\n return;\n }\n if (typeof defaultState !== 'undefined') {\n const initialState = (resolvedDefaultState ?? defaultState) as SidebarMode;\n if (shell.sidebarMode !== initialState) {\n shell.setSidebarMode(initialState);\n }\n onStateChange?.(initialState, { reason: 'init' });\n return;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [shell.currentBreakpointReady, resolvedDefaultState, resolvedState, state, defaultState]);\n\n // Sync controlled state (responsive-aware)\n React.useEffect(() => {\n if (resolvedState === undefined) return;\n if (shell.sidebarMode !== resolvedState) shell.setSidebarMode(resolvedState);\n }, [shell, resolvedState]);\n\n // Emit mode changes\n const lastNotifyModeRef = React.useRef<SidebarMode | null>(null);\n React.useEffect(() => {\n // notify new API when uncontrolled; skip first run to avoid masking init\n if (typeof state === 'undefined') {\n if (lastNotifyModeRef.current === null) {\n lastNotifyModeRef.current = shell.sidebarMode as SidebarMode;\n } else if (lastNotifyModeRef.current !== shell.sidebarMode) {\n lastNotifyModeRef.current = shell.sidebarMode as SidebarMode;\n onStateChange?.(shell.sidebarMode as SidebarMode, { reason: 'toggle' });\n }\n }\n }, [shell.sidebarMode, state, onStateChange]);\n\n // Emit expand/collapse events\n React.useEffect(() => {\n if (shell.sidebarMode === 'expanded') {\n onExpand?.();\n } else {\n onCollapse?.();\n }\n }, [shell.sidebarMode, onExpand, onCollapse]);\n\n // Option A: thin is width-only; content remains visible whenever not collapsed\n const isContentVisible = shell.sidebarMode !== 'collapsed';\n\n // Default persistence if paneId provided and none supplied (fixed only)\n const persistenceAdapter = React.useMemo(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:sidebar:${paneId}`;\n const adapter: PaneSizePersistence = {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n window.localStorage.setItem(key, String(size));\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n (async () => {\n if (!resizable || !persistenceAdapter?.load || isOverlay) return;\n const loaded = await persistenceAdapter.load();\n if (mounted && typeof loaded === 'number' && localRef.current) {\n localRef.current.style.setProperty('--sidebar-size', `${loaded}px`);\n onResize?.(loaded);\n }\n })();\n return () => {\n mounted = false;\n };\n }, [resizable, persistenceAdapter, onResize, isOverlay]);\n\n // Register custom toggle behavior based on toggleModes (both|single)\n const shellForToggle = useShell();\n const resolveDefaultSidebarMode = React.useCallback((): SidebarMode => {\n const resolved = defaultState ?? 'expanded';\n return resolved === 'thin' || resolved === 'expanded' ? resolved : 'expanded';\n }, [defaultState]);\n\n React.useEffect(() => {\n if (!shellForToggle.setSidebarToggleComputer) return;\n const strategy: 'both' | 'single' = toggleModes ?? 'both';\n const compute = (current: SidebarMode): SidebarMode => {\n if (strategy === 'both') {\n if (current === 'collapsed') return 'thin';\n if (current === 'thin') return 'expanded';\n return 'collapsed';\n }\n const target = resolveDefaultSidebarMode();\n if (current === 'collapsed') return target;\n if (current === target) return 'collapsed';\n return target;\n };\n shellForToggle.setSidebarToggleComputer(compute);\n return () => {\n shellForToggle.setSidebarToggleComputer?.((cur) => (cur === 'collapsed' ? 'thin' : cur === 'thin' ? 'expanded' : 'collapsed'));\n };\n }, [shellForToggle, toggleModes, resolveDefaultSidebarMode]);\n\n const lastOverlayWidthRef = React.useRef<number>(expandedSize);\n const lastOverlayModeRef = React.useRef<SidebarMode>('expanded');\n React.useEffect(() => {\n if (shell.sidebarMode !== 'collapsed') {\n lastOverlayModeRef.current = shell.sidebarMode as SidebarMode;\n lastOverlayWidthRef.current = shell.sidebarMode === 'thin' ? thinSize : expandedSize;\n }\n }, [shell.sidebarMode, thinSize, expandedSize]);\n\n // Remove responsive default mode behavior entirely\n\n const handleEl =\n resizable && !isOverlay && shell.sidebarMode === 'expanded' ? (\n <PaneResizeContext.Provider\n value={{\n containerRef: localRef,\n cssVarName: '--sidebar-size',\n minSize,\n maxSize,\n defaultSize: expandedSize,\n orientation: 'vertical',\n edge: 'end',\n computeNext: (client, startClient, startSize) => {\n const isRtl = getComputedStyle(localRef.current!).direction === 'rtl';\n const delta = client - startClient;\n return startSize + (isRtl ? -delta : delta);\n },\n onResize,\n onResizeStart,\n onResizeEnd: (size) => {\n onResizeEnd?.(size);\n emitSizeChange(size, { reason: 'resize' });\n persistenceAdapter?.save?.(size);\n },\n target: 'sidebar',\n collapsible,\n snapPoints,\n snapTolerance: snapTolerance ?? 8,\n collapseThreshold,\n requestCollapse: () => shell.setSidebarMode('collapsed'),\n requestToggle: () => shell.togglePane('sidebar'),\n }}\n >\n {handleChildren.length > 0 ? handleChildren.map((el, i) => React.cloneElement(el, { key: el.key ?? i })) : <PaneHandle />}\n </PaneResizeContext.Provider>\n ) : null;\n\n // Strip new API props from DOM\n const { state: _s, defaultState: _ds, onStateChange: _osc, size: _sz, defaultSize: _dsz, onSizeChange: _onsc, sizeUpdate: _szu, sizeUpdateMs: _szums, ...domProps } = props as any;\n\n // Normalize CSS lengths to px\n const normalizeToPx = React.useCallback((value: number | string | undefined): number | undefined => {\n if (value == null) return undefined;\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n const str = String(value).trim();\n if (!str) return undefined;\n if (str.endsWith('px')) return Number.parseFloat(str);\n if (str.endsWith('rem')) {\n const rem = Number.parseFloat(getComputedStyle(document.documentElement).fontSize || '16') || 16;\n return Number.parseFloat(str) * rem;\n }\n if (str.endsWith('%')) {\n const pct = Number.parseFloat(str);\n const base = document.documentElement.clientWidth || window.innerWidth || 0;\n return (pct / 100) * base;\n }\n const n = Number.parseFloat(str);\n return Number.isFinite(n) ? n : undefined;\n }, []);\n\n // Apply defaultSize on mount when uncontrolled\n React.useEffect(() => {\n if (!localRef.current) return;\n const { size, defaultSize } = props as any;\n if (typeof size === 'undefined' && typeof defaultSize !== 'undefined') {\n const px = normalizeToPx(defaultSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--sidebar-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'init' });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size sync\n const controlledSize = (props as any).size;\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof controlledSize === 'undefined') return;\n const px = normalizeToPx(controlledSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--sidebar-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'controlled' });\n }\n }, [controlledSize, minSize, maxSize, normalizeToPx, emitSizeChange]);\n\n if (isOverlay) {\n const open = shell.sidebarMode !== 'collapsed';\n return (\n <Sheet.Root open={open} onOpenChange={(o) => shell.setSidebarMode(o ? 'expanded' : 'collapsed')}>\n <Sheet.Content\n side=\"start\"\n style={{ padding: 0 }}\n width={{\n initial: `${open ? (shell.sidebarMode === 'thin' ? thinSize : expandedSize) : lastOverlayWidthRef.current}px`,\n }}\n >\n <VisuallyHidden>\n <Sheet.Title>Navigation</Sheet.Title>\n </VisuallyHidden>\n {contentChildren}\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n return (\n <div\n {...domProps}\n ref={setRef}\n className={classNames('rt-ShellSidebar', className)}\n data-mode={shell.sidebarMode}\n data-peek={shell.peekTarget === 'sidebar' || undefined}\n data-presentation={shell.currentBreakpointReady ? resolvedPresentation : undefined}\n data-open={(shell.currentBreakpointReady && isStacked && isContentVisible) || undefined}\n style={{\n ...style,\n ['--sidebar-size' as any]: `${expandedSize}px`,\n ['--sidebar-thin-size' as any]: `${thinSize}px`,\n ['--sidebar-min-size' as any]: `${minSize}px`,\n ['--sidebar-max-size' as any]: `${maxSize}px`,\n ...(shell.peekTarget === 'sidebar' && shell.sidebarMode === 'collapsed' && !isOverlay\n ? (() => {\n const strategy: 'both' | 'single' = toggleModes ?? 'both';\n const current = shell.sidebarMode as SidebarMode;\n let next: SidebarMode;\n if (strategy === 'both') {\n next = current === 'collapsed' ? 'thin' : current === 'thin' ? 'expanded' : 'collapsed';\n } else {\n const target = resolveDefaultSidebarMode();\n next = current === 'collapsed' ? target : 'collapsed';\n }\n if (next === 'thin') {\n return {\n ['--peek-sidebar-width' as any]: `${thinSize}px`,\n } as React.CSSProperties;\n }\n return {\n ['--peek-sidebar-width' as any]: `var(--sidebar-size, ${expandedSize}px)`,\n } as React.CSSProperties;\n })()\n : {}),\n }}\n >\n <div className=\"rt-ShellSidebarContent\" data-visible={isContentVisible || undefined}>\n {contentChildren}\n </div>\n {handleEl}\n </div>\n );\n },\n) as SidebarComponent;\n\nSidebar.displayName = 'Shell.Sidebar';\nSidebar.Handle = SidebarHandle;\n"],
5
- "mappings": "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",
6
- "names": ["shell_sidebar_exports", "__export", "Sidebar", "__toCommonJS", "React", "import_classnames", "Sheet", "import_visually_hidden", "import_shell_context", "import_shell_hooks", "import_shell_resize", "import_shell_handles", "import_shell_types", "className", "presentation", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "thinSize", "toggleModes", "state", "defaultState", "onStateChange", "props", "ref", "shell", "resolvedPresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "contentChildren", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "emitSizeChange", "cb", "strategy", "ms", "t", "s", "meta", "last", "now", "sidebarId", "wasControlledRef", "isControlled", "resolvedState", "resolvedDefaultState", "didInitRef", "initialState", "lastNotifyModeRef", "isContentVisible", "persistenceAdapter", "key", "v", "size", "mounted", "loaded", "shellForToggle", "resolveDefaultSidebarMode", "resolved", "compute", "current", "target", "cur", "lastOverlayWidthRef", "lastOverlayModeRef", "handleEl", "client", "startClient", "startSize", "isRtl", "delta", "i", "_s", "_ds", "_osc", "_sz", "_dsz", "_onsc", "_szu", "_szums", "domProps", "normalizeToPx", "value", "str", "rem", "pct", "base", "n", "defaultSize", "px", "clamped", "controlledSize", "open", "o", "classNames", "next"]
4
+ "sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport * as Sheet from '../sheet.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { useShell } from '../shell.context.js';\nimport { useResponsivePresentation, useResponsiveInitialState } from '../shell.hooks.js';\nimport { PaneResizeContext } from './shell-resize.js';\nimport { extractPaneDomProps } from './shell-prop-helpers.js';\nimport { SidebarHandle, PaneHandle } from './shell-handles.js';\nimport type { Breakpoint, PaneMode, PaneSizePersistence, ResponsivePresentation, SidebarMode, Responsive, PaneBaseProps } from '../shell.types.js';\nimport { _BREAKPOINTS } from '../shell.types.js';\n\ntype SidebarPaneProps = PaneBaseProps & {\n mode?: PaneMode;\n defaultMode?: any;\n onModeChange?: (mode: PaneMode | SidebarMode) => void;\n};\n\ntype SidebarStateChangeMeta = { reason: 'init' | 'toggle' | 'responsive' };\ntype SidebarControlledProps = { state: Responsive<SidebarMode>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; defaultState?: never };\ntype SidebarUncontrolledProps = { defaultState?: SidebarMode | Partial<Record<Breakpoint, SidebarMode>>; onStateChange?: (state: SidebarMode, meta: SidebarStateChangeMeta) => void; state?: never };\ntype SidebarPublicProps = Omit<SidebarPaneProps, 'mode' | 'defaultMode' | 'onModeChange'> & {\n // removed legacy mode props\n thinSize?: number;\n toggleModes?: 'both' | 'single';\n // size API (width when expanded)\n size?: number | string;\n defaultSize?: number | string;\n onSizeChange?: (size: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => void;\n sizeUpdate?: 'throttle' | 'debounce';\n sizeUpdateMs?: number;\n} & (SidebarControlledProps | SidebarUncontrolledProps);\n\ntype SidebarComponent = React.ForwardRefExoticComponent<SidebarPublicProps & React.RefAttributes<HTMLDivElement>> & { Handle: typeof SidebarHandle };\n\nconst SIDEBAR_DOM_PROP_KEYS = [\n 'className',\n 'children',\n 'state',\n 'defaultState',\n 'onStateChange',\n 'thinSize',\n 'toggleModes',\n 'size',\n 'defaultSize',\n 'onSizeChange',\n 'sizeUpdate',\n 'sizeUpdateMs',\n 'style',\n] as const satisfies readonly (keyof SidebarPublicProps)[];\n\nexport const Sidebar = React.forwardRef<HTMLDivElement, SidebarPublicProps>((initialProps, ref) => {\n const {\n className,\n presentation = { initial: 'overlay', md: 'fixed' },\n expandedSize = 288,\n minSize = 200,\n maxSize = 400,\n resizable = false,\n collapsible = true,\n onExpand,\n onCollapse,\n onResize,\n onResizeStart,\n onResizeEnd,\n snapPoints,\n snapTolerance,\n collapseThreshold,\n paneId,\n persistence,\n children,\n style,\n thinSize = 64,\n toggleModes,\n state,\n defaultState,\n onStateChange,\n size,\n defaultSize,\n onSizeChange,\n sizeUpdate,\n sizeUpdateMs = 50,\n } = initialProps;\n const sidebarDomProps = extractPaneDomProps(initialProps, SIDEBAR_DOM_PROP_KEYS);\n const shell = useShell();\n const resolvedPresentation = useResponsivePresentation(presentation);\n const isOverlay = resolvedPresentation === 'overlay';\n const isStacked = resolvedPresentation === 'stacked';\n // Phase sequencing is now CSS-driven; no JS-managed phase\n const localRef = React.useRef<HTMLDivElement | null>(null);\n const setRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n localRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n const childArray = React.Children.toArray(children) as React.ReactElement[];\n const handleChildren = childArray.filter((el: React.ReactElement) => React.isValidElement(el) && el.type === SidebarHandle);\n const contentChildren = childArray.filter((el: React.ReactElement) => !(React.isValidElement(el) && el.type === SidebarHandle));\n\n // Throttled/debounced emitter for onSizeChange\n const emitSizeChange = React.useMemo(() => {\n const cb = onSizeChange as undefined | ((s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => void);\n const strategy = sizeUpdate as undefined | 'throttle' | 'debounce';\n const ms = sizeUpdateMs ?? 50;\n if (!cb) return () => {};\n if (strategy === 'debounce') {\n let t: any = null;\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => {\n if (t) clearTimeout(t);\n t = setTimeout(() => {\n cb(s, meta);\n }, ms);\n };\n }\n if (strategy === 'throttle') {\n let last = 0;\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => {\n const now = Date.now();\n if (now - last >= ms) {\n last = now;\n cb(s, meta);\n }\n };\n }\n return (s: number, meta: { reason: 'init' | 'resize' | 'controlled' }) => cb(s, meta);\n }, [onSizeChange, sizeUpdate, sizeUpdateMs]);\n\n // Register with shell\n const sidebarId = React.useId();\n React.useEffect(() => {\n shell.setHasSidebar(true);\n return () => {\n shell.setHasSidebar(false);\n };\n }, [shell, sidebarId]);\n\n // Dev guards\n const wasControlledRef = React.useRef<boolean | null>(null);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof state !== 'undefined' && typeof defaultState !== 'undefined') {\n console.error('Shell.Sidebar: Do not pass both `state` and `defaultState`. Choose one.');\n }\n if (typeof size !== 'undefined' && typeof defaultSize !== 'undefined') {\n console.error('Shell.Sidebar: Do not pass both `size` and `defaultSize`. Choose one.');\n }\n }\n\n // Warn on mode switch between controlled/uncontrolled\n React.useEffect(() => {\n const isControlled = typeof state !== 'undefined';\n if (wasControlledRef.current === null) {\n wasControlledRef.current = isControlled;\n return;\n }\n if (wasControlledRef.current !== isControlled) {\n console.warn('Shell.Sidebar: Switching between controlled and uncontrolled `state` is not supported.');\n wasControlledRef.current = isControlled;\n }\n }, [state]);\n\n // Resolve responsive controlled state at top level\n const stateIsResponsive = typeof state === 'object' && state !== null;\n const { resolvedDefault: resolvedSidebarDefault } = useResponsiveInitialState<SidebarMode>({\n controlledValue: state,\n defaultValue: defaultState,\n currentValue: shell.sidebarMode as SidebarMode,\n setValue: shell.setSidebarMode,\n breakpointReady: shell.currentBreakpointReady,\n controlledIsResponsive: stateIsResponsive,\n onResponsiveChange: (next) => onStateChange?.(next, { reason: 'responsive' }),\n onInit: (initial) => onStateChange?.(initial, { reason: 'init' }),\n });\n\n // Emit mode changes\n const lastNotifyModeRef = React.useRef<SidebarMode | null>(null);\n React.useEffect(() => {\n // notify new API when uncontrolled; skip first run to avoid masking init\n if (typeof state === 'undefined') {\n if (lastNotifyModeRef.current === null) {\n lastNotifyModeRef.current = shell.sidebarMode as SidebarMode;\n } else if (lastNotifyModeRef.current !== shell.sidebarMode) {\n lastNotifyModeRef.current = shell.sidebarMode as SidebarMode;\n onStateChange?.(shell.sidebarMode as SidebarMode, { reason: 'toggle' });\n }\n }\n }, [shell.sidebarMode, state, onStateChange]);\n\n // Emit expand/collapse events\n React.useEffect(() => {\n if (shell.sidebarMode === 'expanded') {\n onExpand?.();\n } else {\n onCollapse?.();\n }\n }, [shell.sidebarMode, onExpand, onCollapse]);\n\n // Option A: thin is width-only; content remains visible whenever not collapsed\n const isContentVisible = shell.sidebarMode !== 'collapsed';\n\n // Default persistence if paneId provided and none supplied (fixed only)\n const persistenceAdapter = React.useMemo(() => {\n if (!paneId || persistence) return persistence;\n const key = `kookie-ui:shell:sidebar:${paneId}`;\n const adapter: PaneSizePersistence = {\n load: () => {\n if (typeof window === 'undefined') return undefined;\n try {\n const v = window.localStorage.getItem(key);\n return v ? Number(v) : undefined;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Sidebar: failed to load persisted size', err);\n }\n return undefined;\n }\n },\n save: (size: number) => {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, String(size));\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Shell.Sidebar: failed to save persisted size', err);\n }\n }\n },\n };\n return adapter;\n }, [paneId, persistence]);\n\n React.useEffect(() => {\n let mounted = true;\n (async () => {\n if (!resizable || !persistenceAdapter?.load || isOverlay) return;\n const loaded = await persistenceAdapter.load();\n if (mounted && typeof loaded === 'number' && localRef.current) {\n localRef.current.style.setProperty('--sidebar-size', `${loaded}px`);\n onResize?.(loaded);\n }\n })();\n return () => {\n mounted = false;\n };\n }, [resizable, persistenceAdapter, onResize, isOverlay]);\n\n // Register custom toggle behavior based on toggleModes (both|single)\n const shellForToggle = useShell();\n const resolveDefaultSidebarMode = React.useCallback((): SidebarMode => {\n const resolved = resolvedSidebarDefault ?? (typeof defaultState === 'string' ? defaultState : undefined) ?? 'expanded';\n return resolved === 'thin' || resolved === 'expanded' ? resolved : 'expanded';\n }, [resolvedSidebarDefault, defaultState]);\n\n React.useEffect(() => {\n if (!shellForToggle.setSidebarToggleComputer) return;\n const strategy: 'both' | 'single' = toggleModes ?? 'both';\n const compute = (current: SidebarMode): SidebarMode => {\n if (strategy === 'both') {\n if (current === 'collapsed') return 'thin';\n if (current === 'thin') return 'expanded';\n return 'collapsed';\n }\n const target = resolveDefaultSidebarMode();\n if (current === 'collapsed') return target;\n if (current === target) return 'collapsed';\n return target;\n };\n shellForToggle.setSidebarToggleComputer(compute);\n return () => {\n shellForToggle.setSidebarToggleComputer?.((cur) => (cur === 'collapsed' ? 'thin' : cur === 'thin' ? 'expanded' : 'collapsed'));\n };\n }, [shellForToggle, toggleModes, resolveDefaultSidebarMode]);\n\n const lastOverlayWidthRef = React.useRef<number>(expandedSize);\n const lastOverlayModeRef = React.useRef<SidebarMode>('expanded');\n React.useEffect(() => {\n if (shell.sidebarMode !== 'collapsed') {\n lastOverlayModeRef.current = shell.sidebarMode as SidebarMode;\n lastOverlayWidthRef.current = shell.sidebarMode === 'thin' ? thinSize : expandedSize;\n }\n }, [shell.sidebarMode, thinSize, expandedSize]);\n\n // Remove responsive default mode behavior entirely\n\n const handleEl =\n resizable && !isOverlay && shell.sidebarMode === 'expanded' ? (\n <PaneResizeContext.Provider\n value={{\n containerRef: localRef,\n cssVarName: '--sidebar-size',\n minSize,\n maxSize,\n defaultSize: expandedSize,\n orientation: 'vertical',\n edge: 'end',\n computeNext: (client, startClient, startSize) => {\n const isRtl = getComputedStyle(localRef.current!).direction === 'rtl';\n const delta = client - startClient;\n return startSize + (isRtl ? -delta : delta);\n },\n onResize,\n onResizeStart,\n onResizeEnd: (size) => {\n onResizeEnd?.(size);\n emitSizeChange(size, { reason: 'resize' });\n persistenceAdapter?.save?.(size);\n },\n target: 'sidebar',\n collapsible,\n snapPoints,\n snapTolerance: snapTolerance ?? 8,\n collapseThreshold,\n requestCollapse: () => shell.setSidebarMode('collapsed'),\n requestToggle: () => shell.togglePane('sidebar'),\n }}\n >\n {handleChildren.length > 0 ? handleChildren.map((el, i) => React.cloneElement(el, { key: el.key ?? i })) : <PaneHandle />}\n </PaneResizeContext.Provider>\n ) : null;\n\n // Normalize CSS lengths to px\n const normalizeToPx = React.useCallback((value: number | string | undefined): number | undefined => {\n if (value == null) return undefined;\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n const str = String(value).trim();\n if (!str) return undefined;\n if (str.endsWith('px')) return Number.parseFloat(str);\n if (str.endsWith('rem')) {\n const rem = Number.parseFloat(getComputedStyle(document.documentElement).fontSize || '16') || 16;\n return Number.parseFloat(str) * rem;\n }\n if (str.endsWith('%')) {\n const pct = Number.parseFloat(str);\n const base = document.documentElement.clientWidth || window.innerWidth || 0;\n return (pct / 100) * base;\n }\n const n = Number.parseFloat(str);\n return Number.isFinite(n) ? n : undefined;\n }, []);\n\n // Apply defaultSize on mount when uncontrolled\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof size === 'undefined' && typeof defaultSize !== 'undefined') {\n const px = normalizeToPx(defaultSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--sidebar-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'init' });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Controlled size sync\n const controlledSize = size;\n React.useEffect(() => {\n if (!localRef.current) return;\n if (typeof controlledSize === 'undefined') return;\n const px = normalizeToPx(controlledSize);\n if (typeof px === 'number' && Number.isFinite(px)) {\n const minPx = typeof minSize === 'number' ? minSize : undefined;\n const maxPx = typeof maxSize === 'number' ? maxSize : undefined;\n const clamped = Math.min(maxPx ?? px, Math.max(minPx ?? px, px));\n localRef.current.style.setProperty('--sidebar-size', `${clamped}px`);\n emitSizeChange(clamped, { reason: 'controlled' });\n }\n }, [controlledSize, minSize, maxSize, normalizeToPx, emitSizeChange]);\n\n if (isOverlay) {\n const open = shell.sidebarMode !== 'collapsed';\n return (\n <Sheet.Root open={open} onOpenChange={(o) => shell.setSidebarMode(o ? 'expanded' : 'collapsed')}>\n <Sheet.Content\n side=\"start\"\n style={{ padding: 0 }}\n width={{\n initial: `${open ? (shell.sidebarMode === 'thin' ? thinSize : expandedSize) : lastOverlayWidthRef.current}px`,\n }}\n >\n <VisuallyHidden>\n <Sheet.Title>Navigation</Sheet.Title>\n </VisuallyHidden>\n {contentChildren}\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n return (\n <div\n {...sidebarDomProps}\n ref={setRef}\n className={classNames('rt-ShellSidebar', className)}\n data-mode={shell.sidebarMode}\n data-peek={shell.peekTarget === 'sidebar' || undefined}\n data-presentation={shell.currentBreakpointReady ? resolvedPresentation : undefined}\n data-open={(shell.currentBreakpointReady && isStacked && isContentVisible) || undefined}\n style={{\n ...style,\n ['--sidebar-size' as any]: `${expandedSize}px`,\n ['--sidebar-thin-size' as any]: `${thinSize}px`,\n ['--sidebar-min-size' as any]: `${minSize}px`,\n ['--sidebar-max-size' as any]: `${maxSize}px`,\n ...(shell.peekTarget === 'sidebar' && shell.sidebarMode === 'collapsed' && !isOverlay\n ? (() => {\n const strategy: 'both' | 'single' = toggleModes ?? 'both';\n const current = shell.sidebarMode as SidebarMode;\n let next: SidebarMode;\n if (strategy === 'both') {\n next = current === 'collapsed' ? 'thin' : current === 'thin' ? 'expanded' : 'collapsed';\n } else {\n const target = resolveDefaultSidebarMode();\n next = current === 'collapsed' ? target : 'collapsed';\n }\n if (next === 'thin') {\n return {\n ['--peek-sidebar-width' as any]: `${thinSize}px`,\n } as React.CSSProperties;\n }\n return {\n ['--peek-sidebar-width' as any]: `var(--sidebar-size, ${expandedSize}px)`,\n } as React.CSSProperties;\n })()\n : {}),\n }}\n >\n <div className=\"rt-ShellSidebarContent\" data-visible={isContentVisible || undefined}>\n {contentChildren}\n </div>\n {handleEl}\n </div>\n );\n}) as SidebarComponent;\n\nSidebar.displayName = 'Shell.Sidebar';\nSidebar.Handle = SidebarHandle;\n"],
5
+ "mappings": "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",
6
+ "names": ["shell_sidebar_exports", "__export", "Sidebar", "__toCommonJS", "React", "import_classnames", "Sheet", "import_visually_hidden", "import_shell_context", "import_shell_hooks", "import_shell_resize", "import_shell_prop_helpers", "import_shell_handles", "import_shell_types", "SIDEBAR_DOM_PROP_KEYS", "initialProps", "ref", "className", "presentation", "expandedSize", "minSize", "maxSize", "resizable", "collapsible", "onExpand", "onCollapse", "onResize", "onResizeStart", "onResizeEnd", "snapPoints", "snapTolerance", "collapseThreshold", "paneId", "persistence", "children", "style", "thinSize", "toggleModes", "state", "defaultState", "onStateChange", "size", "defaultSize", "onSizeChange", "sizeUpdate", "sizeUpdateMs", "sidebarDomProps", "shell", "resolvedPresentation", "isOverlay", "isStacked", "localRef", "setRef", "node", "childArray", "handleChildren", "el", "contentChildren", "emitSizeChange", "cb", "strategy", "ms", "t", "s", "meta", "last", "now", "sidebarId", "wasControlledRef", "isControlled", "stateIsResponsive", "resolvedSidebarDefault", "next", "initial", "lastNotifyModeRef", "isContentVisible", "persistenceAdapter", "key", "v", "mounted", "loaded", "shellForToggle", "resolveDefaultSidebarMode", "resolved", "compute", "current", "target", "cur", "lastOverlayWidthRef", "lastOverlayModeRef", "handleEl", "client", "startClient", "startSize", "isRtl", "delta", "i", "normalizeToPx", "value", "str", "rem", "pct", "base", "n", "px", "clamped", "controlledSize", "open", "o", "classNames"]
7
7
  }
@@ -214,11 +214,20 @@ interface RowProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'children
214
214
  declare const Row: React.ForwardRefExoticComponent<RowProps & React.RefAttributes<HTMLDivElement>>;
215
215
  declare const RowStart: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
216
216
  declare const RowEnd: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
217
- type SendProps = IconButtonProps & {
217
+ type SendProps = Omit<IconButtonProps, 'aria-label' | 'aria-labelledby'> & {
218
+ /** Optional override for accessible name. Defaults to "Send". */
219
+ 'aria-label'?: string;
220
+ 'aria-labelledby'?: string;
218
221
  asChild?: boolean;
219
222
  clearOnSend?: boolean;
220
223
  };
221
- declare const Send: React.ForwardRefExoticComponent<SendProps & React.RefAttributes<HTMLButtonElement>>;
224
+ declare const Send: React.ForwardRefExoticComponent<Omit<IconButtonProps, "aria-label" | "aria-labelledby"> & {
225
+ /** Optional override for accessible name. Defaults to "Send". */
226
+ 'aria-label'?: string;
227
+ 'aria-labelledby'?: string;
228
+ asChild?: boolean;
229
+ clearOnSend?: boolean;
230
+ } & React.RefAttributes<HTMLButtonElement>>;
222
231
  export { Root, Textarea, InlineStart, InlineEnd, AttachmentsRow, Attachment, AttachTrigger, Row, RowStart, RowEnd, Send };
223
232
  export type { RootProps as ChatbarRootProps, TextareaProps as ChatbarTextareaProps, RowProps as ChatbarRowProps, SendProps as ChatbarSendProps, ChatbarAttachment };
224
233
  //# sourceMappingURL=chatbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatbar.d.ts","sourceRoot":"","sources":["../../../src/components/chatbar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chatbar.d.ts","sourceRoot":"","sources":["../../../src/components/chatbar.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";var nt=Object.create;var ue=Object.defineProperty;var at=Object.getOwnPropertyDescriptor;var ot=Object.getOwnPropertyNames;var rt=Object.getPrototypeOf,st=Object.prototype.hasOwnProperty;var it=(a,o)=>{for(var r in o)ue(a,r,{get:o[r],enumerable:!0})},Ve=(a,o,r,u)=>{if(o&&typeof o=="object"||typeof o=="function")for(let l of ot(o))!st.call(a,l)&&l!==r&&ue(a,l,{get:()=>o[l],enumerable:!(u=at(o,l))||u.enumerable});return a};var Ue=(a,o,r)=>(r=a!=null?nt(rt(a)):{},Ve(o||!a||!a.__esModule?ue(r,"default",{value:a,enumerable:!0}):r,a)),lt=a=>Ve(ue({},"__esModule",{value:!0}),a);var ct={};it(ct,{AttachTrigger:()=>Le,Attachment:()=>me,AttachmentsRow:()=>Me,InlineEnd:()=>Oe,InlineStart:()=>Se,Root:()=>Ee,Row:()=>Fe,RowEnd:()=>Ne,RowStart:()=>He,Send:()=>De,Textarea:()=>Te});module.exports=lt(ct);var e=Ue(require("react")),T=Ue(require("classnames")),Pe=require("./icon-button.js"),pe=require("./icons.js"),oe=require("./flex.js"),$e=require("./scroll-area.js"),D=require("./slot.js"),qe=require("./box.js"),de=require("./text.js"),Ye=require("react-dropzone");const we=typeof window<"u"?e.useLayoutEffect:e.useEffect,Ke=e.createContext(null),W=()=>{const a=e.useContext(Ke);if(!a)throw new Error("Chatbar context not found. Wrap parts in <Chatbar.Root>.");return a},Ee=e.forwardRef((a,o)=>{const{className:r,style:u,children:l,value:C,defaultValue:R="",onValueChange:h,open:c,defaultOpen:w=!1,onOpenChange:g,expandOn:i="both",minLines:L=1,maxLines:m=6,sendMode:f="whenDirty",disabled:S,readOnly:V,onSubmit:O,size:H="2",variant:U,color:N,radius:K,panelBackground:M,material:z,width:re,maxWidth:G,asChild:se,attachments:_,defaultAttachments:he=[],onAttachmentsChange:$,accept:J,multiple:k=!0,maxAttachments:P,maxFileSize:p,paste:fe=!0,pasteAccept:Q,clearOnSubmit:be=!0,onAttachmentReject:q,dropzone:I=!0,apiRef:n,...d}=a,b=z||M,x=C!=null,[F,Ce]=e.useState(R),X=x?C:F,j=c!=null,[Z,Y]=e.useState(w),ee=j?c:Z,ge=e.useRef(null),ie=e.useRef(null),ye=e.useRef(!1),te="attachments"in a,[ze,ke]=e.useState(he),B=e.useMemo(()=>te?_??[]:ze,[te,_,ze]),le=e.useRef(new Set),ve=t=>Array.isArray(t)?t:typeof t=="string"?t.split(",").map(s=>s.trim()):[],ne=ve(J),Ie=ve(Q).length>0?ve(Q):ne,xe=(t,s)=>{if(s.length===0)return!0;const y=t.type.toLowerCase(),E=t.name.toLowerCase();for(const v of s){const A=v.toLowerCase();if(A.includes("/")){const[ce,Re]=A.split("/"),[ae,tt]=y.split("/");if(ce==="*"||ce===ae&&(Re==="*"||Re===tt))return!0}else if(A.startsWith(".")&&E.endsWith(A))return!0}return!1},Ge=t=>{const s=[],y=[],E=typeof P=="number"?Math.max(P-B.length,0):1/0;for(const v of t){if(s.length>=E){y.push({file:v,reason:"count"});continue}if(typeof p=="number"&&v.size>p){y.push({file:v,reason:"size"});continue}if(!xe(v,ne)){y.push({file:v,reason:"type"});continue}const A=`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,ce=/\.(png|jpe?g|gif|webp|bmp|svg)$/i.test(v.name),ae=(v.type||"").toLowerCase().startsWith("image/")||ce?URL.createObjectURL(v):void 0;ae&&le.current.add(ae),s.push({id:A,name:v.name,size:v.size,type:v.type,file:v,url:ae,status:"idle"})}return{accepted:s,rejected:y}},Ae=t=>{const{accepted:s,rejected:y}=Ge(t);if(s.length>0){const E=B.concat(s);te||ke(E),$?.(E),j||Y(!0),g?.(!0)}y.length>0&&q?.(y)},_e=t=>{const s=A=>Ie.length===0?xe(A,ne):xe(A,Ie),y=[],E=[],v=typeof P=="number"?Math.max(P-B.length,0):1/0;for(const A of t){if(y.length>=v){E.push({file:A,reason:"count"});continue}if(typeof p=="number"&&A.size>p){E.push({file:A,reason:"size"});continue}if(!s(A)){E.push({file:A,reason:"type"});continue}y.push(A)}y.length>0&&Ae(y),E.length>0&&q?.(E)};e.useEffect(()=>{const t=new Set(B.map(s=>s.url).filter(Boolean));for(const s of Array.from(le.current))t.has(s)||(URL.revokeObjectURL(s),le.current.delete(s))},[B]),e.useEffect(()=>{const t=le.current;return()=>{for(const s of Array.from(t))URL.revokeObjectURL(s);t.clear()}},[]);const Je=se?D.Slot:"div",Qe=e.useCallback(t=>{const s=t.relatedTarget,y=ge.current;y&&(s&&y.contains(s)||ye.current||(X?.trim?.()??"").length===0&&B.length===0&&(j||Y(!1),g?.(!1)))},[j,g,X,B]),{getRootProps:Xe,getInputProps:Ze,isDragActive:je,open:Be}=(0,Ye.useDropzone)({onDrop:(t,s)=>{if(t.length>0&&Ae(t),s.length>0&&q){const y=s.map(({file:E,errors:v})=>{const A=v[0]?.code==="file-too-large"?"size":v[0]?.code==="file-invalid-type"?"type":"count";return{file:E,reason:A}});q(y)}},accept:ne.length>0?ne.reduce((t,s)=>(s.includes("/")?t[s]=[]:s.startsWith(".")&&(t[s]=[]),t),{}):void 0,multiple:k,maxSize:p,noClick:!0,noKeyboard:!0,disabled:!I||S});e.useImperativeHandle(n,()=>({focusTextarea:()=>ie.current?.focus({preventScroll:!0}),openFilePicker:()=>{ye.current=!0,Be()}}),[Be]);const We=e.useCallback(t=>{if(!(t instanceof Element))return!1;const s=t;return s.closest(".rt-ChatbarDropOverlay")?!0:!!s.closest('button, [role="button"], a[href], input, textarea, select, [contenteditable], [tabindex]:not([tabindex="-1"])')},[]),et=e.useCallback(t=>{S||We(t.target)||t.pointerType==="mouse"&&t.button!==0||(t.preventDefault(),ie.current?.focus({preventScroll:!0}))},[S,We,ie]);return e.createElement(Ke.Provider,{value:{open:ee,setOpen:t=>{j||Y(t),g?.(t)},isOpenControlled:j,value:X,setValue:t=>{x||Ce(t),h?.(t)},isValueControlled:x,size:H,expandOn:i,minLines:L,maxLines:m,sendMode:f,disabled:S,readOnly:V,onSubmit:O,rootRef:ge,textareaRef:ie,attachments:B,setAttachments:t=>{te||ke(t),$?.(t)},isAttachmentsControlled:te,accept:J,multiple:k,maxAttachments:P,maxFileSize:p,paste:fe,pasteAccept:Q,clearOnSubmit:be,onAttachmentReject:q,dropzone:I,appendFiles:Ae,appendFilesFromPaste:_e,fileDialogOpenRef:ye}},e.createElement(Je,{...d,ref:t=>{typeof o=="function"?o(t):o&&(o.current=t),ge.current=t},className:(0,T.default)("rt-ChatbarRoot",`rt-r-size-${H}`,r),style:{position:"relative",width:re,maxWidth:G,...u},"data-state":ee?"open":"closed","data-disabled":S?"":void 0,"data-readonly":V?"":void 0,"data-drop-active":I&&je?"":void 0,"data-accent-color":N,"data-radius":K,"data-panel-background":b,"data-material":b,"aria-expanded":ee,onBlurCapture:Qe},I&&e.createElement("input",{...Ze()}),e.createElement("div",{...I?Xe():{},style:{width:"100%",height:"100%"},onPointerDown:et},e.createElement(qe.Box,{className:(0,T.default)("rt-ChatbarBox",`rt-variant-${U??"surface"}`),style:{position:"relative"},"data-accent-color":N,"data-radius":K,"data-panel-background":b,"data-material":b},e.createElement("div",{className:"rt-ChatbarGrid"},l),I&&je&&e.createElement("div",{className:"rt-ChatbarDropOverlay"},e.createElement("div",{className:"rt-ChatbarDropContent"},e.createElement(de.Text,{color:"gray",size:H,weight:"medium"},"Drop files here to attach")))))))});Ee.displayName="Chatbar.Root";const Te=e.forwardRef((a,o)=>{const{className:r,style:u,asChild:l,onFocus:C,onInput:R,onChange:h,onPaste:c,onKeyDown:w,submitOnEnter:g=!1,rows:i,...L}=a,m=W(),{open:f,minLines:S,maxLines:V,expandOn:O,disabled:H,readOnly:U,setOpen:N,setValue:K,textareaRef:M,value:z,isValueControlled:re,sendMode:G,paste:se,appendFilesFromPaste:_,size:he}=m,$=e.useRef(0),J=e.useRef(0),k=e.useRef(0),P=e.useCallback(()=>{const n=M.current;if(!n)return;const d=window.getComputedStyle(n),b=parseFloat(d.lineHeight)||20,x=parseFloat(d.paddingTop)||0,F=parseFloat(d.paddingBottom)||0;$.current=b,J.current=x+F,k.current=Math.ceil(1*b)+x+F},[M]),p=e.useCallback(n=>{const d=M.current;if(!d)return;d.style.height="auto",$.current===0&&P();const b=$.current,x=J.current,F=n??f,Ce=F?S:1,X=F?V:1,j=Math.ceil(Ce*b)+x,Z=Math.ceil(X*b)+x,Y=Math.max(d.scrollHeight,j),ee=Math.min(Y,Z);d.style.height=`${ee}px`,Y>Z?(d.style.overflowY="auto",d.style.maxHeight=`${Z}px`):(d.style.overflowY="hidden",d.style.maxHeight="none")},[f,S,V,M,P]);we(()=>{p()},[p,z,f]),we(()=>{if(!(O==="overflow"||O==="both")||f)return;const n=M.current;if(!n)return;n.style.height="auto",k.current===0&&P(),n.scrollHeight>k.current+1&&(N(!0),p(!0),requestAnimationFrame(()=>p(!0)))},[z,O,f,N,M,P,p]),we(()=>{P(),p()},[P,p,he]),e.useEffect(()=>{const n=M.current;if(!n||typeof ResizeObserver>"u")return;let d=$.current;const b=new ResizeObserver(()=>{const x=window.getComputedStyle(n),F=parseFloat(x.lineHeight)||20;F!==d&&(d=F,P(),requestAnimationFrame(()=>p()))});return b.observe(n),()=>b.disconnect()},[M,P,p]),e.useEffect(()=>{},[]);const fe=e.useCallback(n=>{H||U||((O==="focus"||O==="both")&&!f&&N(!0),C?.(n))},[H,U,O,f,N,C]),Q=e.useCallback(n=>{const d=n.currentTarget,b=d.value;K(b),(O==="overflow"||O==="both")&&!f&&(d.style.height="auto",k.current===0&&P(),d.scrollHeight>k.current+1&&(N(!0),p(!0),requestAnimationFrame(()=>p(!0)))),requestAnimationFrame(()=>p()),h?.(n)},[O,f,N,K,h,p,P]),be=e.useCallback(n=>{if(se){const b=Array.from(n.clipboardData?.items??[]).filter(x=>x.kind==="file").map(x=>x.getAsFile()).filter(x=>!!x);b.length>0&&(n.preventDefault(),_(b))}setTimeout(()=>{f?p():p(!0)},0),c?.(n)},[se,f,p,c,_]),q=e.useCallback(n=>{if(!g){w?.(n);return}if(n.key==="Enter"&&!n.shiftKey&&!n.altKey&&!n.ctrlKey&&!n.metaKey&&!n.nativeEvent.isComposing){if(H||U){w?.(n);return}if(G==="never"){w?.(n);return}const b=z.trim().length>0||m.attachments.length>0;if(G==="whenDirty"&&!b){w?.(n);return}n.preventDefault(),m.onSubmit?.({value:z,attachments:m.attachments}),m.clearOnSubmit&&(re||K(""),m.setAttachments([]))}w?.(n)},[g,H,U,G,z,re,K,m,w]),I=l?D.Slot:"textarea";return e.createElement("div",{className:(0,T.default)("rt-ChatbarField","rt-ChatbarTextarea",r)},e.createElement(I,{...L,ref:n=>{typeof o=="function"?o(n):o&&(o.current=n),M.current=n},className:"rt-ChatbarInput",value:z,onInput:R,onChange:Q,onFocus:fe,onPaste:be,onKeyDown:q,disabled:H,readOnly:U,rows:f?S:1,spellCheck:L.spellCheck??!0,autoCorrect:L.autoCorrect??"on",style:u}))});Te.displayName="Chatbar.Textarea";const Se=e.forwardRef((a,o)=>{const{children:r,asChild:u,style:l,className:C,...R}=a;return W().open?null:e.createElement(u?D.Slot:"div",{...R,ref:o,className:(0,T.default)("rt-ChatbarInlineStart",C),style:l},r)});Se.displayName="Chatbar.InlineStart";const Oe=e.forwardRef((a,o)=>{const{children:r,asChild:u,style:l,className:C,...R}=a;return W().open?null:e.createElement(u?D.Slot:"div",{...R,ref:o,className:(0,T.default)("rt-ChatbarInlineEnd",C),style:l},r)});Oe.displayName="Chatbar.InlineEnd";const Me=e.forwardRef((a,o)=>{const{asChild:r,forceMount:u,renderAttachment:l,className:C,style:R,...h}=a,c=W();return!(c.attachments.length>0)&&!u?null:e.createElement(r?D.Slot:"div",{...h,ref:o,className:(0,T.default)("rt-ChatbarAttachmentsRow",C),style:R,role:"list","aria-label":h["aria-label"]??"Attachments"},e.createElement($e.ScrollArea,{className:"rt-ChatbarScrollArea",scrollbars:"horizontal",size:"1"},e.createElement(oe.Flex,{align:"center",gap:"2",style:{minWidth:"fit-content"}},c.attachments.map(i=>e.createElement(me,{key:i.id,attachment:i,asChild:!!l},l?.(i))))))});Me.displayName="Chatbar.AttachmentsRow";const me=e.forwardRef((a,o)=>{const{attachment:r,asChild:u,className:l,style:C,children:R,...h}=a,c=W(),w=u?D.Slot:"div",g=!!r.url&&r.type.startsWith("image/");return e.createElement(w,{...h,ref:o,className:(0,T.default)("rt-ChatbarAttachment",l),style:C,role:"listitem","data-kind":g?"image":"file",title:r.name},R??e.createElement(oe.Flex,{align:"center",gap:"2",pr:g?void 0:"6"},e.createElement("div",{className:"rt-ChatbarAttachmentPreview","aria-hidden":!0},g?e.createElement("img",{className:"rt-ChatbarAttachmentImage",src:r.url,alt:""}):e.createElement(pe.FileTextIcon,null)),!g&&e.createElement(oe.Flex,{direction:"column",gap:"0",style:{minWidth:0}},e.createElement(de.Text,{size:c.size,weight:"medium",style:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},r.name),e.createElement(de.Text,{size:"1",color:"gray"},Math.ceil(r.size/1024)," KB")),e.createElement(Pe.IconButton,{className:"rt-ChatbarAttachmentRemove","aria-label":`Remove ${r.name}`,size:"1",variant:"classic",highContrast:!0,color:"gray",onClick:()=>c.setAttachments(c.attachments.filter(i=>i.id!==r.id))},e.createElement(pe.CloseIcon,null))))});me.displayName="Chatbar.Attachment";const Le=e.forwardRef((a,o)=>{const{asChild:r,accept:u,multiple:l,className:C,style:R,...h}=a,c=W(),w=e.useRef(null),g=r?D.Slot:"button",i=u??c.accept,L=(Array.isArray(i)?i:i?.split(",")??[]).join(",");return e.useEffect(()=>{const m=()=>{c.fileDialogOpenRef.current=!1};return window.addEventListener("focus",m),()=>window.removeEventListener("focus",m)},[c.fileDialogOpenRef]),e.createElement(e.Fragment,null,e.createElement(g,{...h,ref:o,className:(0,T.default)("rt-ChatbarAttachTrigger",C),style:R,type:h.type??"button","aria-label":h["aria-label"]??"Add attachments",onPointerDown:m=>{c.fileDialogOpenRef.current=!0,h.onPointerDown?.(m)},onMouseDown:m=>{c.fileDialogOpenRef.current=!0,h.onMouseDown?.(m)},onClick:m=>{c.fileDialogOpenRef.current=!0,w.current&&w.current.click(),h.onClick?.(m)}}),e.createElement("input",{ref:w,type:"file",accept:L,multiple:l??c.multiple,tabIndex:-1,style:{display:"none"},onChange:m=>{const f=Array.from(m.currentTarget.files??[]);f.length>0&&c.appendFiles(f),c.fileDialogOpenRef.current=!1,m.currentTarget.value=""}}))});Le.displayName="Chatbar.AttachTrigger";const Fe=e.forwardRef((a,o)=>{const{asChild:r,children:u,className:l,style:C,...R}=a;return W().open?e.createElement(r?D.Slot:"div",{...R,ref:o,className:(0,T.default)("rt-ChatbarRow",l),style:C},e.createElement(oe.Flex,{align:"center",justify:"between",width:"100%"},u)):null});Fe.displayName="Chatbar.Row";const He=e.forwardRef((a,o)=>{const{className:r,style:u,...l}=a;return e.createElement("div",{...l,ref:o,className:(0,T.default)("rt-ChatbarRowStart",r),style:u})});He.displayName="Chatbar.RowStart";const Ne=e.forwardRef((a,o)=>{const{className:r,style:u,...l}=a;return e.createElement("div",{...l,ref:o,className:(0,T.default)("rt-ChatbarRowEnd",r),style:u})});Ne.displayName="Chatbar.RowEnd";const De=e.forwardRef((a,o)=>{const{asChild:r,clearOnSend:u=!0,disabled:l,children:C,className:R,style:h,size:c,variant:w,...g}=a,i=W(),m=i.value.trim().length>0||i.attachments.length>0,f=i.sendMode==="always"||i.sendMode==="whenDirty"&&m;if(i.sendMode==="never")return null;const S=V=>{i.disabled||i.readOnly||(i.onSubmit?.({value:i.value,attachments:i.attachments}),u&&(i.isValueControlled||i.setValue(""),i.clearOnSubmit&&i.setAttachments([])),g.onClick?.(V))};return e.createElement(Pe.IconButton,{...g,ref:o,size:c??i.size,variant:w??(i.open?"solid":"ghost"),disabled:l||i.disabled||i.readOnly,className:(0,T.default)("rt-ChatbarSend",R),style:{opacity:f?1:0,pointerEvents:f?"auto":"none",...h},asChild:r,onClick:S,"aria-label":g["aria-label"]??"Send"},C??e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-arrow-right-icon lucide-arrow-right"},e.createElement("path",{d:"M5 12h14"}),e.createElement("path",{d:"m12 5 7 7-7 7"})))});De.displayName="Chatbar.Send";
1
+ "use strict";var nt=Object.create;var ue=Object.defineProperty;var at=Object.getOwnPropertyDescriptor;var ot=Object.getOwnPropertyNames;var rt=Object.getPrototypeOf,st=Object.prototype.hasOwnProperty;var it=(a,r)=>{for(var s in r)ue(a,s,{get:r[s],enumerable:!0})},Ve=(a,r,s,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let l of ot(r))!st.call(a,l)&&l!==s&&ue(a,l,{get:()=>r[l],enumerable:!(u=at(r,l))||u.enumerable});return a};var Ue=(a,r,s)=>(s=a!=null?nt(rt(a)):{},Ve(r||!a||!a.__esModule?ue(s,"default",{value:a,enumerable:!0}):s,a)),lt=a=>Ve(ue({},"__esModule",{value:!0}),a);var ct={};it(ct,{AttachTrigger:()=>Le,Attachment:()=>me,AttachmentsRow:()=>Me,InlineEnd:()=>Oe,InlineStart:()=>Se,Root:()=>Ee,Row:()=>Fe,RowEnd:()=>Ne,RowStart:()=>He,Send:()=>De,Textarea:()=>Te});module.exports=lt(ct);var e=Ue(require("react")),S=Ue(require("classnames")),Pe=require("./icon-button.js"),pe=require("./icons.js"),oe=require("./flex.js"),$e=require("./scroll-area.js"),D=require("./slot.js"),qe=require("./box.js"),de=require("./text.js"),Ye=require("react-dropzone");const we=typeof window<"u"?e.useLayoutEffect:e.useEffect,Ke=e.createContext(null),V=()=>{const a=e.useContext(Ke);if(!a)throw new Error("Chatbar context not found. Wrap parts in <Chatbar.Root>.");return a},Ee=e.forwardRef((a,r)=>{const{className:s,style:u,children:l,value:f,defaultValue:x="",onValueChange:p,open:c,defaultOpen:A=!1,onOpenChange:R,expandOn:P="both",minLines:O=1,maxLines:o=6,sendMode:C="whenDirty",disabled:M,readOnly:z,onSubmit:T,size:L="2",variant:U,color:N,radius:K,panelBackground:F,material:k,width:re,maxWidth:G,asChild:se,attachments:_,defaultAttachments:he=[],onAttachmentsChange:$,accept:J,multiple:I=!0,maxAttachments:w,maxFileSize:m,paste:fe=!0,pasteAccept:Q,clearOnSubmit:be=!0,onAttachmentReject:q,dropzone:j=!0,apiRef:n,...d}=a,h=k||F,y=f!=null,[H,ge]=e.useState(x),X=y?f:H,B=c!=null,[Z,Y]=e.useState(A),ee=B?c:Z,Ce=e.useRef(null),ie=e.useRef(null),ye=e.useRef(!1),te="attachments"in a,[ze,ke]=e.useState(he),W=e.useMemo(()=>te?_??[]:ze,[te,_,ze]),le=e.useRef(new Set),ve=t=>Array.isArray(t)?t:typeof t=="string"?t.split(",").map(i=>i.trim()):[],ne=ve(J),Ie=ve(Q).length>0?ve(Q):ne,xe=(t,i)=>{if(i.length===0)return!0;const b=t.type.toLowerCase(),E=t.name.toLowerCase();for(const g of i){const v=g.toLowerCase();if(v.includes("/")){const[ce,Re]=v.split("/"),[ae,tt]=b.split("/");if(ce==="*"||ce===ae&&(Re==="*"||Re===tt))return!0}else if(v.startsWith(".")&&E.endsWith(v))return!0}return!1},Ge=t=>{const i=[],b=[],E=typeof w=="number"?Math.max(w-W.length,0):1/0;for(const g of t){if(i.length>=E){b.push({file:g,reason:"count"});continue}if(typeof m=="number"&&g.size>m){b.push({file:g,reason:"size"});continue}if(!xe(g,ne)){b.push({file:g,reason:"type"});continue}const v=`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,ce=/\.(png|jpe?g|gif|webp|bmp|svg)$/i.test(g.name),ae=(g.type||"").toLowerCase().startsWith("image/")||ce?URL.createObjectURL(g):void 0;ae&&le.current.add(ae),i.push({id:v,name:g.name,size:g.size,type:g.type,file:g,url:ae,status:"idle"})}return{accepted:i,rejected:b}},Ae=t=>{const{accepted:i,rejected:b}=Ge(t);if(i.length>0){const E=W.concat(i);te||ke(E),$?.(E),B||Y(!0),R?.(!0)}b.length>0&&q?.(b)},_e=t=>{const i=v=>Ie.length===0?xe(v,ne):xe(v,Ie),b=[],E=[],g=typeof w=="number"?Math.max(w-W.length,0):1/0;for(const v of t){if(b.length>=g){E.push({file:v,reason:"count"});continue}if(typeof m=="number"&&v.size>m){E.push({file:v,reason:"size"});continue}if(!i(v)){E.push({file:v,reason:"type"});continue}b.push(v)}b.length>0&&Ae(b),E.length>0&&q?.(E)};e.useEffect(()=>{const t=new Set(W.map(i=>i.url).filter(Boolean));for(const i of Array.from(le.current))t.has(i)||(URL.revokeObjectURL(i),le.current.delete(i))},[W]),e.useEffect(()=>{const t=le.current;return()=>{for(const i of Array.from(t))URL.revokeObjectURL(i);t.clear()}},[]);const Je=se?D.Slot:"div",Qe=e.useCallback(t=>{const i=t.relatedTarget,b=Ce.current;b&&(i&&b.contains(i)||ye.current||(X?.trim?.()??"").length===0&&W.length===0&&(B||Y(!1),R?.(!1)))},[B,R,X,W]),{getRootProps:Xe,getInputProps:Ze,isDragActive:je,open:Be}=(0,Ye.useDropzone)({onDrop:(t,i)=>{if(t.length>0&&Ae(t),i.length>0&&q){const b=i.map(({file:E,errors:g})=>{const v=g[0]?.code==="file-too-large"?"size":g[0]?.code==="file-invalid-type"?"type":"count";return{file:E,reason:v}});q(b)}},accept:ne.length>0?ne.reduce((t,i)=>(i.includes("/")?t[i]=[]:i.startsWith(".")&&(t[i]=[]),t),{}):void 0,multiple:I,maxSize:m,noClick:!0,noKeyboard:!0,disabled:!j||M});e.useImperativeHandle(n,()=>({focusTextarea:()=>ie.current?.focus({preventScroll:!0}),openFilePicker:()=>{ye.current=!0,Be()}}),[Be]);const We=e.useCallback(t=>{if(!(t instanceof Element))return!1;const i=t;return i.closest(".rt-ChatbarDropOverlay")?!0:!!i.closest('button, [role="button"], a[href], input, textarea, select, [contenteditable], [tabindex]:not([tabindex="-1"])')},[]),et=e.useCallback(t=>{M||We(t.target)||t.pointerType==="mouse"&&t.button!==0||(t.preventDefault(),ie.current?.focus({preventScroll:!0}))},[M,We,ie]);return e.createElement(Ke.Provider,{value:{open:ee,setOpen:t=>{B||Y(t),R?.(t)},isOpenControlled:B,value:X,setValue:t=>{y||ge(t),p?.(t)},isValueControlled:y,size:L,expandOn:P,minLines:O,maxLines:o,sendMode:C,disabled:M,readOnly:z,onSubmit:T,rootRef:Ce,textareaRef:ie,attachments:W,setAttachments:t=>{te||ke(t),$?.(t)},isAttachmentsControlled:te,accept:J,multiple:I,maxAttachments:w,maxFileSize:m,paste:fe,pasteAccept:Q,clearOnSubmit:be,onAttachmentReject:q,dropzone:j,appendFiles:Ae,appendFilesFromPaste:_e,fileDialogOpenRef:ye}},e.createElement(Je,{...d,ref:t=>{typeof r=="function"?r(t):r&&(r.current=t),Ce.current=t},className:(0,S.default)("rt-ChatbarRoot",`rt-r-size-${L}`,s),style:{position:"relative",width:re,maxWidth:G,...u},"data-state":ee?"open":"closed","data-disabled":M?"":void 0,"data-readonly":z?"":void 0,"data-drop-active":j&&je?"":void 0,"data-accent-color":N,"data-radius":K,"data-panel-background":h,"data-material":h,"aria-expanded":ee,onBlurCapture:Qe},j&&e.createElement("input",{...Ze()}),e.createElement("div",{...j?Xe():{},style:{width:"100%",height:"100%"},onPointerDown:et},e.createElement(qe.Box,{className:(0,S.default)("rt-ChatbarBox",`rt-variant-${U??"surface"}`),style:{position:"relative"},"data-accent-color":N,"data-radius":K,"data-panel-background":h,"data-material":h},e.createElement("div",{className:"rt-ChatbarGrid"},l),j&&je&&e.createElement("div",{className:"rt-ChatbarDropOverlay"},e.createElement("div",{className:"rt-ChatbarDropContent"},e.createElement(de.Text,{color:"gray",size:L,weight:"medium"},"Drop files here to attach")))))))});Ee.displayName="Chatbar.Root";const Te=e.forwardRef((a,r)=>{const{className:s,style:u,asChild:l,onFocus:f,onInput:x,onChange:p,onPaste:c,onKeyDown:A,submitOnEnter:R=!1,rows:P,...O}=a,o=V(),{open:C,minLines:M,maxLines:z,expandOn:T,disabled:L,readOnly:U,setOpen:N,setValue:K,textareaRef:F,value:k,isValueControlled:re,sendMode:G,paste:se,appendFilesFromPaste:_,size:he}=o,$=e.useRef(0),J=e.useRef(0),I=e.useRef(0),w=e.useCallback(()=>{const n=F.current;if(!n)return;const d=window.getComputedStyle(n),h=parseFloat(d.lineHeight)||20,y=parseFloat(d.paddingTop)||0,H=parseFloat(d.paddingBottom)||0;$.current=h,J.current=y+H,I.current=Math.ceil(1*h)+y+H},[F]),m=e.useCallback(n=>{const d=F.current;if(!d)return;d.style.height="auto",$.current===0&&w();const h=$.current,y=J.current,H=n??C,ge=H?M:1,X=H?z:1,B=Math.ceil(ge*h)+y,Z=Math.ceil(X*h)+y,Y=Math.max(d.scrollHeight,B),ee=Math.min(Y,Z);d.style.height=`${ee}px`,Y>Z?(d.style.overflowY="auto",d.style.maxHeight=`${Z}px`):(d.style.overflowY="hidden",d.style.maxHeight="none")},[C,M,z,F,w]);we(()=>{m()},[m,k,C]),we(()=>{if(!(T==="overflow"||T==="both")||C)return;const n=F.current;if(!n)return;n.style.height="auto",I.current===0&&w(),n.scrollHeight>I.current+1&&(N(!0),m(!0),requestAnimationFrame(()=>m(!0)))},[k,T,C,N,F,w,m]),we(()=>{w(),m()},[w,m,he]),e.useEffect(()=>{const n=F.current;if(!n||typeof ResizeObserver>"u")return;let d=$.current;const h=new ResizeObserver(()=>{const y=window.getComputedStyle(n),H=parseFloat(y.lineHeight)||20;H!==d&&(d=H,w(),requestAnimationFrame(()=>m()))});return h.observe(n),()=>h.disconnect()},[F,w,m]),e.useEffect(()=>{},[]);const fe=e.useCallback(n=>{L||U||((T==="focus"||T==="both")&&!C&&N(!0),f?.(n))},[L,U,T,C,N,f]),Q=e.useCallback(n=>{const d=n.currentTarget,h=d.value;K(h),(T==="overflow"||T==="both")&&!C&&(d.style.height="auto",I.current===0&&w(),d.scrollHeight>I.current+1&&(N(!0),m(!0),requestAnimationFrame(()=>m(!0)))),requestAnimationFrame(()=>m()),p?.(n)},[T,C,N,K,p,m,w]),be=e.useCallback(n=>{if(se){const h=Array.from(n.clipboardData?.items??[]).filter(y=>y.kind==="file").map(y=>y.getAsFile()).filter(y=>!!y);h.length>0&&(n.preventDefault(),_(h))}setTimeout(()=>{C?m():m(!0)},0),c?.(n)},[se,C,m,c,_]),q=e.useCallback(n=>{if(!R){A?.(n);return}if(n.key==="Enter"&&!n.shiftKey&&!n.altKey&&!n.ctrlKey&&!n.metaKey&&!n.nativeEvent.isComposing){if(L||U){A?.(n);return}if(G==="never"){A?.(n);return}const h=k.trim().length>0||o.attachments.length>0;if(G==="whenDirty"&&!h){A?.(n);return}n.preventDefault(),o.onSubmit?.({value:k,attachments:o.attachments}),o.clearOnSubmit&&(re||K(""),o.setAttachments([]))}A?.(n)},[R,L,U,G,k,re,K,o,A]),j=l?D.Slot:"textarea";return e.createElement("div",{className:(0,S.default)("rt-ChatbarField","rt-ChatbarTextarea",s)},e.createElement(j,{...O,ref:n=>{typeof r=="function"?r(n):r&&(r.current=n),F.current=n},className:"rt-ChatbarInput",value:k,onInput:x,onChange:Q,onFocus:fe,onPaste:be,onKeyDown:q,disabled:L,readOnly:U,rows:C?M:1,spellCheck:O.spellCheck??!0,autoCorrect:O.autoCorrect??"on",style:u}))});Te.displayName="Chatbar.Textarea";const Se=e.forwardRef((a,r)=>{const{children:s,asChild:u,style:l,className:f,...x}=a;return V().open?null:e.createElement(u?D.Slot:"div",{...x,ref:r,className:(0,S.default)("rt-ChatbarInlineStart",f),style:l},s)});Se.displayName="Chatbar.InlineStart";const Oe=e.forwardRef((a,r)=>{const{children:s,asChild:u,style:l,className:f,...x}=a;return V().open?null:e.createElement(u?D.Slot:"div",{...x,ref:r,className:(0,S.default)("rt-ChatbarInlineEnd",f),style:l},s)});Oe.displayName="Chatbar.InlineEnd";const Me=e.forwardRef((a,r)=>{const{asChild:s,forceMount:u,renderAttachment:l,className:f,style:x,...p}=a,c=V();return!(c.attachments.length>0)&&!u?null:e.createElement(s?D.Slot:"div",{...p,ref:r,className:(0,S.default)("rt-ChatbarAttachmentsRow",f),style:x,role:"list","aria-label":p["aria-label"]??"Attachments"},e.createElement($e.ScrollArea,{className:"rt-ChatbarScrollArea",scrollbars:"horizontal",size:"1"},e.createElement(oe.Flex,{align:"center",gap:"2",style:{minWidth:"fit-content"}},c.attachments.map(P=>e.createElement(me,{key:P.id,attachment:P,asChild:!!l},l?.(P))))))});Me.displayName="Chatbar.AttachmentsRow";const me=e.forwardRef((a,r)=>{const{attachment:s,asChild:u,className:l,style:f,children:x,...p}=a,c=V(),A=u?D.Slot:"div",R=!!s.url&&s.type.startsWith("image/");return e.createElement(A,{...p,ref:r,className:(0,S.default)("rt-ChatbarAttachment",l),style:f,role:"listitem","data-kind":R?"image":"file",title:s.name},x??e.createElement(oe.Flex,{align:"center",gap:"2",pr:R?void 0:"6"},e.createElement("div",{className:"rt-ChatbarAttachmentPreview","aria-hidden":!0},R?e.createElement("img",{className:"rt-ChatbarAttachmentImage",src:s.url,alt:""}):e.createElement(pe.FileTextIcon,null)),!R&&e.createElement(oe.Flex,{direction:"column",gap:"0",style:{minWidth:0}},e.createElement(de.Text,{size:c.size,weight:"medium",style:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},s.name),e.createElement(de.Text,{size:"1",color:"gray"},Math.ceil(s.size/1024)," KB")),e.createElement(Pe.IconButton,{className:"rt-ChatbarAttachmentRemove","aria-label":`Remove ${s.name}`,size:"1",variant:"classic",highContrast:!0,color:"gray",onClick:()=>c.setAttachments(c.attachments.filter(P=>P.id!==s.id))},e.createElement(pe.CloseIcon,null))))});me.displayName="Chatbar.Attachment";const Le=e.forwardRef((a,r)=>{const{asChild:s,accept:u,multiple:l,className:f,style:x,...p}=a,c=V(),A=e.useRef(null),R=s?D.Slot:"button",P=u??c.accept,O=(Array.isArray(P)?P:P?.split(",")??[]).join(",");return e.useEffect(()=>{const o=()=>{c.fileDialogOpenRef.current=!1};return window.addEventListener("focus",o),()=>window.removeEventListener("focus",o)},[c.fileDialogOpenRef]),e.createElement(e.Fragment,null,e.createElement(R,{...p,ref:r,className:(0,S.default)("rt-ChatbarAttachTrigger",f),style:x,type:p.type??"button","aria-label":p["aria-label"]??"Add attachments",onPointerDown:o=>{c.fileDialogOpenRef.current=!0,p.onPointerDown?.(o)},onMouseDown:o=>{c.fileDialogOpenRef.current=!0,p.onMouseDown?.(o)},onClick:o=>{c.fileDialogOpenRef.current=!0,A.current&&A.current.click(),p.onClick?.(o)}}),e.createElement("input",{ref:A,type:"file",accept:O,multiple:l??c.multiple,tabIndex:-1,style:{display:"none"},onChange:o=>{const C=Array.from(o.currentTarget.files??[]);C.length>0&&c.appendFiles(C),c.fileDialogOpenRef.current=!1,o.currentTarget.value=""}}))});Le.displayName="Chatbar.AttachTrigger";const Fe=e.forwardRef((a,r)=>{const{asChild:s,children:u,className:l,style:f,...x}=a;return V().open?e.createElement(s?D.Slot:"div",{...x,ref:r,className:(0,S.default)("rt-ChatbarRow",l),style:f},e.createElement(oe.Flex,{align:"center",justify:"between",width:"100%"},u)):null});Fe.displayName="Chatbar.Row";const He=e.forwardRef((a,r)=>{const{className:s,style:u,...l}=a;return e.createElement("div",{...l,ref:r,className:(0,S.default)("rt-ChatbarRowStart",s),style:u})});He.displayName="Chatbar.RowStart";const Ne=e.forwardRef((a,r)=>{const{className:s,style:u,...l}=a;return e.createElement("div",{...l,ref:r,className:(0,S.default)("rt-ChatbarRowEnd",s),style:u})});Ne.displayName="Chatbar.RowEnd";const De=e.forwardRef((a,r)=>{const{asChild:s,clearOnSend:u=!0,disabled:l,children:f,className:x,style:p,size:c,variant:A,"aria-label":R,"aria-labelledby":P,...O}=a,o=V(),M=o.value.trim().length>0||o.attachments.length>0,z=o.sendMode==="always"||o.sendMode==="whenDirty"&&M;if(o.sendMode==="never")return null;const T=L=>{o.disabled||o.readOnly||(o.onSubmit?.({value:o.value,attachments:o.attachments}),u&&(o.isValueControlled||o.setValue(""),o.clearOnSubmit&&o.setAttachments([])),O.onClick?.(L))};return e.createElement(Pe.IconButton,{...O,ref:r,size:c??o.size,variant:A??(o.open?"solid":"ghost"),disabled:l||o.disabled||o.readOnly,className:(0,S.default)("rt-ChatbarSend",x),style:{opacity:z?1:0,pointerEvents:z?"auto":"none",...p},asChild:s,onClick:T,"aria-label":R??(P?void 0:"Send"),"aria-labelledby":P},f??e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-arrow-right-icon lucide-arrow-right"},e.createElement("path",{d:"M5 12h14"}),e.createElement("path",{d:"m12 5 7 7-7 7"})))});De.displayName="Chatbar.Send";
2
2
  //# sourceMappingURL=chatbar.js.map