Chat Thread
Yazma alanının çevresindeki tüm konuşma. Yanıt akarken sorunuz üstte sabitlenir, yandaki kontrol noktaları mesajlar arasında atlar ve her yanıt kopyalanabilir, düzenlenebilir, yeniden denenebilir, puanlanabilir ve sürümler arasında değiştirilebilir. Yanıtlar kod blokları, tablolar ve alıntılarla Markdown olarak render edilir; düşünme, araç çağrıları ve Prompt Input doğrudan yerine oturur.
Chat Thread, yazma alanının çevresindeki konuşmadır: mesajlarınız, modelin yanıtları ve onlarla yapabilecekleriniz. Boş durumunuz ve ortalanmış yazma alanıyla başlar, mesajlar olunca yazma alanını yeniden bağlamadan alta yerleştirir; böylece odak ve taslak metin yerinde kalır.
Az önce gönderdiğiniz mesaj, yanıtı altında akarken en üste çıkar ve siz uzaklaşana kadar görünüm yeni metni izler. Sağdaki kontrol noktaları şeridi, hover'da önizlemeyle mesajlarınız arasında atlamanızı sağlar. Eski geçmiş, görünüm hareket etmeden üstten yüklenir.
Kopyalamak, düzenlemek veya yeniden denemek için bir mesajın üzerine gelin. Düzenlemeler ve yeniden denemeler arasında geçiş yapabileceğiniz sürümlere dönüşür ve hiçbir şey kaybolmaz. Başarısız yanıtlar Try again sunar, durdurulmuş yanıtlar bunu belirtir ve başparmak yukarı ya da aşağı tek tıklamadır. Her yanıtın içine diğer bloklardaki Reasoning, ToolCalls ve Markdown doğrudan yerleşir.
Pro registry'yi components.json dosyasına ekleyin
components.json Token'ınızı ekleyin
Hesap sayfanızda bir token oluşturun ve
.env.localdosyasınaHEXTAUI_PRO_TOKENolarak ekleyin.Bloğu ekleyin
pnpm dlx shadcn@latest add @hextaui-pro/chat-thread
AI SDK ile
useChat mesajlarını thread'e eşleyin. Reasoning parçaları Reasoning'e, araç parçaları ToolCalls'a, metin Markdown'a gider. Son kullanıcı mesajını sabitleyin, Try again için regenerate kullanın ve bir düzenlemeyi o noktadan yeniden gönderin.
Yapı
Dıştan içe doğru birleştirdiğiniz parçalar.
| Parça | Açıklama |
|---|---|
ChatThread | Çerçeve: kaydırıcı, kontrol noktaları, boş durum ve yazma alanı yuvası. |
ChatUserMessage | Mesajınız: ekler, balon, saat, sürümler, kopyalama ve düzenleme. |
ChatAssistantMessage | Bir yanıt. İçine Reasoning, ToolCalls ve Markdown koyun; eylemleri, hata ve durdurulmuş durumlarını ekler. |
ChatDivider | Mesaj grupları arasında etiketli bir çizgi. |
ChatAttachments, ChatAction, ChatCopy, ChatBranchSwitch, ChatEditor | Mesajların kullandığı parçalar, özel düzenler için dışa aktarılır. |
| Prop | Tür | Varsayılan |
|---|---|---|
childrenMesajlar ve ayırıcılar, sırayla. | ReactNode | – |
composerGenellikle Prompt Input. Boşken ortalanır, aksi halde altta yerleşir. | ReactNode | – |
emptyMesaj olmadığında yazma alanının üstünde gösterilir. | ReactNode | – |
busyYanıt akarken konuşmayı yardımcı teknolojiler için meşgul olarak işaretler. | boolean | false |
hasOlderÜstte “Load earlier messages” gösterir. | boolean | false |
loadingOlderO düğmede bir spinner gösterir. false olunca kaydırma konumu geri yüklenir. | boolean | false |
onLoadOlderEski mesajları buraya ekleyin. | () => void | – |
| Prop | Tür | Varsayılan |
|---|---|---|
idKararlı id. Görünüm zıplamasın diye sürümler arasında aynı tutun. | string | – |
textMesaj. Kontrol noktası önizlemesi için de kullanılır. | string | – |
pinBu mesaj göründüğünde onu en üste kaydırır. Yeni gönderilen mesaja ayarlayın. | boolean | false |
files{ id, name, size?, type?, url? }. url içeren görseller küçük resim olarak gösterilir. | ChatFile[] | – |
timeHover'da, okuyucunun yerel ayarında gösterilir. | Date | – |
branchSürüm okları için { index, count, onChange }. | ChatBranch | – |
onEditEdit gösterir. Değiştiyse yeni metinle çağrılır. | (text: string) => void | – |
attachmentsBalonun üstünde özel içerik. | ReactNode | – |
| Prop | Tür | Varsayılan |
|---|---|---|
idKararlı id. | string | – |
childrenReasoning, ToolCalls, Markdown ya da başka herhangi bir şey. | ReactNode | – |
textCopy için düz metin. | string | – |
streamingYanıt bitene kadar eylemleri gizler. | boolean | false |
lastEylemleri hover'da göstermek yerine görünür tutar. | boolean | false |
metaEylem satırının sağ tarafı, örneğin model ve efor. | ReactNode | – |
branchYeniden denemeler için sürüm okları. | ChatBranch | – |
feedbackGeçerli puanlama. | "up" | "down" | null | null |
onFeedbackBaşparmakları gösterir. Bir puanlama geri alındığında null ile çağrılır. | (feedback) => void | – |
onRetryTry again gösterir. | () => void | – |
errorMesajı eylemler yerine Try again ile gösterir. | string | null | – |
stoppedErken durdurulmuş bir yanıtı işaretler. | boolean | false |
| Prop | Tür | Varsayılan |
|---|---|---|
childrenEtiket, örneğin Today veya “Switched to Nova 3 Max”. | ReactNode | – |
| Tuş | Action |
|---|---|
| Tab | Mesajların eylemleri arasında gezinir. Yalnızca hover'da değil, odakta da görünürler. |
| Enter | Düzenlenmiş bir mesajı gönderir. |
| ShiftEnter | Düzenlerken bir satır ekler. |
| Esc | Bir düzenlemeyi iptal eder. |
| ↑↓PgUpPgDn | Odaktayken konuşmayı kaydırır. |
- Konuşma, bir log barındıran etiketli bir bölgedir; böylece yeni mesajlar geldikçe duyurulur ve yanıt akarken bölge meşgul olarak işaretlenir.
- Her simge eyleminin bir etiketi ve tooltip'i vardır. Başparmaklar aria-pressed kullanır, Copy ve geri bildirim polite bir live region ile onaylanır, hatalar role=alert kullanır.
- Kontrol noktaları, “Message 2: …” adlı düğmelerden oluşan bir gezinti işaretidir ve geçerli olanda aria-current bulunur.
- Sürüm okları “Version 1 of 2” adlı bir gruptur.
- Düzenleyici kendine odaklanır, imleç sonda olur ve Cancel'da mesaja döner. Bir giriş yöntemi yazım yaparken Enter bekler.
- Odak halkaları kaydırıcı tarafından asla kesilmez ve eylemler dokunmatik ekranlarda görünür kalır.
Şunlarla geliştirildi
Chat Thread bloğunun yapıldığı ücretsiz HextaUI bileşenleri. Her biri tek başına yüklenir.
Kod
2 dosya, components/blocks/chat-thread konumuna eklendi.