@pmate/chat-sdk 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +5 -0
  2. package/dist/assets/ChatInput.stories-6Z6tmO-P.js +922 -0
  3. package/dist/assets/Color-AVL7NMMY-CdXTB89n.js +1 -0
  4. package/dist/assets/DocsRenderer-PQXLIZUC-CtoiPcLN.js +1243 -0
  5. package/dist/assets/client-BG97-bzh.js +9 -0
  6. package/dist/assets/iframe-CWturJ6d.css +1 -0
  7. package/dist/assets/iframe-fcxekwVB.js +1071 -0
  8. package/dist/assets/index-u9_9PRd-.js +1 -0
  9. package/dist/assets/preload-helper-PPVm8Dsz.js +1 -0
  10. package/dist/assets/react-18-DKDc3Hbl.js +1 -0
  11. package/dist/favicon-wrapper.svg +46 -0
  12. package/dist/favicon.svg +1 -0
  13. package/dist/iframe.html +687 -0
  14. package/dist/index.html +148 -0
  15. package/dist/index.json +1 -0
  16. package/dist/nunito-sans-bold-italic.woff2 +0 -0
  17. package/dist/nunito-sans-bold.woff2 +0 -0
  18. package/dist/nunito-sans-italic.woff2 +0 -0
  19. package/dist/nunito-sans-regular.woff2 +0 -0
  20. package/dist/project.json +1 -0
  21. package/dist/sb-addons/docs-1/manager-bundle.js +151 -0
  22. package/dist/sb-addons/docs-1/manager-bundle.js.LEGAL.txt +0 -0
  23. package/dist/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +971 -0
  24. package/dist/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js.LEGAL.txt +0 -0
  25. package/dist/sb-common-assets/favicon-wrapper.svg +46 -0
  26. package/dist/sb-common-assets/favicon.svg +1 -0
  27. package/dist/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  28. package/dist/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  29. package/dist/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  30. package/dist/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  31. package/dist/sb-manager/globals-module-info.js +799 -0
  32. package/dist/sb-manager/globals-runtime.js +69791 -0
  33. package/dist/sb-manager/globals.js +34 -0
  34. package/dist/sb-manager/runtime.js +13198 -0
  35. package/dist/vite-inject-mocker-entry.js +2 -0
  36. package/lib/atoms/attachmentAtoms.d.ts +4 -0
  37. package/lib/atoms/attachmentAtoms.js +2 -0
  38. package/lib/atoms/chatInputAtoms.d.ts +16 -0
  39. package/lib/atoms/chatInputAtoms.js +6 -0
  40. package/lib/atoms/voiceAtoms.d.ts +6 -0
  41. package/lib/atoms/voiceAtoms.js +3 -0
  42. package/lib/components/AttachmentPreview.d.ts +6 -0
  43. package/lib/components/AttachmentPreview.js +13 -0
  44. package/lib/components/ChatInputDesktop.d.ts +2 -0
  45. package/lib/components/ChatInputDesktop.js +181 -0
  46. package/lib/components/ChatInputMobile.d.ts +2 -0
  47. package/lib/components/ChatInputMobile.js +338 -0
  48. package/lib/components/EmojiPicker.d.ts +10 -0
  49. package/lib/components/EmojiPicker.js +62 -0
  50. package/lib/components/EmojiTrigger.d.ts +2 -0
  51. package/lib/components/EmojiTrigger.js +18 -0
  52. package/lib/components/HoldToTalkButton.d.ts +13 -0
  53. package/lib/components/HoldToTalkButton.js +38 -0
  54. package/lib/components/ImageTrigger.d.ts +2 -0
  55. package/lib/components/ImageTrigger.js +18 -0
  56. package/lib/components/InputSurface.d.ts +7 -0
  57. package/lib/components/InputSurface.js +26 -0
  58. package/lib/components/SendAction.d.ts +5 -0
  59. package/lib/components/SendAction.js +18 -0
  60. package/lib/components/StatusHint.d.ts +6 -0
  61. package/lib/components/StatusHint.js +16 -0
  62. package/lib/components/TextComposer.d.ts +5 -0
  63. package/lib/components/TextComposer.js +16 -0
  64. package/lib/components/VoiceModeSwitch.d.ts +7 -0
  65. package/lib/components/VoiceModeSwitch.js +14 -0
  66. package/lib/components/WaveformFeedback.d.ts +6 -0
  67. package/lib/components/WaveformFeedback.js +44 -0
  68. package/lib/components/icons.d.ts +11 -0
  69. package/lib/components/icons.js +29 -0
  70. package/lib/hooks/useAttachmentState.d.ts +6 -0
  71. package/lib/hooks/useAttachmentState.js +21 -0
  72. package/lib/hooks/useChatInputState.d.ts +14 -0
  73. package/lib/hooks/useChatInputState.js +25 -0
  74. package/lib/hooks/useTranscriptComposer.d.ts +1 -0
  75. package/lib/hooks/useTranscriptComposer.js +11 -0
  76. package/lib/hooks/useVoiceInputController.d.ts +14 -0
  77. package/lib/hooks/useVoiceInputController.js +133 -0
  78. package/lib/index.d.ts +23 -0
  79. package/lib/index.js +23 -0
  80. package/lib/recorder-processor.js +20 -0
  81. package/lib/services/agentSdkASRClient.d.ts +28 -0
  82. package/lib/services/agentSdkASRClient.js +25 -0
  83. package/lib/services/authTokenResolver.d.ts +7 -0
  84. package/lib/services/authTokenResolver.js +7 -0
  85. package/lib/stories/ChatInput.stories.d.ts +15 -0
  86. package/lib/stories/ChatInput.stories.js +38 -0
  87. package/lib/tests/agentSdkASRClient.test.d.ts +1 -0
  88. package/lib/tests/agentSdkASRClient.test.js +39 -0
  89. package/lib/tests/defaultTokens.test.d.ts +1 -0
  90. package/lib/tests/defaultTokens.test.js +16 -0
  91. package/lib/tests/transcriptComposer.test.d.ts +1 -0
  92. package/lib/tests/transcriptComposer.test.js +10 -0
  93. package/lib/tokens/defaultTokens.d.ts +3 -0
  94. package/lib/tokens/defaultTokens.js +91 -0
  95. package/lib/types/attachment.d.ts +8 -0
  96. package/lib/types/attachment.js +1 -0
  97. package/lib/types/chatInput.d.ts +139 -0
  98. package/lib/types/chatInput.js +1 -0
  99. package/lib/types/voice.d.ts +17 -0
  100. package/lib/types/voice.js +1 -0
  101. package/lib/voice/MicStateManager.d.ts +43 -0
  102. package/lib/voice/MicStateManager.js +155 -0
  103. package/lib/voice/Recorder.d.ts +44 -0
  104. package/lib/voice/Recorder.js +224 -0
  105. package/package.json +59 -0
