@orion-ds/react 4.2.9 → 4.2.10

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 (309) hide show
  1. package/dist/index10.cjs +1 -1
  2. package/dist/index10.mjs +1 -1
  3. package/dist/index100.cjs +1 -1
  4. package/dist/index100.mjs +46 -62
  5. package/dist/index101.cjs +1 -1
  6. package/dist/index101.mjs +30 -16
  7. package/dist/index102.cjs +1 -1
  8. package/dist/index102.mjs +28 -30
  9. package/dist/index103.cjs +1 -1
  10. package/dist/index103.mjs +53 -29
  11. package/dist/index104.cjs +1 -1
  12. package/dist/index104.mjs +33 -40
  13. package/dist/index105.cjs +1 -1
  14. package/dist/index105.mjs +44 -36
  15. package/dist/index106.cjs +1 -1
  16. package/dist/index106.mjs +52 -54
  17. package/dist/index107.cjs +1 -1
  18. package/dist/index107.mjs +40 -46
  19. package/dist/index108.cjs +1 -1
  20. package/dist/index108.mjs +40 -14
  21. package/dist/index109.cjs +1 -1
  22. package/dist/index109.mjs +40 -28
  23. package/dist/index11.cjs +1 -1
  24. package/dist/index11.mjs +1 -1
  25. package/dist/index110.cjs +1 -1
  26. package/dist/index110.mjs +30 -65
  27. package/dist/index111.cjs +1 -1
  28. package/dist/index111.mjs +29 -23
  29. package/dist/index112.cjs +1 -1
  30. package/dist/index112.mjs +30 -35
  31. package/dist/index113.cjs +1 -1
  32. package/dist/index113.mjs +21 -29
  33. package/dist/index114.cjs +1 -1
  34. package/dist/index114.mjs +18 -32
  35. package/dist/index115.cjs +1 -1
  36. package/dist/index115.mjs +12 -57
  37. package/dist/index116.cjs +1 -1
  38. package/dist/index116.mjs +62 -18
  39. package/dist/index117.cjs +1 -1
  40. package/dist/index117.mjs +57 -12
  41. package/dist/index118.cjs +1 -1
  42. package/dist/index118.mjs +42 -64
  43. package/dist/index119.cjs +1 -1
  44. package/dist/index119.mjs +28 -28
  45. package/dist/index12.cjs +1 -1
  46. package/dist/index12.mjs +1 -1
  47. package/dist/index120.cjs +1 -1
  48. package/dist/index120.mjs +24 -32
  49. package/dist/index121.cjs +1 -1
  50. package/dist/index121.mjs +18 -76
  51. package/dist/index122.cjs +1 -1
  52. package/dist/index122.mjs +32 -33
  53. package/dist/index123.cjs +1 -1
  54. package/dist/index123.mjs +46 -40
  55. package/dist/index124.cjs +1 -1
  56. package/dist/index124.mjs +26 -51
  57. package/dist/index125.cjs +1 -1
  58. package/dist/index125.mjs +20 -42
  59. package/dist/index126.cjs +1 -1
  60. package/dist/index126.mjs +14 -18
  61. package/dist/index127.cjs +1 -1
  62. package/dist/index127.mjs +17 -37
  63. package/dist/index128.cjs +1 -1
  64. package/dist/index128.mjs +20 -28
  65. package/dist/index129.cjs +1 -1
  66. package/dist/index129.mjs +28 -36
  67. package/dist/index13.cjs +1 -1
  68. package/dist/index13.mjs +1 -1
  69. package/dist/index130.cjs +1 -1
  70. package/dist/index130.mjs +36 -18
  71. package/dist/index131.cjs +1 -1
  72. package/dist/index131.mjs +50 -18
  73. package/dist/index132.cjs +1 -1
  74. package/dist/index132.mjs +30 -234
  75. package/dist/index133.cjs +1 -1
  76. package/dist/index133.mjs +29 -34
  77. package/dist/index134.cjs +1 -1
  78. package/dist/index134.mjs +36 -43
  79. package/dist/index135.cjs +1 -1
  80. package/dist/index135.mjs +28 -170
  81. package/dist/index136.cjs +1 -1
  82. package/dist/index136.mjs +27 -186
  83. package/dist/index137.cjs +1 -1
  84. package/dist/index137.mjs +19 -29
  85. package/dist/index138.cjs +1 -1
  86. package/dist/index138.mjs +38 -90
  87. package/dist/index139.cjs +1 -1
  88. package/dist/index139.mjs +25 -53
  89. package/dist/index14.cjs +1 -1
  90. package/dist/index14.mjs +1 -1
  91. package/dist/index140.cjs +1 -1
  92. package/dist/index140.mjs +35 -66
  93. package/dist/index141.cjs +1 -1
  94. package/dist/index141.mjs +234 -124
  95. package/dist/index142.cjs +1 -1
  96. package/dist/index142.mjs +33 -108
  97. package/dist/index143.cjs +1 -1
  98. package/dist/index143.mjs +44 -112
  99. package/dist/index144.cjs +1 -1
  100. package/dist/index144.mjs +159 -111
  101. package/dist/index145.cjs +1 -1
  102. package/dist/index145.mjs +176 -205
  103. package/dist/index146.cjs +1 -1
  104. package/dist/index146.mjs +29 -43
  105. package/dist/index147.cjs +1 -1
  106. package/dist/index147.mjs +90 -27
  107. package/dist/index148.cjs +1 -1
  108. package/dist/index148.mjs +53 -57
  109. package/dist/index149.cjs +1 -1
  110. package/dist/index149.mjs +66 -46
  111. package/dist/index15.cjs +1 -1
  112. package/dist/index15.mjs +1 -1
  113. package/dist/index150.cjs +1 -1
  114. package/dist/index150.mjs +124 -24
  115. package/dist/index151.cjs +1 -1
  116. package/dist/index151.mjs +108 -24
  117. package/dist/index152.cjs +1 -1
  118. package/dist/index152.mjs +111 -20
  119. package/dist/index153.cjs +1 -1
  120. package/dist/index153.mjs +122 -26
  121. package/dist/index154.cjs +1 -1
  122. package/dist/index154.mjs +214 -28
  123. package/dist/index155.cjs +1 -1
  124. package/dist/index155.mjs +18 -40
  125. package/dist/index156.cjs +1 -1
  126. package/dist/index156.mjs +67 -22
  127. package/dist/index157.cjs +1 -1
  128. package/dist/index157.mjs +55 -64
  129. package/dist/index158.cjs +1 -1
  130. package/dist/index158.mjs +20 -12
  131. package/dist/index159.cjs +1 -1
  132. package/dist/index159.mjs +32 -33
  133. package/dist/index16.cjs +1 -1
  134. package/dist/index16.mjs +1 -1
  135. package/dist/index160.cjs +1 -1
  136. package/dist/index160.mjs +56 -20
  137. package/dist/index161.cjs +1 -1
  138. package/dist/index161.mjs +28 -42
  139. package/dist/index162.cjs +1 -1
  140. package/dist/index162.mjs +24 -20
  141. package/dist/index163.cjs +1 -1
  142. package/dist/index163.mjs +52 -28
  143. package/dist/index164.cjs +1 -1
  144. package/dist/index164.mjs +65 -44
  145. package/dist/index166.cjs +1 -1
  146. package/dist/index166.mjs +106 -28
  147. package/dist/index167.cjs +1 -1
  148. package/dist/index167.mjs +45 -20
  149. package/dist/index168.cjs +1 -1
  150. package/dist/index168.mjs +20 -67
  151. package/dist/index17.cjs +1 -1
  152. package/dist/index17.mjs +1 -1
  153. package/dist/index170.cjs +1 -1
  154. package/dist/index170.mjs +27 -24
  155. package/dist/index171.cjs +1 -1
  156. package/dist/index171.mjs +46 -44
  157. package/dist/index172.cjs +1 -1
  158. package/dist/index172.mjs +24 -46
  159. package/dist/index173.cjs +1 -1
  160. package/dist/index173.mjs +12 -28
  161. package/dist/index174.cjs +1 -1
  162. package/dist/index174.mjs +33 -106
  163. package/dist/index175.cjs +1 -1
  164. package/dist/index175.mjs +42 -52
  165. package/dist/index176.cjs +1 -1
  166. package/dist/index176.mjs +64 -45
  167. package/dist/index177.cjs +1 -1
  168. package/dist/index177.mjs +51 -36
  169. package/dist/index178.cjs +1 -1
  170. package/dist/index178.mjs +76 -55
  171. package/dist/index179.cjs +1 -1
  172. package/dist/index179.mjs +42 -50
  173. package/dist/index18.cjs +1 -1
  174. package/dist/index18.mjs +1 -1
  175. package/dist/index180.cjs +1 -1
  176. package/dist/index180.mjs +64 -30
  177. package/dist/index181.cjs +1 -1
  178. package/dist/index181.mjs +44 -52
  179. package/dist/index182.cjs +1 -1
  180. package/dist/index182.mjs +17 -17
  181. package/dist/index183.cjs +1 -1
  182. package/dist/index183.mjs +17 -17
  183. package/dist/index185.cjs +1 -1
  184. package/dist/index185.mjs +1 -1
  185. package/dist/index19.cjs +1 -1
  186. package/dist/index19.mjs +2 -2
  187. package/dist/index20.cjs +1 -1
  188. package/dist/index20.mjs +14 -14
  189. package/dist/index21.cjs +1 -1
  190. package/dist/index21.mjs +1 -1
  191. package/dist/index22.cjs +1 -1
  192. package/dist/index22.mjs +1 -1
  193. package/dist/index23.cjs +1 -1
  194. package/dist/index23.mjs +1 -1
  195. package/dist/index24.cjs +1 -1
  196. package/dist/index24.mjs +1 -1
  197. package/dist/index25.cjs +1 -1
  198. package/dist/index25.mjs +1 -1
  199. package/dist/index26.cjs +1 -1
  200. package/dist/index26.mjs +1 -1
  201. package/dist/index27.cjs +1 -1
  202. package/dist/index27.mjs +1 -1
  203. package/dist/index28.cjs +1 -1
  204. package/dist/index28.mjs +1 -1
  205. package/dist/index29.cjs +1 -1
  206. package/dist/index29.mjs +1 -1
  207. package/dist/index30.cjs +1 -1
  208. package/dist/index30.mjs +1 -1
  209. package/dist/index31.cjs +1 -1
  210. package/dist/index31.mjs +1 -1
  211. package/dist/index32.cjs +1 -1
  212. package/dist/index32.mjs +1 -1
  213. package/dist/index33.cjs +1 -1
  214. package/dist/index33.mjs +1 -1
  215. package/dist/index34.cjs +1 -1
  216. package/dist/index34.mjs +1 -1
  217. package/dist/index35.cjs +1 -1
  218. package/dist/index35.mjs +1 -1
  219. package/dist/index36.cjs +1 -1
  220. package/dist/index36.mjs +1 -1
  221. package/dist/index37.cjs +1 -1
  222. package/dist/index37.mjs +1 -1
  223. package/dist/index38.cjs +1 -1
  224. package/dist/index38.mjs +1 -1
  225. package/dist/index39.cjs +1 -1
  226. package/dist/index39.mjs +1 -1
  227. package/dist/index40.cjs +1 -1
  228. package/dist/index40.mjs +1 -1
  229. package/dist/index42.cjs +1 -1
  230. package/dist/index42.mjs +1 -1
  231. package/dist/index43.cjs +1 -1
  232. package/dist/index43.mjs +1 -1
  233. package/dist/index44.cjs +1 -1
  234. package/dist/index44.mjs +1 -1
  235. package/dist/index46.cjs +1 -1
  236. package/dist/index46.mjs +1 -1
  237. package/dist/index47.cjs +1 -1
  238. package/dist/index47.mjs +1 -1
  239. package/dist/index49.cjs +1 -1
  240. package/dist/index49.mjs +1 -1
  241. package/dist/index5.cjs +1 -1
  242. package/dist/index5.mjs +1 -1
  243. package/dist/index50.cjs +1 -1
  244. package/dist/index50.mjs +1 -1
  245. package/dist/index51.cjs +1 -1
  246. package/dist/index51.mjs +1 -1
  247. package/dist/index52.cjs +1 -1
  248. package/dist/index52.mjs +1 -1
  249. package/dist/index54.cjs +1 -1
  250. package/dist/index54.mjs +1 -1
  251. package/dist/index55.cjs +1 -1
  252. package/dist/index55.mjs +1 -1
  253. package/dist/index56.cjs +1 -1
  254. package/dist/index56.mjs +1 -1
  255. package/dist/index57.cjs +1 -1
  256. package/dist/index57.mjs +1 -1
  257. package/dist/index58.cjs +1 -1
  258. package/dist/index58.mjs +1 -1
  259. package/dist/index6.cjs +1 -1
  260. package/dist/index6.mjs +1 -1
  261. package/dist/index60.cjs +1 -1
  262. package/dist/index60.mjs +1 -1
  263. package/dist/index61.cjs +1 -1
  264. package/dist/index61.mjs +1 -1
  265. package/dist/index62.cjs +1 -1
  266. package/dist/index62.mjs +1 -1
  267. package/dist/index63.cjs +1 -1
  268. package/dist/index63.mjs +1 -1
  269. package/dist/index64.cjs +1 -1
  270. package/dist/index64.mjs +1 -1
  271. package/dist/index65.cjs +1 -1
  272. package/dist/index65.mjs +1 -1
  273. package/dist/index66.cjs +1 -1
  274. package/dist/index66.mjs +1 -1
  275. package/dist/index67.cjs +1 -1
  276. package/dist/index67.mjs +1 -1
  277. package/dist/index68.cjs +1 -1
  278. package/dist/index68.mjs +1 -1
  279. package/dist/index69.cjs +1 -1
  280. package/dist/index69.mjs +1 -1
  281. package/dist/index7.cjs +1 -1
  282. package/dist/index7.mjs +1 -1
  283. package/dist/index70.cjs +1 -1
  284. package/dist/index70.mjs +1 -1
  285. package/dist/index71.cjs +1 -1
  286. package/dist/index71.mjs +1 -1
  287. package/dist/index72.cjs +1 -1
  288. package/dist/index72.mjs +1 -1
  289. package/dist/index73.cjs +1 -1
  290. package/dist/index73.mjs +1 -1
  291. package/dist/index76.cjs +1 -1
  292. package/dist/index76.mjs +1 -1
  293. package/dist/index77.cjs +1 -1
  294. package/dist/index77.mjs +1 -1
  295. package/dist/index78.cjs +1 -1
  296. package/dist/index78.mjs +1 -1
  297. package/dist/index79.cjs +1 -1
  298. package/dist/index79.mjs +1 -1
  299. package/dist/index8.cjs +1 -1
  300. package/dist/index8.mjs +1 -1
  301. package/dist/index80.cjs +1 -1
  302. package/dist/index80.mjs +1 -1
  303. package/dist/index81.cjs +1 -1
  304. package/dist/index81.mjs +1 -1
  305. package/dist/index9.cjs +1 -1
  306. package/dist/index9.mjs +1 -1
  307. package/dist/index99.cjs +1 -1
  308. package/dist/index99.mjs +35 -29
  309. package/package.json +1 -1
