Chat widget chrome
Vedd saját kézbe az Inbox indítóját és paneljét az src/layout/chat.tsx fájlból a @poltura/theme-sdk/inbox platformelemeivel.
Ezen az oldalon
A webáruház Inbox chat widgetje egy téma chrome, akárcsak a promóciós sáv. A
platform kezeli a munkamenetet, az élő kapcsolatot, az üzenetkézbesítést és a csatolmányokat
a @poltura/theme-sdk/inbox mögött. A téma dönti el,
hogyan rendeződnek el az elemek.
Hol található
Helyezd a widgetet a src/layout/chat.tsx fájlba a fájl alapértelmezett exportjaként. A
webáruház erről az útvonalról csatolja be. E fájl nélkül a platform teljes
widgetje jelenik meg helyette – ugyanaz, amit az <InboxWidget /> is kirajzol. Az alapértelmezett téma
ezt a fájlt tartalmazza:
import {
InboxChatGlyph,
InboxComposer,
InboxConversation,
InboxLauncher,
InboxOfflineForm,
InboxPanel,
InboxPanelHeader,
InboxRoot,
InboxStatusLine,
} from '@poltura/theme-sdk/inbox';
export default function ThemeChatWidget() {
return (
<InboxRoot className='pol-chat'>
<InboxPanel className='pol-chat__panel'>
<InboxPanelHeader className='pol-chat__header' />
<InboxConversation className='pol-chat__conversation' />
<InboxStatusLine className='pol-chat__status' />
<InboxOfflineForm className='pol-chat__offline' />
<InboxComposer className='pol-chat__composer' />
</InboxPanel>
<InboxLauncher className='pol-chat__launcher'>
<InboxChatGlyph />
</InboxLauncher>
</InboxRoot>
);
}Minden elemnek az <InboxRoot> komponensen belül kell megjelennie, amely semmit sem renderel,
ha a boltban nincs bekapcsolva a chat. A useInbox() ebből a contextből olvassa ki a nézetet és a műveleteket.
A panel bodyjaként az InboxConversation komponenst rendereld. Ez jeleníti meg az üzenetlistát,
és ez mutatja a megnyitott súgócikket is a helyén, amint a vásárló kiválaszt egyet. Ha egy elrendezés
közvetlenül az InboxMessageList komponenst rendereli, magának kell átváltania az InboxKnowledgeArticle
komponensre, amíg a view.knowledge.article be van állítva – különben a cikk kiválasztásának nem lesz látható eredménye.
Elemek
| Komponens | Propok | Szerep |
|---|---|---|
InboxRoot | children, className? | Rögzített wrapper, CSS-változók, állapot és context |
InboxWidget | nincs | A teljes widget az alábbi elemekből felépítve |
InboxLauncher | className?, children? | Gomb; a children felülírja az alapértelmezett ikont |
InboxPanel | className?, children | Dialógus (id="poltura-inbox-panel") |
InboxPanelHeader | className?, title?, children? | Kiemelt header: cím, válaszidő / offline állapot, bezárás ikon |
InboxConversation | className?, renderMessage? | Panel bodyja: InboxMessageList vagy a megnyitott cikk a helyén |
InboxMessageList | className?, renderMessage? | Görgethető napló, üres állapot üdvözléssel és súgóval, typing indicator, ugrás a legfrissebbhez |
InboxMessageBubble | message, className? | Alapértelmezett üzenetbuborék |
InboxComposer | className?, placeholder? | Kapszula csatolmánnyal, szöveges mezővel és küldés ikonnal |
InboxOfflineForm | className? | E-mail- és üzenetmezők, amikor view.online === false |
InboxStatusLine | className? | Újracsatlakozási / előnézeti sáv a beviteli mező felett |
InboxChatGlyph | size?, className? | Alapértelmezett indítóikon |
InboxKnowledgeSearch | className?, placeholder? | Debounce-olt súgócikk-kereső (a bolt tudásbázisa) |
InboxKnowledgeArticle | className? | Megnyitott cikk bodyja vissza gombbal |
InboxKnowledgeSuggestions | className?, limit? | Kiemelt cikkek az üdvözlés felett, ha a beszélgetés üres |
A useInbox() a { view, actions } objektumot adja vissza:
- A
view.copytartalmazza a widget szövegezését feloldott formában: először a témachatszövegeit, majd a platforminbox.*üzeneteit. - Az
actions.send,attach,removeAttachmentésretryaz egyedüli chatműveletek, amelyeket a téma meghív. Azactions.open,closeéstogglea panelt vezérli. - A
view.appearancetartalmazza a kereskedő által beállított elhelyezkedést, színmódot és színeket. - A bolt súgócikkei a
view.knowledgealatt találhatók (enabled,query,results,loading,article), azactions.searchKnowledge,openArticleéscloseArticlekíséretében. Azenabledértéke true, ha a bolt rendelkezik legalább egy közzétett cikkel. A cikk a/guides/{category}/{slug}címre mutat, ha az az oldal létezik. Ellenkező esetben a panel beágyazva jeleníti meg a megtisztított bodyját.
A platform widgetje (InboxWidget) az üres beszélgetést egy üdvözlőkártyaként és
egy Súgó szekcióként jeleníti meg: egy keresőmező, majd legfeljebb három javasolt cikk.
Az InboxMessageList rajzolja ki ezt az üres állapotot, ha a súgócikkek be vannak kapcsolva.
Az InboxConversation nyitott cikk esetén a listát az InboxKnowledgeArticle komponensre
cseréli. A „Továbbra is segítségre van szükséged? Küldj üzenetet” bezárja a cikket, és
a beviteli mezőre állítja a fókuszt. A témaszerkesztőben a súgókereső mintaeredményeket ad vissza.
Az indítógomb asztali nézetben nyitott panel mellett is látható marad, de a
640 képpontnál keskenyebb képernyőkön elrejtőzik.
Stabil classok
Formázd újra a src/styles/theme.css fájlból a :where() segítségével, a többi
chrome hookhoz hasonlóan. Lásd: Chrome stabil osztályok.
| Class | Node |
|---|---|
inbox-root | rögzített wrapper (data-poltura-inbox, data-open, data-online, data-connection) |
inbox-launcher | indítógomb (aria-expanded, data-unread) |
inbox-launcher__badge | olvasatlan számláló kapszula az indítón |
inbox-panel | dialógus |
inbox-panel__header | headersor |
inbox-panel__title | header címe |
inbox-panel__status | egysoros válaszidő / offline állapot |
inbox-panel__status-dot | online (zöld) / offline (szürke) pont |
inbox-panel__close | header bezárás ikongombja |
inbox-messages | role="log" |
inbox-greeting | üres beszélgetés üdvözlőkártyája |
inbox-help | üres beszélgetés Súgó szekciója (keresés és javaslatok) |
inbox-help__label | az önálló „Súgó” szekciócímke |
inbox-message-row | wrapper a szerzővel, buborékkal és metaadatokkal; --system a középre zárt rendszerüzenethez |
inbox-message | kizárólag a tényleges buborék; valamint --customer, --staff, --ai |
inbox-message__author | munkatárs / AI nevének sora |
inbox-message__disclosure | AI-tájékoztató sor |
inbox-message__meta | relatív idő és kézbesítési pipák |
inbox-message__time | relatív timestamp |
inbox-message__ticks | kézbesítési szöveg az utolsó vásárlói üzeneten |
inbox-day | opcionális napelválasztó a naplóban |
inbox-typing | hárompontos typing indicator |
inbox-jump | ugrás a legfrissebbhez vezérlő |
inbox-composer | beviteli űrlap |
inbox-composer__input | automatikusan növekvő textarea |
inbox-composer__attach | gémkapocs gomb |
inbox-composer__send | papírrepülő küldés gomb |
inbox-composer__chip | függőben lévő csatolmány chipje |
inbox-status | újracsatlakozási / előnézeti sáv |
inbox-offline | offline rögzítő űrlap |
inbox-offline--success | az offline űrlap sikeres beküldési szövege |
inbox-knowledge-search | súgókereső mező és eredmények |
inbox-knowledge-suggestions | üres beszélgetés cikksorai |
inbox-knowledge-article | megnyitott cikk panelje |
inbox-knowledge-article__body | megtisztított cikk-HTML |
inbox-knowledge-article__back | a cikk visszalépés gombja |
inbox-knowledge-article__cta | „Továbbra is segítségre van szükséged” vezérlő |
A színek CSS-változók a root elemen: --inbox-accent, --inbox-accent-text,
--inbox-bg és --inbox-text.
Beállítások
A téma chat beállításcsoportja (és a sötét mód színeihez tartozó chat_dark)
formázza a widgetet a témaszerkesztőben. Nem ez kapcsolja be a chatet a boltban:
az a bolt saját Inbox-beállítása.
| Beállítás | Mit csinál |
|---|---|
chat.enabled | elrejti az indítógombot, ha false (a chat kiválasztása a témaszerkesztőben így is megnyitja) |
chat.position | right vagy left |
chat.appearance_mode | auto, light, dark |
chat.accent / accent_text / background / text | panel színei |
chat.launcher_label / title / greeting / offline_message | szövegek override-ja |
Ha kiválasztod a chatet a témaszerkesztőben, a panel mintaadatokkal nyílik meg. Ezt
az InboxRoot intézi, így a témakódban semmit sem kell tenned érte.
További lépések
- Chrome stabil osztályok: az override-minta az összes platformelemhez.
- inbox referencia: a
@poltura/theme-sdk/inboxminden exportja.