@kitn.ai/ui
Version:
Framework-agnostic, Shadow-DOM web components for building AI chat interfaces — works in React, Vue, Angular, Svelte, or plain HTML. Authored in SolidJS.
2 lines (1 loc) • 2.39 kB
JavaScript
const a=[{name:"header-start",mode:"inject",doc:"Leading header controls, left of the title."},{name:"header-end",mode:"inject",doc:"Trailing header controls."},{name:"header",mode:"replace",part:!0,doc:"Full custom header; replaces the built-in title/model/context bar."},{name:"sidebar",mode:"inject",part:!0,doc:"Left column (your nav / conversation list). Fixed width; use compose-your-own for resizable."},{name:"empty",mode:"replace",doc:"Custom zero-state rendered in the message area while the thread is empty. Replaces the empty message list only \u2014 the composer and any suggestions still render."},{name:"composer",mode:"replace",doc:"Full custom composer; you own submit + loading, drive the thread via messages."},{name:"composer-actions",mode:"inject",doc:"Accessory row above the composer."},{name:"footer",mode:"inject",part:!0,doc:"Row below the composer (disclaimers, token meter)."}],n=[{name:"header",mode:"replace",doc:'Full custom title bar; replaces the built-in toggle / "Chats" / New-chat row.'},{name:"empty",mode:"replace",doc:'Custom zero-state shown when there are no conversations; replaces the built-in "No conversations yet".'},{name:"footer",mode:"inject",doc:"A row below the list \u2014 account, settings, or usage."}],c=[{name:"before-body",mode:"inject",doc:"A per-message header at the TOP of the body, above reasoning/tools/content \u2014 a model-name label, a role + timestamp line."},{name:"after-body",mode:"inject",doc:"A row at the BOTTOM of the body, below the action bar \u2014 a citation/sources row, a token-cost/latency line."},{name:"avatar",mode:"replace",part:!0,doc:'Replaces the built-in avatar rail with your own node. Use `avatar="none"` to omit the rail and let the body span the full row.'}],s=[{name:"sidebar-header",mode:"inject",doc:"Top of the conversation rail (brand, a kai-tabs strip)."},{name:"sidebar-footer",mode:"inject",doc:"Bottom of the rail: an upgrade card, a Design trigger, a user-menu cluster."},{name:"main-header",mode:"inject",doc:"Top of the main region (a top-placed banner or a corner action)."},{name:"main",mode:"replace",doc:"Replace the built-in chat thread with your own main view (a home or dashboard screen). Omit to keep the thread."}];function d(t,r=a){const e={};for(const o of r)e[o.name]=!!t.querySelector(`:scope > [slot="${o.name}"]`);return e}export{a as C,c as M,s as W,n as a,d as r};