package/dist/index145.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),d=require("react"),c=require("lucide-react"),t=require("./index132.cjs"),O={today:"Today",yesterday:"Yesterday",previous7:"Previous 7 days",previous30:"Previous 30 days",older:"Older"},y=["today","yesterday","previous7","previous30","older"],C=a=>{const r=new Date,u=(new Date(r.getFullYear(),r.getMonth(),r.getDate()).getTime()-new Date(a.getFullYear(),a.getMonth(),a.getDate()).getTime())/(1e3*60*60*24);return u<1?"today":u<2?"yesterday":u<7?"previous7":u<30?"previous30":"older"},P=a=>{const r=C(a);return r==="today"?new Intl.DateTimeFormat("en-US",{hour:"numeric",minute:"2-digit"}).format(a):r==="yesterday"?"Yesterday":r==="previous7"?new Intl.DateTimeFormat("en-US",{weekday:"short"}).format(a):new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric"}).format(a)},z=a=>{const r=new Map;return y.forEach(n=>r.set(n,[])),a.forEach(n=>{const b=C(n.updatedAt);r.get(b)?.push(n)}),r},S=({conversations:a=[],activeConversationId:r,onSelectConversation:n,onNewConversation:b,onDeleteConversation:u,onSearch:x,header:w,footer:N,collapsed:m=!1,onCollapsedChange:f,className:I,...D})=>{const[h,T]=d.useState(""),[p,j]=d.useState(null),o=d.useRef(void 0);d.useEffect(()=>()=>{o.current&&clearTimeout(o.current)},[]);const g=d.useMemo(()=>{if(!h.trim())return a;const s=h.toLowerCase();return a.filter(l=>l.title.toLowerCase().includes(s)||l.preview?.toLowerCase().includes(s))},[a,h]),v=d.useMemo(()=>z(g),[g]),B=d.useCallback(s=>{const l=s.target.value;T(l),x?.(l)},[x]),k=d.useCallback(s=>{n?.(s),m&&f&&f(!0)},[n,m,f]),F=d.useCallback((s,l)=>{s.stopPropagation(),p===l?(u?.(l),j(null),o.current&&clearTimeout(o.current)):(j(l),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{j(null)},3e3))},[p,u]),M=y.some(s=>(v.get(s)?.length??0)>0);return e.jsxs(e.Fragment,{children:[!m&&e.jsx("div",{className:t.default.sidebarOverlay,onClick:()=>f?.(!0),"aria-hidden":"true"}),e.jsxs("aside",{className:[t.default.sidebar,m&&t.default.sidebarCollapsed,!m&&t.default.sidebarOpen,I].filter(Boolean).join(" "),...D,children:[e.jsx("div",{className:t.default.sidebarHeader,children:w||e.jsxs(e.Fragment,{children:[e.jsx("button",{className:[t.default.inputButton,t.default.inputButtonPrimary,t.default.sidebarNewButton].filter(Boolean).join(" "),onClick:b,"aria-label":"New conversation",children:e.jsxs("span",{className:t.default.sidebarNewButtonInner,children:[e.jsx(c.Plus,{size:18}),e.jsx("span",{children:"New Chat"})]})}),e.jsx("button",{className:[t.default.inputButton,t.default.sidebarCloseButton].join(" "),onClick:()=>f?.(!0),"aria-label":"Close sidebar",children:e.jsx(c.X,{size:20})})]})}),e.jsx("div",{className:t.default.sidebarSearch,children:e.jsxs("div",{className:t.default.sidebarSearchWrapper,children:[e.jsx(c.Search,{size:16,className:t.default.sidebarSearchIcon}),e.jsx("input",{type:"search",className:[t.default.sidebarSearchInput,t.default.sidebarSearchInputWithIcon].join(" "),placeholder:"Search conversations...",value:h,onChange:B,"aria-label":"Search conversations"})]})}),e.jsx("div",{className:t.default.sidebarList,role:"list","aria-label":"Conversations",children:M?y.map(s=>{const l=v.get(s)??[];return l.length===0?null:e.jsxs("div",{children:[e.jsx("div",{className:t.default.sidebarGroupHeader,children:O[s]}),l.map(i=>e.jsxs("button",{className:[t.default.sidebarItem,i.id===r&&t.default.sidebarItemActive].filter(Boolean).join(" "),onClick:()=>k(i.id),role:"listitem","aria-selected":i.id===r,"aria-label":`Conversation: ${i.title}`,children:[e.jsx(c.MessageSquare,{size:18,className:t.default.sidebarItemIcon}),e.jsxs("div",{className:t.default.sidebarItemContent,children:[e.jsx("span",{className:t.default.sidebarItemTitle,children:i.title}),i.preview&&e.jsx("span",{className:t.default.sidebarItemPreview,children:i.preview})]}),e.jsx("span",{className:t.default.sidebarItemDate,children:P(i.updatedAt)}),u&&e.jsx("button",{className:t.default.sidebarItemDelete,onClick:q=>F(q,i.id),"aria-label":p===i.id?`Confirm delete ${i.title}`:`Delete ${i.title}`,children:p===i.id?e.jsx("span",{className:t.default.sidebarItemDeleteConfirm,children:"Delete?"}):e.jsx(c.Trash2,{size:16})})]},i.id))]},s)}):e.jsxs("div",{className:t.default.sidebarEmpty,children:[e.jsx(c.MessageSquare,{size:32,className:t.default.sidebarEmptyIcon}),e.jsx("p",{children:h?"No conversations found":"No conversations yet"})]})}),N&&e.jsx("div",{className:t.default.sidebarFooter,children:N})]})]})};S.displayName="ChatSidebar";exports.ChatSidebar=S;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),o=require("lucide-react"),_=require("./index85.cjs"),$=require("./index151.cjs"),E=require("./index184.cjs"),a=require("./index141.cjs"),X=m=>m.type.startsWith("image/")?e.jsx(o.Image,{size:14}):e.jsx(o.File,{size:14}),y=l.forwardRef(({onSend:m,placeholder:R="Type a message...",allowAttachments:N=!0,allowVoiceRecording:S=!0,allowAudioUpload:G=!0,disabled:i=!1,maxLength:f,acceptedFileTypes:k=["image/*","audio/*",".pdf",".doc",".docx",".txt"],isLoading:s=!1,pendingAttachments:z,onRemoveAttachment:I,className:q,...w},r)=>{const[j,h]=l.useState(!1),u=l.useRef(null),{value:x,setValue:B,attachments:D,addAttachments:c,removeAttachment:F,handleSubmit:g,handleKeyDown:V,textareaRef:C,isEmpty:P}=_.useChatInput({maxLength:f,onSend:m,disabled:i||s}),d=z||D,M=I||F,T=l.useCallback(t=>{C.current=t,typeof r=="function"?r(t):r&&(r.current=t)},[r,C]),W=l.useCallback(t=>{const n=t.target.files;n&&n.length>0&&c(Array.from(n)),u.current&&(u.current.value="")},[c]),K=l.useCallback(t=>{const n=t.clipboardData.items,p=[];for(const v of n)if(v.type.startsWith("image/")){const A=v.getAsFile();A&&p.push(A)}p.length>0&&(t.preventDefault(),c(p))},[c]),O=l.useCallback(t=>{const n=Object.assign(t,{name:`voice-${Date.now()}.webm`,lastModified:Date.now()});c([n]),h(!1)},[c]),U=l.useCallback(()=>{i||s||g()},[i,s,g]),b=!P||d.length>0;return e.jsx("div",{className:[a.default.inputContainer,q].filter(Boolean).join(" "),children:e.jsxs("div",{className:a.default.inputWrapper,children:[d.length>0&&e.jsx("div",{className:a.default.pendingAttachments,children:d.map((t,n)=>e.jsxs("div",{className:a.default.pendingAttachment,children:[X(t),e.jsx("span",{children:t.name}),e.jsxs("span",{className:a.default.pendingAttachmentSize,children:["(",E.formatFileSize(t.size),")"]}),e.jsx("button",{className:a.default.pendingAttachmentRemove,onClick:()=>M(n),"aria-label":`Remove ${t.name}`,children:e.jsx(o.X,{size:14})})]},n))}),j&&e.jsx($.ChatVoiceRecorder,{onRecordingComplete:O,onCancel:()=>h(!1)}),!j&&e.jsxs("div",{className:a.default.inputBox,children:[N&&e.jsxs("div",{className:a.default.inputActions,children:[e.jsx("input",{ref:u,type:"file",accept:k.join(","),multiple:!0,onChange:W,style:{display:"none"},"aria-hidden":"true"}),e.jsx("button",{className:a.default.inputButton,onClick:()=>u.current?.click(),disabled:i||s,"aria-label":"Attach file",title:"Attach file",children:e.jsx(o.Paperclip,{size:20})})]}),e.jsx("textarea",{ref:T,className:a.default.inputTextarea,value:x,onChange:t=>B(t.target.value),onKeyDown:V,onPaste:K,placeholder:R,disabled:i||s,maxLength:f,rows:1,"aria-label":"Message input",...w}),e.jsxs("div",{className:a.default.inputActions,children:[S&&!x&&d.length===0&&e.jsx("button",{className:a.default.inputButton,onClick:()=>h(!0),disabled:i||s,"aria-label":"Record voice message",title:"Record voice message",children:e.jsx(o.Mic,{size:20})}),e.jsx("button",{className:[a.default.inputButton,b&&a.default.inputButtonPrimary].filter(Boolean).join(" "),onClick:U,disabled:i||s||!b,"aria-label":"Send message",title:"Send message",children:s?e.jsx("span",{className:a.default.inputSpinner}):e.jsx(o.Send,{size:20})})]})]})]})})});y.displayName="ChatInput";exports.ChatInput=y;
package/dist/index145.mjs CHANGED
@@ -1,217 +1,188 @@
1
- import { jsxs as l, Fragment as C, jsx as r } from "react/jsx-runtime";
2
- import { useState as D, useRef as Y, useEffect as x, useMemo as S, useCallback as y } from "react";
3
- import { Plus as A, X as U, Search as $, MessageSquare as T, Trash2 as q } from "lucide-react";
4
- import e from "./index132.mjs";
5
- const G = {
6
- today: "Today",
7
- yesterday: "Yesterday",
8
- previous7: "Previous 7 days",
9
- previous30: "Previous 30 days",
10
- older: "Older"
11
- }, N = [
12
- "today",
13
- "yesterday",
14
- "previous7",
15
- "previous30",
16
- "older"
17
- ], B = (t) => {
18
- const a = /* @__PURE__ */ new Date(), d = (new Date(
19
- a.getFullYear(),
20
- a.getMonth(),
21
- a.getDate()
22
- ).getTime() - new Date(t.getFullYear(), t.getMonth(), t.getDate()).getTime()) / (1e3 * 60 * 60 * 24);
23
- return d < 1 ? "today" : d < 2 ? "yesterday" : d < 7 ? "previous7" : d < 30 ? "previous30" : "older";
24
- }, H = (t) => {
25
- const a = B(t);
26
- return a === "today" ? new Intl.DateTimeFormat("en-US", {
27
- hour: "numeric",
28
- minute: "2-digit"
29
- }).format(t) : a === "yesterday" ? "Yesterday" : a === "previous7" ? new Intl.DateTimeFormat("en-US", {
30
- weekday: "short"
31
- }).format(t) : new Intl.DateTimeFormat("en-US", {
32
- month: "short",
33
- day: "numeric"
34
- }).format(t);
35
- }, Q = (t) => {
36
- const a = /* @__PURE__ */ new Map();
37
- return N.forEach((o) => a.set(o, [])), t.forEach((o) => {
38
- const f = B(o.updatedAt);
39
- a.get(f)?.push(o);
40
- }), a;
41
- }, R = ({
42
- conversations: t = [],
43
- activeConversationId: a,
44
- onSelectConversation: o,
45
- onNewConversation: f,
46
- onDeleteConversation: d,
47
- onSearch: g,
48
- header: j,
49
- footer: v,
50
- collapsed: u = !1,
51
- onCollapsedChange: m,
52
- className: k,
53
- ...F
54
- }) => {
55
- const [h, z] = D(""), [p, b] = D(null), c = Y(
56
- void 0
57
- );
58
- x(() => () => {
59
- c.current && clearTimeout(c.current);
60
- }, []);
61
- const w = S(() => {
62
- if (!h.trim()) return t;
63
- const s = h.toLowerCase();
64
- return t.filter(
65
- (n) => n.title.toLowerCase().includes(s) || n.preview?.toLowerCase().includes(s)
66
- );
67
- }, [t, h]), I = S(() => Q(w), [w]), O = y(
68
- (s) => {
69
- const n = s.target.value;
70
- z(n), g?.(n);
71
- },
72
- [g]
73
- ), P = y(
74
- (s) => {
75
- o?.(s), u && m && m(!0);
76
- },
77
- [o, u, m]
78
- ), E = y(
79
- (s, n) => {
80
- s.stopPropagation(), p === n ? (d?.(n), b(null), c.current && clearTimeout(c.current)) : (b(n), c.current && clearTimeout(c.current), c.current = setTimeout(() => {
81
- b(null);
82
- }, 3e3));
83
- },
84
- [p, d]
85
- ), L = N.some(
86
- (s) => (I.get(s)?.length ?? 0) > 0
87
- );
88
- return /* @__PURE__ */ l(C, { children: [
89
- !u && /* @__PURE__ */ r(
1
+ import { jsx as t, jsxs as c } from "react/jsx-runtime";
2
+ import { forwardRef as E, useState as O, useRef as X, useCallback as r } from "react";
3
+ import { X as _, Paperclip as q, Mic as G, Send as H, Image as J, File as Q } from "lucide-react";
4
+ import { useChatInput as Y } from "./index85.mjs";
5
+ import { ChatVoiceRecorder as Z } from "./index151.mjs";
6
+ import { formatFileSize as L } from "./index184.mjs";
7
+ import n from "./index141.mjs";
8
+ const ee = (p) => p.type.startsWith("image/") ? /* @__PURE__ */ t(J, { size: 14 }) : /* @__PURE__ */ t(Q, { size: 14 }), te = E(
9
+ ({
10
+ onSend: p,
11
+ placeholder: S = "Type a message...",
12
+ allowAttachments: R = !0,
13
+ allowVoiceRecording: z = !0,
14
+ allowAudioUpload: ne = !0,
15
+ disabled: s = !1,
16
+ maxLength: f,
17
+ acceptedFileTypes: w = [
18
+ "image/*",
19
+ "audio/*",
20
+ ".pdf",
21
+ ".doc",
22
+ ".docx",
23
+ ".txt"
24
+ ],
25
+ isLoading: i = !1,
26
+ pendingAttachments: x,
27
+ onRemoveAttachment: B,
28
+ className: j,
29
+ ...k
30
+ }, o) => {
31
+ const [g, h] = O(!1), m = X(null), {
32
+ value: v,
33
+ setValue: D,
34
+ attachments: F,
35
+ addAttachments: l,
36
+ removeAttachment: I,
37
+ handleSubmit: A,
38
+ handleKeyDown: V,
39
+ textareaRef: b,
40
+ isEmpty: P
41
+ } = Y({
42
+ maxLength: f,
43
+ onSend: p,
44
+ disabled: s || i
45
+ }), u = x || F, M = B || I, W = r(
46
+ (e) => {
47
+ b.current = e, typeof o == "function" ? o(e) : o && (o.current = e);
48
+ },
49
+ [o, b]
50
+ ), K = r(
51
+ (e) => {
52
+ const a = e.target.files;
53
+ a && a.length > 0 && l(Array.from(a)), m.current && (m.current.value = "");
54
+ },
55
+ [l]
56
+ ), T = r(
57
+ (e) => {
58
+ const a = e.clipboardData.items, d = [];
59
+ for (const C of a)
60
+ if (C.type.startsWith("image/")) {
61
+ const N = C.getAsFile();
62
+ N && d.push(N);
63
+ }
64
+ d.length > 0 && (e.preventDefault(), l(d));
65
+ },
66
+ [l]
67
+ ), U = r(
68
+ (e) => {
69
+ const a = Object.assign(e, {
70
+ name: `voice-${Date.now()}.webm`,
71
+ lastModified: Date.now()
72
+ });
73
+ l([a]), h(!1);
74
+ },
75
+ [l]
76
+ ), $ = r(() => {
77
+ s || i || A();
78
+ }, [s, i, A]), y = !P || u.length > 0;
79
+ return /* @__PURE__ */ t(
90
80
  "div",
91
81
  {
92
- className: e.sidebarOverlay,
93
- onClick: () => m?.(!0),
94
- "aria-hidden": "true"
95
- }
96
- ),
97
- /* @__PURE__ */ l(
98
- "aside",
99
- {
100
- className: [
101
- e.sidebar,
102
- u && e.sidebarCollapsed,
103
- !u && e.sidebarOpen,
104
- k
105
- ].filter(Boolean).join(" "),
106
- ...F,
107
- children: [
108
- /* @__PURE__ */ r("div", { className: e.sidebarHeader, children: j || /* @__PURE__ */ l(C, { children: [
109
- /* @__PURE__ */ r(
110
- "button",
111
- {
112
- className: [
113
- e.inputButton,
114
- e.inputButtonPrimary,
115
- e.sidebarNewButton
116
- ].filter(Boolean).join(" "),
117
- onClick: f,
118
- "aria-label": "New conversation",
119
- children: /* @__PURE__ */ l("span", { className: e.sidebarNewButtonInner, children: [
120
- /* @__PURE__ */ r(A, { size: 18 }),
121
- /* @__PURE__ */ r("span", { children: "New Chat" })
122
- ] })
123
- }
124
- ),
125
- /* @__PURE__ */ r(
82
+ className: [n.inputContainer, j].filter(Boolean).join(" "),
83
+ children: /* @__PURE__ */ c("div", { className: n.inputWrapper, children: [
84
+ u.length > 0 && /* @__PURE__ */ t("div", { className: n.pendingAttachments, children: u.map((e, a) => /* @__PURE__ */ c("div", { className: n.pendingAttachment, children: [
85
+ ee(e),
86
+ /* @__PURE__ */ t("span", { children: e.name }),
87
+ /* @__PURE__ */ c("span", { className: n.pendingAttachmentSize, children: [
88
+ "(",
89
+ L(e.size),
90
+ ")"
91
+ ] }),
92
+ /* @__PURE__ */ t(
126
93
  "button",
127
94
  {
128
- className: [e.inputButton, e.sidebarCloseButton].join(
129
- " "
130
- ),
131
- onClick: () => m?.(!0),
132
- "aria-label": "Close sidebar",
133
- children: /* @__PURE__ */ r(U, { size: 20 })
95
+ className: n.pendingAttachmentRemove,
96
+ onClick: () => M(a),
97
+ "aria-label": `Remove ${e.name}`,
98
+ children: /* @__PURE__ */ t(_, { size: 14 })
134
99
  }
135
100
  )
136
- ] }) }),
137
- /* @__PURE__ */ r("div", { className: e.sidebarSearch, children: /* @__PURE__ */ l("div", { className: e.sidebarSearchWrapper, children: [
138
- /* @__PURE__ */ r($, { size: 16, className: e.sidebarSearchIcon }),
139
- /* @__PURE__ */ r(
140
- "input",
141
- {
142
- type: "search",
143
- className: [
144
- e.sidebarSearchInput,
145
- e.sidebarSearchInputWithIcon
146
- ].join(" "),
147
- placeholder: "Search conversations...",
148
- value: h,
149
- onChange: O,
150
- "aria-label": "Search conversations"
151
- }
152
- )
153
- ] }) }),
154
- /* @__PURE__ */ r(
155
- "div",
101
+ ] }, a)) }),
102
+ g && /* @__PURE__ */ t(
103
+ Z,
156
104
  {
157
- className: e.sidebarList,
158
- role: "list",
159
- "aria-label": "Conversations",
160
- children: L ? N.map((s) => {
161
- const n = I.get(s) ?? [];
162
- return n.length === 0 ? null : /* @__PURE__ */ l("div", { children: [
163
- /* @__PURE__ */ r("div", { className: e.sidebarGroupHeader, children: G[s] }),
164
- n.map((i) => /* @__PURE__ */ l(
165
- "button",
166
- {
167
- className: [
168
- e.sidebarItem,
169
- i.id === a && e.sidebarItemActive
170
- ].filter(Boolean).join(" "),
171
- onClick: () => P(i.id),
172
- role: "listitem",
173
- "aria-selected": i.id === a,
174
- "aria-label": `Conversation: ${i.title}`,
175
- children: [
176
- /* @__PURE__ */ r(
177
- T,
178
- {
179
- size: 18,
180
- className: e.sidebarItemIcon
181
- }
182
- ),
183
- /* @__PURE__ */ l("div", { className: e.sidebarItemContent, children: [
184
- /* @__PURE__ */ r("span", { className: e.sidebarItemTitle, children: i.title }),
185
- i.preview && /* @__PURE__ */ r("span", { className: e.sidebarItemPreview, children: i.preview })
186
- ] }),
187
- /* @__PURE__ */ r("span", { className: e.sidebarItemDate, children: H(i.updatedAt) }),
188
- d && /* @__PURE__ */ r(
189
- "button",
190
- {
191
- className: e.sidebarItemDelete,
192
- onClick: (M) => E(M, i.id),
193
- "aria-label": p === i.id ? `Confirm delete ${i.title}` : `Delete ${i.title}`,
194
- children: p === i.id ? /* @__PURE__ */ r("span", { className: e.sidebarItemDeleteConfirm, children: "Delete?" }) : /* @__PURE__ */ r(q, { size: 16 })
195
- }
196
- )
197
- ]
198
- },
199
- i.id
200
- ))
201
- ] }, s);
202
- }) : /* @__PURE__ */ l("div", { className: e.sidebarEmpty, children: [
203
- /* @__PURE__ */ r(T, { size: 32, className: e.sidebarEmptyIcon }),
204
- /* @__PURE__ */ r("p", { children: h ? "No conversations found" : "No conversations yet" })
205
- ] })
105
+ onRecordingComplete: U,
106
+ onCancel: () => h(!1)
206
107
  }
207
108
  ),
208
- v && /* @__PURE__ */ r("div", { className: e.sidebarFooter, children: v })
209
- ]
109
+ !g && /* @__PURE__ */ c("div", { className: n.inputBox, children: [
110
+ R && /* @__PURE__ */ c("div", { className: n.inputActions, children: [
111
+ /* @__PURE__ */ t(
112
+ "input",
113
+ {
114
+ ref: m,
115
+ type: "file",
116
+ accept: w.join(","),
117
+ multiple: !0,
118
+ onChange: K,
119
+ style: { display: "none" },
120
+ "aria-hidden": "true"
121
+ }
122
+ ),
123
+ /* @__PURE__ */ t(
124
+ "button",
125
+ {
126
+ className: n.inputButton,
127
+ onClick: () => m.current?.click(),
128
+ disabled: s || i,
129
+ "aria-label": "Attach file",
130
+ title: "Attach file",
131
+ children: /* @__PURE__ */ t(q, { size: 20 })
132
+ }
133
+ )
134
+ ] }),
135
+ /* @__PURE__ */ t(
136
+ "textarea",
137
+ {
138
+ ref: W,
139
+ className: n.inputTextarea,
140
+ value: v,
141
+ onChange: (e) => D(e.target.value),
142
+ onKeyDown: V,
143
+ onPaste: T,
144
+ placeholder: S,
145
+ disabled: s || i,
146
+ maxLength: f,
147
+ rows: 1,
148
+ "aria-label": "Message input",
149
+ ...k
150
+ }
151
+ ),
152
+ /* @__PURE__ */ c("div", { className: n.inputActions, children: [
153
+ z && !v && u.length === 0 && /* @__PURE__ */ t(
154
+ "button",
155
+ {
156
+ className: n.inputButton,
157
+ onClick: () => h(!0),
158
+ disabled: s || i,
159
+ "aria-label": "Record voice message",
160
+ title: "Record voice message",
161
+ children: /* @__PURE__ */ t(G, { size: 20 })
162
+ }
163
+ ),
164
+ /* @__PURE__ */ t(
165
+ "button",
166
+ {
167
+ className: [
168
+ n.inputButton,
169
+ y && n.inputButtonPrimary
170
+ ].filter(Boolean).join(" "),
171
+ onClick: $,
172
+ disabled: s || i || !y,
173
+ "aria-label": "Send message",
174
+ title: "Send message",
175
+ children: i ? /* @__PURE__ */ t("span", { className: n.inputSpinner }) : /* @__PURE__ */ t(H, { size: 20 })
176
+ }
177
+ )
178
+ ] })
179
+ ] })
180
+ ] })
210
181
  }
211
- )
212
- ] });
213
- };
214
- R.displayName = "ChatSidebar";
182
+ );
183
+ }
184
+ );
185
+ te.displayName = "ChatInput";
215
186
  export {
216
- R as ChatSidebar
187
+ te as ChatInput
217
188
  };
package/dist/index146.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const x="_avatar_zbymr_8",_="_image_zbymr_30",t="_initials_zbymr_38",n="_icon_zbymr_48",s="_xs_zbymr_64",i="_sm_zbymr_75",l="_md_zbymr_86",o="_lg_zbymr_97",a="_xl_zbymr_108",r="_xxl_zbymr_119",e="_profile_zbymr_130",c="_xxxl_zbymr_141",m="_xxxxl_zbymr_152",y="_xxxxxl_zbymr_163",b="_interactive_zbymr_178",z="_statusIndicator_zbymr_200",u="_online_zbymr_212",f="_offline_zbymr_216",d="_away_zbymr_220",g="_busy_zbymr_224",v={avatar:x,image:_,initials:t,icon:n,xs:s,sm:i,md:l,lg:o,xl:a,xxl:r,profile:e,xxxl:c,xxxxl:m,xxxxxl:y,interactive:b,statusIndicator:z,online:u,offline:f,away:d,busy:g};exports.avatar=x;exports.away=d;exports.busy=g;exports.default=v;exports.icon=n;exports.image=_;exports.initials=t;exports.interactive=b;exports.lg=o;exports.md=l;exports.offline=f;exports.online=u;exports.profile=e;exports.sm=i;exports.statusIndicator=z;exports.xl=a;exports.xs=s;exports.xxl=r;exports.xxxl=c;exports.xxxxl=m;exports.xxxxxl=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),e=require("./index141.cjs"),s=({label:t="Generating response",className:i,...n})=>a.jsx("div",{className:[e.default.message,e.default.messageAssistant,i].filter(Boolean).join(" "),role:"status","aria-live":"polite","aria-label":t,...n,children:a.jsx("div",{className:e.default.messageContent,children:a.jsx("div",{className:[e.default.messageBubble,e.default.messageBubbleAssistant,e.default.thinkingBubble].join(" "),children:a.jsx("span",{className:e.default.thinkingSpinner})})})});s.displayName="ChatTypingIndicator";exports.ChatTypingIndicator=s;
package/dist/index146.mjs CHANGED
@@ -1,45 +1,31 @@
1
- const _ = "_avatar_zbymr_8", x = "_image_zbymr_30", t = "_initials_zbymr_38", n = "_icon_zbymr_48", s = "_xs_zbymr_64", o = "_sm_zbymr_75", i = "_md_zbymr_86", r = "_lg_zbymr_97", a = "_xl_zbymr_108", l = "_xxl_zbymr_119", c = "_profile_zbymr_130", m = "_xxxl_zbymr_141", y = "_xxxxl_zbymr_152", b = "_xxxxxl_zbymr_163", e = "_interactive_zbymr_178", z = "_statusIndicator_zbymr_200", f = "_online_zbymr_212", d = "_offline_zbymr_216", u = "_away_zbymr_220", g = "_busy_zbymr_224", v = {
2
- avatar: _,
3
- image: x,
4
- initials: t,
5
- icon: n,
6
- xs: s,
7
- sm: o,
8
- md: i,
9
- lg: r,
10
- xl: a,
11
- xxl: l,
12
- profile: c,
13
- xxxl: m,
14
- xxxxl: y,
15
- xxxxxl: b,
16
- interactive: e,
17
- statusIndicator: z,
18
- online: f,
19
- offline: d,
20
- away: u,
21
- busy: g
22
- };
1
+ import { jsx as s } from "react/jsx-runtime";
2
+ import e from "./index141.mjs";
3
+ const t = ({
4
+ label: a = "Generating response",
5
+ className: i,
6
+ ...n
7
+ }) => /* @__PURE__ */ s(
8
+ "div",
9
+ {
10
+ className: [e.message, e.messageAssistant, i].filter(Boolean).join(" "),
11
+ role: "status",
12
+ "aria-live": "polite",
13
+ "aria-label": a,
14
+ ...n,
15
+ children: /* @__PURE__ */ s("div", { className: e.messageContent, children: /* @__PURE__ */ s(
16
+ "div",
17
+ {
18
+ className: [
19
+ e.messageBubble,
20
+ e.messageBubbleAssistant,
21
+ e.thinkingBubble
22
+ ].join(" "),
23
+ children: /* @__PURE__ */ s("span", { className: e.thinkingSpinner })
24
+ }
25
+ ) })
26
+ }
27
+ );
28
+ t.displayName = "ChatTypingIndicator";
23
29
  export {
24
- _ as avatar,
25
- u as away,
26
- g as busy,
27
- v as default,
28
- n as icon,
29
- x as image,
30
- t as initials,
31
- e as interactive,
32
- r as lg,
33
- i as md,
34
- d as offline,
35
- f as online,
36
- c as profile,
37
- o as sm,
38
- z as statusIndicator,
39
- a as xl,
40
- s as xs,
41
- l as xxl,
42
- m as xxxl,
43
- y as xxxxl,
44
- b as xxxxxl
30
+ t as ChatTypingIndicator
45
31
  };
package/dist/index147.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n="_link_1ch8i_9",i="_subtle_1ch8i_38",c="_brand_1ch8i_46",o="_sm_1ch8i_58",_="_md_1ch8i_63",t="_lg_1ch8i_68",e="_underline_1ch8i_77",r="_icon_1ch8i_92",l="_iconRight_1ch8i_124",s="_iconExternal_1ch8i_129",d="_iconArrow_1ch8i_134",h="_iconArrowLeft_1ch8i_139",u={link:n,default:"_default_1ch8i_30",subtle:i,brand:c,sm:o,md:_,lg:t,underline:e,icon:r,iconRight:l,iconExternal:s,iconArrow:d,iconArrowLeft:h};exports.brand=c;exports.default=u;exports.icon=r;exports.iconArrow=d;exports.iconArrowLeft=h;exports.iconExternal=s;exports.iconRight=l;exports.lg=t;exports.link=n;exports.md=_;exports.sm=o;exports.subtle=i;exports.underline=e;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("react"),f=require("react-syntax-highlighter"),d=require("react-syntax-highlighter/dist/esm/styles/prism"),u=require("lucide-react"),o=require("./index141.cjs"),k=require("./index75.cjs"),b=t=>t?{js:"javascript",ts:"typescript",jsx:"jsx",tsx:"tsx",py:"python",rb:"ruby",sh:"bash",shell:"bash",yml:"yaml",md:"markdown"}[t.toLowerCase()]||t.toLowerCase():"text",h=({code:t,language:s,showLineNumbers:m=!1,showCopyButton:p=!0,maxHeight:y="400px",className:C,...x})=>{const[a,r]=n.useState(!1);let c="dark";try{c=k.useThemeContext().theme}catch{}const g=n.useCallback(async()=>{try{await navigator.clipboard.writeText(t),r(!0),setTimeout(()=>r(!1),2e3)}catch(l){console.error("Failed to copy code:",l)}},[t]),i=b(s),j=c==="light"?d.oneLight:d.oneDark;return e.jsxs("div",{className:[o.default.codeBlock,C].filter(Boolean).join(" "),...x,children:[e.jsxs("div",{className:o.default.codeBlockHeader,children:[e.jsx("span",{className:o.default.codeBlockLanguage,children:i}),p&&e.jsx("button",{className:[o.default.codeBlockCopy,a&&o.default.codeBlockCopied].filter(Boolean).join(" "),onClick:g,"aria-label":a?"Copied!":"Copy code",children:a?e.jsxs(e.Fragment,{children:[e.jsx(u.Check,{size:14}),"Copied!"]}):e.jsxs(e.Fragment,{children:[e.jsx(u.Copy,{size:14}),"Copy"]})})]}),e.jsx("div",{className:o.default.codeBlockContent,style:{maxHeight:y},children:e.jsx(f.Prism,{language:i,style:j,showLineNumbers:m,customStyle:{margin:0,padding:0,background:"transparent",fontSize:"inherit",lineHeight:"inherit"},codeTagProps:{style:{fontFamily:"var(--font-mono)"}},children:t})})]})};h.displayName="ChatCodeBlock";exports.ChatCodeBlock=h;
package/dist/index147.mjs CHANGED
@@ -1,30 +1,93 @@
1
- const n = "_link_1ch8i_9", c = "_subtle_1ch8i_38", _ = "_brand_1ch8i_46", i = "_sm_1ch8i_58", o = "_md_1ch8i_63", t = "_lg_1ch8i_68", r = "_underline_1ch8i_77", s = "_icon_1ch8i_92", e = "_iconRight_1ch8i_124", l = "_iconExternal_1ch8i_129", h = "_iconArrow_1ch8i_134", d = "_iconArrowLeft_1ch8i_139", a = {
2
- link: n,
3
- default: "_default_1ch8i_30",
4
- subtle: c,
5
- brand: _,
6
- sm: i,
7
- md: o,
8
- lg: t,
9
- underline: r,
10
- icon: s,
11
- iconRight: e,
12
- iconExternal: l,
13
- iconArrow: h,
14
- iconArrowLeft: d
1
+ import { jsxs as r, jsx as o, Fragment as d } from "react/jsx-runtime";
2
+ import { useState as g, useCallback as k } from "react";
3
+ import { Prism as x } from "react-syntax-highlighter";
4
+ import { oneLight as B, oneDark as b } from "react-syntax-highlighter/dist/esm/styles/prism";
5
+ import { Check as j, Copy as v } from "lucide-react";
6
+ import t from "./index141.mjs";
7
+ import { useThemeContext as L } from "./index75.mjs";
8
+ const N = (e) => e ? {
9
+ js: "javascript",
10
+ ts: "typescript",
11
+ jsx: "jsx",
12
+ tsx: "tsx",
13
+ py: "python",
14
+ rb: "ruby",
15
+ sh: "bash",
16
+ shell: "bash",
17
+ yml: "yaml",
18
+ md: "markdown"
19
+ }[e.toLowerCase()] || e.toLowerCase() : "text", w = ({
20
+ code: e,
21
+ language: s,
22
+ showLineNumbers: m = !1,
23
+ showCopyButton: p = !0,
24
+ maxHeight: h = "400px",
25
+ className: y,
26
+ ...C
27
+ }) => {
28
+ const [a, i] = g(!1);
29
+ let l = "dark";
30
+ try {
31
+ l = L().theme;
32
+ } catch {
33
+ }
34
+ const u = k(async () => {
35
+ try {
36
+ await navigator.clipboard.writeText(e), i(!0), setTimeout(() => i(!1), 2e3);
37
+ } catch (n) {
38
+ console.error("Failed to copy code:", n);
39
+ }
40
+ }, [e]), c = N(s), f = l === "light" ? B : b;
41
+ return /* @__PURE__ */ r(
42
+ "div",
43
+ {
44
+ className: [t.codeBlock, y].filter(Boolean).join(" "),
45
+ ...C,
46
+ children: [
47
+ /* @__PURE__ */ r("div", { className: t.codeBlockHeader, children: [
48
+ /* @__PURE__ */ o("span", { className: t.codeBlockLanguage, children: c }),
49
+ p && /* @__PURE__ */ o(
50
+ "button",
51
+ {
52
+ className: [t.codeBlockCopy, a && t.codeBlockCopied].filter(Boolean).join(" "),
53
+ onClick: u,
54
+ "aria-label": a ? "Copied!" : "Copy code",
55
+ children: a ? /* @__PURE__ */ r(d, { children: [
56
+ /* @__PURE__ */ o(j, { size: 14 }),
57
+ "Copied!"
58
+ ] }) : /* @__PURE__ */ r(d, { children: [
59
+ /* @__PURE__ */ o(v, { size: 14 }),
60
+ "Copy"
61
+ ] })
62
+ }
63
+ )
64
+ ] }),
65
+ /* @__PURE__ */ o("div", { className: t.codeBlockContent, style: { maxHeight: h }, children: /* @__PURE__ */ o(
66
+ x,
67
+ {
68
+ language: c,
69
+ style: f,
70
+ showLineNumbers: m,
71
+ customStyle: {
72
+ margin: 0,
73
+ padding: 0,
74
+ background: "transparent",
75
+ fontSize: "inherit",
76
+ lineHeight: "inherit"
77
+ },
78
+ codeTagProps: {
79
+ style: {
80
+ fontFamily: "var(--font-mono)"
81
+ }
82
+ },
83
+ children: e
84
+ }
85
+ ) })
86
+ ]
87
+ }
88
+ );
15
89
  };
90
+ w.displayName = "ChatCodeBlock";
16
91
  export {
17
- _ as brand,
18
- a as default,
19
- s as icon,
20
- h as iconArrow,
21
- d as iconArrowLeft,
22
- l as iconExternal,
23
- e as iconRight,
24
- t as lg,
25
- n as link,
26
- o as md,
27
- i as sm,
28
- c as subtle,
29
- r as underline
92
+ w as ChatCodeBlock
30
93
  };