@ahmetilhn/hanui 5.3.2 → 5.4.0
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.
- package/README.md +19 -3
- package/build/chat.cjs +3 -2
- package/build/chat.cjs.map +1 -1
- package/build/chat.css +1 -1
- package/build/chat.js +859 -446
- package/build/chat.js.map +1 -1
- package/build/index.cjs.map +1 -1
- package/build/index.js.map +1 -1
- package/build/types/chat/CodeBlock/format.d.ts +7 -0
- package/build/types/chat/CodeBlock/grammars.d.ts +44 -0
- package/build/types/chat/CodeBlock/highlight.d.ts +22 -0
- package/build/types/chat/CodeBlock/index.d.ts +11 -5
- package/build/types/theme/palette.d.ts +16 -0
- package/build/types/theme/tokens.d.ts +17 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -643,8 +643,23 @@ Metinler aynı sağlayıcıdan, `labels.chat` altında:
|
|
|
643
643
|
>
|
|
644
644
|
```
|
|
645
645
|
|
|
646
|
-
|
|
647
|
-
|
|
646
|
+
`CodeBlock` kodu kendisi vurgular ve biçimlendirir — bağımlılık yok, renkler
|
|
647
|
+
temayla döner:
|
|
648
|
+
|
|
649
|
+
```tsx
|
|
650
|
+
<CodeBlock language="json" code={JSON.stringify(payload)} />
|
|
651
|
+
```
|
|
652
|
+
|
|
653
|
+
JSON iki boşlukla yeniden girintilenir (değerler metin olarak korunur: büyük
|
|
654
|
+
sayılar yuvarlanmaz), kenardaki boş satırlar atılır; başka dilde girintiye
|
|
655
|
+
dokunulmaz. 30'dan fazla dil tanınır (ts/tsx, json, bash, python, yaml, css,
|
|
656
|
+
html, sql, diff, go, rust…), tanınmayan dil düz çizilir. Kopyala düğmesi ekranda
|
|
657
|
+
görüneni kopyalar. Renkler `chat.css`teki `--hanui-syntax-keyword`, `-string`,
|
|
658
|
+
`-number`, `-name`, `-type` değişkenleridir; CSS'te ezilir. Shiki düzeyinde
|
|
659
|
+
doğruluk isterseniz önceden vurgulanmış HTML'i `html` olarak verin (güvenliği
|
|
660
|
+
sizin) — yerleşik vurgulayıcının yerine geçer.
|
|
661
|
+
|
|
662
|
+
Markdown ayrıştırması tüketicide kalır: `Prose` yalnızca tipografi kabıdır.
|
|
648
663
|
Bileşen listesi ve kararlar: `CLAUDE.md` → "`@ahmetilhn/hanui/chat`".
|
|
649
664
|
|
|
650
665
|
## SCSS API — `@ahmetilhn/hanui/scss`
|
|
@@ -739,7 +754,7 @@ Görünüm değişiklikleri: açık sayfa krem (`#faf9f5`), koyu sayfa sıcak si
|
|
|
739
754
|
(`#141413`), kart ve panel durgunken gölgesiz, `info` tonu nötr, `CodeBadge`
|
|
740
755
|
mürekkep. Ayrıntı ve ölçümler: `CLAUDE.md` → "Renk kararları (5.0)".
|
|
741
756
|
|
|
742
|
-
## 5.1 – 5.
|
|
757
|
+
## 5.1 – 5.4'te eklenenler
|
|
743
758
|
|
|
744
759
|
Hepsi ekleme; 5.0'ın token sözleşmesi dışında kırıcı değişiklik yok.
|
|
745
760
|
|
|
@@ -749,6 +764,7 @@ Hepsi ekleme; 5.0'ın token sözleşmesi dışında kırıcı değişiklik yok.
|
|
|
749
764
|
| 5.2 | `HanuiThemeScript`; `@ahmetilhn/hanui/chat` — 20 sohbet bileşeni |
|
|
750
765
|
| 5.3 | `@ahmetilhn/hanui/charts` — 10 SVG grafiği; `@ahmetilhn/hanui/scss`; `Input --technical` dar ekranda ≥16px; `QuantityStepper` ve `DataTable` pasif/dinlenme hâli opacity yerine token |
|
|
751
766
|
| 5.3.2 | Düzeltme: kaydırma kapları kapsayıcı blok (`ChatThread`, `ScrollArea`, `TerminalOutput`, `ActionList` ve 12 kab daha) — görsel olarak gizli metin kabın dışına taşıp atalarını kaydırılabilir yapmıyor; grafik ekseni 0,1'in altındaki adımda sıfıra çökmüyor |
|
|
767
|
+
| 5.4 | `CodeBlock` yerleşik vurgulayıcı ve biçimlendirici (bağımlılıksız, 30+ dil); sözdizimi renkleri `--hanui-syntax-*` (yalnızca `chat.css`) |
|
|
752
768
|
|
|
753
769
|
Ayrıntı ve ölçülmüş gerekçeler: `CLAUDE.md` → "Göç ve `@deprecated` yollar",
|
|
754
770
|
"`@ahmetilhn/hanui/chat`", "`@ahmetilhn/hanui/charts`".
|
package/build/chat.cjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),_=require("react"),B=require("react-bootstrap-icons"),p=require("@ahmetilhn/hanui"),h=(...t)=>{let s="";for(const a of t)a&&(s=s===""?a:`${s} ${a}`);return s},x=(t,s)=>Object.assign(t,{displayName:s}),G=new Set,N=(t,...s)=>{for(const a of s)if(a!==void 0)return a;return process.env.NODE_ENV!=="production"&&!G.has(t)&&(G.add(t),console.error(`[hanui] Eksik metin: ${t}. Prop olarak geçin ya da <HanuiProvider labels={…}> içinde bir kez tanımlayın. Metinsiz bırakılan öğe ekran okuyucuda adsız kalır.`)),""},J=(t,s,...a)=>s?s(...a):N(t),Y="hanui-thread-R1LCJ",W="hanui-thread__scroll-37EaI",ee="hanui-thread__column-57FQh",te="hanui-thread__dock-y0Tt9",se="hanui-thread__latest-ZNmqY",w={thread:Y,thread__scroll:W,thread__column:ee,thread__dock:te,thread__latest:se},ae=({children:t,dock:s,isStreaming:a,label:i,className:o,testId:c})=>{var b,g,j;const{labels:n}=p.useHanui(),m=p.useAnnounce(),l=_.useRef(null),{isAtEnd:d,scrollToEnd:r}=p.useStickToBottom(l),u=_.useRef(a);return _.useEffect(()=>{var k;u.current&&!a&&m(N("ChatThread.replyReady",(k=n==null?void 0:n.chat)==null?void 0:k.replyReady)),u.current=a},[m,a,(b=n==null?void 0:n.chat)==null?void 0:b.replyReady]),e.jsxs("div",{className:h(w.thread,o),"data-testid":c,children:[e.jsx("div",{ref:l,className:w.thread__scroll,role:"region","aria-label":N("ChatThread.label",i,(g=n==null?void 0:n.chat)==null?void 0:g.thread),tabIndex:0,children:e.jsx("div",{className:w.thread__column,children:t})}),e.jsxs("div",{className:w.thread__dock,children:[!d&&e.jsx(p.IconButton,{className:w.thread__latest,icon:e.jsx(B.ArrowDown,{"aria-hidden":!0}),label:N("ChatThread.scrollToLatest",(j=n==null?void 0:n.chat)==null?void 0:j.scrollToLatest),variant:"outline",shape:"round",size:"sm",onClick:r}),s!==void 0&&e.jsx("div",{className:w.thread__column,children:s})]})]})},ne=_.memo(x(ae,"ChatThread")),ie="hanui-message-z5uVx",oe="hanui-message__avatar-QzWck",ce="hanui-message__main-1rh-A",le="hanui-message__body-Ngiqq",re="hanui-message__actions-dQ0Fn",S={message:ie,"message--user":"hanui-message--user-Mq6gb",message__avatar:oe,message__main:ce,"message--assistant":"hanui-message--assistant-ndkmH",message__body:le,message__actions:re},_e=({author:t,children:s,avatar:a,actions:i,isStreaming:o,className:c,testId:n})=>e.jsxs("article",{className:h(S.message,S[`message--${t}`],c),"aria-busy":o||void 0,"data-testid":n,children:[t==="assistant"&&a!==void 0&&e.jsx("div",{className:S.message__avatar,children:a}),e.jsxs("div",{className:S.message__main,children:[e.jsx("div",{className:S.message__body,children:s}),i!==void 0&&e.jsx("div",{className:S.message__actions,children:i})]})]}),de=_.memo(x(_e,"ChatMessage")),me="hanui-prompt-qHV1e",ue="hanui-prompt__box-sUQDu",he="hanui-prompt__field-EmvTZ",pe="hanui-prompt__start-2tqre",be="hanui-prompt__end-Zp7fi",xe="hanui-prompt__hint-4TpeC",T={prompt:me,prompt__box:ue,"prompt__box--disabled":"hanui-prompt__box--disabled-xu-Yk",prompt__field:he,prompt__start:pe,prompt__end:be,prompt__hint:xe},ge=_.forwardRef(({value:t,onChange:s,onSubmit:a,onStop:i,isBusy:o,isDisabled:c,isSubmitDisabled:n,placeholder:m,label:l,maxRows:d=8,hint:r,start:u,end:b,className:g,testId:j},k)=>{var H,K;const{labels:f}=p.useHanui(),F=t.trim()==="";_.useEffect(()=>{if(!o||!i)return;const C=q=>{q.key!=="Escape"||q.defaultPrevented||p.hasOpenSurface()||i()};return document.addEventListener("keydown",C),()=>document.removeEventListener("keydown",C)},[o,i]);const Z=C=>{C.key!=="Enter"||C.shiftKey||C.nativeEvent.isComposing||(C.preventDefault(),!F&&!o&&!c&&!n&&a())};return e.jsxs("div",{className:h(T.prompt,g),"data-testid":j,children:[e.jsxs("div",{className:h(T.prompt__box,c&&T["prompt__box--disabled"]),children:[u!==void 0&&e.jsx("div",{className:T.prompt__start,children:u}),e.jsx(p.Textarea,{ref:k,className:T.prompt__field,variant:"bare",rows:1,isAutoSize:!0,maxRows:d,value:t,placeholder:m,"aria-label":l??m,disabled:c,onChange:C=>s(C.target.value),onKeyDown:Z}),b!==void 0&&e.jsx("div",{className:T.prompt__end,children:b}),o?e.jsx(p.IconButton,{icon:e.jsx(B.StopFill,{"aria-hidden":!0}),label:N("PromptInput.stop",(H=f==null?void 0:f.chat)==null?void 0:H.stop),variant:"outline",shape:"round",onClick:i,disabled:!i}):e.jsx(p.IconButton,{icon:e.jsx(B.ArrowUp,{"aria-hidden":!0}),label:N("PromptInput.send",(K=f==null?void 0:f.chat)==null?void 0:K.send),variant:"solid",shape:"round",onClick:a,disabled:F||c||n})]}),r!==void 0&&e.jsx("div",{className:T.prompt__hint,children:r})]})}),ye=_.memo(x(ge,"PromptInput")),je="hanui-grid-4EfQ-",ve="hanui-card-KTt0-",Ne="hanui-card__label-LNLTF",ke="hanui-card__description-eIx-0",M={grid:je,card:ve,card__label:Ne,card__description:ke},fe=({label:t,items:s,onPick:a,className:i,testId:o})=>e.jsx("div",{role:"group","aria-label":t,className:h(M.grid,i),"data-testid":o,children:s.map(c=>e.jsxs("button",{type:"button",className:M.card,onClick:()=>a(c),children:[e.jsx("span",{className:M.card__label,children:c.label}),c.description&&e.jsx("span",{className:M.card__description,children:c.description})]},c.id))}),Ce=_.memo(x(fe,"PromptSuggestions")),$e="hanui-prose-kAp6f",Te={prose:$e},we=({className:t,testId:s,...a})=>e.jsx("div",{className:h(Te.prose,t),"data-testid":s,...a}),Se=_.memo(x(we,"Prose")),Ae="hanui-block-M1yL9",Ee="hanui-block__header-F2iBP",Le="hanui-block__language-lmdS9",ze="hanui-block__body-wDCJ2",Be="hanui-block__pre--EERi",Me="hanui-block__highlighted-JK1Yj",A={block:Ae,block__header:Ee,block__language:Le,block__body:ze,block__pre:Be,block__highlighted:Me},Re=1600,Ie=({code:t,language:s,html:a,maxHeight:i,className:o,testId:c})=>{var g;const{labels:n}=p.useHanui(),m=p.useAnnounce(),[l,d]=_.useState(!1),r=_.useRef(void 0);_.useEffect(()=>()=>window.clearTimeout(r.current),[]);const u=async()=>{var j;try{await navigator.clipboard.writeText(t)}catch{return}d(!0),m(N("CodeBlock.copied",(j=n==null?void 0:n.chat)==null?void 0:j.codeCopied)),window.clearTimeout(r.current),r.current=window.setTimeout(()=>d(!1),Re)},b=s??"";return e.jsxs("figure",{className:h(A.block,o),"data-testid":c,children:[e.jsxs("figcaption",{className:A.block__header,children:[e.jsx("span",{className:A.block__language,children:b}),e.jsx(p.IconButton,{icon:l?e.jsx(B.CheckLg,{"aria-hidden":!0}):e.jsx(B.ClipboardFill,{"aria-hidden":!0}),label:J("CodeBlock.copy",(g=n==null?void 0:n.chat)==null?void 0:g.codeCopy,b),size:"sm",onClick:u})]}),e.jsx("div",{className:A.block__body,style:i===void 0?void 0:{maxBlockSize:i},tabIndex:0,role:b?"region":void 0,"aria-label":b||void 0,children:a?e.jsx("div",{className:A.block__highlighted,dangerouslySetInnerHTML:{__html:a}}):e.jsx("pre",{className:A.block__pre,children:e.jsx("code",{children:t})})})]})},Oe=_.memo(x(Ie,"CodeBlock")),Pe="hanui-block-zqPjp",De="hanui-block__summary-Kkp-X",Fe="hanui-block__indicator-GuJMa",He="hanui-block__body-mDvrV",R={block:Pe,block__summary:De,block__indicator:Fe,block__body:He},Ke=({summary:t,isRunning:s=!1,indicator:a,isDefaultOpen:i=!1,children:o,className:c,testId:n})=>{const[m,l]=_.useState(s||i),d=_.useRef(!1);return _.useEffect(()=>{d.current||l(s||i)},[s,i]),e.jsx(p.Disclosure,{variant:"plain",className:h(R.block,c),summary:e.jsxs("span",{className:R.block__summary,children:[s&&e.jsx("span",{className:R.block__indicator,children:a??e.jsx(p.Spinner,{size:"sm"})}),t]}),isOpen:m,onOpenChange:r=>{d.current=!0,l(r)},testId:n,children:e.jsx("div",{className:R.block__body,children:o})})},qe=_.memo(x(Ke,"ReasoningBlock")),Ge="hanui-text-WKVxU",Xe="hanui-text__body--uP0k",X={text:Ge,text__body:Xe},Ve=({text:t,label:s,maxHeight:a=180,className:i,testId:o})=>e.jsx(p.ScrollArea,{className:h(X.text,i),label:s,maxHeight:a,hasFade:!0,isFollowingEnd:!0,testId:o,children:e.jsx("p",{className:X.text__body,children:t})}),Qe=_.memo(x(Ve,"ReasoningText")),Ue="hanui-call-tV2P8",Je="hanui-call__header-8Tw7m",Ze="hanui-call__icon-TLzwf",Ye="hanui-call__name-EHz6G",We="hanui-call__summary-M4sLU",et="hanui-call__meta-bvpp7",tt="hanui-call__body-nFK-C",st="hanui-section-TjSGF",at="hanui-section__label-UrgqM",nt="hanui-section__body-Dy1PX",y={call:Ue,"call--static":"hanui-call--static-Nldru",call__header:Je,call__icon:Ze,"call__icon--running":"hanui-call__icon--running-Mx1XK",call__name:Ye,call__summary:We,call__meta:et,call__body:tt,section:st,section__label:at,section__body:nt},it={running:"neutral",ok:"success",error:"danger",aborted:"warning",interrupted:"danger"},ot=({icon:t,name:s,summary:a,status:i,meta:o,isDefaultOpen:c,isOpen:n,onOpenChange:m,children:l,className:d,testId:r})=>{var j,k;const{labels:u}=p.useHanui(),b=N(`ToolCall.status.${i}`,(k=(j=u==null?void 0:u.chat)==null?void 0:j.toolStatus)==null?void 0:k[i]),g=e.jsxs("span",{className:y.call__header,children:[t!==void 0&&e.jsx("span",{className:h(y.call__icon,i==="running"&&y["call__icon--running"]),"aria-hidden":!0,children:t}),e.jsx("span",{className:y.call__name,children:s}),a!==void 0&&e.jsx("span",{className:y.call__summary,children:a}),e.jsx(p.StatusDot,{tone:it[i],label:b,isPulsing:i==="running"})]});return l===void 0?e.jsxs("div",{className:h(y.call,y["call--static"],d),"data-testid":r,children:[g,o!==void 0&&e.jsx("span",{className:y.call__meta,children:o})]}):e.jsx(p.Disclosure,{className:h(y.call,d),summary:g,meta:o,isDefaultOpen:c,isOpen:n,onOpenChange:m,testId:r,children:e.jsx("div",{className:y.call__body,children:l})})},ct=({label:t,children:s,className:a})=>e.jsxs("div",{className:h(y.section,a),children:[e.jsx("span",{className:y.section__label,children:t}),e.jsx("div",{className:y.section__body,children:s})]}),lt=_.memo(x(ot,"ToolCall")),rt="hanui-terminal-D4Bz8",_t="hanui-terminal__command-A7PG2",dt="hanui-terminal__prompt-9N1g2",mt="hanui-terminal__stderr-qCNFe",ut="hanui-terminal__srOnly-2pmQA",E={terminal:rt,terminal__command:_t,terminal__prompt:dt,terminal__stderr:mt,terminal__srOnly:ut},ht=({command:t,chunks:s,label:a,maxHeight:i=300,className:o,testId:c})=>{var d;const{labels:n}=p.useHanui(),m=_.useRef(null);p.useStickToBottom(m);const l=N("TerminalOutput.stderr",(d=n==null?void 0:n.chat)==null?void 0:d.stderr);return e.jsxs("pre",{ref:m,className:h(E.terminal,o),style:{maxBlockSize:i},tabIndex:0,role:"region","aria-label":a,"data-testid":c,children:[t!==void 0&&e.jsxs("span",{className:E.terminal__command,children:[e.jsxs("span",{className:E.terminal__prompt,"aria-hidden":!0,children:["$"," "]}),t,`
|
|
2
|
-
`]}),s.map((r,u)=>r.stream==="stderr"?e.jsxs("span",{className:E.terminal__stderr,children:[e.jsx("span",{className:E.terminal__srOnly,children:`${l}: `}),r.text]},u):e.jsx("span",{children:r.text},u))]})},pt=_.memo(x(ht,"TerminalOutput")),bt="hanui-list-GC4NK",xt="hanui-list__item-N8DAn",gt="hanui-list__index-VrSMs",yt="hanui-list__text-4tll-",jt="hanui-list__title-seHfJ",vt="hanui-list__plain-ZcCvx",Nt="hanui-list__domain-sJLI7",$={list:bt,list__item:xt,list__index:gt,list__text:yt,list__title:jt,list__plain:vt,list__domain:Nt},kt=({items:t,label:s,className:a,testId:i})=>{var c;const{labels:o}=p.useHanui();return e.jsx("ol",{className:h($.list,a),"aria-label":N("SourceList.label",s,(c=o==null?void 0:o.chat)==null?void 0:c.sources),"data-testid":i,children:t.map((n,m)=>e.jsxs("li",{className:$.list__item,children:[e.jsx("span",{className:$.list__index,"aria-hidden":!0,children:m+1}),e.jsxs("span",{className:$.list__text,children:[n.url?e.jsx("a",{className:$.list__title,href:n.url,target:"_blank",rel:"noopener noreferrer",children:n.title}):n.onSelect?e.jsx("button",{type:"button",className:$.list__title,onClick:n.onSelect,children:n.title}):e.jsx("span",{className:$.list__plain,children:n.title}),n.domain&&e.jsx("span",{className:$.list__domain,children:n.domain})]})]},n.id))})},ft=_.memo(x(kt,"SourceList")),Ct="hanui-citation-XrGMb",$t="hanui-citation__srOnly-GnMQp",L={citation:Ct,citation__srOnly:$t,"citation--static":"hanui-citation--static-8gXHs"},Tt=({index:t,href:s,onClick:a,className:i})=>{var n;const{labels:o}=p.useHanui(),c=J("Citation.label",(n=o==null?void 0:o.chat)==null?void 0:n.citation,t);return s?e.jsx("a",{className:h(L.citation,i),href:s,"aria-label":c,children:t}):a?e.jsx("button",{type:"button",className:h(L.citation,i),onClick:a,"aria-label":c,children:t}):e.jsxs("span",{className:h(L.citation,L["citation--static"],i),children:[e.jsx("span",{"aria-hidden":!0,children:t}),e.jsx("span",{className:L.citation__srOnly,children:c})]})},wt=_.memo(x(Tt,"Citation")),St="hanui-actions-c8XlJ",At="hanui-actions__meta-j-X3I",V={actions:St,actions__meta:At},Et="button:not(:disabled), a[href]",Lt=({children:t,meta:s,label:a,className:i,testId:o})=>{var l;const{labels:c}=p.useHanui(),n=_.useRef(null),m=d=>{var f;const r=[...((f=n.current)==null?void 0:f.querySelectorAll(Et))??[]],u=r.indexOf(document.activeElement);if(u<0||r.length===0)return;const b=getComputedStyle(d.currentTarget).direction==="rtl",g=b?"ArrowLeft":"ArrowRight",j=b?"ArrowRight":"ArrowLeft",k=d.key===g?r[(u+1)%r.length]:d.key===j?r[(u-1+r.length)%r.length]:d.key==="Home"?r[0]:d.key==="End"?r[r.length-1]:null;k&&(d.preventDefault(),k.focus())};return e.jsxs("div",{ref:n,role:"toolbar","aria-label":N("MessageActions.label",a,(l=c==null?void 0:c.chat)==null?void 0:l.messageActions),className:h(V.actions,i),onKeyDown:m,"data-testid":o,children:[t,s!==void 0&&e.jsx("span",{className:V.actions__meta,children:s})]})},zt=_.memo(x(Lt,"MessageActions")),Bt="hanui-bar-UJGDL",Mt="hanui-bar__brand-ZUcIw",Rt="hanui-bar__start-nvmHH",It="hanui-bar__end-NNQve",I={bar:Bt,bar__brand:Mt,bar__start:Rt,bar__end:It},Q="--hanui-header-height",Ot=({brand:t,start:s,end:a,className:i,testId:o})=>{const c=_.useRef(null);return _.useEffect(()=>{const n=c.current;if(!n||typeof ResizeObserver>"u")return;const m=document.documentElement,l=new ResizeObserver(([d])=>{var r,u;return m.style.setProperty(Q,`${Math.round(((u=(r=d.borderBoxSize)==null?void 0:r[0])==null?void 0:u.blockSize)??n.offsetHeight)}px`)});return l.observe(n),()=>{l.disconnect(),m.style.removeProperty(Q)}},[]),e.jsxs("header",{ref:c,className:h(I.bar,i),"data-testid":o,children:[e.jsx("div",{className:I.bar__brand,children:t}),s!==void 0&&e.jsx("div",{className:I.bar__start,children:s}),a!==void 0&&e.jsx("div",{className:I.bar__end,children:a})]})},Pt=_.memo(x(Ot,"AppBar")),Dt="hanui-list-e54gu",Ft="hanui-list__window-ESrZX",Ht="hanui-list__slot-DxSnX",Kt="hanui-item-DKEGh",qt="hanui-item__start-Yb3xf",Gt="hanui-item__body-kD4Qk",Xt="hanui-item__end-3SCT-",v={list:Dt,"list--virtual":"hanui-list--virtual-zxqy5",list__window:Ft,list__slot:Ht,item:Kt,"item--selected":"hanui-item--selected-AMl3I","item--muted":"hanui-item--muted-XBeA3",item__start:qt,item__body:Gt,item__end:Xt},U=6,Vt=({label:t,children:s,rowHeight:a,maxHeight:i=320,className:o,testId:c})=>{const n=_.Children.toArray(s).filter(_.isValidElement),[m,l]=_.useState(0);if(!a)return e.jsx("ul",{className:h(v.list,o),"aria-label":t,"data-testid":c,children:n});const d=Math.max(0,Math.floor(m/a)-U),r=Math.min(n.length,Math.ceil((m+i)/a)+U);return e.jsx("div",{className:h(v.list,v["list--virtual"],o),style:{maxBlockSize:i,"--hanui-row-height":`${a}px`},onScroll:u=>l(u.currentTarget.scrollTop),"data-testid":c,children:e.jsx("ul",{"aria-label":t,className:v.list__window,style:{blockSize:n.length*a,paddingBlockStart:d*a},children:n.slice(d,r).map((u,b)=>_.cloneElement(u,{"aria-posinset":d+b+1,"aria-setsize":n.length}))})})},Qt=({children:t,start:s,end:a,onClick:i,href:o,isSelected:c,isMuted:n,testId:m,"aria-posinset":l,"aria-setsize":d})=>{const{linkComponent:r}=p.useHanui(),u=h(v.item,c&&v["item--selected"],n&&v["item--muted"]),b=e.jsxs(e.Fragment,{children:[s!==void 0&&e.jsx("span",{className:v.item__start,children:s}),e.jsx("span",{className:v.item__body,children:t}),a!==void 0&&e.jsx("span",{className:v.item__end,children:a})]}),g=r??"a";return e.jsx("li",{className:v.list__slot,"aria-posinset":l,"aria-setsize":d,children:o?e.jsx(g,{href:o,className:u,"data-testid":m,children:b}):e.jsx("button",{type:"button",className:u,onClick:i,"aria-pressed":c,"data-testid":m,children:b})})},Ut=_.memo(x(Vt,"ActionList")),Jt="hanui-bar-OZjXz",Zt="hanui-bar__segment-hexbp",Yt="hanui-bar__marker-E0FeF",O={bar:Jt,bar__segment:Zt,bar__marker:Yt,"bar__marker--danger":"hanui-bar__marker--danger-245FK"},P=(t,s)=>s<=0?0:Math.min(100,Math.max(0,t/s*100)),Wt=t=>t==="muted"?"var(--hanui-text-3)":`var(--hanui-${t})`,es=({label:t,max:s,segments:a,markers:i=[],className:o,testId:c})=>{const n=[...a.map(l=>l.label),...i.map(l=>l.label)];let m=0;return e.jsxs("div",{role:"img","aria-label":`${t}: ${n.join(", ")}`,className:h(O.bar,o),"data-testid":c,children:[a.map(l=>{const d=l.from??m,r=l.to??d+(l.value??0);return m=r,e.jsx("span",{className:O.bar__segment,title:l.label,style:{insetInlineStart:`${P(d,s)}%`,inlineSize:`${P(r,s)-P(d,s)}%`,backgroundColor:Wt(l.tone)}},l.id)}),i.map(l=>e.jsx("span",{className:h(O.bar__marker,l.tone==="danger"&&O["bar__marker--danger"]),title:l.label,style:{insetInlineStart:`${P(l.at,s)}%`}},l.id))]})},ts=_.memo(x(es,"SegmentBar")),ss="hanui-legend-zryov",as="hanui-legend__item-GGrR-",ns="hanui-legend__swatch-2MkAR",D={legend:ss,legend__item:as,legend__swatch:ns},is=t=>t==="muted"?"var(--hanui-text-3)":`var(--hanui-${t})`,os=({items:t,className:s,testId:a})=>e.jsx("ul",{className:h(D.legend,s),"data-testid":a,children:t.map(i=>e.jsxs("li",{className:D.legend__item,children:[e.jsx("span",{"aria-hidden":!0,className:D.legend__swatch,style:{backgroundColor:is(i.tone)}}),i.label]},i.id))}),cs=_.memo(x(os,"Legend")),ls="hanui-list-KSLu5",rs="hanui-list__row-k7aHp",_s="hanui-list__term-vsD5B",ds="hanui-list__value-6GY6z",z={list:ls,list__row:rs,list__term:_s,list__value:ds,"list__value--technical":"hanui-list__value--technical-I-UYE"},ms=({items:t,className:s,testId:a})=>e.jsx("dl",{className:h(z.list,s),"data-testid":a,children:t.map((i,o)=>e.jsxs("div",{className:z.list__row,children:[e.jsx("dt",{className:z.list__term,children:i.term}),e.jsx("dd",{className:h(z.list__value,i.isTechnical&&z["list__value--technical"]),children:i.description})]},o))}),us=_.memo(x(ms,"DescriptionList"));exports.ActionList=Ut;exports.ActionListItem=Qt;exports.AppBar=Pt;exports.ChatMessage=de;exports.ChatThread=ne;exports.Citation=wt;exports.CodeBlock=Oe;exports.DescriptionList=us;exports.Legend=cs;exports.MessageActions=zt;exports.PromptInput=ye;exports.PromptSuggestions=Ce;exports.Prose=Se;exports.ReasoningBlock=qe;exports.ReasoningText=Qe;exports.SegmentBar=ts;exports.SourceList=ft;exports.TerminalOutput=pt;exports.ToolCall=lt;exports.ToolCallSection=ct;
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),_=require("react"),F=require("react-bootstrap-icons"),p=require("@ahmetilhn/hanui"),h=(...e)=>{let s="";for(const t of e)t&&(s=s===""?t:`${s} ${t}`);return s},x=(e,s)=>Object.assign(e,{displayName:s}),de=new Set,N=(e,...s)=>{for(const t of s)if(t!==void 0)return t;return process.env.NODE_ENV!=="production"&&!de.has(e)&&(de.add(e),console.error(`[hanui] Eksik metin: ${e}. Prop olarak geçin ya da <HanuiProvider labels={…}> içinde bir kez tanımlayın. Metinsiz bırakılan öğe ekran okuyucuda adsız kalır.`)),""},Oe=(e,s,...t)=>s?s(...t):N(e),Ke="hanui-thread-R1LCJ",Be="hanui-thread__scroll-37EaI",Fe="hanui-thread__column-57FQh",He="hanui-thread__dock-y0Tt9",Ze="hanui-thread__latest-ZNmqY",L={thread:Ke,thread__scroll:Be,thread__column:Fe,thread__dock:He,thread__latest:Ze},qe=({children:e,dock:s,isStreaming:t,label:i,className:o,testId:r})=>{var y,f,g;const{labels:a}=p.useHanui(),l=p.useAnnounce(),c=_.useRef(null),{isAtEnd:u,scrollToEnd:d}=p.useStickToBottom(c),m=_.useRef(t);return _.useEffect(()=>{var w;m.current&&!t&&l(N("ChatThread.replyReady",(w=a==null?void 0:a.chat)==null?void 0:w.replyReady)),m.current=t},[l,t,(y=a==null?void 0:a.chat)==null?void 0:y.replyReady]),n.jsxs("div",{className:h(L.thread,o),"data-testid":r,children:[n.jsx("div",{ref:c,className:L.thread__scroll,role:"region","aria-label":N("ChatThread.label",i,(f=a==null?void 0:a.chat)==null?void 0:f.thread),tabIndex:0,children:n.jsx("div",{className:L.thread__column,children:e})}),n.jsxs("div",{className:L.thread__dock,children:[!u&&n.jsx(p.IconButton,{className:L.thread__latest,icon:n.jsx(F.ArrowDown,{"aria-hidden":!0}),label:N("ChatThread.scrollToLatest",(g=a==null?void 0:a.chat)==null?void 0:g.scrollToLatest),variant:"outline",shape:"round",size:"sm",onClick:d}),s!==void 0&&n.jsx("div",{className:L.thread__column,children:s})]})]})},Ue=_.memo(x(qe,"ChatThread")),Ge="hanui-message-z5uVx",Ye="hanui-message__avatar-QzWck",We="hanui-message__main-1rh-A",Xe="hanui-message__body-Ngiqq",Je="hanui-message__actions-dQ0Fn",z={message:Ge,"message--user":"hanui-message--user-Mq6gb",message__avatar:Ye,message__main:We,"message--assistant":"hanui-message--assistant-ndkmH",message__body:Xe,message__actions:Je},Qe=({author:e,children:s,avatar:t,actions:i,isStreaming:o,className:r,testId:a})=>n.jsxs("article",{className:h(z.message,z[`message--${e}`],r),"aria-busy":o||void 0,"data-testid":a,children:[e==="assistant"&&t!==void 0&&n.jsx("div",{className:z.message__avatar,children:t}),n.jsxs("div",{className:z.message__main,children:[n.jsx("div",{className:z.message__body,children:s}),i!==void 0&&n.jsx("div",{className:z.message__actions,children:i})]})]}),Ve=_.memo(x(Qe,"ChatMessage")),et="hanui-prompt-qHV1e",tt="hanui-prompt__box-sUQDu",st="hanui-prompt__field-EmvTZ",nt="hanui-prompt__start-2tqre",at="hanui-prompt__end-Zp7fi",it="hanui-prompt__hint-4TpeC",E={prompt:et,prompt__box:tt,"prompt__box--disabled":"hanui-prompt__box--disabled-xu-Yk",prompt__field:st,prompt__start:nt,prompt__end:at,prompt__hint:it},ot=_.forwardRef(({value:e,onChange:s,onSubmit:t,onStop:i,isBusy:o,isDisabled:r,isSubmitDisabled:a,placeholder:l,label:c,maxRows:u=8,hint:d,start:m,end:y,className:f,testId:g},w)=>{var re,ce;const{labels:k}=p.useHanui(),D=e.trim()==="";_.useEffect(()=>{if(!o||!i)return;const S=le=>{le.key!=="Escape"||le.defaultPrevented||p.hasOpenSurface()||i()};return document.addEventListener("keydown",S),()=>document.removeEventListener("keydown",S)},[o,i]);const Pe=S=>{S.key!=="Enter"||S.shiftKey||S.nativeEvent.isComposing||(S.preventDefault(),!D&&!o&&!r&&!a&&t())};return n.jsxs("div",{className:h(E.prompt,f),"data-testid":g,children:[n.jsxs("div",{className:h(E.prompt__box,r&&E["prompt__box--disabled"]),children:[m!==void 0&&n.jsx("div",{className:E.prompt__start,children:m}),n.jsx(p.Textarea,{ref:w,className:E.prompt__field,variant:"bare",rows:1,isAutoSize:!0,maxRows:u,value:e,placeholder:l,"aria-label":c??l,disabled:r,onChange:S=>s(S.target.value),onKeyDown:Pe}),y!==void 0&&n.jsx("div",{className:E.prompt__end,children:y}),o?n.jsx(p.IconButton,{icon:n.jsx(F.StopFill,{"aria-hidden":!0}),label:N("PromptInput.stop",(re=k==null?void 0:k.chat)==null?void 0:re.stop),variant:"outline",shape:"round",onClick:i,disabled:!i}):n.jsx(p.IconButton,{icon:n.jsx(F.ArrowUp,{"aria-hidden":!0}),label:N("PromptInput.send",(ce=k==null?void 0:k.chat)==null?void 0:ce.send),variant:"solid",shape:"round",onClick:t,disabled:D||r||a})]}),d!==void 0&&n.jsx("div",{className:E.prompt__hint,children:d})]})}),rt=_.memo(x(ot,"PromptInput")),ct="hanui-grid-4EfQ-",lt="hanui-card-KTt0-",dt="hanui-card__label-LNLTF",ut="hanui-card__description-eIx-0",q={grid:ct,card:lt,card__label:dt,card__description:ut},_t=({label:e,items:s,onPick:t,className:i,testId:o})=>n.jsx("div",{role:"group","aria-label":e,className:h(q.grid,i),"data-testid":o,children:s.map(r=>n.jsxs("button",{type:"button",className:q.card,onClick:()=>t(r),children:[n.jsx("span",{className:q.card__label,children:r.label}),r.description&&n.jsx("span",{className:q.card__description,children:r.description})]},r.id))}),mt=_.memo(x(_t,"PromptSuggestions")),ht="hanui-prose-kAp6f",pt={prose:ht},bt=({className:e,testId:s,...t})=>n.jsx("div",{className:h(pt.prose,e),"data-testid":s,...t}),ft=_.memo(x(bt,"Prose")),yt=/^(?:[ \t]*\r?\n)+/,gt=" ",xt=e=>(e==null?void 0:e.trim().toLowerCase())==="json",kt=(e,s)=>{let t=s+1;for(;t<e.length&&e[t]!=='"';)t+=e[t]==="\\"?2:1;return t+1},wt=(e,s)=>{let t=s;for(;t<e.length&&/\s/.test(e[t]);)t++;return t},vt=e=>{try{JSON.parse(e)}catch{return e}let s="",t=0;const i=()=>`
|
|
2
|
+
${gt.repeat(t)}`;for(let o=0;o<e.length;o++){const r=e[o];if(r==='"'){const a=kt(e,o);s+=e.slice(o,a),o=a-1}else if(r==="{"||r==="["){const a=wt(e,o+1);e[a]===(r==="{"?"}":"]")?(s+=r+e[a],o=a):(t++,s+=r+i())}else r==="}"||r==="]"?(t--,s+=i()+r):r===","?s+=`,${i()}`:r===":"?s+=": ":/\s/.test(r)||(s+=r)}return s},jt=(e,s)=>{const t=e.replace(yt,"").trimEnd();return xt(s)?vt(t):t},b=e=>new Set(e.split(" ")),C=/"(?:[^"\\\n]|\\.)*"?/,H=/'(?:[^'\\\n]|\\.)*'?/,Le=/`(?:[^`\\]|\\[\s\S])*`?/,ie=/"""[\s\S]*?(?:"""|(?![\s\S]))/,Nt=/'''[\s\S]*?(?:'''|(?![\s\S]))/,St=/'(?:\\[^\n]{1,8}?|[^'\\\n])'/,V=/\/\/.*/,Z=/\/\*[\s\S]*?(?:\*\/|(?![\s\S]))/,$=/#.*/,I=/\b(?:0[xX][\dA-Fa-f_]+|0[bB][01_]+|0[oO][0-7_]+|\d[\d_]*(?:\.\d[\d_]*)?(?:[eE][+-]?\d+)?)[A-Za-z]*\b/,O=/[A-Za-z_]\w*/,ee=/[{}[\]();,.:]/,oe=/@[A-Za-z_][\w.]*/,Tt=/[\w$)\]]/,ue=/\S/,_e="break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield async await of static get set as from",At="type interface enum implements namespace declare abstract private protected public readonly keyof infer is satisfies override module asserts unique",Ct="true false null undefined NaN Infinity",Et="string number boolean any unknown never object symbol bigint",Rt="int long short char float double bool boolean byte void unsigned signed string str usize isize u8 u16 u32 u64 u128 i8 i16 i32 i64 i128 f32 f64 rune uint uint8 uint16 uint32 uint64 int8 int16 int32 int64 float32 float64 error any decimal size_t",$t="true false null nil nullptr NULL",ze="auto break case const continue default do else enum extern for goto if inline register restrict return sizeof static struct switch typedef union volatile while",Ot=`${ze} alignas alignof catch class constexpr consteval const_cast decltype delete dynamic_cast explicit export friend mutable namespace new noexcept operator private protected public reinterpret_cast static_assert static_cast template this thread_local throw try typeid typename using virtual override final concept requires co_await co_return co_yield`,Lt="abstract as async await base break case catch checked class const continue default delegate do dynamic else enum event explicit extern finally fixed for foreach get goto if implicit in init interface internal is lock namespace new operator out override params partial private protected public readonly record ref return sealed set sizeof stackalloc static struct switch this throw try typeof unchecked unsafe using var virtual volatile when where while yield",zt="abstract assert break case catch class const continue default do else enum extends final finally for goto if implements import instanceof interface native new package permits private protected public record return sealed static strictfp super switch synchronized this throw throws transient try var volatile while yield",It="abstract annotation as break by catch class companion const constructor continue crossinline data do else enum external final finally for fun get if import in infix init inline inner interface internal is lateinit noinline object open operator out override package private protected public reified return sealed set super suspend this throw try typealias val var vararg when where while",Dt="actor as associatedtype async await break case catch class continue default defer deinit do else enum extension fallthrough fileprivate final for func guard if import in init inout internal is lazy let mutating open operator override private protocol public repeat rethrows return self Self some static struct subscript super switch throw throws try typealias var weak where while",Mt="break case chan const continue default defer else fallthrough for func go goto if import interface map package range return select struct switch type var",Pt="as async await break const continue crate dyn else enum extern fn for if impl in let loop match mod move mut pub ref return self Self static struct super trait type unsafe use where while",Kt="abstract and array as break callable case catch class clone const continue declare default do echo else elseif empty extends final finally fn for foreach function global goto if implements include include_once instanceof insteadof interface isset list match namespace new or print private protected public readonly require require_once return static switch throw trait try unset use var while xor yield",Bt="if then else elif fi for while until do done case esac in function return local export select time break continue declare readonly unset shift source alias exit",Ft="FROM AS RUN CMD LABEL EXPOSE ENV ADD COPY ENTRYPOINT VOLUME USER WORKDIR ARG ONBUILD STOPSIGNAL HEALTHCHECK SHELL MAINTAINER",te=(e,s)=>({rules:[["comment",V],["comment",Z],["string",C],["string",H],["string",Le],["regex",/\/(?![*/])(?:\\.|\[(?:\\.|[^\]\\\n])*\]|[^/\\\n[])+\/[dgimsuvy]*/],["regex",/\/(?![*/])(?:\\.|\[(?:\\.|[^\]\\\n])*\]?|[^/\\\n[])*/],...s?[["tag",/<\/[A-Za-z][\w.:-]*/],["tag",/<[A-Za-z][\w.:-]*/,Tt]]:[],["name",oe],["number",I],["word",/[A-Za-z_$][\w$]*/],["punctuation",ee]],keywords:b(e?`${_e} ${At}`:_e),literals:b(Ct),types:e?b(Et):void 0,hasCapitalTypes:!0}),T=(e,s=[])=>({rules:[...s,["comment",V],["comment",Z],["keyword",/^[ \t]*#[ \t]*[a-z]+|#!?\[[^\]\n]*\]/],["string",ie],["string",C],["string",St],["string",Le],["name",oe],["number",I],["word",O],["punctuation",ee]],keywords:b(e),literals:b($t),types:b(Rt),hasCapitalTypes:!0}),me=()=>({rules:[["comment",$],["string",/(?:\b[rRbBuUfF]{1,2})?(?:"""[\s\S]*?(?:"""|(?![\s\S]))|'''[\s\S]*?(?:'''|(?![\s\S])))/],["string",/(?:\b[rRbBuUfF]{1,2})?(?:"(?:[^"\\\n]|\\.)*"?|'(?:[^'\\\n]|\\.)*'?)/],["name",oe],["number",I],["word",O],["punctuation",ee]],keywords:b("and as assert async await break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield match case"),literals:b("True False None"),types:b("int float str bool list dict set tuple bytes object"),hasCapitalTypes:!0}),he=()=>({rules:[["comment",$],["string",C],["string",H],["number",/:[A-Za-z_]\w*[?!]?/,/[\w:]/],["name",/@{1,2}[A-Za-z_]\w*/],["number",I],["word",/[A-Za-z_]\w*[?!]?/],["punctuation",ee]],keywords:b("alias and begin break case class def defined? do else elsif end ensure for if in module next not or redo rescue retry return self super then undef unless until when while yield require require_relative attr_accessor attr_reader attr_writer private protected public raise"),literals:b("true false nil"),hasCapitalTypes:!0}),Ie=e=>({rules:[["comment",$,/[^\s;|&(]/],["string",/"(?:[^"\\]|\\[\s\S])*"?/],["string",/'[^']*'?/],["name",/\$(?:\{[^}\n]*\}?|[A-Za-z_]\w*|[@#?$!*\d-])/],["number",/\b\d+\b/],["word",/[A-Za-z_][\w-]*/],["punctuation",/[{}[\]();|&]/]],keywords:b(e)}),pe=()=>({rules:[["comment",V],["comment",Z],["name",/"(?:[^"\\\n]|\\.)*"(?=\s*:)/],["string",C],["number",/-?\b\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b/],["word",O],["punctuation",/[{}[\],:]/]],literals:b("true false null")}),be=()=>({rules:[["comment",$,ue],["name",/(?:"(?:[^"\\\n]|\\.)*"|'[^'\n]*'|[\w$./][\w$./-]*(?:[ \t]+[\w$./-]+)*)(?=[ \t]*:(?:[ \t]|$))/],["string",C],["string",H],["type",/[&*][\w-]+|!!?[\w-]+/,ue],["punctuation",/^[ \t]*-(?=[ \t]|$)|[{}[\],]|[|>][-+]?(?=[ \t]*$)/],["number",/[-+]?\b\d[\d_]*(?:\.\d+)?(?:[eE][+-]?\d+)?\b/],["word",O]],literals:b("true false null True False Null TRUE FALSE NULL")}),Ht=()=>({rules:[["comment",$],["type",/^[ \t]*\[\[?[^\]\n]*\]\]?/],["name",/(?:"[^"\n]*"|[\w.-]+)(?=[ \t]*=)/],["string",ie],["string",Nt],["string",C],["string",/'[^'\n]*'?/],["number",/\b\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?\b|[-+]?\b\d[\d_]*(?:\.\d+)?(?:[eE][+-]?\d+)?\b/],["word",O],["punctuation",/[{}[\],=]/]],literals:b("true false inf nan")}),se=()=>({rules:[["comment",Z],["comment",V,/:/],["string",C],["string",H],["keyword",/@[\w-]+|!important\b/],["name",/-{0,2}[A-Za-z][\w-]*(?=\s*:[^;{}]*[;}])/],["name",/\$[\w-]+/],["number",/#[\dA-Fa-f]{3,8}\b|-?(?:\b\d+(?:\.\d+)?|\.\d+)(?:%|[A-Za-z]+\b)?/],["word",/-?[A-Za-z_][\w-]*/],["punctuation",/[{}();:,]/]]}),U=()=>({rules:[["comment",/<!--[\s\S]*?(?:-->|(?![\s\S]))/],["keyword",/<![A-Za-z][^>]*>?|<\?[\s\S]*?(?:\?>|(?![\s\S]))/],["markup",/<\/?[A-Za-z][\w:.-]*(?:"[^"]*"?|'[^']*'?|[^'">])*>?/],["number",/&#?\w+;/]]}),fe=()=>({rules:[["string",/^[ \t]*```[\s\S]*?(?:^[ \t]*```|(?![\s\S]))|^[ \t]*~~~[\s\S]*?(?:^[ \t]*~~~|(?![\s\S]))/],["keyword",/^#{1,6}[ \t].*/],["punctuation",/^[ \t]*(?:[-*+]|\d+[.)])(?=[ \t])|^[ \t]*>/],["string",/`[^`\n]+`/],["name",/!?\[[^\]\n]*\]\([^)\n]*\)/]]}),Zt=()=>({rules:[["comment",/--.*/],["comment",Z],["string",/'(?:[^']|'')*'?/],["name",/"[^"\n]*"?|`[^`\n]*`?/],["number",I],["word",O],["punctuation",/[(),;.]/]],keywords:b("select from where and or not insert into values update set delete create table alter drop index view join inner left right full outer cross on as group by order having limit offset union all distinct case when then else end is in exists between like ilike primary key foreign references default unique constraint returning with asc desc begin commit rollback transaction if replace check cascade grant revoke add column database schema trigger procedure function declare"),literals:b("null true false"),types:b("int integer bigint smallint serial bigserial text varchar char boolean bool date time timestamp timestamptz interval numeric decimal real float double json jsonb uuid bytea"),isCaseInsensitive:!0}),ye=()=>({rules:[["keyword",/^(?:diff|index|\+\+\+|---)(?: .*|$)/],["name",/^@@.*/],["inserted",/^\+.*/],["deleted",/^-.*/]]}),ge=()=>({rules:[["comment",$],["string",ie],["string",C],["name",/\$\w+/],["name",/@\w+/],["number",I],["word",O],["punctuation",/[{}[\]():,!=|]/]],keywords:b("query mutation subscription fragment on type input enum interface union scalar schema extend directive implements"),literals:b("true false null"),types:b("ID"),hasCapitalTypes:!0}),qt=()=>({rules:[["tag",/<\/?[A-Za-z][\w:.-]*/],["string",/"[^"]*"?|'[^']*'?/],["name",/[^\s"'<>/=]+/],["punctuation",/\/?>|=/]]}),G=()=>te(!1,!1),Ut=()=>te(!1,!0),Y=()=>te(!0,!1),Gt=()=>te(!0,!0),M=()=>Ie(Bt),xe=()=>Ie(Ft),ke=()=>T(ze),ne=()=>T(Ot),we=()=>T(Lt),ve=()=>T(It),je=()=>T(Mt),Ne=()=>T(Pt),Yt=()=>T(Kt,[["comment",$],["name",/\$[A-Za-z_]\w*/],["string",H]]),Se={javascript:G,js:G,mjs:G,cjs:G,jsx:Ut,typescript:Y,ts:Y,mts:Y,cts:Y,tsx:Gt,json:pe,jsonc:pe,bash:M,sh:M,shell:M,zsh:M,console:M,dockerfile:xe,docker:xe,python:me,py:me,ruby:he,rb:he,yaml:be,yml:be,toml:Ht,css:se,scss:se,less:se,html:U,xml:U,svg:U,vue:U,markdown:fe,md:fe,sql:Zt,diff:ye,patch:ye,graphql:ge,gql:ge,c:ke,h:ke,cpp:ne,"c++":ne,hpp:ne,csharp:we,cs:we,java:()=>T(zt),kotlin:ve,kt:ve,swift:()=>T(Dt),go:je,golang:je,rust:Ne,rs:Ne,php:Yt},Wt=2e4,Te=/!?[ \t]*\(/y,Xt=/^[A-Z][A-Z\d_]+$/,Jt=/[(,=:[!&|?{};~+\-*%<>^]/,Qt=new Set(["return","typeof","case","do","else","in","of","new","delete","void","throw","yield","await"]),Ae=new Map,De=e=>{const s=Ae.get(e);if(s)return s;const t=e(),o={pattern:new RegExp(t.rules.map(([,r])=>`(${r.source})`).join("|"),"gm"),grammar:t};return Ae.set(e,o),o},Vt=e=>{const s=e==null?void 0:e.trim().toLowerCase();return s&&Object.hasOwn(Se,s)?Se[s]:void 0},es=(e,s)=>{let t=s-1;for(;t>=0&&/\s/.test(e[t]);)t--;if(t<0||Jt.test(e[t]))return!0;const i=t+1;for(;t>=0&&/[\w$]/.test(e[t]);)t--;return Qt.has(e.slice(t+1,i))},ts=(e,s,t,i,o)=>{var l,c,u;Te.lastIndex=o;const r=Te.test(t);if(t[i-1]===".")return r?"name":void 0;const a=e.isCaseInsensitive?s.toLowerCase():s;if((l=e.keywords)!=null&&l.has(a))return"keyword";if((c=e.literals)!=null&&c.has(a))return"number";if((u=e.types)!=null&&u.has(a))return"type";if(r)return"name";if(e.hasCapitalTypes&&/^[A-Z]/.test(s))return Xt.test(s)?"number":"type"},Me=({pattern:e,grammar:s},t)=>{const i=[],o=(a,l)=>{if(!a)return;const c=i.at(-1);c&&c.type===l?c.text+=a:i.push({text:a,type:l})};let r=0;e.lastIndex=0;for(let a=e.exec(t);a;a=e.exec(t)){const[l]=a,{index:c}=a,u=c+l.length;if(u===c){e.lastIndex=c+1;continue}const[d,,m]=s.rules[a.indexOf(l,1)-1];if(m!==void 0&&c>0&&m.test(t[c-1])||d==="regex"&&!es(t,c)){e.lastIndex=c+1;continue}if(o(t.slice(r,c)),r=u,d==="word")o(l,ts(s,l,t,c,u));else if(d==="regex")o(l,"string");else if(d==="tag"){const f=l[1]==="/"?2:1,g=l.slice(f);o(l.slice(0,f),"punctuation"),o(g,/^[A-Z]/.test(g)||g.includes(".")?"type":"keyword")}else if(d==="markup")for(const f of Me(De(qt),l))o(f.text,f.type);else o(l,d)}return o(t.slice(r)),i},ss=(e,s)=>{const t=Vt(s);return t&&e.length<=Wt?Me(De(t),e):[{text:e}]},ns="hanui-block-M1yL9",as="hanui-block__header-F2iBP",is="hanui-block__language-lmdS9",os="hanui-block__body-wDCJ2",rs="hanui-block__pre--EERi",cs="hanui-block__highlighted-JK1Yj",R={block:ns,block__header:as,block__language:is,block__body:os,block__pre:rs,block__highlighted:cs,"block__token--comment":"hanui-block__token--comment-eFTyh","block__token--keyword":"hanui-block__token--keyword-qQpj9","block__token--string":"hanui-block__token--string-4onwX","block__token--number":"hanui-block__token--number-DThtL","block__token--name":"hanui-block__token--name-283C9","block__token--type":"hanui-block__token--type-cNUbM","block__token--punctuation":"hanui-block__token--punctuation-Te2u8","block__token--inserted":"hanui-block__token--inserted-sUKnQ","block__token--deleted":"hanui-block__token--deleted-s74a-"},ls=1600,ds=({code:e,language:s,html:t,maxHeight:i,className:o,testId:r})=>{var w;const{labels:a}=p.useHanui(),l=p.useAnnounce(),[c,u]=_.useState(!1),d=_.useRef(void 0),m=_.useMemo(()=>t?e:jt(e,s),[e,t,s]),y=_.useMemo(()=>t?[]:ss(m,s),[m,t,s]);_.useEffect(()=>()=>window.clearTimeout(d.current),[]);const f=async()=>{var k;try{await navigator.clipboard.writeText(m)}catch{return}u(!0),l(N("CodeBlock.copied",(k=a==null?void 0:a.chat)==null?void 0:k.codeCopied)),window.clearTimeout(d.current),d.current=window.setTimeout(()=>u(!1),ls)},g=s??"";return n.jsxs("figure",{className:h(R.block,o),"data-testid":r,children:[n.jsxs("figcaption",{className:R.block__header,children:[n.jsx("span",{className:R.block__language,children:g}),n.jsx(p.IconButton,{icon:c?n.jsx(F.CheckLg,{"aria-hidden":!0}):n.jsx(F.ClipboardFill,{"aria-hidden":!0}),label:Oe("CodeBlock.copy",(w=a==null?void 0:a.chat)==null?void 0:w.codeCopy,g),size:"sm",onClick:f})]}),n.jsx("div",{className:R.block__body,style:i===void 0?void 0:{maxBlockSize:i},tabIndex:0,role:g?"region":void 0,"aria-label":g||void 0,children:t?n.jsx("div",{className:R.block__highlighted,dangerouslySetInnerHTML:{__html:t}}):n.jsx("pre",{className:R.block__pre,children:n.jsx("code",{children:y.map((k,D)=>k.type?n.jsx("span",{className:R[`block__token--${k.type}`],children:k.text},D):n.jsx(_.Fragment,{children:k.text},D))})})})]})},us=_.memo(x(ds,"CodeBlock")),_s="hanui-block-zqPjp",ms="hanui-block__summary-Kkp-X",hs="hanui-block__indicator-GuJMa",ps="hanui-block__body-mDvrV",W={block:_s,block__summary:ms,block__indicator:hs,block__body:ps},bs=({summary:e,isRunning:s=!1,indicator:t,isDefaultOpen:i=!1,children:o,className:r,testId:a})=>{const[l,c]=_.useState(s||i),u=_.useRef(!1);return _.useEffect(()=>{u.current||c(s||i)},[s,i]),n.jsx(p.Disclosure,{variant:"plain",className:h(W.block,r),summary:n.jsxs("span",{className:W.block__summary,children:[s&&n.jsx("span",{className:W.block__indicator,children:t??n.jsx(p.Spinner,{size:"sm"})}),e]}),isOpen:l,onOpenChange:d=>{u.current=!0,c(d)},testId:a,children:n.jsx("div",{className:W.block__body,children:o})})},fs=_.memo(x(bs,"ReasoningBlock")),ys="hanui-text-WKVxU",gs="hanui-text__body--uP0k",Ce={text:ys,text__body:gs},xs=({text:e,label:s,maxHeight:t=180,className:i,testId:o})=>n.jsx(p.ScrollArea,{className:h(Ce.text,i),label:s,maxHeight:t,hasFade:!0,isFollowingEnd:!0,testId:o,children:n.jsx("p",{className:Ce.text__body,children:e})}),ks=_.memo(x(xs,"ReasoningText")),ws="hanui-call-tV2P8",vs="hanui-call__header-8Tw7m",js="hanui-call__icon-TLzwf",Ns="hanui-call__name-EHz6G",Ss="hanui-call__summary-M4sLU",Ts="hanui-call__meta-bvpp7",As="hanui-call__body-nFK-C",Cs="hanui-section-TjSGF",Es="hanui-section__label-UrgqM",Rs="hanui-section__body-Dy1PX",v={call:ws,"call--static":"hanui-call--static-Nldru",call__header:vs,call__icon:js,"call__icon--running":"hanui-call__icon--running-Mx1XK",call__name:Ns,call__summary:Ss,call__meta:Ts,call__body:As,section:Cs,section__label:Es,section__body:Rs},$s={running:"neutral",ok:"success",error:"danger",aborted:"warning",interrupted:"danger"},Os=({icon:e,name:s,summary:t,status:i,meta:o,isDefaultOpen:r,isOpen:a,onOpenChange:l,children:c,className:u,testId:d})=>{var g,w;const{labels:m}=p.useHanui(),y=N(`ToolCall.status.${i}`,(w=(g=m==null?void 0:m.chat)==null?void 0:g.toolStatus)==null?void 0:w[i]),f=n.jsxs("span",{className:v.call__header,children:[e!==void 0&&n.jsx("span",{className:h(v.call__icon,i==="running"&&v["call__icon--running"]),"aria-hidden":!0,children:e}),n.jsx("span",{className:v.call__name,children:s}),t!==void 0&&n.jsx("span",{className:v.call__summary,children:t}),n.jsx(p.StatusDot,{tone:$s[i],label:y,isPulsing:i==="running"})]});return c===void 0?n.jsxs("div",{className:h(v.call,v["call--static"],u),"data-testid":d,children:[f,o!==void 0&&n.jsx("span",{className:v.call__meta,children:o})]}):n.jsx(p.Disclosure,{className:h(v.call,u),summary:f,meta:o,isDefaultOpen:r,isOpen:a,onOpenChange:l,testId:d,children:n.jsx("div",{className:v.call__body,children:c})})},Ls=({label:e,children:s,className:t})=>n.jsxs("div",{className:h(v.section,t),children:[n.jsx("span",{className:v.section__label,children:e}),n.jsx("div",{className:v.section__body,children:s})]}),zs=_.memo(x(Os,"ToolCall")),Is="hanui-terminal-D4Bz8",Ds="hanui-terminal__command-A7PG2",Ms="hanui-terminal__prompt-9N1g2",Ps="hanui-terminal__stderr-qCNFe",Ks="hanui-terminal__srOnly-2pmQA",P={terminal:Is,terminal__command:Ds,terminal__prompt:Ms,terminal__stderr:Ps,terminal__srOnly:Ks},Bs=({command:e,chunks:s,label:t,maxHeight:i=300,className:o,testId:r})=>{var u;const{labels:a}=p.useHanui(),l=_.useRef(null);p.useStickToBottom(l);const c=N("TerminalOutput.stderr",(u=a==null?void 0:a.chat)==null?void 0:u.stderr);return n.jsxs("pre",{ref:l,className:h(P.terminal,o),style:{maxBlockSize:i},tabIndex:0,role:"region","aria-label":t,"data-testid":r,children:[e!==void 0&&n.jsxs("span",{className:P.terminal__command,children:[n.jsxs("span",{className:P.terminal__prompt,"aria-hidden":!0,children:["$"," "]}),e,`
|
|
3
|
+
`]}),s.map((d,m)=>d.stream==="stderr"?n.jsxs("span",{className:P.terminal__stderr,children:[n.jsx("span",{className:P.terminal__srOnly,children:`${c}: `}),d.text]},m):n.jsx("span",{children:d.text},m))]})},Fs=_.memo(x(Bs,"TerminalOutput")),Hs="hanui-list-GC4NK",Zs="hanui-list__item-N8DAn",qs="hanui-list__index-VrSMs",Us="hanui-list__text-4tll-",Gs="hanui-list__title-seHfJ",Ys="hanui-list__plain-ZcCvx",Ws="hanui-list__domain-sJLI7",A={list:Hs,list__item:Zs,list__index:qs,list__text:Us,list__title:Gs,list__plain:Ys,list__domain:Ws},Xs=({items:e,label:s,className:t,testId:i})=>{var r;const{labels:o}=p.useHanui();return n.jsx("ol",{className:h(A.list,t),"aria-label":N("SourceList.label",s,(r=o==null?void 0:o.chat)==null?void 0:r.sources),"data-testid":i,children:e.map((a,l)=>n.jsxs("li",{className:A.list__item,children:[n.jsx("span",{className:A.list__index,"aria-hidden":!0,children:l+1}),n.jsxs("span",{className:A.list__text,children:[a.url?n.jsx("a",{className:A.list__title,href:a.url,target:"_blank",rel:"noopener noreferrer",children:a.title}):a.onSelect?n.jsx("button",{type:"button",className:A.list__title,onClick:a.onSelect,children:a.title}):n.jsx("span",{className:A.list__plain,children:a.title}),a.domain&&n.jsx("span",{className:A.list__domain,children:a.domain})]})]},a.id))})},Js=_.memo(x(Xs,"SourceList")),Qs="hanui-citation-XrGMb",Vs="hanui-citation__srOnly-GnMQp",K={citation:Qs,citation__srOnly:Vs,"citation--static":"hanui-citation--static-8gXHs"},en=({index:e,href:s,onClick:t,className:i})=>{var a;const{labels:o}=p.useHanui(),r=Oe("Citation.label",(a=o==null?void 0:o.chat)==null?void 0:a.citation,e);return s?n.jsx("a",{className:h(K.citation,i),href:s,"aria-label":r,children:e}):t?n.jsx("button",{type:"button",className:h(K.citation,i),onClick:t,"aria-label":r,children:e}):n.jsxs("span",{className:h(K.citation,K["citation--static"],i),children:[n.jsx("span",{"aria-hidden":!0,children:e}),n.jsx("span",{className:K.citation__srOnly,children:r})]})},tn=_.memo(x(en,"Citation")),sn="hanui-actions-c8XlJ",nn="hanui-actions__meta-j-X3I",Ee={actions:sn,actions__meta:nn},an="button:not(:disabled), a[href]",on=({children:e,meta:s,label:t,className:i,testId:o})=>{var c;const{labels:r}=p.useHanui(),a=_.useRef(null),l=u=>{var k;const d=[...((k=a.current)==null?void 0:k.querySelectorAll(an))??[]],m=d.indexOf(document.activeElement);if(m<0||d.length===0)return;const y=getComputedStyle(u.currentTarget).direction==="rtl",f=y?"ArrowLeft":"ArrowRight",g=y?"ArrowRight":"ArrowLeft",w=u.key===f?d[(m+1)%d.length]:u.key===g?d[(m-1+d.length)%d.length]:u.key==="Home"?d[0]:u.key==="End"?d[d.length-1]:null;w&&(u.preventDefault(),w.focus())};return n.jsxs("div",{ref:a,role:"toolbar","aria-label":N("MessageActions.label",t,(c=r==null?void 0:r.chat)==null?void 0:c.messageActions),className:h(Ee.actions,i),onKeyDown:l,"data-testid":o,children:[e,s!==void 0&&n.jsx("span",{className:Ee.actions__meta,children:s})]})},rn=_.memo(x(on,"MessageActions")),cn="hanui-bar-UJGDL",ln="hanui-bar__brand-ZUcIw",dn="hanui-bar__start-nvmHH",un="hanui-bar__end-NNQve",X={bar:cn,bar__brand:ln,bar__start:dn,bar__end:un},Re="--hanui-header-height",_n=({brand:e,start:s,end:t,className:i,testId:o})=>{const r=_.useRef(null);return _.useEffect(()=>{const a=r.current;if(!a||typeof ResizeObserver>"u")return;const l=document.documentElement,c=new ResizeObserver(([u])=>{var d,m;return l.style.setProperty(Re,`${Math.round(((m=(d=u.borderBoxSize)==null?void 0:d[0])==null?void 0:m.blockSize)??a.offsetHeight)}px`)});return c.observe(a),()=>{c.disconnect(),l.style.removeProperty(Re)}},[]),n.jsxs("header",{ref:r,className:h(X.bar,i),"data-testid":o,children:[n.jsx("div",{className:X.bar__brand,children:e}),s!==void 0&&n.jsx("div",{className:X.bar__start,children:s}),t!==void 0&&n.jsx("div",{className:X.bar__end,children:t})]})},mn=_.memo(x(_n,"AppBar")),hn="hanui-list-e54gu",pn="hanui-list__window-ESrZX",bn="hanui-list__slot-DxSnX",fn="hanui-item-DKEGh",yn="hanui-item__start-Yb3xf",gn="hanui-item__body-kD4Qk",xn="hanui-item__end-3SCT-",j={list:hn,"list--virtual":"hanui-list--virtual-zxqy5",list__window:pn,list__slot:bn,item:fn,"item--selected":"hanui-item--selected-AMl3I","item--muted":"hanui-item--muted-XBeA3",item__start:yn,item__body:gn,item__end:xn},$e=6,kn=({label:e,children:s,rowHeight:t,maxHeight:i=320,className:o,testId:r})=>{const a=_.Children.toArray(s).filter(_.isValidElement),[l,c]=_.useState(0);if(!t)return n.jsx("ul",{className:h(j.list,o),"aria-label":e,"data-testid":r,children:a});const u=Math.max(0,Math.floor(l/t)-$e),d=Math.min(a.length,Math.ceil((l+i)/t)+$e);return n.jsx("div",{className:h(j.list,j["list--virtual"],o),style:{maxBlockSize:i,"--hanui-row-height":`${t}px`},onScroll:m=>c(m.currentTarget.scrollTop),"data-testid":r,children:n.jsx("ul",{"aria-label":e,className:j.list__window,style:{blockSize:a.length*t,paddingBlockStart:u*t},children:a.slice(u,d).map((m,y)=>_.cloneElement(m,{"aria-posinset":u+y+1,"aria-setsize":a.length}))})})},wn=({children:e,start:s,end:t,onClick:i,href:o,isSelected:r,isMuted:a,testId:l,"aria-posinset":c,"aria-setsize":u})=>{const{linkComponent:d}=p.useHanui(),m=h(j.item,r&&j["item--selected"],a&&j["item--muted"]),y=n.jsxs(n.Fragment,{children:[s!==void 0&&n.jsx("span",{className:j.item__start,children:s}),n.jsx("span",{className:j.item__body,children:e}),t!==void 0&&n.jsx("span",{className:j.item__end,children:t})]}),f=d??"a";return n.jsx("li",{className:j.list__slot,"aria-posinset":c,"aria-setsize":u,children:o?n.jsx(f,{href:o,className:m,"data-testid":l,children:y}):n.jsx("button",{type:"button",className:m,onClick:i,"aria-pressed":r,"data-testid":l,children:y})})},vn=_.memo(x(kn,"ActionList")),jn="hanui-bar-OZjXz",Nn="hanui-bar__segment-hexbp",Sn="hanui-bar__marker-E0FeF",J={bar:jn,bar__segment:Nn,bar__marker:Sn,"bar__marker--danger":"hanui-bar__marker--danger-245FK"},Q=(e,s)=>s<=0?0:Math.min(100,Math.max(0,e/s*100)),Tn=e=>e==="muted"?"var(--hanui-text-3)":`var(--hanui-${e})`,An=({label:e,max:s,segments:t,markers:i=[],className:o,testId:r})=>{const a=[...t.map(c=>c.label),...i.map(c=>c.label)];let l=0;return n.jsxs("div",{role:"img","aria-label":`${e}: ${a.join(", ")}`,className:h(J.bar,o),"data-testid":r,children:[t.map(c=>{const u=c.from??l,d=c.to??u+(c.value??0);return l=d,n.jsx("span",{className:J.bar__segment,title:c.label,style:{insetInlineStart:`${Q(u,s)}%`,inlineSize:`${Q(d,s)-Q(u,s)}%`,backgroundColor:Tn(c.tone)}},c.id)}),i.map(c=>n.jsx("span",{className:h(J.bar__marker,c.tone==="danger"&&J["bar__marker--danger"]),title:c.label,style:{insetInlineStart:`${Q(c.at,s)}%`}},c.id))]})},Cn=_.memo(x(An,"SegmentBar")),En="hanui-legend-zryov",Rn="hanui-legend__item-GGrR-",$n="hanui-legend__swatch-2MkAR",ae={legend:En,legend__item:Rn,legend__swatch:$n},On=e=>e==="muted"?"var(--hanui-text-3)":`var(--hanui-${e})`,Ln=({items:e,className:s,testId:t})=>n.jsx("ul",{className:h(ae.legend,s),"data-testid":t,children:e.map(i=>n.jsxs("li",{className:ae.legend__item,children:[n.jsx("span",{"aria-hidden":!0,className:ae.legend__swatch,style:{backgroundColor:On(i.tone)}}),i.label]},i.id))}),zn=_.memo(x(Ln,"Legend")),In="hanui-list-KSLu5",Dn="hanui-list__row-k7aHp",Mn="hanui-list__term-vsD5B",Pn="hanui-list__value-6GY6z",B={list:In,list__row:Dn,list__term:Mn,list__value:Pn,"list__value--technical":"hanui-list__value--technical-I-UYE"},Kn=({items:e,className:s,testId:t})=>n.jsx("dl",{className:h(B.list,s),"data-testid":t,children:e.map((i,o)=>n.jsxs("div",{className:B.list__row,children:[n.jsx("dt",{className:B.list__term,children:i.term}),n.jsx("dd",{className:h(B.list__value,i.isTechnical&&B["list__value--technical"]),children:i.description})]},o))}),Bn=_.memo(x(Kn,"DescriptionList"));exports.ActionList=vn;exports.ActionListItem=wn;exports.AppBar=mn;exports.ChatMessage=Ve;exports.ChatThread=Ue;exports.Citation=tn;exports.CodeBlock=us;exports.DescriptionList=Bn;exports.Legend=zn;exports.MessageActions=rn;exports.PromptInput=rt;exports.PromptSuggestions=mt;exports.Prose=ft;exports.ReasoningBlock=fs;exports.ReasoningText=ks;exports.SegmentBar=Cn;exports.SourceList=Js;exports.TerminalOutput=Fs;exports.ToolCall=zs;exports.ToolCallSection=Ls;
|
|
3
4
|
//# sourceMappingURL=chat.cjs.map
|