@@ -0,0 +1,922 @@
1
+ import{r as f,R as i}from"./iframe-fcxekwVB.js";import"./preload-helper-PPVm8Dsz.js";const E={BASE_URL:"./",DEV:!1,MODE:"production",PROD:!0,SSR:!1,STORYBOOK:"true"};function xe(e){return"init"in e}function re(e){return!!e.write}function Te(e){return"v"in e||"e"in e}function X(e){if("e"in e)throw e.e;if((E?"production":void 0)!=="production"&&!("v"in e))throw new Error("[Bug] atom state is not initialized");return e.v}const Z=new WeakMap;function Ee(e){var r;return J(e)&&!!((r=Z.get(e))!=null&&r[0])}function Ne(e){const r=Z.get(e);r?.[0]&&(r[0]=!1,r[1].forEach(t=>t()))}function te(e,r){let t=Z.get(e);if(!t){t=[!0,new Set],Z.set(e,t);const n=()=>{t[0]=!1};e.then(n,n)}t[1].add(r)}function J(e){return typeof e?.then=="function"}function Ae(e,r,t){if(!t.p.has(e)){t.p.add(e);const n=()=>t.p.delete(e);r.then(n,n)}}function He(e,r,t){var n;const a=new Set;for(const u of((n=t.get(e))==null?void 0:n.t)||[])a.add(u);for(const u of r.p)a.add(u);return a}const Oe=(e,r,...t)=>r.read(...t),Ve=(e,r,...t)=>r.write(...t),Ke=(e,r)=>{if(r.INTERNAL_onInit)return r.INTERNAL_onInit(e);if(r.unstable_onInit)return console.warn("[DEPRECATED] atom.unstable_onInit is renamed to atom.INTERNAL_onInit."),r.unstable_onInit(e)},Ue=(e,r,t)=>{var n;return(n=r.onMount)==null?void 0:n.call(r,t)},Xe=(e,r)=>{var t;const n=S(e),a=n[0],u=n[6],s=n[9];if((E?"production":void 0)!=="production"&&!r)throw new Error("Atom is undefined or null");let g=a.get(r);return g||(g={d:new Map,p:new Set,n:0},a.set(r,g),(t=u.i)==null||t.call(u,r),s?.(e,r)),g},Ze=e=>{const r=S(e),t=r[1],n=r[3],a=r[4],u=r[5],s=r[6],g=r[13],c=[],l=d=>{try{d()}catch(m){c.push(m)}};do{s.f&&l(s.f);const d=new Set,m=d.add.bind(d);n.forEach(y=>{var o;return(o=t.get(y))==null?void 0:o.l.forEach(m)}),n.clear(),u.forEach(m),u.clear(),a.forEach(m),a.clear(),d.forEach(l),n.size&&g(e)}while(n.size||u.size||a.size);if(c.length)throw new AggregateError(c)},Je=e=>{const r=S(e),t=r[1],n=r[2],a=r[3],u=r[11],s=r[14],g=r[17],c=[],l=new WeakSet,d=new WeakSet,m=Array.from(a);for(;m.length;){const y=m[m.length-1],o=u(e,y);if(d.has(y)){m.pop();continue}if(l.has(y)){if(n.get(y)===o.n)c.push([y,o]);else if((E?"production":void 0)!=="production"&&n.has(y))throw new Error("[Bug] invalidated atom exists");d.add(y),m.pop();continue}l.add(y);for(const v of He(y,o,t))l.has(v)||m.push(v)}for(let y=c.length-1;y>=0;--y){const[o,v]=c[y];let h=!1;for(const q of v.d.keys())if(q!==o&&a.has(q)){h=!0;break}h&&(s(e,o),g(e,o)),n.delete(o)}},ne=new WeakSet,Ye=(e,r)=>{var t,n;const a=S(e),u=a[1],s=a[2],g=a[3],c=a[6],l=a[7],d=a[11],m=a[12],y=a[13],o=a[14],v=a[16],h=a[17],q=a[20],p=d(e,r);if(Te(p)){if(u.has(r)&&s.get(r)!==p.n)return p;let k=!1;for(const[j,D]of p.d)if(o(e,j).n!==D){k=!0;break}if(!k)return p}p.d.clear();let b=!0;function T(){u.has(r)&&(h(e,r),y(e),m(e))}function F(k){var j;if(k===r){const L=d(e,k);if(!Te(L))if(xe(k))q(e,k,k.init);else throw new Error("no atom init");return X(L)}const D=o(e,k);try{return X(D)}finally{p.d.set(k,D.n),Ee(p.v)&&Ae(r,p.v,D),u.has(r)&&((j=u.get(k))==null||j.t.add(r)),b||T()}}let C,B;const w={get signal(){return C||(C=new AbortController),C.signal},get setSelf(){return(E?"production":void 0)!=="production"&&!re(r)&&console.warn("setSelf function cannot be used with read-only atom"),!B&&re(r)&&(B=(...k)=>{if((E?"production":void 0)!=="production"&&b&&console.warn("setSelf function cannot be called in sync"),!b)try{return v(e,r,...k)}finally{y(e),m(e)}}),B}},I=p.n;try{(E?"production":void 0)!=="production"&&ne.delete(e);const k=l(e,r,F,w);return(E?"production":void 0)!=="production"&&ne.has(e)&&console.warn("Detected store mutation during atom read. This is not supported."),q(e,r,k),J(k)&&(te(k,()=>C?.abort()),k.then(T,T)),(t=c.r)==null||t.call(c,r),p}catch(k){return delete p.v,p.e=k,++p.n,p}finally{b=!1,I!==p.n&&s.get(r)===I&&(s.set(r,p.n),g.add(r),(n=c.c)==null||n.call(c,r))}},$e=(e,r)=>{const t=S(e),n=t[1],a=t[2],u=t[11],s=[r];for(;s.length;){const g=s.pop(),c=u(e,g);for(const l of He(g,c,n)){const d=u(e,l);a.set(l,d.n),s.push(l)}}},Qe=(e,r,...t)=>{const n=S(e),a=n[3],u=n[6],s=n[8],g=n[11],c=n[12],l=n[13],d=n[14],m=n[15],y=n[16],o=n[17],v=n[20];let h=!0;const q=b=>X(d(e,b)),p=(b,...T)=>{var F;const C=g(e,b);try{if(b===r){if(!xe(b))throw new Error("atom not writable");(E?"production":void 0)!=="production"&&ne.add(e);const B=C.n,w=T[0];v(e,b,w),o(e,b),B!==C.n&&(a.add(b),m(e,b),(F=u.c)==null||F.call(u,b));return}else return y(e,b,...T)}finally{h||(l(e),c(e))}};try{return s(e,r,q,p,...t)}finally{h=!1}},er=(e,r)=>{var t;const n=S(e),a=n[1],u=n[3],s=n[6],g=n[11],c=n[15],l=n[18],d=n[19],m=g(e,r),y=a.get(r);if(y&&!Ee(m.v)){for(const[o,v]of m.d)if(!y.d.has(o)){const h=g(e,o);l(e,o).t.add(r),y.d.add(o),v!==h.n&&(u.add(o),c(e,o),(t=s.c)==null||t.call(s,o))}for(const o of y.d)if(!m.d.has(o)){y.d.delete(o);const v=d(e,o);v?.t.delete(r)}}},rr=(e,r)=>{var t;const n=S(e),a=n[1],u=n[4],s=n[6],g=n[10],c=n[11],l=n[12],d=n[13],m=n[14],y=n[16],o=n[18],v=c(e,r);let h=a.get(r);if(!h){m(e,r);for(const q of v.d.keys())o(e,q).t.add(r);if(h={l:new Set,d:new Set(v.d.keys()),t:new Set},a.set(r,h),re(r)){const q=()=>{let p=!0;const b=(...T)=>{try{return y(e,r,...T)}finally{p||(d(e),l(e))}};try{const T=g(e,r,b);T&&(h.u=()=>{p=!0;try{T()}finally{p=!1}})}finally{p=!1}};u.add(q)}(t=s.m)==null||t.call(s,r)}return h},tr=(e,r)=>{var t,n;const a=S(e),u=a[1],s=a[5],g=a[6],c=a[11],l=a[19],d=c(e,r);let m=u.get(r);if(!m||m.l.size)return m;let y=!1;for(const o of m.t)if((t=u.get(o))!=null&&t.d.has(r)){y=!0;break}if(!y){m.u&&s.add(m.u),m=void 0,u.delete(r);for(const o of d.d.keys()){const v=l(e,o);v?.t.delete(r)}(n=g.u)==null||n.call(g,r);return}return m},nr=(e,r,t)=>{const n=S(e)[11],a=n(e,r),u="v"in a,s=a.v;if(J(t))for(const g of a.d.keys())Ae(r,t,n(e,g));a.v=t,delete a.e,(!u||!Object.is(s,a.v))&&(++a.n,J(s)&&Ne(s))},ar=(e,r)=>{const t=S(e)[14];return X(t(e,r))},ir=(e,r,...t)=>{const n=S(e),a=n[12],u=n[13],s=n[16];try{return s(e,r,...t)}finally{u(e),a(e)}},ur=(e,r,t)=>{const n=S(e),a=n[12],u=n[18],s=n[19],c=u(e,r).l;return c.add(t),a(e),()=>{c.delete(t),s(e,r),a(e)}},Pe=new WeakMap,S=e=>{const r=Pe.get(e);if((E?"production":void 0)!=="production"&&!r)throw new Error("Store must be created by buildStore to read its building blocks");return r};function sr(...e){const r={get(n){const a=S(r)[21];return a(r,n)},set(n,...a){const u=S(r)[22];return u(r,n,...a)},sub(n,a){const u=S(r)[23];return u(r,n,a)}},t=[new WeakMap,new WeakMap,new WeakMap,new Set,new Set,new Set,{},Oe,Ve,Ke,Ue,Xe,Ze,Je,Ye,$e,Qe,er,rr,tr,nr,ar,ir,ur,void 0].map((n,a)=>e[a]||n);return Pe.set(r,Object.freeze(t)),r}const Be={};let or=0;function P(e,r){const t=`atom${++or}`,n={toString(){return(Be?"production":void 0)!=="production"&&this.debugLabel?t+":"+this.debugLabel:t}};return typeof e=="function"?n.read=e:(n.init=e,n.read=lr,n.write=dr),n}function lr(e){return e(this)}function dr(e,r,t){return r(this,typeof t=="function"?t(e(this)):t)}function Y(){return sr()}let z;function mr(){return z||(z=Y(),(Be?"production":void 0)!=="production"&&(globalThis.__JOTAI_DEFAULT_STORE__||(globalThis.__JOTAI_DEFAULT_STORE__=z),globalThis.__JOTAI_DEFAULT_STORE__!==z&&console.warn("Detected multiple Jotai instances. It may cause unexpected behavior with the default store. https://github.com/pmndrs/jotai/discussions/2044"))),z}const cr={},ae=f.createContext(void 0);function De(e){return f.useContext(ae)||mr()}function Fe({children:e,store:r}){const t=f.useRef(null);return r?f.createElement(ae.Provider,{value:r},e):(t.current===null&&(t.current=Y()),f.createElement(ae.Provider,{value:t.current},e))}const ie=e=>typeof e?.then=="function",ue=e=>{e.status||(e.status="pending",e.then(r=>{e.status="fulfilled",e.value=r},r=>{e.status="rejected",e.reason=r}))},gr=i.use||(e=>{if(e.status==="pending")throw e;if(e.status==="fulfilled")return e.value;throw e.status==="rejected"?e.reason:(ue(e),e)}),ee=new WeakMap,Ie=(e,r)=>{let t=ee.get(e);return t||(t=new Promise((n,a)=>{let u=e;const s=l=>d=>{u===l&&n(d)},g=l=>d=>{u===l&&a(d)},c=()=>{try{const l=r();ie(l)?(ee.set(l,t),u=l,l.then(s(l),g(l)),te(l,c)):n(l)}catch(l){a(l)}};e.then(s(e),g(e)),te(e,c)}),ee.set(e,t)),t};function pr(e,r){const{delay:t,unstable_promiseStatus:n=!i.use}={},a=De(),[[u,s,g],c]=f.useReducer(d=>{const m=a.get(e);return Object.is(d[0],m)&&d[1]===a&&d[2]===e?d:[m,a,e]},void 0,()=>[a.get(e),a,e]);let l=u;if((s!==a||g!==e)&&(c(),l=a.get(e)),f.useEffect(()=>{const d=a.sub(e,()=>{if(n)try{const m=a.get(e);ie(m)&&ue(Ie(m,()=>a.get(e)))}catch{}if(typeof t=="number"){setTimeout(c,t);return}c()});return c(),d},[a,e,t,n]),f.useDebugValue(l),ie(l)){const d=Ie(l,()=>a.get(e));return n&&ue(d),gr(d)}return l}function yr(e,r){const t=De();return f.useCallback((...a)=>{if((cr?"production":void 0)!=="production"&&!("write"in e))throw new Error("not writable atom");return t.set(e,...a)},[t,e])}function H(e,r){return[pr(e),yr(e)]}const se=P("text"),oe=P("idle"),le=P(""),de=P(""),me=P(null),ce=P([]),x={color:{brandPrimary:"#6D4AFF",surfaceInputDefault:"#FFFFFF",surfaceInputFocus:"#F7F4FF",surfaceInputRecording:"#EEE7FF",surfaceInputError:"#FFF1F3",textPrimary:"#1F1637",textSecondary:"#6F6790",iconDefault:"#6F6790",iconActive:"#6D4AFF",actionSendDefault:"#6D4AFF",actionSendDisabled:"#CFC6F6",actionSendTextOnPrimary:"#FFFFFF",borderDefault:"#E6E0F7",borderFocus:"#B9A8FF",borderError:"#F2A7B5",statusError:"#D14363",statusWarning:"#D98E04",statusSuccess:"#2E9B62",voiceWaveformActive:"#7C5CFF",voiceWaveformBackground:"#DCD2FF"},spacing:{inputOuter:12,inputInner:10,actionGap:8,attachmentGap:8,voiceWaveformGap:4,mobileTouchInset:12,desktopToolbarGap:10,statusHintTop:6},radius:{inputSurface:20,actionButton:16,attachmentPreview:14,waveformBar:999,mobileHoldToTalk:18,desktopInputSurface:16},motion:{pressFeedback:"120ms ease-out",waveformPulse:"480ms ease-in-out",stateTransition:"180ms ease",transcribingLoading:"900ms linear infinite"},shadow:{inputElevated:"0 6px 24px rgba(95, 70, 180, 0.08)",recordingActive:"0 0 0 4px rgba(109, 74, 255, 0.14)"},typography:{familyBase:'"SF Pro Text", "PingFang SC", "Helvetica Neue", sans-serif',familyMono:'"SF Mono", "JetBrains Mono", monospace',inputText:{size:15,lineHeight:22,weight:400},statusHint:{size:12,lineHeight:16,weight:500},actionLabel:{size:13,lineHeight:18,weight:600},voiceHoldToTalk:{size:14,lineHeight:20,weight:600}}};function ge(e){return{...x,...e,color:{...x.color,...e?.color},spacing:{...x.spacing,...e?.spacing},radius:{...x.radius,...e?.radius},motion:{...x.motion,...e?.motion},shadow:{...x.shadow,...e?.shadow},typography:{...x.typography,...e?.typography,inputText:{...x.typography.inputText,...e?.typography?.inputText},statusHint:{...x.typography.statusHint,...e?.typography?.statusHint},actionLabel:{...x.typography.actionLabel,...e?.typography?.actionLabel},voiceHoldToTalk:{...x.typography.voiceHoldToTalk,...e?.typography?.voiceHoldToTalk}}}}function $(){const[e,r]=H(se),[t,n]=H(oe),[a,u]=H(le),[s,g]=H(de),[c,l]=H(me),[d,m]=H(ce);return{mode:e,setMode:r,status:t,setStatus:n,text:a,setText:u,transcript:s,setTranscript:g,error:c,setError:l,attachments:d,setAttachments:m}}function je(){const{attachments:e,setAttachments:r,setStatus:t}=$();return{attachments:e,addAttachment(n){r([...e,{id:crypto.randomUUID(),kind:"image",name:n}]),t("attachment-selected")},removeAttachment(n){r(e.filter(a=>a.id!==n))}}}function pe({attachments:e,tokens:r}){return e.length===0?null:i.createElement("div",{className:"flex flex-wrap",style:{gap:r.spacing.attachmentGap}},e.map(t=>i.createElement("span",{key:t.id,style:{borderRadius:r.radius.attachmentPreview,background:r.color.surfaceInputFocus,color:r.color.textSecondary,padding:"4px 10px"}},t.name)))}pe.__docgenInfo={description:"",methods:[],displayName:"AttachmentPreview",props:{attachments:{required:!0,tsType:{name:"Array",elements:[{name:"signature",type:"object",raw:`{
2
+ id: string
3
+ name: string
4
+ kind: "image"
5
+ file?: File
6
+ previewUrl?: string
7
+ }`,signature:{properties:[{key:"id",value:{name:"string",required:!0}},{key:"name",value:{name:"string",required:!0}},{key:"kind",value:{name:"literal",value:'"image"',required:!0}},{key:"file",value:{name:"File",required:!1}},{key:"previewUrl",value:{name:"string",required:!1}}]}}],raw:"ChatAttachment[]"},description:""},tokens:{required:!0,tsType:{name:"signature",type:"object",raw:`{
8
+ color: ChatInputColorTokens
9
+ spacing: ChatInputSpacingTokens
10
+ radius: ChatInputRadiusTokens
11
+ motion: ChatInputMotionTokens
12
+ shadow: ChatInputShadowTokens
13
+ typography: ChatInputTypographyTokens
14
+ }`,signature:{properties:[{key:"color",value:{name:"signature",type:"object",raw:`{
15
+ brandPrimary: string
16
+ surfaceInputDefault: string
17
+ surfaceInputFocus: string
18
+ surfaceInputRecording: string
19
+ surfaceInputError: string
20
+ textPrimary: string
21
+ textSecondary: string
22
+ iconDefault: string
23
+ iconActive: string
24
+ actionSendDefault: string
25
+ actionSendDisabled: string
26
+ actionSendTextOnPrimary: string
27
+ borderDefault: string
28
+ borderFocus: string
29
+ borderError: string
30
+ statusError: string
31
+ statusWarning: string
32
+ statusSuccess: string
33
+ voiceWaveformActive: string
34
+ voiceWaveformBackground: string
35
+ }`,signature:{properties:[{key:"brandPrimary",value:{name:"string",required:!0}},{key:"surfaceInputDefault",value:{name:"string",required:!0}},{key:"surfaceInputFocus",value:{name:"string",required:!0}},{key:"surfaceInputRecording",value:{name:"string",required:!0}},{key:"surfaceInputError",value:{name:"string",required:!0}},{key:"textPrimary",value:{name:"string",required:!0}},{key:"textSecondary",value:{name:"string",required:!0}},{key:"iconDefault",value:{name:"string",required:!0}},{key:"iconActive",value:{name:"string",required:!0}},{key:"actionSendDefault",value:{name:"string",required:!0}},{key:"actionSendDisabled",value:{name:"string",required:!0}},{key:"actionSendTextOnPrimary",value:{name:"string",required:!0}},{key:"borderDefault",value:{name:"string",required:!0}},{key:"borderFocus",value:{name:"string",required:!0}},{key:"borderError",value:{name:"string",required:!0}},{key:"statusError",value:{name:"string",required:!0}},{key:"statusWarning",value:{name:"string",required:!0}},{key:"statusSuccess",value:{name:"string",required:!0}},{key:"voiceWaveformActive",value:{name:"string",required:!0}},{key:"voiceWaveformBackground",value:{name:"string",required:!0}}]},required:!0}},{key:"spacing",value:{name:"signature",type:"object",raw:`{
36
+ inputOuter: number
37
+ inputInner: number
38
+ actionGap: number
39
+ attachmentGap: number
40
+ voiceWaveformGap: number
41
+ mobileTouchInset: number
42
+ desktopToolbarGap: number
43
+ statusHintTop: number
44
+ }`,signature:{properties:[{key:"inputOuter",value:{name:"number",required:!0}},{key:"inputInner",value:{name:"number",required:!0}},{key:"actionGap",value:{name:"number",required:!0}},{key:"attachmentGap",value:{name:"number",required:!0}},{key:"voiceWaveformGap",value:{name:"number",required:!0}},{key:"mobileTouchInset",value:{name:"number",required:!0}},{key:"desktopToolbarGap",value:{name:"number",required:!0}},{key:"statusHintTop",value:{name:"number",required:!0}}]},required:!0}},{key:"radius",value:{name:"signature",type:"object",raw:`{
45
+ inputSurface: number
46
+ actionButton: number
47
+ attachmentPreview: number
48
+ waveformBar: number
49
+ mobileHoldToTalk: number
50
+ desktopInputSurface: number
51
+ }`,signature:{properties:[{key:"inputSurface",value:{name:"number",required:!0}},{key:"actionButton",value:{name:"number",required:!0}},{key:"attachmentPreview",value:{name:"number",required:!0}},{key:"waveformBar",value:{name:"number",required:!0}},{key:"mobileHoldToTalk",value:{name:"number",required:!0}},{key:"desktopInputSurface",value:{name:"number",required:!0}}]},required:!0}},{key:"motion",value:{name:"signature",type:"object",raw:`{
52
+ pressFeedback: string
53
+ waveformPulse: string
54
+ stateTransition: string
55
+ transcribingLoading: string
56
+ }`,signature:{properties:[{key:"pressFeedback",value:{name:"string",required:!0}},{key:"waveformPulse",value:{name:"string",required:!0}},{key:"stateTransition",value:{name:"string",required:!0}},{key:"transcribingLoading",value:{name:"string",required:!0}}]},required:!0}},{key:"shadow",value:{name:"signature",type:"object",raw:`{
57
+ inputElevated: string
58
+ recordingActive: string
59
+ }`,signature:{properties:[{key:"inputElevated",value:{name:"string",required:!0}},{key:"recordingActive",value:{name:"string",required:!0}}]},required:!0}},{key:"typography",value:{name:"signature",type:"object",raw:`{
60
+ familyBase: string
61
+ familyMono: string
62
+ inputText: ChatInputTypographyScale
63
+ statusHint: ChatInputTypographyScale
64
+ actionLabel: ChatInputTypographyScale
65
+ voiceHoldToTalk: ChatInputTypographyScale
66
+ }`,signature:{properties:[{key:"familyBase",value:{name:"string",required:!0}},{key:"familyMono",value:{name:"string",required:!0}},{key:"inputText",value:{name:"signature",type:"object",raw:`{
67
+ size: number
68
+ lineHeight: number
69
+ weight: number
70
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"statusHint",value:{name:"signature",type:"object",raw:`{
71
+ size: number
72
+ lineHeight: number
73
+ weight: number
74
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"actionLabel",value:{name:"signature",type:"object",raw:`{
75
+ size: number
76
+ lineHeight: number
77
+ weight: number
78
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"voiceHoldToTalk",value:{name:"signature",type:"object",raw:`{
79
+ size: number
80
+ lineHeight: number
81
+ weight: number
82
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}}]},required:!0}}]}},description:""}}};function _({size:e=22,children:r}){return i.createElement("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},r)}function ye({size:e,stroke:r="currentColor",strokeWidth:t=1.9}){return i.createElement(_,{size:e},i.createElement("rect",{x:"9",y:"3",width:"6",height:"11",rx:"3",stroke:r,strokeWidth:t}),i.createElement("path",{d:"M6.5 11.5C6.5 14.5376 8.96243 17 12 17C15.0376 17 17.5 14.5376 17.5 11.5",stroke:r,strokeWidth:t,strokeLinecap:"round"}),i.createElement("path",{d:"M12 17V21",stroke:r,strokeWidth:t,strokeLinecap:"round"}),i.createElement("path",{d:"M8.5 21H15.5",stroke:r,strokeWidth:t,strokeLinecap:"round"}))}function Me({size:e,stroke:r="currentColor",strokeWidth:t=1.8}){return i.createElement(_,{size:e},i.createElement("rect",{x:"3",y:"5",width:"18",height:"14",rx:"3",stroke:r,strokeWidth:t}),[[6.5,9],[10,9],[13.5,9],[17,9],[6.5,12.5],[10,12.5],[13.5,12.5],[17,12.5]].map(([n,a],u)=>i.createElement("circle",{key:u,cx:n,cy:a,r:"0.8",fill:r})),i.createElement("path",{d:"M7 16.2H17",stroke:r,strokeWidth:t,strokeLinecap:"round"}))}function Re({size:e,stroke:r="currentColor",strokeWidth:t=1.8}){return i.createElement(_,{size:e},i.createElement("circle",{cx:"12",cy:"12",r:"9",stroke:r,strokeWidth:t}),i.createElement("circle",{cx:"9",cy:"10",r:"1",fill:r}),i.createElement("circle",{cx:"15",cy:"10",r:"1",fill:r}),i.createElement("path",{d:"M8.2 14.2C9.15 15.55 10.42 16.2 12 16.2C13.58 16.2 14.85 15.55 15.8 14.2",stroke:r,strokeWidth:t,strokeLinecap:"round"}))}function ze({size:e,stroke:r="currentColor",strokeWidth:t=1.8}){return i.createElement(_,{size:e},i.createElement("circle",{cx:"12",cy:"12",r:"9",stroke:r,strokeWidth:t}),i.createElement("path",{d:"M12 8V16",stroke:r,strokeWidth:t,strokeLinecap:"round"}),i.createElement("path",{d:"M8 12H16",stroke:r,strokeWidth:t,strokeLinecap:"round"}))}function _e({size:e,stroke:r="currentColor",strokeWidth:t=1.8}){return i.createElement(_,{size:e},i.createElement("rect",{x:"4",y:"5",width:"16",height:"14",rx:"3",stroke:r,strokeWidth:t}),i.createElement("circle",{cx:"9",cy:"10",r:"1.6",stroke:r,strokeWidth:t}),i.createElement("path",{d:"M7 16L11.2 12.1C11.75 11.58 12.63 11.58 13.18 12.1L17 15.6",stroke:r,strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round"}))}ye.__docgenInfo={description:"",methods:[],displayName:"MicOutlineIcon",props:{size:{required:!1,tsType:{name:"number"},description:""},stroke:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:'"currentColor"',computed:!1}},strokeWidth:{required:!1,tsType:{name:"number"},description:"",defaultValue:{value:"1.9",computed:!1}}}};Me.__docgenInfo={description:"",methods:[],displayName:"KeyboardOutlineIcon",props:{size:{required:!1,tsType:{name:"number"},description:""},stroke:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:'"currentColor"',computed:!1}},strokeWidth:{required:!1,tsType:{name:"number"},description:"",defaultValue:{value:"1.8",computed:!1}}}};Re.__docgenInfo={description:"",methods:[],displayName:"SmileOutlineIcon",props:{size:{required:!1,tsType:{name:"number"},description:""},stroke:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:'"currentColor"',computed:!1}},strokeWidth:{required:!1,tsType:{name:"number"},description:"",defaultValue:{value:"1.8",computed:!1}}}};ze.__docgenInfo={description:"",methods:[],displayName:"PlusOutlineIcon",props:{size:{required:!1,tsType:{name:"number"},description:""},stroke:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:'"currentColor"',computed:!1}},strokeWidth:{required:!1,tsType:{name:"number"},description:"",defaultValue:{value:"1.8",computed:!1}}}};_e.__docgenInfo={description:"",methods:[],displayName:"ImageOutlineIcon",props:{size:{required:!1,tsType:{name:"number"},description:""},stroke:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:'"currentColor"',computed:!1}},strokeWidth:{required:!1,tsType:{name:"number"},description:"",defaultValue:{value:"1.8",computed:!1}}}};function ve(e){const r=Number(e["data-icon-size"]??26);return i.createElement("button",{type:"button","aria-label":"Emoji",...e,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:32,height:32,border:0,background:"transparent",color:"inherit",cursor:"pointer",...e.style??{}}},i.createElement(Re,{size:r}))}ve.__docgenInfo={description:"",methods:[],displayName:"EmojiTrigger"};function be({tokens:e,status:r,children:t,styleOverride:n}){const a=r==="recording"?e.color.surfaceInputRecording:r==="error"?e.color.surfaceInputError:e.color.surfaceInputDefault,u=r==="error"?e.color.borderError:r==="recording"?e.color.borderFocus:e.color.borderDefault;return i.createElement("div",{style:{background:a,borderWidth:1,borderStyle:"solid",borderColor:u,borderRadius:e.radius.inputSurface,boxShadow:r==="recording"?e.shadow.recordingActive:e.shadow.inputElevated,padding:e.spacing.inputOuter,...n},className:"w-full"},t)}be.__docgenInfo={description:"",methods:[],displayName:"InputSurface",props:{tokens:{required:!0,tsType:{name:"signature",type:"object",raw:`{
83
+ color: ChatInputColorTokens
84
+ spacing: ChatInputSpacingTokens
85
+ radius: ChatInputRadiusTokens
86
+ motion: ChatInputMotionTokens
87
+ shadow: ChatInputShadowTokens
88
+ typography: ChatInputTypographyTokens
89
+ }`,signature:{properties:[{key:"color",value:{name:"signature",type:"object",raw:`{
90
+ brandPrimary: string
91
+ surfaceInputDefault: string
92
+ surfaceInputFocus: string
93
+ surfaceInputRecording: string
94
+ surfaceInputError: string
95
+ textPrimary: string
96
+ textSecondary: string
97
+ iconDefault: string
98
+ iconActive: string
99
+ actionSendDefault: string
100
+ actionSendDisabled: string
101
+ actionSendTextOnPrimary: string
102
+ borderDefault: string
103
+ borderFocus: string
104
+ borderError: string
105
+ statusError: string
106
+ statusWarning: string
107
+ statusSuccess: string
108
+ voiceWaveformActive: string
109
+ voiceWaveformBackground: string
110
+ }`,signature:{properties:[{key:"brandPrimary",value:{name:"string",required:!0}},{key:"surfaceInputDefault",value:{name:"string",required:!0}},{key:"surfaceInputFocus",value:{name:"string",required:!0}},{key:"surfaceInputRecording",value:{name:"string",required:!0}},{key:"surfaceInputError",value:{name:"string",required:!0}},{key:"textPrimary",value:{name:"string",required:!0}},{key:"textSecondary",value:{name:"string",required:!0}},{key:"iconDefault",value:{name:"string",required:!0}},{key:"iconActive",value:{name:"string",required:!0}},{key:"actionSendDefault",value:{name:"string",required:!0}},{key:"actionSendDisabled",value:{name:"string",required:!0}},{key:"actionSendTextOnPrimary",value:{name:"string",required:!0}},{key:"borderDefault",value:{name:"string",required:!0}},{key:"borderFocus",value:{name:"string",required:!0}},{key:"borderError",value:{name:"string",required:!0}},{key:"statusError",value:{name:"string",required:!0}},{key:"statusWarning",value:{name:"string",required:!0}},{key:"statusSuccess",value:{name:"string",required:!0}},{key:"voiceWaveformActive",value:{name:"string",required:!0}},{key:"voiceWaveformBackground",value:{name:"string",required:!0}}]},required:!0}},{key:"spacing",value:{name:"signature",type:"object",raw:`{
111
+ inputOuter: number
112
+ inputInner: number
113
+ actionGap: number
114
+ attachmentGap: number
115
+ voiceWaveformGap: number
116
+ mobileTouchInset: number
117
+ desktopToolbarGap: number
118
+ statusHintTop: number
119
+ }`,signature:{properties:[{key:"inputOuter",value:{name:"number",required:!0}},{key:"inputInner",value:{name:"number",required:!0}},{key:"actionGap",value:{name:"number",required:!0}},{key:"attachmentGap",value:{name:"number",required:!0}},{key:"voiceWaveformGap",value:{name:"number",required:!0}},{key:"mobileTouchInset",value:{name:"number",required:!0}},{key:"desktopToolbarGap",value:{name:"number",required:!0}},{key:"statusHintTop",value:{name:"number",required:!0}}]},required:!0}},{key:"radius",value:{name:"signature",type:"object",raw:`{
120
+ inputSurface: number
121
+ actionButton: number
122
+ attachmentPreview: number
123
+ waveformBar: number
124
+ mobileHoldToTalk: number
125
+ desktopInputSurface: number
126
+ }`,signature:{properties:[{key:"inputSurface",value:{name:"number",required:!0}},{key:"actionButton",value:{name:"number",required:!0}},{key:"attachmentPreview",value:{name:"number",required:!0}},{key:"waveformBar",value:{name:"number",required:!0}},{key:"mobileHoldToTalk",value:{name:"number",required:!0}},{key:"desktopInputSurface",value:{name:"number",required:!0}}]},required:!0}},{key:"motion",value:{name:"signature",type:"object",raw:`{
127
+ pressFeedback: string
128
+ waveformPulse: string
129
+ stateTransition: string
130
+ transcribingLoading: string
131
+ }`,signature:{properties:[{key:"pressFeedback",value:{name:"string",required:!0}},{key:"waveformPulse",value:{name:"string",required:!0}},{key:"stateTransition",value:{name:"string",required:!0}},{key:"transcribingLoading",value:{name:"string",required:!0}}]},required:!0}},{key:"shadow",value:{name:"signature",type:"object",raw:`{
132
+ inputElevated: string
133
+ recordingActive: string
134
+ }`,signature:{properties:[{key:"inputElevated",value:{name:"string",required:!0}},{key:"recordingActive",value:{name:"string",required:!0}}]},required:!0}},{key:"typography",value:{name:"signature",type:"object",raw:`{
135
+ familyBase: string
136
+ familyMono: string
137
+ inputText: ChatInputTypographyScale
138
+ statusHint: ChatInputTypographyScale
139
+ actionLabel: ChatInputTypographyScale
140
+ voiceHoldToTalk: ChatInputTypographyScale
141
+ }`,signature:{properties:[{key:"familyBase",value:{name:"string",required:!0}},{key:"familyMono",value:{name:"string",required:!0}},{key:"inputText",value:{name:"signature",type:"object",raw:`{
142
+ size: number
143
+ lineHeight: number
144
+ weight: number
145
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"statusHint",value:{name:"signature",type:"object",raw:`{
146
+ size: number
147
+ lineHeight: number
148
+ weight: number
149
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"actionLabel",value:{name:"signature",type:"object",raw:`{
150
+ size: number
151
+ lineHeight: number
152
+ weight: number
153
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"voiceHoldToTalk",value:{name:"signature",type:"object",raw:`{
154
+ size: number
155
+ lineHeight: number
156
+ weight: number
157
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}}]},required:!0}}]}},description:""},status:{required:!0,tsType:{name:"union",raw:`| "idle"
158
+ | "typing"
159
+ | "voice-mode-ready"
160
+ | "recording"
161
+ | "transcribing"
162
+ | "transcript-ready"
163
+ | "attachment-selected"
164
+ | "sending"
165
+ | "error"`,elements:[{name:"literal",value:'"idle"'},{name:"literal",value:'"typing"'},{name:"literal",value:'"voice-mode-ready"'},{name:"literal",value:'"recording"'},{name:"literal",value:'"transcribing"'},{name:"literal",value:'"transcript-ready"'},{name:"literal",value:'"attachment-selected"'},{name:"literal",value:'"sending"'},{name:"literal",value:'"error"'}]},description:""},styleOverride:{required:!1,tsType:{name:"CSSProperties"},description:""}}};function he({tokens:e,disabled:r,children:t="Send",style:n,...a}){return i.createElement("button",{type:"button",disabled:r,style:{borderRadius:e.radius.actionButton,background:r?e.color.actionSendDisabled:e.color.actionSendDefault,color:e.color.actionSendTextOnPrimary,padding:"8px 14px",fontSize:e.typography.actionLabel.size,lineHeight:`${e.typography.actionLabel.lineHeight}px`,fontWeight:e.typography.actionLabel.weight,border:0,cursor:r?"not-allowed":"pointer",...n},...a},t)}he.__docgenInfo={description:"",methods:[],displayName:"SendAction",props:{tokens:{required:!0,tsType:{name:"signature",type:"object",raw:`{
166
+ color: ChatInputColorTokens
167
+ spacing: ChatInputSpacingTokens
168
+ radius: ChatInputRadiusTokens
169
+ motion: ChatInputMotionTokens
170
+ shadow: ChatInputShadowTokens
171
+ typography: ChatInputTypographyTokens
172
+ }`,signature:{properties:[{key:"color",value:{name:"signature",type:"object",raw:`{
173
+ brandPrimary: string
174
+ surfaceInputDefault: string
175
+ surfaceInputFocus: string
176
+ surfaceInputRecording: string
177
+ surfaceInputError: string
178
+ textPrimary: string
179
+ textSecondary: string
180
+ iconDefault: string
181
+ iconActive: string
182
+ actionSendDefault: string
183
+ actionSendDisabled: string
184
+ actionSendTextOnPrimary: string
185
+ borderDefault: string
186
+ borderFocus: string
187
+ borderError: string
188
+ statusError: string
189
+ statusWarning: string
190
+ statusSuccess: string
191
+ voiceWaveformActive: string
192
+ voiceWaveformBackground: string
193
+ }`,signature:{properties:[{key:"brandPrimary",value:{name:"string",required:!0}},{key:"surfaceInputDefault",value:{name:"string",required:!0}},{key:"surfaceInputFocus",value:{name:"string",required:!0}},{key:"surfaceInputRecording",value:{name:"string",required:!0}},{key:"surfaceInputError",value:{name:"string",required:!0}},{key:"textPrimary",value:{name:"string",required:!0}},{key:"textSecondary",value:{name:"string",required:!0}},{key:"iconDefault",value:{name:"string",required:!0}},{key:"iconActive",value:{name:"string",required:!0}},{key:"actionSendDefault",value:{name:"string",required:!0}},{key:"actionSendDisabled",value:{name:"string",required:!0}},{key:"actionSendTextOnPrimary",value:{name:"string",required:!0}},{key:"borderDefault",value:{name:"string",required:!0}},{key:"borderFocus",value:{name:"string",required:!0}},{key:"borderError",value:{name:"string",required:!0}},{key:"statusError",value:{name:"string",required:!0}},{key:"statusWarning",value:{name:"string",required:!0}},{key:"statusSuccess",value:{name:"string",required:!0}},{key:"voiceWaveformActive",value:{name:"string",required:!0}},{key:"voiceWaveformBackground",value:{name:"string",required:!0}}]},required:!0}},{key:"spacing",value:{name:"signature",type:"object",raw:`{
194
+ inputOuter: number
195
+ inputInner: number
196
+ actionGap: number
197
+ attachmentGap: number
198
+ voiceWaveformGap: number
199
+ mobileTouchInset: number
200
+ desktopToolbarGap: number
201
+ statusHintTop: number
202
+ }`,signature:{properties:[{key:"inputOuter",value:{name:"number",required:!0}},{key:"inputInner",value:{name:"number",required:!0}},{key:"actionGap",value:{name:"number",required:!0}},{key:"attachmentGap",value:{name:"number",required:!0}},{key:"voiceWaveformGap",value:{name:"number",required:!0}},{key:"mobileTouchInset",value:{name:"number",required:!0}},{key:"desktopToolbarGap",value:{name:"number",required:!0}},{key:"statusHintTop",value:{name:"number",required:!0}}]},required:!0}},{key:"radius",value:{name:"signature",type:"object",raw:`{
203
+ inputSurface: number
204
+ actionButton: number
205
+ attachmentPreview: number
206
+ waveformBar: number
207
+ mobileHoldToTalk: number
208
+ desktopInputSurface: number
209
+ }`,signature:{properties:[{key:"inputSurface",value:{name:"number",required:!0}},{key:"actionButton",value:{name:"number",required:!0}},{key:"attachmentPreview",value:{name:"number",required:!0}},{key:"waveformBar",value:{name:"number",required:!0}},{key:"mobileHoldToTalk",value:{name:"number",required:!0}},{key:"desktopInputSurface",value:{name:"number",required:!0}}]},required:!0}},{key:"motion",value:{name:"signature",type:"object",raw:`{
210
+ pressFeedback: string
211
+ waveformPulse: string
212
+ stateTransition: string
213
+ transcribingLoading: string
214
+ }`,signature:{properties:[{key:"pressFeedback",value:{name:"string",required:!0}},{key:"waveformPulse",value:{name:"string",required:!0}},{key:"stateTransition",value:{name:"string",required:!0}},{key:"transcribingLoading",value:{name:"string",required:!0}}]},required:!0}},{key:"shadow",value:{name:"signature",type:"object",raw:`{
215
+ inputElevated: string
216
+ recordingActive: string
217
+ }`,signature:{properties:[{key:"inputElevated",value:{name:"string",required:!0}},{key:"recordingActive",value:{name:"string",required:!0}}]},required:!0}},{key:"typography",value:{name:"signature",type:"object",raw:`{
218
+ familyBase: string
219
+ familyMono: string
220
+ inputText: ChatInputTypographyScale
221
+ statusHint: ChatInputTypographyScale
222
+ actionLabel: ChatInputTypographyScale
223
+ voiceHoldToTalk: ChatInputTypographyScale
224
+ }`,signature:{properties:[{key:"familyBase",value:{name:"string",required:!0}},{key:"familyMono",value:{name:"string",required:!0}},{key:"inputText",value:{name:"signature",type:"object",raw:`{
225
+ size: number
226
+ lineHeight: number
227
+ weight: number
228
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"statusHint",value:{name:"signature",type:"object",raw:`{
229
+ size: number
230
+ lineHeight: number
231
+ weight: number
232
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"actionLabel",value:{name:"signature",type:"object",raw:`{
233
+ size: number
234
+ lineHeight: number
235
+ weight: number
236
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"voiceHoldToTalk",value:{name:"signature",type:"object",raw:`{
237
+ size: number
238
+ lineHeight: number
239
+ weight: number
240
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}}]},required:!0}}]}},description:""},children:{defaultValue:{value:'"Send"',computed:!1},required:!1}}};function ke({text:e,tokens:r,tone:t="secondary"}){return e?i.createElement("div",{style:{color:t==="error"?r.color.statusError:r.color.textSecondary,marginTop:r.spacing.statusHintTop,fontSize:r.typography.statusHint.size,lineHeight:`${r.typography.statusHint.lineHeight}px`,fontWeight:r.typography.statusHint.weight}},e):null}ke.__docgenInfo={description:"",methods:[],displayName:"StatusHint",props:{text:{required:!1,tsType:{name:"string"},description:""},tokens:{required:!0,tsType:{name:"signature",type:"object",raw:`{
241
+ color: ChatInputColorTokens
242
+ spacing: ChatInputSpacingTokens
243
+ radius: ChatInputRadiusTokens
244
+ motion: ChatInputMotionTokens
245
+ shadow: ChatInputShadowTokens
246
+ typography: ChatInputTypographyTokens
247
+ }`,signature:{properties:[{key:"color",value:{name:"signature",type:"object",raw:`{
248
+ brandPrimary: string
249
+ surfaceInputDefault: string
250
+ surfaceInputFocus: string
251
+ surfaceInputRecording: string
252
+ surfaceInputError: string
253
+ textPrimary: string
254
+ textSecondary: string
255
+ iconDefault: string
256
+ iconActive: string
257
+ actionSendDefault: string
258
+ actionSendDisabled: string
259
+ actionSendTextOnPrimary: string
260
+ borderDefault: string
261
+ borderFocus: string
262
+ borderError: string
263
+ statusError: string
264
+ statusWarning: string
265
+ statusSuccess: string
266
+ voiceWaveformActive: string
267
+ voiceWaveformBackground: string
268
+ }`,signature:{properties:[{key:"brandPrimary",value:{name:"string",required:!0}},{key:"surfaceInputDefault",value:{name:"string",required:!0}},{key:"surfaceInputFocus",value:{name:"string",required:!0}},{key:"surfaceInputRecording",value:{name:"string",required:!0}},{key:"surfaceInputError",value:{name:"string",required:!0}},{key:"textPrimary",value:{name:"string",required:!0}},{key:"textSecondary",value:{name:"string",required:!0}},{key:"iconDefault",value:{name:"string",required:!0}},{key:"iconActive",value:{name:"string",required:!0}},{key:"actionSendDefault",value:{name:"string",required:!0}},{key:"actionSendDisabled",value:{name:"string",required:!0}},{key:"actionSendTextOnPrimary",value:{name:"string",required:!0}},{key:"borderDefault",value:{name:"string",required:!0}},{key:"borderFocus",value:{name:"string",required:!0}},{key:"borderError",value:{name:"string",required:!0}},{key:"statusError",value:{name:"string",required:!0}},{key:"statusWarning",value:{name:"string",required:!0}},{key:"statusSuccess",value:{name:"string",required:!0}},{key:"voiceWaveformActive",value:{name:"string",required:!0}},{key:"voiceWaveformBackground",value:{name:"string",required:!0}}]},required:!0}},{key:"spacing",value:{name:"signature",type:"object",raw:`{
269
+ inputOuter: number
270
+ inputInner: number
271
+ actionGap: number
272
+ attachmentGap: number
273
+ voiceWaveformGap: number
274
+ mobileTouchInset: number
275
+ desktopToolbarGap: number
276
+ statusHintTop: number
277
+ }`,signature:{properties:[{key:"inputOuter",value:{name:"number",required:!0}},{key:"inputInner",value:{name:"number",required:!0}},{key:"actionGap",value:{name:"number",required:!0}},{key:"attachmentGap",value:{name:"number",required:!0}},{key:"voiceWaveformGap",value:{name:"number",required:!0}},{key:"mobileTouchInset",value:{name:"number",required:!0}},{key:"desktopToolbarGap",value:{name:"number",required:!0}},{key:"statusHintTop",value:{name:"number",required:!0}}]},required:!0}},{key:"radius",value:{name:"signature",type:"object",raw:`{
278
+ inputSurface: number
279
+ actionButton: number
280
+ attachmentPreview: number
281
+ waveformBar: number
282
+ mobileHoldToTalk: number
283
+ desktopInputSurface: number
284
+ }`,signature:{properties:[{key:"inputSurface",value:{name:"number",required:!0}},{key:"actionButton",value:{name:"number",required:!0}},{key:"attachmentPreview",value:{name:"number",required:!0}},{key:"waveformBar",value:{name:"number",required:!0}},{key:"mobileHoldToTalk",value:{name:"number",required:!0}},{key:"desktopInputSurface",value:{name:"number",required:!0}}]},required:!0}},{key:"motion",value:{name:"signature",type:"object",raw:`{
285
+ pressFeedback: string
286
+ waveformPulse: string
287
+ stateTransition: string
288
+ transcribingLoading: string
289
+ }`,signature:{properties:[{key:"pressFeedback",value:{name:"string",required:!0}},{key:"waveformPulse",value:{name:"string",required:!0}},{key:"stateTransition",value:{name:"string",required:!0}},{key:"transcribingLoading",value:{name:"string",required:!0}}]},required:!0}},{key:"shadow",value:{name:"signature",type:"object",raw:`{
290
+ inputElevated: string
291
+ recordingActive: string
292
+ }`,signature:{properties:[{key:"inputElevated",value:{name:"string",required:!0}},{key:"recordingActive",value:{name:"string",required:!0}}]},required:!0}},{key:"typography",value:{name:"signature",type:"object",raw:`{
293
+ familyBase: string
294
+ familyMono: string
295
+ inputText: ChatInputTypographyScale
296
+ statusHint: ChatInputTypographyScale
297
+ actionLabel: ChatInputTypographyScale
298
+ voiceHoldToTalk: ChatInputTypographyScale
299
+ }`,signature:{properties:[{key:"familyBase",value:{name:"string",required:!0}},{key:"familyMono",value:{name:"string",required:!0}},{key:"inputText",value:{name:"signature",type:"object",raw:`{
300
+ size: number
301
+ lineHeight: number
302
+ weight: number
303
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"statusHint",value:{name:"signature",type:"object",raw:`{
304
+ size: number
305
+ lineHeight: number
306
+ weight: number
307
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"actionLabel",value:{name:"signature",type:"object",raw:`{
308
+ size: number
309
+ lineHeight: number
310
+ weight: number
311
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"voiceHoldToTalk",value:{name:"signature",type:"object",raw:`{
312
+ size: number
313
+ lineHeight: number
314
+ weight: number
315
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}}]},required:!0}}]}},description:""},tone:{required:!1,tsType:{name:"union",raw:'"secondary" | "error"',elements:[{name:"literal",value:'"secondary"'},{name:"literal",value:'"error"'}]},description:"",defaultValue:{value:'"secondary"',computed:!1}}}};function fe({tokens:e,style:r,...t}){return i.createElement("textarea",{rows:3,style:{width:"100%",resize:"none",outline:"none",background:"transparent",color:e.color.textPrimary,fontFamily:e.typography.familyBase,fontSize:e.typography.inputText.size,lineHeight:`${e.typography.inputText.lineHeight}px`,fontWeight:e.typography.inputText.weight,...r},...t})}fe.__docgenInfo={description:"",methods:[],displayName:"TextComposer",props:{tokens:{required:!0,tsType:{name:"signature",type:"object",raw:`{
316
+ color: ChatInputColorTokens
317
+ spacing: ChatInputSpacingTokens
318
+ radius: ChatInputRadiusTokens
319
+ motion: ChatInputMotionTokens
320
+ shadow: ChatInputShadowTokens
321
+ typography: ChatInputTypographyTokens
322
+ }`,signature:{properties:[{key:"color",value:{name:"signature",type:"object",raw:`{
323
+ brandPrimary: string
324
+ surfaceInputDefault: string
325
+ surfaceInputFocus: string
326
+ surfaceInputRecording: string
327
+ surfaceInputError: string
328
+ textPrimary: string
329
+ textSecondary: string
330
+ iconDefault: string
331
+ iconActive: string
332
+ actionSendDefault: string
333
+ actionSendDisabled: string
334
+ actionSendTextOnPrimary: string
335
+ borderDefault: string
336
+ borderFocus: string
337
+ borderError: string
338
+ statusError: string
339
+ statusWarning: string
340
+ statusSuccess: string
341
+ voiceWaveformActive: string
342
+ voiceWaveformBackground: string
343
+ }`,signature:{properties:[{key:"brandPrimary",value:{name:"string",required:!0}},{key:"surfaceInputDefault",value:{name:"string",required:!0}},{key:"surfaceInputFocus",value:{name:"string",required:!0}},{key:"surfaceInputRecording",value:{name:"string",required:!0}},{key:"surfaceInputError",value:{name:"string",required:!0}},{key:"textPrimary",value:{name:"string",required:!0}},{key:"textSecondary",value:{name:"string",required:!0}},{key:"iconDefault",value:{name:"string",required:!0}},{key:"iconActive",value:{name:"string",required:!0}},{key:"actionSendDefault",value:{name:"string",required:!0}},{key:"actionSendDisabled",value:{name:"string",required:!0}},{key:"actionSendTextOnPrimary",value:{name:"string",required:!0}},{key:"borderDefault",value:{name:"string",required:!0}},{key:"borderFocus",value:{name:"string",required:!0}},{key:"borderError",value:{name:"string",required:!0}},{key:"statusError",value:{name:"string",required:!0}},{key:"statusWarning",value:{name:"string",required:!0}},{key:"statusSuccess",value:{name:"string",required:!0}},{key:"voiceWaveformActive",value:{name:"string",required:!0}},{key:"voiceWaveformBackground",value:{name:"string",required:!0}}]},required:!0}},{key:"spacing",value:{name:"signature",type:"object",raw:`{
344
+ inputOuter: number
345
+ inputInner: number
346
+ actionGap: number
347
+ attachmentGap: number
348
+ voiceWaveformGap: number
349
+ mobileTouchInset: number
350
+ desktopToolbarGap: number
351
+ statusHintTop: number
352
+ }`,signature:{properties:[{key:"inputOuter",value:{name:"number",required:!0}},{key:"inputInner",value:{name:"number",required:!0}},{key:"actionGap",value:{name:"number",required:!0}},{key:"attachmentGap",value:{name:"number",required:!0}},{key:"voiceWaveformGap",value:{name:"number",required:!0}},{key:"mobileTouchInset",value:{name:"number",required:!0}},{key:"desktopToolbarGap",value:{name:"number",required:!0}},{key:"statusHintTop",value:{name:"number",required:!0}}]},required:!0}},{key:"radius",value:{name:"signature",type:"object",raw:`{
353
+ inputSurface: number
354
+ actionButton: number
355
+ attachmentPreview: number
356
+ waveformBar: number
357
+ mobileHoldToTalk: number
358
+ desktopInputSurface: number
359
+ }`,signature:{properties:[{key:"inputSurface",value:{name:"number",required:!0}},{key:"actionButton",value:{name:"number",required:!0}},{key:"attachmentPreview",value:{name:"number",required:!0}},{key:"waveformBar",value:{name:"number",required:!0}},{key:"mobileHoldToTalk",value:{name:"number",required:!0}},{key:"desktopInputSurface",value:{name:"number",required:!0}}]},required:!0}},{key:"motion",value:{name:"signature",type:"object",raw:`{
360
+ pressFeedback: string
361
+ waveformPulse: string
362
+ stateTransition: string
363
+ transcribingLoading: string
364
+ }`,signature:{properties:[{key:"pressFeedback",value:{name:"string",required:!0}},{key:"waveformPulse",value:{name:"string",required:!0}},{key:"stateTransition",value:{name:"string",required:!0}},{key:"transcribingLoading",value:{name:"string",required:!0}}]},required:!0}},{key:"shadow",value:{name:"signature",type:"object",raw:`{
365
+ inputElevated: string
366
+ recordingActive: string
367
+ }`,signature:{properties:[{key:"inputElevated",value:{name:"string",required:!0}},{key:"recordingActive",value:{name:"string",required:!0}}]},required:!0}},{key:"typography",value:{name:"signature",type:"object",raw:`{
368
+ familyBase: string
369
+ familyMono: string
370
+ inputText: ChatInputTypographyScale
371
+ statusHint: ChatInputTypographyScale
372
+ actionLabel: ChatInputTypographyScale
373
+ voiceHoldToTalk: ChatInputTypographyScale
374
+ }`,signature:{properties:[{key:"familyBase",value:{name:"string",required:!0}},{key:"familyMono",value:{name:"string",required:!0}},{key:"inputText",value:{name:"signature",type:"object",raw:`{
375
+ size: number
376
+ lineHeight: number
377
+ weight: number
378
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"statusHint",value:{name:"signature",type:"object",raw:`{
379
+ size: number
380
+ lineHeight: number
381
+ weight: number
382
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"actionLabel",value:{name:"signature",type:"object",raw:`{
383
+ size: number
384
+ lineHeight: number
385
+ weight: number
386
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"voiceHoldToTalk",value:{name:"signature",type:"object",raw:`{
387
+ size: number
388
+ lineHeight: number
389
+ weight: number
390
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}}]},required:!0}}]}},description:""}}};function vr(e){const r=ge(e.tokens),t=$(),n=je();f.useEffect(()=>{e.value!==void 0&&t.setText(e.value)},[e.value]);const a=async()=>{e.onSend&&(t.setStatus("sending"),await e.onSend({text:t.text,attachments:t.attachments,transcript:t.transcript||void 0}),t.setStatus("idle"))};return i.createElement(be,{tokens:r,status:t.status},i.createElement("div",{className:"grid gap-3"},i.createElement(fe,{tokens:r,value:t.text,placeholder:"Message PMate",onChange:u=>{t.setText(u.target.value),t.setStatus(u.target.value.trim()?"typing":"idle"),e.onChange?.(u.target.value)}}),i.createElement(pe,{attachments:n.attachments,tokens:r}),i.createElement("div",{className:"flex items-center justify-between"},i.createElement("div",{className:"flex items-center gap-2"},i.createElement(ve,{style:{color:"#616161"}}),i.createElement("button",{type:"button",onClick:()=>n.addAttachment("desktop-image.png"),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:32,height:32,border:0,background:"transparent",color:"#616161",cursor:"pointer"}},i.createElement(_e,{size:22})),i.createElement("button",{type:"button",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:32,height:32,border:0,background:"transparent",color:"#616161",cursor:"pointer"}},i.createElement(ye,{size:22}))),i.createElement("div",{className:"flex items-center gap-3"},i.createElement("span",{style:{color:r.color.textSecondary,fontSize:12}},"Enter send / Shift+Enter newline"),i.createElement(he,{tokens:r,disabled:e.disabled||!t.text.trim()&&t.attachments.length===0,onClick:()=>{a()}},"Send"))),i.createElement(ke,{tokens:r,text:t.error??void 0,tone:"error"})))}function qe(e){const r=JSON.stringify({initialState:e.initialState,defaultValue:e.defaultValue}),t=f.useRef(null);if(!t.current||t.current.key!==r){const n=Y();n.set(se,e.initialState?.mode??"text"),n.set(oe,e.initialState?.status??"idle"),n.set(le,e.initialState?.text??e.defaultValue??""),n.set(de,e.initialState?.transcript??""),n.set(me,e.initialState?.error??null),n.set(ce,e.initialState?.attachments??[]),t.current={key:r,store:n}}return i.createElement(Fe,{store:t.current.store},i.createElement(vr,{...e}))}qe.__docgenInfo={description:"",methods:[],displayName:"ChatInputDesktop",props:{value:{required:!1,tsType:{name:"string"},description:""},defaultValue:{required:!1,tsType:{name:"string"},description:""},onChange:{required:!1,tsType:{name:"signature",type:"function",raw:"(value: string) => void",signature:{arguments:[{type:{name:"string"},name:"value"}],return:{name:"void"}}},description:""},onSend:{required:!1,tsType:{name:"signature",type:"function",raw:`(payload: {
391
+ text: string
392
+ attachments: ChatAttachment[]
393
+ transcript?: string
394
+ audio?: Blob
395
+ mode?: "text" | "voice"
396
+ }) => Promise<void> | void`,signature:{arguments:[{type:{name:"signature",type:"object",raw:`{
397
+ text: string
398
+ attachments: ChatAttachment[]
399
+ transcript?: string
400
+ audio?: Blob
401
+ mode?: "text" | "voice"
402
+ }`,signature:{properties:[{key:"text",value:{name:"string",required:!0}},{key:"attachments",value:{name:"Array",elements:[{name:"signature",type:"object",raw:`{
403
+ id: string
404
+ name: string
405
+ kind: "image"
406
+ file?: File
407
+ previewUrl?: string
408
+ }`,signature:{properties:[{key:"id",value:{name:"string",required:!0}},{key:"name",value:{name:"string",required:!0}},{key:"kind",value:{name:"literal",value:'"image"',required:!0}},{key:"file",value:{name:"File",required:!1}},{key:"previewUrl",value:{name:"string",required:!1}}]}}],raw:"ChatAttachment[]",required:!0}},{key:"transcript",value:{name:"string",required:!1}},{key:"audio",value:{name:"Blob",required:!1}},{key:"mode",value:{name:"union",raw:'"text" | "voice"',elements:[{name:"literal",value:'"text"'},{name:"literal",value:'"voice"'}],required:!1}}]}},name:"payload"}],return:{name:"union",raw:"Promise<void> | void",elements:[{name:"Promise",elements:[{name:"void"}],raw:"Promise<void>"},{name:"void"}]}}},description:""},enableVoice:{required:!1,tsType:{name:"boolean"},description:""},enableEmoji:{required:!1,tsType:{name:"boolean"},description:""},enableImage:{required:!1,tsType:{name:"boolean"},description:""},disabled:{required:!1,tsType:{name:"boolean"},description:""},authToken:{required:!1,tsType:{name:"string"},description:""},tokens:{required:!1,tsType:{name:"signature",type:"object",raw:`{
409
+ [K in keyof T]?: T[K] extends (...args: never[]) => unknown
410
+ ? T[K]
411
+ : T[K] extends Array<infer U>
412
+ ? Array<DeepPartial<U>>
413
+ : T[K] extends object
414
+ ? DeepPartial<T[K]>
415
+ : T[K]
416
+ }`,signature:{properties:[{key:{name:"signature",type:"object",raw:`{
417
+ color: ChatInputColorTokens
418
+ spacing: ChatInputSpacingTokens
419
+ radius: ChatInputRadiusTokens
420
+ motion: ChatInputMotionTokens
421
+ shadow: ChatInputShadowTokens
422
+ typography: ChatInputTypographyTokens
423
+ }`,signature:{properties:[{key:"color",value:{name:"signature",type:"object",raw:`{
424
+ brandPrimary: string
425
+ surfaceInputDefault: string
426
+ surfaceInputFocus: string
427
+ surfaceInputRecording: string
428
+ surfaceInputError: string
429
+ textPrimary: string
430
+ textSecondary: string
431
+ iconDefault: string
432
+ iconActive: string
433
+ actionSendDefault: string
434
+ actionSendDisabled: string
435
+ actionSendTextOnPrimary: string
436
+ borderDefault: string
437
+ borderFocus: string
438
+ borderError: string
439
+ statusError: string
440
+ statusWarning: string
441
+ statusSuccess: string
442
+ voiceWaveformActive: string
443
+ voiceWaveformBackground: string
444
+ }`,signature:{properties:[{key:"brandPrimary",value:{name:"string",required:!0}},{key:"surfaceInputDefault",value:{name:"string",required:!0}},{key:"surfaceInputFocus",value:{name:"string",required:!0}},{key:"surfaceInputRecording",value:{name:"string",required:!0}},{key:"surfaceInputError",value:{name:"string",required:!0}},{key:"textPrimary",value:{name:"string",required:!0}},{key:"textSecondary",value:{name:"string",required:!0}},{key:"iconDefault",value:{name:"string",required:!0}},{key:"iconActive",value:{name:"string",required:!0}},{key:"actionSendDefault",value:{name:"string",required:!0}},{key:"actionSendDisabled",value:{name:"string",required:!0}},{key:"actionSendTextOnPrimary",value:{name:"string",required:!0}},{key:"borderDefault",value:{name:"string",required:!0}},{key:"borderFocus",value:{name:"string",required:!0}},{key:"borderError",value:{name:"string",required:!0}},{key:"statusError",value:{name:"string",required:!0}},{key:"statusWarning",value:{name:"string",required:!0}},{key:"statusSuccess",value:{name:"string",required:!0}},{key:"voiceWaveformActive",value:{name:"string",required:!0}},{key:"voiceWaveformBackground",value:{name:"string",required:!0}}]},required:!0}},{key:"spacing",value:{name:"signature",type:"object",raw:`{
445
+ inputOuter: number
446
+ inputInner: number
447
+ actionGap: number
448
+ attachmentGap: number
449
+ voiceWaveformGap: number
450
+ mobileTouchInset: number
451
+ desktopToolbarGap: number
452
+ statusHintTop: number
453
+ }`,signature:{properties:[{key:"inputOuter",value:{name:"number",required:!0}},{key:"inputInner",value:{name:"number",required:!0}},{key:"actionGap",value:{name:"number",required:!0}},{key:"attachmentGap",value:{name:"number",required:!0}},{key:"voiceWaveformGap",value:{name:"number",required:!0}},{key:"mobileTouchInset",value:{name:"number",required:!0}},{key:"desktopToolbarGap",value:{name:"number",required:!0}},{key:"statusHintTop",value:{name:"number",required:!0}}]},required:!0}},{key:"radius",value:{name:"signature",type:"object",raw:`{
454
+ inputSurface: number
455
+ actionButton: number
456
+ attachmentPreview: number
457
+ waveformBar: number
458
+ mobileHoldToTalk: number
459
+ desktopInputSurface: number
460
+ }`,signature:{properties:[{key:"inputSurface",value:{name:"number",required:!0}},{key:"actionButton",value:{name:"number",required:!0}},{key:"attachmentPreview",value:{name:"number",required:!0}},{key:"waveformBar",value:{name:"number",required:!0}},{key:"mobileHoldToTalk",value:{name:"number",required:!0}},{key:"desktopInputSurface",value:{name:"number",required:!0}}]},required:!0}},{key:"motion",value:{name:"signature",type:"object",raw:`{
461
+ pressFeedback: string
462
+ waveformPulse: string
463
+ stateTransition: string
464
+ transcribingLoading: string
465
+ }`,signature:{properties:[{key:"pressFeedback",value:{name:"string",required:!0}},{key:"waveformPulse",value:{name:"string",required:!0}},{key:"stateTransition",value:{name:"string",required:!0}},{key:"transcribingLoading",value:{name:"string",required:!0}}]},required:!0}},{key:"shadow",value:{name:"signature",type:"object",raw:`{
466
+ inputElevated: string
467
+ recordingActive: string
468
+ }`,signature:{properties:[{key:"inputElevated",value:{name:"string",required:!0}},{key:"recordingActive",value:{name:"string",required:!0}}]},required:!0}},{key:"typography",value:{name:"signature",type:"object",raw:`{
469
+ familyBase: string
470
+ familyMono: string
471
+ inputText: ChatInputTypographyScale
472
+ statusHint: ChatInputTypographyScale
473
+ actionLabel: ChatInputTypographyScale
474
+ voiceHoldToTalk: ChatInputTypographyScale
475
+ }`,signature:{properties:[{key:"familyBase",value:{name:"string",required:!0}},{key:"familyMono",value:{name:"string",required:!0}},{key:"inputText",value:{name:"signature",type:"object",raw:`{
476
+ size: number
477
+ lineHeight: number
478
+ weight: number
479
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"statusHint",value:{name:"signature",type:"object",raw:`{
480
+ size: number
481
+ lineHeight: number
482
+ weight: number
483
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"actionLabel",value:{name:"signature",type:"object",raw:`{
484
+ size: number
485
+ lineHeight: number
486
+ weight: number
487
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"voiceHoldToTalk",value:{name:"signature",type:"object",raw:`{
488
+ size: number
489
+ lineHeight: number
490
+ weight: number
491
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}}]},required:!0}}]},required:!1},value:{name:"unknown"}}]}},description:""},slots:{required:!1,tsType:{name:"Partial",elements:[{name:"signature",type:"object",raw:`{
492
+ sendAction: ComponentType<ChatInputSlotProps>
493
+ statusHint: ComponentType<ChatInputSlotProps & { text?: string }>
494
+ recordingFeedback: ComponentType<ChatInputSlotProps & { children?: ReactNode }>
495
+ }`,signature:{properties:[{key:"sendAction",value:{name:"ComponentType",elements:[{name:"signature",type:"object",raw:`{
496
+ status: ChatInputStatus
497
+ mode: ChatInputMode
498
+ disabled?: boolean
499
+ }`,signature:{properties:[{key:"status",value:{name:"union",raw:`| "idle"
500
+ | "typing"
501
+ | "voice-mode-ready"
502
+ | "recording"
503
+ | "transcribing"
504
+ | "transcript-ready"
505
+ | "attachment-selected"
506
+ | "sending"
507
+ | "error"`,elements:[{name:"literal",value:'"idle"'},{name:"literal",value:'"typing"'},{name:"literal",value:'"voice-mode-ready"'},{name:"literal",value:'"recording"'},{name:"literal",value:'"transcribing"'},{name:"literal",value:'"transcript-ready"'},{name:"literal",value:'"attachment-selected"'},{name:"literal",value:'"sending"'},{name:"literal",value:'"error"'}],required:!0}},{key:"mode",value:{name:"union",raw:'"text" | "voice"',elements:[{name:"literal",value:'"text"'},{name:"literal",value:'"voice"'}],required:!0}},{key:"disabled",value:{name:"boolean",required:!1}}]}}],raw:"ComponentType<ChatInputSlotProps>",required:!0}},{key:"statusHint",value:{name:"ComponentType",elements:[{name:"intersection",raw:"ChatInputSlotProps & { text?: string }",elements:[{name:"signature",type:"object",raw:`{
508
+ status: ChatInputStatus
509
+ mode: ChatInputMode
510
+ disabled?: boolean
511
+ }`,signature:{properties:[{key:"status",value:{name:"union",raw:`| "idle"
512
+ | "typing"
513
+ | "voice-mode-ready"
514
+ | "recording"
515
+ | "transcribing"
516
+ | "transcript-ready"
517
+ | "attachment-selected"
518
+ | "sending"
519
+ | "error"`,elements:[{name:"literal",value:'"idle"'},{name:"literal",value:'"typing"'},{name:"literal",value:'"voice-mode-ready"'},{name:"literal",value:'"recording"'},{name:"literal",value:'"transcribing"'},{name:"literal",value:'"transcript-ready"'},{name:"literal",value:'"attachment-selected"'},{name:"literal",value:'"sending"'},{name:"literal",value:'"error"'}],required:!0}},{key:"mode",value:{name:"union",raw:'"text" | "voice"',elements:[{name:"literal",value:'"text"'},{name:"literal",value:'"voice"'}],required:!0}},{key:"disabled",value:{name:"boolean",required:!1}}]}},{name:"signature",type:"object",raw:"{ text?: string }",signature:{properties:[{key:"text",value:{name:"string",required:!1}}]}}]}],raw:"ComponentType<ChatInputSlotProps & { text?: string }>",required:!0}},{key:"recordingFeedback",value:{name:"ComponentType",elements:[{name:"intersection",raw:"ChatInputSlotProps & { children?: ReactNode }",elements:[{name:"signature",type:"object",raw:`{
520
+ status: ChatInputStatus
521
+ mode: ChatInputMode
522
+ disabled?: boolean
523
+ }`,signature:{properties:[{key:"status",value:{name:"union",raw:`| "idle"
524
+ | "typing"
525
+ | "voice-mode-ready"
526
+ | "recording"
527
+ | "transcribing"
528
+ | "transcript-ready"
529
+ | "attachment-selected"
530
+ | "sending"
531
+ | "error"`,elements:[{name:"literal",value:'"idle"'},{name:"literal",value:'"typing"'},{name:"literal",value:'"voice-mode-ready"'},{name:"literal",value:'"recording"'},{name:"literal",value:'"transcribing"'},{name:"literal",value:'"transcript-ready"'},{name:"literal",value:'"attachment-selected"'},{name:"literal",value:'"sending"'},{name:"literal",value:'"error"'}],required:!0}},{key:"mode",value:{name:"union",raw:'"text" | "voice"',elements:[{name:"literal",value:'"text"'},{name:"literal",value:'"voice"'}],required:!0}},{key:"disabled",value:{name:"boolean",required:!1}}]}},{name:"signature",type:"object",raw:"{ children?: ReactNode }",signature:{properties:[{key:"children",value:{name:"ReactNode",required:!1}}]}}]}],raw:"ComponentType<ChatInputSlotProps & { children?: ReactNode }>",required:!0}}]}}],raw:"Partial<ChatInputSlots>"},description:""},initialState:{required:!1,tsType:{name:"signature",type:"object",raw:`{
532
+ mode?: ChatInputMode
533
+ status?: ChatInputStatus
534
+ text?: string
535
+ transcript?: string
536
+ error?: string
537
+ attachments?: ChatAttachment[]
538
+ waveformLevels?: number[]
539
+ }`,signature:{properties:[{key:"mode",value:{name:"union",raw:'"text" | "voice"',elements:[{name:"literal",value:'"text"'},{name:"literal",value:'"voice"'}],required:!1}},{key:"status",value:{name:"union",raw:`| "idle"
540
+ | "typing"
541
+ | "voice-mode-ready"
542
+ | "recording"
543
+ | "transcribing"
544
+ | "transcript-ready"
545
+ | "attachment-selected"
546
+ | "sending"
547
+ | "error"`,elements:[{name:"literal",value:'"idle"'},{name:"literal",value:'"typing"'},{name:"literal",value:'"voice-mode-ready"'},{name:"literal",value:'"recording"'},{name:"literal",value:'"transcribing"'},{name:"literal",value:'"transcript-ready"'},{name:"literal",value:'"attachment-selected"'},{name:"literal",value:'"sending"'},{name:"literal",value:'"error"'}],required:!1}},{key:"text",value:{name:"string",required:!1}},{key:"transcript",value:{name:"string",required:!1}},{key:"error",value:{name:"string",required:!1}},{key:"attachments",value:{name:"Array",elements:[{name:"signature",type:"object",raw:`{
548
+ id: string
549
+ name: string
550
+ kind: "image"
551
+ file?: File
552
+ previewUrl?: string
553
+ }`,signature:{properties:[{key:"id",value:{name:"string",required:!0}},{key:"name",value:{name:"string",required:!0}},{key:"kind",value:{name:"literal",value:'"image"',required:!0}},{key:"file",value:{name:"File",required:!1}},{key:"previewUrl",value:{name:"string",required:!1}}]}}],raw:"ChatAttachment[]",required:!1}},{key:"waveformLevels",value:{name:"Array",elements:[{name:"number"}],raw:"number[]",required:!1}}]}},description:""},voice:{required:!1,tsType:{name:"signature",type:"object",raw:`{
554
+ asrClient?: ChatASRClient
555
+ lang?: string
556
+ minDurationMs?: number
557
+ simulatedTranscript?: string
558
+ shortRecordingMessage?: string
559
+ onVoiceSend?: (blob: Blob) => Promise<void> | void
560
+ }`,signature:{properties:[{key:"asrClient",value:{name:"signature",type:"object",raw:`{
561
+ transcribe(blob: Blob, input?: { lang?: string }): Promise<{ text: string }>
562
+ }`,signature:{properties:[{key:"transcribe",value:{name:"Promise",elements:[{name:"signature",type:"object",raw:"{ text: string }",signature:{properties:[{key:"text",value:{name:"string",required:!0}}]}}],raw:"Promise<{ text: string }>",required:!0}}]},required:!1}},{key:"lang",value:{name:"string",required:!1}},{key:"minDurationMs",value:{name:"number",required:!1}},{key:"simulatedTranscript",value:{name:"string",required:!1}},{key:"shortRecordingMessage",value:{name:"string",required:!1}},{key:"onVoiceSend",value:{name:"signature",type:"function",raw:"(blob: Blob) => Promise<void> | void",signature:{arguments:[{type:{name:"Blob"},name:"blob"}],return:{name:"union",raw:"Promise<void> | void",elements:[{name:"Promise",elements:[{name:"void"}],raw:"Promise<void>"},{name:"void"}]}},required:!1}}]}},description:""},submitShortcut:{required:!1,tsType:{name:"union",raw:'"enter" | "meta-enter"',elements:[{name:"literal",value:'"enter"'},{name:"literal",value:'"meta-enter"'}]},description:""}}};const Le=P([.35,.55,.8,.5,.3]),br=P(0);function hr(e,r){const t=e.trim(),n=r.trim();return t?n?`${t} ${n}`:t:n}var R=(e=>(e.Start="start",e.Stop="stop",e.Data="data",e.Level="level",e.Error="error",e))(R||{});class kr{constructor(){this.isRecording=!1,this.setupPromise=null,this.listeners={start:new Set,stop:new Set,data:new Set,level:new Set,error:new Set},this.initialized=!1}on(r,t){return this.listeners[r].add(t),()=>{this.listeners[r].delete(t)}}emit(r,...t){for(const n of this.listeners[r])n(...t)}clearListeners(){for(const r of Object.values(R))this.listeners[r].clear()}async init(r){await this.ensureAudioGraph(),this.attachStream(r),this.initialized=!0}async ensureAudioGraph(){this.setupPromise||(this.setupPromise=this.setupAudioGraph()),await this.setupPromise}async setupAudioGraph(){try{const r=new URL("data:text/javascript;base64,Y2xhc3MgUmVjb3JkZXJQcm9jZXNzb3IgZXh0ZW5kcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgewogIHByb2Nlc3MoaW5wdXRzKSB7CiAgICBjb25zdCBpbnB1dCA9IGlucHV0c1swXQogICAgaWYgKCFpbnB1dCB8fCAhaW5wdXRbMF0pIHsKICAgICAgcmV0dXJuIHRydWUKICAgIH0KCiAgICBjb25zdCBzYW1wbGVzID0gaW5wdXRbMF0KICAgIGNvbnN0IHBjbSA9IG5ldyBJbnQxNkFycmF5KHNhbXBsZXMubGVuZ3RoKQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzYW1wbGVzLmxlbmd0aDsgaSArPSAxKSB7CiAgICAgIGNvbnN0IHNhbXBsZSA9IE1hdGgubWF4KC0xLCBNYXRoLm1pbigxLCBzYW1wbGVzW2ldKSkKICAgICAgcGNtW2ldID0gc2FtcGxlIDwgMCA/IHNhbXBsZSAqIDB4ODAwMCA6IHNhbXBsZSAqIDB4N2ZmZgogICAgfQoKICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6ICJwY20iLCBkYXRhOiBwY20uYnVmZmVyIH0sIFtwY20uYnVmZmVyXSkKICAgIHJldHVybiB0cnVlCiAgfQp9CgpyZWdpc3RlclByb2Nlc3NvcigicG1hdGUtbWljLXJlY29yZGVyLXByb2Nlc3NvciIsIFJlY29yZGVyUHJvY2Vzc29yKQo=",import.meta.url);this.audioContext=new AudioContext({sampleRate:16e3}),await this.audioContext.audioWorklet.addModule(r.href),this.recorderProcessorNode=new AudioWorkletNode(this.audioContext,"pmate-mic-recorder-processor"),this.analyserNode=this.audioContext.createAnalyser(),this.analyserNode.fftSize=2048,this.analyserNode.smoothingTimeConstant=.82,this.silentGainNode=this.audioContext.createGain(),this.silentGainNode.gain.value=0,this.recorderProcessorNode.connect(this.silentGainNode),this.silentGainNode.connect(this.audioContext.destination),this.recorderProcessorNode.port.onmessage=t=>{if(!this.isRecording)return;const{type:n,data:a}=t.data;n==="pcm"&&a&&this.emit("data",new Blob([a]))}}catch(r){const t=Ce(r);throw this.emit("error",t),this.dispose(),t}}attachStream(r){if(this.detachStream(),this.mediaStream=r,this.mediaStream.getAudioTracks().forEach(t=>{t.enabled=!1}),!this.audioContext||!this.recorderProcessorNode)throw new Error("Recorder audio graph is not ready");this.mediaStreamSource=this.audioContext.createMediaStreamSource(this.mediaStream),this.mediaStreamSource.connect(this.analyserNode),this.mediaStreamSource.connect(this.recorderProcessorNode)}detachStream(r){if(this.mediaStreamSource){try{this.mediaStreamSource.disconnect()}catch{}this.mediaStreamSource=void 0}this.mediaStream&&(r?.stopTracks?this.mediaStream.getTracks().forEach(t=>t.stop()):this.mediaStream.getAudioTracks().forEach(t=>{t.enabled=!1})),this.mediaStream=void 0}async startRecording(){if(!this.isRecording){if(!this.audioContext||!this.mediaStream||!this.recorderProcessorNode){const r=new Error("Recorder not initialized");throw this.emit("error",r),r}this.isRecording=!0;try{this.mediaStream.getAudioTracks().forEach(r=>{r.enabled=!0}),await this.audioContext.resume(),this.startMetering(),this.emit("start")}catch(r){const t=Ce(r);throw this.emit("error",t),this.isRecording=!1,t}}}stopRecording(){this.isRecording&&(this.isRecording=!1,this.stopMetering(),this.emit("stop"))}dispose(){this.isRecording=!1,this.stopMetering(),this.detachStream({stopTracks:!0}),this.analyserNode?.disconnect(),this.recorderProcessorNode?.disconnect(),this.silentGainNode?.disconnect(),this.audioContext?.close(),this.mediaStream=void 0,this.recorderProcessorNode=void 0,this.audioContext=void 0,this.mediaStreamSource=void 0,this.analyserNode=void 0,this.silentGainNode=void 0,this.setupPromise=null,this.initialized=!1}get isRecordingStatus(){return this.isRecording}startMetering(){this.stopMetering();const r=this.analyserNode;if(!r)return;const t=new Uint8Array(r.fftSize),n=()=>{if(!this.isRecording||!this.analyserNode){this.stopMetering();return}this.analyserNode.getByteTimeDomainData(t),this.emit("level",fr(t,18)),this.meterFrameId=requestAnimationFrame(n)};this.meterFrameId=requestAnimationFrame(n)}stopMetering(){this.meterFrameId&&(cancelAnimationFrame(this.meterFrameId),this.meterFrameId=void 0)}}function Ce(e){return e instanceof Error?e:new Error(String(e))}function fr(e,r){const t=Math.max(1,Math.floor(e.length/r)),n=[];for(let a=0;a<r;a+=1){let u=0,s=0,g=0;for(let d=0;d<t;d+=1){const m=a*t+d;if(m>=e.length)break;const y=(e[m]-128)/128,o=Math.abs(y);u+=y*y,s=Math.max(s,o),g+=1}const c=g>0?Math.sqrt(u/g):0,l=Math.min(1,Math.max(c,s)*6);n.push(.08+l*.92)}return n}var M=(e=>(e.StateChanged="stateChanged",e.Data="data",e.Level="level",e.Finished="finished",e.Abort="abort",e.Error="error",e))(M||{});class qr{constructor(){this.recorder=new kr,this.state=0,this.chunks=[],this.listeners={stateChanged:new Set,data:new Set,level:new Set,finished:new Set,abort:new Set,error:new Set},this.initialized=!1}on(r,t){return this.listeners[r].add(t),()=>{this.listeners[r].delete(t)}}emit(r,...t){for(const n of this.listeners[r])n(...t)}init(){this.initialized||(this.initialized=!0,this.recorder.on(R.Data,r=>{this.chunks.push(r),this.emit("data",r)}),this.recorder.on(R.Level,r=>{this.emit("level",r)}),this.recorder.on(R.Stop,()=>{const r=new Blob(this.chunks,{type:"audio/pcm;rate=16000"});if(r.size<1024*8){this.abort();return}this.emit("finished",r),this.reset()}),this.recorder.on(R.Error,r=>{this.abort(),this.emit("error",r)}))}async start(){if(!(this.state===1||this.state===2)){this.setState(1);try{if(!navigator.mediaDevices?.getUserMedia)throw new Error("Microphone access is not available in this browser.");this.releaseStream(),this.stream=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0}}),await this.recorder.init(this.stream),this.stream.getTracks().forEach(r=>{r.enabled=!0}),await this.recorder.startRecording(),this.setState(2)}catch(r){this.reset(),this.emit("error",wr(r))}}}stop(){if(!(this.state!==1&&this.state!==2)){if(this.state===1){this.abort();return}this.recorder.stopRecording(),this.recorder.detachStream(),this.pauseStream(),this.setState(0)}}abort(){this.state!==0&&(this.recorder.stopRecording(),this.recorder.detachStream(),this.pauseStream(),this.emit("abort"),this.reset())}dispose(){this.recorder.stopRecording(),this.releaseStream(),this.recorder.dispose(),this.reset()}reset(){this.chunks=[],this.setState(0)}pauseStream(){this.stream?.getTracks().forEach(r=>{r.enabled=!1})}releaseStream(){this.recorder.detachStream(),this.stream?.getTracks().forEach(r=>{try{r.stop()}catch{}}),this.stream=void 0}setState(r){this.state=r,this.emit("stateChanged",{state:r})}}function wr(e){return e instanceof Error?e:new Error(String(e))}const G=[.18,.28,.42,.58,.74,.9,.74,.58,.42,.28,.18];function Sr(e){const r=f.useRef(null),t=f.useRef("send"),[n,a]=H(Le),[u,s]=H(br),{mode:g,setMode:c,status:l,setStatus:d,text:m,setText:y,setTranscript:o,setError:v}=$(),h=f.useRef(g),q=f.useRef(m),p=f.useRef(e);h.current=g,q.current=m,p.current=e,f.useEffect(()=>{const w=new qr;w.init(),r.current=w;const I=w.on(M.Data,()=>{s(A=>A+120)}),k=w.on(M.Level,A=>{a(A)}),j=w.on(M.Finished,A=>{if(a(G),s(0),t.current==="transcribe"){d("transcribing"),b(A);return}o(""),d(h.current==="voice"?"voice-mode-ready":"idle"),v(null),p.current?.onVoiceSend?.(A)}),D=w.on(M.Abort,()=>{a(G),s(0),d(h.current==="voice"?"voice-mode-ready":"idle"),v(p.current?.shortRecordingMessage??"Hold a little longer to record.")}),L=w.on(M.Error,A=>{a(G),s(0),d("error"),v(A.message)});return()=>{I(),k(),j(),D(),L(),w.dispose(),r.current=null}},[]);async function b(w){try{const I=p.current?.asrClient?(await p.current.asrClient.transcribe(w,{lang:p.current.lang})).text.trim():(p.current?.simulatedTranscript??"hello from transcript").trim();if(!I){d("error"),v("No speech was recognized.");return}o(I),y(hr(q.current,I)),s(0),d("transcript-ready"),v(null)}catch(I){d("error"),v(I instanceof Error?I.message:String(I))}}function T(){c("voice"),d("voice-mode-ready"),v(null)}function F(){l!=="recording"&&(d("recording"),v(null),o(""),s(0),a(G),t.current="send",r.current?.start())}function C(w="Recording canceled."){r.current?.abort(),v(w)}function B(w="send"){if(u<(p.current?.minDurationMs??450)){C(p.current?.shortRecordingMessage??"Hold a little longer to record.");return}t.current=w,r.current?.stop()}return{mode:g,status:l,waveformLevels:n,durationMs:u,beginVoiceMode:T,setMode:c,startRecording:F,cancelRecording:C,stopRecording:B}}function Ge({tokens:e,active:r,disabled:t,text:n="按住 说话",activeText:a="松开 结束",onPressStart:u,onPressMove:s,onPressEnd:g,onPressCancel:c}){return i.createElement("button",{type:"button",disabled:t,onPointerDown:l=>{try{l.currentTarget.setPointerCapture(l.pointerId)}catch{}u?.(l)},onPointerMove:s,onPointerUp:g,onPointerCancel:c,style:{width:"100%",borderRadius:e.radius.mobileHoldToTalk,background:r?"#ECE2FF":"#FFFFFF",color:r?"#4E2DBF":"#171717",border:`1px solid ${r?"#BFA9FF":"#E5E7EB"}`,boxShadow:r?"0 14px 28px rgba(109, 74, 255, 0.22)":"none",padding:"15px 18px",minHeight:60,fontSize:16,lineHeight:"22px",fontWeight:600,opacity:t?.55:1,transition:`all ${e.motion.stateTransition}`}},r?a:n)}Ge.__docgenInfo={description:"",methods:[],displayName:"HoldToTalkButton",props:{tokens:{required:!0,tsType:{name:"signature",type:"object",raw:`{
563
+ color: ChatInputColorTokens
564
+ spacing: ChatInputSpacingTokens
565
+ radius: ChatInputRadiusTokens
566
+ motion: ChatInputMotionTokens
567
+ shadow: ChatInputShadowTokens
568
+ typography: ChatInputTypographyTokens
569
+ }`,signature:{properties:[{key:"color",value:{name:"signature",type:"object",raw:`{
570
+ brandPrimary: string
571
+ surfaceInputDefault: string
572
+ surfaceInputFocus: string
573
+ surfaceInputRecording: string
574
+ surfaceInputError: string
575
+ textPrimary: string
576
+ textSecondary: string
577
+ iconDefault: string
578
+ iconActive: string
579
+ actionSendDefault: string
580
+ actionSendDisabled: string
581
+ actionSendTextOnPrimary: string
582
+ borderDefault: string
583
+ borderFocus: string
584
+ borderError: string
585
+ statusError: string
586
+ statusWarning: string
587
+ statusSuccess: string
588
+ voiceWaveformActive: string
589
+ voiceWaveformBackground: string
590
+ }`,signature:{properties:[{key:"brandPrimary",value:{name:"string",required:!0}},{key:"surfaceInputDefault",value:{name:"string",required:!0}},{key:"surfaceInputFocus",value:{name:"string",required:!0}},{key:"surfaceInputRecording",value:{name:"string",required:!0}},{key:"surfaceInputError",value:{name:"string",required:!0}},{key:"textPrimary",value:{name:"string",required:!0}},{key:"textSecondary",value:{name:"string",required:!0}},{key:"iconDefault",value:{name:"string",required:!0}},{key:"iconActive",value:{name:"string",required:!0}},{key:"actionSendDefault",value:{name:"string",required:!0}},{key:"actionSendDisabled",value:{name:"string",required:!0}},{key:"actionSendTextOnPrimary",value:{name:"string",required:!0}},{key:"borderDefault",value:{name:"string",required:!0}},{key:"borderFocus",value:{name:"string",required:!0}},{key:"borderError",value:{name:"string",required:!0}},{key:"statusError",value:{name:"string",required:!0}},{key:"statusWarning",value:{name:"string",required:!0}},{key:"statusSuccess",value:{name:"string",required:!0}},{key:"voiceWaveformActive",value:{name:"string",required:!0}},{key:"voiceWaveformBackground",value:{name:"string",required:!0}}]},required:!0}},{key:"spacing",value:{name:"signature",type:"object",raw:`{
591
+ inputOuter: number
592
+ inputInner: number
593
+ actionGap: number
594
+ attachmentGap: number
595
+ voiceWaveformGap: number
596
+ mobileTouchInset: number
597
+ desktopToolbarGap: number
598
+ statusHintTop: number
599
+ }`,signature:{properties:[{key:"inputOuter",value:{name:"number",required:!0}},{key:"inputInner",value:{name:"number",required:!0}},{key:"actionGap",value:{name:"number",required:!0}},{key:"attachmentGap",value:{name:"number",required:!0}},{key:"voiceWaveformGap",value:{name:"number",required:!0}},{key:"mobileTouchInset",value:{name:"number",required:!0}},{key:"desktopToolbarGap",value:{name:"number",required:!0}},{key:"statusHintTop",value:{name:"number",required:!0}}]},required:!0}},{key:"radius",value:{name:"signature",type:"object",raw:`{
600
+ inputSurface: number
601
+ actionButton: number
602
+ attachmentPreview: number
603
+ waveformBar: number
604
+ mobileHoldToTalk: number
605
+ desktopInputSurface: number
606
+ }`,signature:{properties:[{key:"inputSurface",value:{name:"number",required:!0}},{key:"actionButton",value:{name:"number",required:!0}},{key:"attachmentPreview",value:{name:"number",required:!0}},{key:"waveformBar",value:{name:"number",required:!0}},{key:"mobileHoldToTalk",value:{name:"number",required:!0}},{key:"desktopInputSurface",value:{name:"number",required:!0}}]},required:!0}},{key:"motion",value:{name:"signature",type:"object",raw:`{
607
+ pressFeedback: string
608
+ waveformPulse: string
609
+ stateTransition: string
610
+ transcribingLoading: string
611
+ }`,signature:{properties:[{key:"pressFeedback",value:{name:"string",required:!0}},{key:"waveformPulse",value:{name:"string",required:!0}},{key:"stateTransition",value:{name:"string",required:!0}},{key:"transcribingLoading",value:{name:"string",required:!0}}]},required:!0}},{key:"shadow",value:{name:"signature",type:"object",raw:`{
612
+ inputElevated: string
613
+ recordingActive: string
614
+ }`,signature:{properties:[{key:"inputElevated",value:{name:"string",required:!0}},{key:"recordingActive",value:{name:"string",required:!0}}]},required:!0}},{key:"typography",value:{name:"signature",type:"object",raw:`{
615
+ familyBase: string
616
+ familyMono: string
617
+ inputText: ChatInputTypographyScale
618
+ statusHint: ChatInputTypographyScale
619
+ actionLabel: ChatInputTypographyScale
620
+ voiceHoldToTalk: ChatInputTypographyScale
621
+ }`,signature:{properties:[{key:"familyBase",value:{name:"string",required:!0}},{key:"familyMono",value:{name:"string",required:!0}},{key:"inputText",value:{name:"signature",type:"object",raw:`{
622
+ size: number
623
+ lineHeight: number
624
+ weight: number
625
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"statusHint",value:{name:"signature",type:"object",raw:`{
626
+ size: number
627
+ lineHeight: number
628
+ weight: number
629
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"actionLabel",value:{name:"signature",type:"object",raw:`{
630
+ size: number
631
+ lineHeight: number
632
+ weight: number
633
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"voiceHoldToTalk",value:{name:"signature",type:"object",raw:`{
634
+ size: number
635
+ lineHeight: number
636
+ weight: number
637
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}}]},required:!0}}]}},description:""},active:{required:!1,tsType:{name:"boolean"},description:""},disabled:{required:!1,tsType:{name:"boolean"},description:""},text:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:'"按住 说话"',computed:!1}},activeText:{required:!1,tsType:{name:"string"},description:"",defaultValue:{value:'"松开 结束"',computed:!1}},onPressStart:{required:!1,tsType:{name:"PointerEventHandler",elements:[{name:"HTMLButtonElement"}],raw:"PointerEventHandler<HTMLButtonElement>"},description:""},onPressMove:{required:!1,tsType:{name:"PointerEventHandler",elements:[{name:"HTMLButtonElement"}],raw:"PointerEventHandler<HTMLButtonElement>"},description:""},onPressEnd:{required:!1,tsType:{name:"PointerEventHandler",elements:[{name:"HTMLButtonElement"}],raw:"PointerEventHandler<HTMLButtonElement>"},description:""},onPressCancel:{required:!1,tsType:{name:"PointerEventHandler",elements:[{name:"HTMLButtonElement"}],raw:"PointerEventHandler<HTMLButtonElement>"},description:""}}};function We(e){const r=Number(e["data-icon-size"]??26);return i.createElement("button",{type:"button","aria-label":"More",...e,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:32,height:32,border:0,background:"transparent",color:"inherit",cursor:"pointer",...e.style??{}}},i.createElement(ze,{size:r}))}We.__docgenInfo={description:"",methods:[],displayName:"ImageTrigger"};function we({levels:e,tokens:r,compact:t=!1}){return i.createElement("div",{className:"flex items-end justify-center",style:{gap:t?4:r.spacing.voiceWaveformGap,minHeight:t?28:36}},e.map((n,a)=>i.createElement("span",{key:a,style:{width:t?5:6,height:`${(t?10:14)+Math.round(n*(t?16:22))}px`,borderRadius:r.radius.waveformBar,background:a%2===0?r.color.voiceWaveformActive:r.color.voiceWaveformBackground,transition:`height ${r.motion.waveformPulse}`}})))}we.__docgenInfo={description:"",methods:[],displayName:"WaveformFeedback",props:{levels:{required:!0,tsType:{name:"Array",elements:[{name:"number"}],raw:"number[]"},description:""},tokens:{required:!0,tsType:{name:"signature",type:"object",raw:`{
638
+ color: ChatInputColorTokens
639
+ spacing: ChatInputSpacingTokens
640
+ radius: ChatInputRadiusTokens
641
+ motion: ChatInputMotionTokens
642
+ shadow: ChatInputShadowTokens
643
+ typography: ChatInputTypographyTokens
644
+ }`,signature:{properties:[{key:"color",value:{name:"signature",type:"object",raw:`{
645
+ brandPrimary: string
646
+ surfaceInputDefault: string
647
+ surfaceInputFocus: string
648
+ surfaceInputRecording: string
649
+ surfaceInputError: string
650
+ textPrimary: string
651
+ textSecondary: string
652
+ iconDefault: string
653
+ iconActive: string
654
+ actionSendDefault: string
655
+ actionSendDisabled: string
656
+ actionSendTextOnPrimary: string
657
+ borderDefault: string
658
+ borderFocus: string
659
+ borderError: string
660
+ statusError: string
661
+ statusWarning: string
662
+ statusSuccess: string
663
+ voiceWaveformActive: string
664
+ voiceWaveformBackground: string
665
+ }`,signature:{properties:[{key:"brandPrimary",value:{name:"string",required:!0}},{key:"surfaceInputDefault",value:{name:"string",required:!0}},{key:"surfaceInputFocus",value:{name:"string",required:!0}},{key:"surfaceInputRecording",value:{name:"string",required:!0}},{key:"surfaceInputError",value:{name:"string",required:!0}},{key:"textPrimary",value:{name:"string",required:!0}},{key:"textSecondary",value:{name:"string",required:!0}},{key:"iconDefault",value:{name:"string",required:!0}},{key:"iconActive",value:{name:"string",required:!0}},{key:"actionSendDefault",value:{name:"string",required:!0}},{key:"actionSendDisabled",value:{name:"string",required:!0}},{key:"actionSendTextOnPrimary",value:{name:"string",required:!0}},{key:"borderDefault",value:{name:"string",required:!0}},{key:"borderFocus",value:{name:"string",required:!0}},{key:"borderError",value:{name:"string",required:!0}},{key:"statusError",value:{name:"string",required:!0}},{key:"statusWarning",value:{name:"string",required:!0}},{key:"statusSuccess",value:{name:"string",required:!0}},{key:"voiceWaveformActive",value:{name:"string",required:!0}},{key:"voiceWaveformBackground",value:{name:"string",required:!0}}]},required:!0}},{key:"spacing",value:{name:"signature",type:"object",raw:`{
666
+ inputOuter: number
667
+ inputInner: number
668
+ actionGap: number
669
+ attachmentGap: number
670
+ voiceWaveformGap: number
671
+ mobileTouchInset: number
672
+ desktopToolbarGap: number
673
+ statusHintTop: number
674
+ }`,signature:{properties:[{key:"inputOuter",value:{name:"number",required:!0}},{key:"inputInner",value:{name:"number",required:!0}},{key:"actionGap",value:{name:"number",required:!0}},{key:"attachmentGap",value:{name:"number",required:!0}},{key:"voiceWaveformGap",value:{name:"number",required:!0}},{key:"mobileTouchInset",value:{name:"number",required:!0}},{key:"desktopToolbarGap",value:{name:"number",required:!0}},{key:"statusHintTop",value:{name:"number",required:!0}}]},required:!0}},{key:"radius",value:{name:"signature",type:"object",raw:`{
675
+ inputSurface: number
676
+ actionButton: number
677
+ attachmentPreview: number
678
+ waveformBar: number
679
+ mobileHoldToTalk: number
680
+ desktopInputSurface: number
681
+ }`,signature:{properties:[{key:"inputSurface",value:{name:"number",required:!0}},{key:"actionButton",value:{name:"number",required:!0}},{key:"attachmentPreview",value:{name:"number",required:!0}},{key:"waveformBar",value:{name:"number",required:!0}},{key:"mobileHoldToTalk",value:{name:"number",required:!0}},{key:"desktopInputSurface",value:{name:"number",required:!0}}]},required:!0}},{key:"motion",value:{name:"signature",type:"object",raw:`{
682
+ pressFeedback: string
683
+ waveformPulse: string
684
+ stateTransition: string
685
+ transcribingLoading: string
686
+ }`,signature:{properties:[{key:"pressFeedback",value:{name:"string",required:!0}},{key:"waveformPulse",value:{name:"string",required:!0}},{key:"stateTransition",value:{name:"string",required:!0}},{key:"transcribingLoading",value:{name:"string",required:!0}}]},required:!0}},{key:"shadow",value:{name:"signature",type:"object",raw:`{
687
+ inputElevated: string
688
+ recordingActive: string
689
+ }`,signature:{properties:[{key:"inputElevated",value:{name:"string",required:!0}},{key:"recordingActive",value:{name:"string",required:!0}}]},required:!0}},{key:"typography",value:{name:"signature",type:"object",raw:`{
690
+ familyBase: string
691
+ familyMono: string
692
+ inputText: ChatInputTypographyScale
693
+ statusHint: ChatInputTypographyScale
694
+ actionLabel: ChatInputTypographyScale
695
+ voiceHoldToTalk: ChatInputTypographyScale
696
+ }`,signature:{properties:[{key:"familyBase",value:{name:"string",required:!0}},{key:"familyMono",value:{name:"string",required:!0}},{key:"inputText",value:{name:"signature",type:"object",raw:`{
697
+ size: number
698
+ lineHeight: number
699
+ weight: number
700
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"statusHint",value:{name:"signature",type:"object",raw:`{
701
+ size: number
702
+ lineHeight: number
703
+ weight: number
704
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"actionLabel",value:{name:"signature",type:"object",raw:`{
705
+ size: number
706
+ lineHeight: number
707
+ weight: number
708
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"voiceHoldToTalk",value:{name:"signature",type:"object",raw:`{
709
+ size: number
710
+ lineHeight: number
711
+ weight: number
712
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}}]},required:!0}}]}},description:""},compact:{required:!1,tsType:{name:"boolean"},description:"",defaultValue:{value:"false",computed:!1}}}};function Tr(e){const r=ge(e.tokens),t=$(),n=je(),[a,u]=f.useState("send"),s=f.useRef(null),g=f.useRef(null),c=Sr({...e.voice,onVoiceSend:async o=>{await e.onSend?.({text:"",attachments:t.attachments,audio:o,mode:"voice"})}});f.useEffect(()=>{e.value!==void 0&&t.setText(e.value)},[e.value]);const l=t.status==="recording"?"正在录音":t.status==="transcribing"?"正在转写...":t.error??t.transcript??void 0,d=async()=>{e.onSend&&(t.setStatus("sending"),await e.onSend({text:t.text,attachments:t.attachments,transcript:t.transcript||void 0,mode:"text"}),t.setStatus("idle"))},m=t.status==="recording"||t.status==="transcribing",y=(o,v)=>{const h=q=>{if(!q)return!1;const p=q.getBoundingClientRect(),b=20;return o>=p.left-b&&o<=p.right+b&&v>=p.top-b&&v<=p.bottom+b};if(h(s.current)){u("cancel");return}if(h(g.current)){u("transcribe");return}u("send")};return i.createElement("div",{style:{position:"relative",width:"100%",maxWidth:420,padding:0,background:"#ECE9E3",borderRadius:0,border:0,boxShadow:"none",overflow:"visible"}},m?i.createElement("div",{style:{position:"absolute",left:0,right:0,bottom:72,height:250,pointerEvents:"none",background:"linear-gradient(180deg, rgba(22, 16, 45, 0) 0%, rgba(22, 16, 45, 0.24) 34%, rgba(22, 16, 45, 0.6) 100%)",borderRadius:28}},i.createElement("div",{style:{position:"absolute",left:"50%",transform:"translateX(-50%)",bottom:126,width:188,padding:"18px 18px 22px",borderRadius:26,background:a==="transcribe"?"#E7DCFF":"#F3EEFF",boxShadow:"0 18px 40px rgba(40, 22, 102, 0.18)",display:"grid",justifyItems:"center",gap:8}},i.createElement(we,{levels:c.waveformLevels,tokens:r,compact:!0}),i.createElement("div",{style:{color:a==="transcribe"?"#5B35D4":"#6D4AFF",fontSize:13,lineHeight:"18px",fontWeight:600}},a==="transcribe"?"松开转文字":t.status==="transcribing"?"正在转写...":"松开发送"),i.createElement("div",{style:{position:"absolute",bottom:-9,width:18,height:18,background:a==="transcribe"?"#E7DCFF":"#F3EEFF",transform:"rotate(45deg)",borderRadius:3}})),i.createElement("div",{style:{position:"absolute",left:8,right:8,bottom:6,display:"grid",gridTemplateColumns:"1fr 1fr",gap:14,pointerEvents:"none"}},i.createElement("div",{ref:s,style:{height:84,borderRadius:"46px 46px 24px 24px",background:a==="cancel"?"rgba(211, 72, 99, 0.94)":"rgba(59, 45, 109, 0.62)",color:"#FFFFFF",display:"flex",alignItems:"center",justifyContent:"center",fontSize:15,fontWeight:600,letterSpacing:"0.02em",transform:a==="cancel"?"scale(1.03)":"scale(1)",transition:`all ${r.motion.stateTransition}`,boxShadow:a==="cancel"?"0 16px 28px rgba(211, 72, 99, 0.22)":"none"}},"取消"),i.createElement("div",{ref:g,style:{height:84,borderRadius:"46px 46px 24px 24px",background:a==="transcribe"?"rgba(109, 74, 255, 0.94)":"rgba(59, 45, 109, 0.62)",color:"#FFFFFF",display:"flex",alignItems:"center",justifyContent:"center",fontSize:15,fontWeight:600,letterSpacing:"0.02em",transform:a==="transcribe"?"scale(1.03)":"scale(1)",transition:`all ${r.motion.stateTransition}`,boxShadow:a==="transcribe"?"0 16px 28px rgba(109, 74, 255, 0.24)":"none"}},"转文字"))):null,i.createElement(pe,{attachments:n.attachments,tokens:r}),i.createElement("div",{style:{display:"grid",gridTemplateColumns:"28px minmax(0, 1fr) auto auto",gap:4,alignItems:"end",padding:"4px 0 env(safe-area-inset-bottom, 0px)"}},i.createElement("button",{type:"button","aria-label":t.mode==="voice"?"切换到文字输入":"切换到语音输入",disabled:e.disabled||e.enableVoice===!1,onClick:()=>{const o=t.mode==="voice"?"text":"voice";t.setMode(o),t.setStatus(o==="voice"?"voice-mode-ready":"idle")},style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,border:0,borderRadius:999,background:"transparent",color:"#111111",cursor:"pointer",alignSelf:"center",opacity:e.disabled?.45:1}},t.mode==="voice"?i.createElement(Me,{size:24}):i.createElement(ye,{size:24})),i.createElement(be,{tokens:r,status:t.status,styleOverride:{borderRadius:14,background:"#FFFFFF",borderColor:t.status==="error"?r.color.borderError:"#E5E7EB",boxShadow:"none",minHeight:t.mode==="voice"?54:44,padding:t.mode==="voice"?"0":"0 12px"}},t.mode==="voice"?i.createElement("div",null,i.createElement(Ge,{tokens:r,active:m,disabled:e.disabled,text:"按住 说话",activeText:"松开 发送",onPressStart:()=>{u("send"),c.startRecording()},onPressMove:o=>{y(o.clientX,o.clientY)},onPressEnd:()=>{a==="cancel"?c.cancelRecording():a==="transcribe"?c.stopRecording("transcribe"):c.stopRecording("send"),u("send")},onPressCancel:()=>{u("send"),c.cancelRecording()}})):i.createElement(fe,{tokens:r,value:t.text,rows:1,placeholder:"发消息",className:"placeholder:text-[#8A8A8E]",onChange:o=>{t.setText(o.target.value),t.setStatus(o.target.value.trim()?"typing":"idle"),e.onChange?.(o.target.value)},style:{minHeight:18,paddingTop:10,paddingBottom:10,color:"#171717",fontSize:16,lineHeight:"22px",caretColor:r.color.brandPrimary}})),i.createElement(ve,{"data-icon-size":24,style:{color:"#111111",alignSelf:"center",width:28,height:28}}),t.mode==="text"&&t.text.trim()?i.createElement(he,{tokens:r,disabled:e.disabled,onClick:()=>{d()},style:{minWidth:64,minHeight:30,borderRadius:12,alignSelf:"center",padding:"0 12px"}},"发送"):i.createElement(We,{"data-icon-size":24,onClick:()=>n.addAttachment("image.png"),style:{color:"#111111",alignSelf:"center",width:28,height:28}})),i.createElement(ke,{tokens:r,text:t.status==="recording"||t.status==="transcribing"?void 0:l,tone:t.status==="error"?"error":"secondary"}))}function Q(e){const r=JSON.stringify({initialState:e.initialState,defaultValue:e.defaultValue,voiceModeDefault:e.voiceModeDefault}),t=f.useRef(null);if(!t.current||t.current.key!==r){const n=Y();n.set(se,e.initialState?.mode??e.voiceModeDefault??"text"),n.set(oe,e.initialState?.status??"idle"),n.set(le,e.initialState?.text??e.defaultValue??""),n.set(de,e.initialState?.transcript??""),n.set(me,e.initialState?.error??null),n.set(ce,e.initialState?.attachments??[]),n.set(Le,e.initialState?.waveformLevels??[.3,.5,.75,.55,.35]),t.current={key:r,store:n}}return i.createElement(Fe,{store:t.current.store},i.createElement(Tr,{...e}))}Q.__docgenInfo={description:"",methods:[],displayName:"ChatInputMobile",props:{value:{required:!1,tsType:{name:"string"},description:""},defaultValue:{required:!1,tsType:{name:"string"},description:""},onChange:{required:!1,tsType:{name:"signature",type:"function",raw:"(value: string) => void",signature:{arguments:[{type:{name:"string"},name:"value"}],return:{name:"void"}}},description:""},onSend:{required:!1,tsType:{name:"signature",type:"function",raw:`(payload: {
713
+ text: string
714
+ attachments: ChatAttachment[]
715
+ transcript?: string
716
+ audio?: Blob
717
+ mode?: "text" | "voice"
718
+ }) => Promise<void> | void`,signature:{arguments:[{type:{name:"signature",type:"object",raw:`{
719
+ text: string
720
+ attachments: ChatAttachment[]
721
+ transcript?: string
722
+ audio?: Blob
723
+ mode?: "text" | "voice"
724
+ }`,signature:{properties:[{key:"text",value:{name:"string",required:!0}},{key:"attachments",value:{name:"Array",elements:[{name:"signature",type:"object",raw:`{
725
+ id: string
726
+ name: string
727
+ kind: "image"
728
+ file?: File
729
+ previewUrl?: string
730
+ }`,signature:{properties:[{key:"id",value:{name:"string",required:!0}},{key:"name",value:{name:"string",required:!0}},{key:"kind",value:{name:"literal",value:'"image"',required:!0}},{key:"file",value:{name:"File",required:!1}},{key:"previewUrl",value:{name:"string",required:!1}}]}}],raw:"ChatAttachment[]",required:!0}},{key:"transcript",value:{name:"string",required:!1}},{key:"audio",value:{name:"Blob",required:!1}},{key:"mode",value:{name:"union",raw:'"text" | "voice"',elements:[{name:"literal",value:'"text"'},{name:"literal",value:'"voice"'}],required:!1}}]}},name:"payload"}],return:{name:"union",raw:"Promise<void> | void",elements:[{name:"Promise",elements:[{name:"void"}],raw:"Promise<void>"},{name:"void"}]}}},description:""},enableVoice:{required:!1,tsType:{name:"boolean"},description:""},enableEmoji:{required:!1,tsType:{name:"boolean"},description:""},enableImage:{required:!1,tsType:{name:"boolean"},description:""},disabled:{required:!1,tsType:{name:"boolean"},description:""},authToken:{required:!1,tsType:{name:"string"},description:""},tokens:{required:!1,tsType:{name:"signature",type:"object",raw:`{
731
+ [K in keyof T]?: T[K] extends (...args: never[]) => unknown
732
+ ? T[K]
733
+ : T[K] extends Array<infer U>
734
+ ? Array<DeepPartial<U>>
735
+ : T[K] extends object
736
+ ? DeepPartial<T[K]>
737
+ : T[K]
738
+ }`,signature:{properties:[{key:{name:"signature",type:"object",raw:`{
739
+ color: ChatInputColorTokens
740
+ spacing: ChatInputSpacingTokens
741
+ radius: ChatInputRadiusTokens
742
+ motion: ChatInputMotionTokens
743
+ shadow: ChatInputShadowTokens
744
+ typography: ChatInputTypographyTokens
745
+ }`,signature:{properties:[{key:"color",value:{name:"signature",type:"object",raw:`{
746
+ brandPrimary: string
747
+ surfaceInputDefault: string
748
+ surfaceInputFocus: string
749
+ surfaceInputRecording: string
750
+ surfaceInputError: string
751
+ textPrimary: string
752
+ textSecondary: string
753
+ iconDefault: string
754
+ iconActive: string
755
+ actionSendDefault: string
756
+ actionSendDisabled: string
757
+ actionSendTextOnPrimary: string
758
+ borderDefault: string
759
+ borderFocus: string
760
+ borderError: string
761
+ statusError: string
762
+ statusWarning: string
763
+ statusSuccess: string
764
+ voiceWaveformActive: string
765
+ voiceWaveformBackground: string
766
+ }`,signature:{properties:[{key:"brandPrimary",value:{name:"string",required:!0}},{key:"surfaceInputDefault",value:{name:"string",required:!0}},{key:"surfaceInputFocus",value:{name:"string",required:!0}},{key:"surfaceInputRecording",value:{name:"string",required:!0}},{key:"surfaceInputError",value:{name:"string",required:!0}},{key:"textPrimary",value:{name:"string",required:!0}},{key:"textSecondary",value:{name:"string",required:!0}},{key:"iconDefault",value:{name:"string",required:!0}},{key:"iconActive",value:{name:"string",required:!0}},{key:"actionSendDefault",value:{name:"string",required:!0}},{key:"actionSendDisabled",value:{name:"string",required:!0}},{key:"actionSendTextOnPrimary",value:{name:"string",required:!0}},{key:"borderDefault",value:{name:"string",required:!0}},{key:"borderFocus",value:{name:"string",required:!0}},{key:"borderError",value:{name:"string",required:!0}},{key:"statusError",value:{name:"string",required:!0}},{key:"statusWarning",value:{name:"string",required:!0}},{key:"statusSuccess",value:{name:"string",required:!0}},{key:"voiceWaveformActive",value:{name:"string",required:!0}},{key:"voiceWaveformBackground",value:{name:"string",required:!0}}]},required:!0}},{key:"spacing",value:{name:"signature",type:"object",raw:`{
767
+ inputOuter: number
768
+ inputInner: number
769
+ actionGap: number
770
+ attachmentGap: number
771
+ voiceWaveformGap: number
772
+ mobileTouchInset: number
773
+ desktopToolbarGap: number
774
+ statusHintTop: number
775
+ }`,signature:{properties:[{key:"inputOuter",value:{name:"number",required:!0}},{key:"inputInner",value:{name:"number",required:!0}},{key:"actionGap",value:{name:"number",required:!0}},{key:"attachmentGap",value:{name:"number",required:!0}},{key:"voiceWaveformGap",value:{name:"number",required:!0}},{key:"mobileTouchInset",value:{name:"number",required:!0}},{key:"desktopToolbarGap",value:{name:"number",required:!0}},{key:"statusHintTop",value:{name:"number",required:!0}}]},required:!0}},{key:"radius",value:{name:"signature",type:"object",raw:`{
776
+ inputSurface: number
777
+ actionButton: number
778
+ attachmentPreview: number
779
+ waveformBar: number
780
+ mobileHoldToTalk: number
781
+ desktopInputSurface: number
782
+ }`,signature:{properties:[{key:"inputSurface",value:{name:"number",required:!0}},{key:"actionButton",value:{name:"number",required:!0}},{key:"attachmentPreview",value:{name:"number",required:!0}},{key:"waveformBar",value:{name:"number",required:!0}},{key:"mobileHoldToTalk",value:{name:"number",required:!0}},{key:"desktopInputSurface",value:{name:"number",required:!0}}]},required:!0}},{key:"motion",value:{name:"signature",type:"object",raw:`{
783
+ pressFeedback: string
784
+ waveformPulse: string
785
+ stateTransition: string
786
+ transcribingLoading: string
787
+ }`,signature:{properties:[{key:"pressFeedback",value:{name:"string",required:!0}},{key:"waveformPulse",value:{name:"string",required:!0}},{key:"stateTransition",value:{name:"string",required:!0}},{key:"transcribingLoading",value:{name:"string",required:!0}}]},required:!0}},{key:"shadow",value:{name:"signature",type:"object",raw:`{
788
+ inputElevated: string
789
+ recordingActive: string
790
+ }`,signature:{properties:[{key:"inputElevated",value:{name:"string",required:!0}},{key:"recordingActive",value:{name:"string",required:!0}}]},required:!0}},{key:"typography",value:{name:"signature",type:"object",raw:`{
791
+ familyBase: string
792
+ familyMono: string
793
+ inputText: ChatInputTypographyScale
794
+ statusHint: ChatInputTypographyScale
795
+ actionLabel: ChatInputTypographyScale
796
+ voiceHoldToTalk: ChatInputTypographyScale
797
+ }`,signature:{properties:[{key:"familyBase",value:{name:"string",required:!0}},{key:"familyMono",value:{name:"string",required:!0}},{key:"inputText",value:{name:"signature",type:"object",raw:`{
798
+ size: number
799
+ lineHeight: number
800
+ weight: number
801
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"statusHint",value:{name:"signature",type:"object",raw:`{
802
+ size: number
803
+ lineHeight: number
804
+ weight: number
805
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"actionLabel",value:{name:"signature",type:"object",raw:`{
806
+ size: number
807
+ lineHeight: number
808
+ weight: number
809
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}},{key:"voiceHoldToTalk",value:{name:"signature",type:"object",raw:`{
810
+ size: number
811
+ lineHeight: number
812
+ weight: number
813
+ }`,signature:{properties:[{key:"size",value:{name:"number",required:!0}},{key:"lineHeight",value:{name:"number",required:!0}},{key:"weight",value:{name:"number",required:!0}}]},required:!0}}]},required:!0}}]},required:!1},value:{name:"unknown"}}]}},description:""},slots:{required:!1,tsType:{name:"Partial",elements:[{name:"signature",type:"object",raw:`{
814
+ sendAction: ComponentType<ChatInputSlotProps>
815
+ statusHint: ComponentType<ChatInputSlotProps & { text?: string }>
816
+ recordingFeedback: ComponentType<ChatInputSlotProps & { children?: ReactNode }>
817
+ }`,signature:{properties:[{key:"sendAction",value:{name:"ComponentType",elements:[{name:"signature",type:"object",raw:`{
818
+ status: ChatInputStatus
819
+ mode: ChatInputMode
820
+ disabled?: boolean
821
+ }`,signature:{properties:[{key:"status",value:{name:"union",raw:`| "idle"
822
+ | "typing"
823
+ | "voice-mode-ready"
824
+ | "recording"
825
+ | "transcribing"
826
+ | "transcript-ready"
827
+ | "attachment-selected"
828
+ | "sending"
829
+ | "error"`,elements:[{name:"literal",value:'"idle"'},{name:"literal",value:'"typing"'},{name:"literal",value:'"voice-mode-ready"'},{name:"literal",value:'"recording"'},{name:"literal",value:'"transcribing"'},{name:"literal",value:'"transcript-ready"'},{name:"literal",value:'"attachment-selected"'},{name:"literal",value:'"sending"'},{name:"literal",value:'"error"'}],required:!0}},{key:"mode",value:{name:"union",raw:'"text" | "voice"',elements:[{name:"literal",value:'"text"'},{name:"literal",value:'"voice"'}],required:!0}},{key:"disabled",value:{name:"boolean",required:!1}}]}}],raw:"ComponentType<ChatInputSlotProps>",required:!0}},{key:"statusHint",value:{name:"ComponentType",elements:[{name:"intersection",raw:"ChatInputSlotProps & { text?: string }",elements:[{name:"signature",type:"object",raw:`{
830
+ status: ChatInputStatus
831
+ mode: ChatInputMode
832
+ disabled?: boolean
833
+ }`,signature:{properties:[{key:"status",value:{name:"union",raw:`| "idle"
834
+ | "typing"
835
+ | "voice-mode-ready"
836
+ | "recording"
837
+ | "transcribing"
838
+ | "transcript-ready"
839
+ | "attachment-selected"
840
+ | "sending"
841
+ | "error"`,elements:[{name:"literal",value:'"idle"'},{name:"literal",value:'"typing"'},{name:"literal",value:'"voice-mode-ready"'},{name:"literal",value:'"recording"'},{name:"literal",value:'"transcribing"'},{name:"literal",value:'"transcript-ready"'},{name:"literal",value:'"attachment-selected"'},{name:"literal",value:'"sending"'},{name:"literal",value:'"error"'}],required:!0}},{key:"mode",value:{name:"union",raw:'"text" | "voice"',elements:[{name:"literal",value:'"text"'},{name:"literal",value:'"voice"'}],required:!0}},{key:"disabled",value:{name:"boolean",required:!1}}]}},{name:"signature",type:"object",raw:"{ text?: string }",signature:{properties:[{key:"text",value:{name:"string",required:!1}}]}}]}],raw:"ComponentType<ChatInputSlotProps & { text?: string }>",required:!0}},{key:"recordingFeedback",value:{name:"ComponentType",elements:[{name:"intersection",raw:"ChatInputSlotProps & { children?: ReactNode }",elements:[{name:"signature",type:"object",raw:`{
842
+ status: ChatInputStatus
843
+ mode: ChatInputMode
844
+ disabled?: boolean
845
+ }`,signature:{properties:[{key:"status",value:{name:"union",raw:`| "idle"
846
+ | "typing"
847
+ | "voice-mode-ready"
848
+ | "recording"
849
+ | "transcribing"
850
+ | "transcript-ready"
851
+ | "attachment-selected"
852
+ | "sending"
853
+ | "error"`,elements:[{name:"literal",value:'"idle"'},{name:"literal",value:'"typing"'},{name:"literal",value:'"voice-mode-ready"'},{name:"literal",value:'"recording"'},{name:"literal",value:'"transcribing"'},{name:"literal",value:'"transcript-ready"'},{name:"literal",value:'"attachment-selected"'},{name:"literal",value:'"sending"'},{name:"literal",value:'"error"'}],required:!0}},{key:"mode",value:{name:"union",raw:'"text" | "voice"',elements:[{name:"literal",value:'"text"'},{name:"literal",value:'"voice"'}],required:!0}},{key:"disabled",value:{name:"boolean",required:!1}}]}},{name:"signature",type:"object",raw:"{ children?: ReactNode }",signature:{properties:[{key:"children",value:{name:"ReactNode",required:!1}}]}}]}],raw:"ComponentType<ChatInputSlotProps & { children?: ReactNode }>",required:!0}}]}}],raw:"Partial<ChatInputSlots>"},description:""},initialState:{required:!1,tsType:{name:"signature",type:"object",raw:`{
854
+ mode?: ChatInputMode
855
+ status?: ChatInputStatus
856
+ text?: string
857
+ transcript?: string
858
+ error?: string
859
+ attachments?: ChatAttachment[]
860
+ waveformLevels?: number[]
861
+ }`,signature:{properties:[{key:"mode",value:{name:"union",raw:'"text" | "voice"',elements:[{name:"literal",value:'"text"'},{name:"literal",value:'"voice"'}],required:!1}},{key:"status",value:{name:"union",raw:`| "idle"
862
+ | "typing"
863
+ | "voice-mode-ready"
864
+ | "recording"
865
+ | "transcribing"
866
+ | "transcript-ready"
867
+ | "attachment-selected"
868
+ | "sending"
869
+ | "error"`,elements:[{name:"literal",value:'"idle"'},{name:"literal",value:'"typing"'},{name:"literal",value:'"voice-mode-ready"'},{name:"literal",value:'"recording"'},{name:"literal",value:'"transcribing"'},{name:"literal",value:'"transcript-ready"'},{name:"literal",value:'"attachment-selected"'},{name:"literal",value:'"sending"'},{name:"literal",value:'"error"'}],required:!1}},{key:"text",value:{name:"string",required:!1}},{key:"transcript",value:{name:"string",required:!1}},{key:"error",value:{name:"string",required:!1}},{key:"attachments",value:{name:"Array",elements:[{name:"signature",type:"object",raw:`{
870
+ id: string
871
+ name: string
872
+ kind: "image"
873
+ file?: File
874
+ previewUrl?: string
875
+ }`,signature:{properties:[{key:"id",value:{name:"string",required:!0}},{key:"name",value:{name:"string",required:!0}},{key:"kind",value:{name:"literal",value:'"image"',required:!0}},{key:"file",value:{name:"File",required:!1}},{key:"previewUrl",value:{name:"string",required:!1}}]}}],raw:"ChatAttachment[]",required:!1}},{key:"waveformLevels",value:{name:"Array",elements:[{name:"number"}],raw:"number[]",required:!1}}]}},description:""},voice:{required:!1,tsType:{name:"signature",type:"object",raw:`{
876
+ asrClient?: ChatASRClient
877
+ lang?: string
878
+ minDurationMs?: number
879
+ simulatedTranscript?: string
880
+ shortRecordingMessage?: string
881
+ onVoiceSend?: (blob: Blob) => Promise<void> | void
882
+ }`,signature:{properties:[{key:"asrClient",value:{name:"signature",type:"object",raw:`{
883
+ transcribe(blob: Blob, input?: { lang?: string }): Promise<{ text: string }>
884
+ }`,signature:{properties:[{key:"transcribe",value:{name:"Promise",elements:[{name:"signature",type:"object",raw:"{ text: string }",signature:{properties:[{key:"text",value:{name:"string",required:!0}}]}}],raw:"Promise<{ text: string }>",required:!0}}]},required:!1}},{key:"lang",value:{name:"string",required:!1}},{key:"minDurationMs",value:{name:"number",required:!1}},{key:"simulatedTranscript",value:{name:"string",required:!1}},{key:"shortRecordingMessage",value:{name:"string",required:!1}},{key:"onVoiceSend",value:{name:"signature",type:"function",raw:"(blob: Blob) => Promise<void> | void",signature:{arguments:[{type:{name:"Blob"},name:"blob"}],return:{name:"union",raw:"Promise<void> | void",elements:[{name:"Promise",elements:[{name:"void"}],raw:"Promise<void>"},{name:"void"}]}},required:!1}}]}},description:""},voiceModeDefault:{required:!1,tsType:{name:"union",raw:'"text" | "voice"',elements:[{name:"literal",value:'"text"'},{name:"literal",value:'"voice"'}]},description:""}}};const Ir=402,Cr=874,Ar={title:"@pmate/chat-sdk/ChatInput",parameters:{layout:"centered"}},W={render:()=>Se(i.createElement(Q,null))},N={render:()=>Se(i.createElement(Q,{initialState:{mode:"voice",status:"voice-mode-ready"}}))},O={render:()=>Se(i.createElement(Q,{initialState:{mode:"voice",status:"recording",waveformLevels:[.25,.5,.88,.52,.28]}}))},V={render:()=>i.createElement("div",{style:{width:720}},i.createElement(qe,{initialState:{text:"Ship chat-sdk storybook first",status:"typing"}}))},K={render:()=>i.createElement("div",{style:{width:720}},i.createElement(qe,{initialState:{text:"Desktop attachment state",status:"attachment-selected",attachments:[{id:"1",kind:"image",name:"spec.png"}]}}))},U={render:()=>i.createElement(we,{levels:[.2,.5,.9,.55,.3],tokens:ge()})};function Se(e){return i.createElement("div",{style:{width:Ir,height:Cr,borderRadius:44,padding:10,background:"#111214",boxShadow:"0 40px 90px rgba(15, 23, 42, 0.22)"}},i.createElement("div",{style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",borderRadius:34,background:"linear-gradient(180deg, #efe9dc 0%, #f4f2ec 16%, #f6f5f2 54%, #ece9e3 100%)"}},i.createElement("div",{style:{position:"absolute",top:10,left:"50%",transform:"translateX(-50%)",width:126,height:30,borderRadius:999,background:"#111214"}}),i.createElement("div",{style:{padding:"64px 18px 0",display:"grid",gap:12}},i.createElement("div",{style:{maxWidth:230,padding:"10px 12px",borderRadius:18,background:"rgba(255, 255, 255, 0.72)",color:"#55585f",fontSize:13,lineHeight:1.5,boxShadow:"0 8px 20px rgba(15, 23, 42, 0.05)"}},"Voice input should feel like a native IM composer, not a floating demo card."),i.createElement("div",{style:{justifySelf:"end",maxWidth:240,padding:"10px 12px",borderRadius:18,background:"#EEE7FF",color:"#4E2DBF",fontSize:13,lineHeight:1.5,boxShadow:"0 8px 20px rgba(15, 23, 42, 0.05)"}},"模拟 iPhone 16 Pro 页面,把输入区固定在底部再看效果。")),i.createElement("div",{style:{position:"absolute",left:0,right:0,bottom:0,padding:"18px 8px calc(18px + env(safe-area-inset-bottom, 0px))",background:"linear-gradient(180deg, rgba(246, 245, 242, 0) 0%, rgba(238, 236, 231, 0.92) 24%, #ece9e3 100%)"}},e)))}W.parameters={...W.parameters,docs:{...W.parameters?.docs,source:{originalSource:`{
885
+ render: () => renderMobilePage(<ChatInputMobile />)
886
+ }`,...W.parameters?.docs?.source}}};N.parameters={...N.parameters,docs:{...N.parameters?.docs,source:{originalSource:`{
887
+ render: () => renderMobilePage(<ChatInputMobile initialState={{
888
+ mode: "voice",
889
+ status: "voice-mode-ready"
890
+ }} />)
891
+ }`,...N.parameters?.docs?.source}}};O.parameters={...O.parameters,docs:{...O.parameters?.docs,source:{originalSource:`{
892
+ render: () => renderMobilePage(<ChatInputMobile initialState={{
893
+ mode: "voice",
894
+ status: "recording",
895
+ waveformLevels: [0.25, 0.5, 0.88, 0.52, 0.28]
896
+ }} />)
897
+ }`,...O.parameters?.docs?.source}}};V.parameters={...V.parameters,docs:{...V.parameters?.docs,source:{originalSource:`{
898
+ render: () => <div style={{
899
+ width: 720
900
+ }}>
901
+ <ChatInputDesktop initialState={{
902
+ text: "Ship chat-sdk storybook first",
903
+ status: "typing"
904
+ }} />
905
+ </div>
906
+ }`,...V.parameters?.docs?.source}}};K.parameters={...K.parameters,docs:{...K.parameters?.docs,source:{originalSource:`{
907
+ render: () => <div style={{
908
+ width: 720
909
+ }}>
910
+ <ChatInputDesktop initialState={{
911
+ text: "Desktop attachment state",
912
+ status: "attachment-selected",
913
+ attachments: [{
914
+ id: "1",
915
+ kind: "image",
916
+ name: "spec.png"
917
+ }]
918
+ }} />
919
+ </div>
920
+ }`,...K.parameters?.docs?.source}}};U.parameters={...U.parameters,docs:{...U.parameters?.docs,source:{originalSource:`{
921
+ render: () => <WaveformFeedback levels={[0.2, 0.5, 0.9, 0.55, 0.3]} tokens={mergeChatInputTokens()} />
922
+ }`,...U.parameters?.docs?.source}}};const Hr=["MobileIdle","MobileVoiceReady","MobileRecording","DesktopTyping","DesktopAttachment","WaveformActive"];export{K as DesktopAttachment,V as DesktopTyping,W as MobileIdle,O as MobileRecording,N as MobileVoiceReady,U as WaveformActive,Hr as __namedExportsOrder,Ar as default};