@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.95 kB
JavaScript
import{g as v,p as T,c as i,x,P as C,y as g,u as P,i as k,a as z,G as H,d as f,b as O,S as R,v as $,w as E,t as F,s as A,e as G}from"./define-CNSKFZCd.js";import{c as m}from"./cn-CU7UAWzk.js";import{A as I,c as L,u as M,a as S}from"./overlay-B1-MBI6h.js";var j=F("<div data-hovercard-content class=z-50 style=position:fixed;background:transparent><div>");const h=$(),b=()=>{const t=E(h);if(!t)throw new Error("HoverCard parts must be used within <HoverCardRoot>");return t};function y(t){var e;const[a,n]=v(t.defaultOpen??!1),[l,o]=v(),[c,r]=v();let s;(e=t.controllerRef)==null||e.call(t,{open:a,setOpen:n});const d=()=>{t.disabled||(clearTimeout(s),s=window.setTimeout(()=>n(!0),t.openDelay??0))},u=()=>{clearTimeout(s),s=window.setTimeout(()=>n(!1),t.closeDelay??300)},p=()=>{clearTimeout(s),n(!1)};return T(()=>clearTimeout(s)),i(h.Provider,{value:{open:a,enter:d,leave:u,close:p,setTrigger:o,setContent:r,trigger:l,content:c},get children(){return t.children}})}function w(t){const e=b();return i(I,{as:"span",get class(){return m("inline-block",t.class)},ref(a){var n=e.setTrigger;typeof n=="function"?n(a):e.setTrigger=a},get onPointerEnter(){return e.enter},get onPointerLeave(){return e.leave},get onFocusIn(){return e.enter},get onFocusOut(){return e.leave},get children(){return t.children}})}const K=8;function N(t,e){const a=t.split("-")[0];return{[{bottom:"padding-top",top:"padding-bottom",left:"padding-right",right:"padding-left"}[a]??"padding-top"]:`${e}px`}}function D(t){const e=b(),a=x(),n=L(e.open),l=M(e.trigger,e.content,{placement:t.placement??"bottom",gutter:0,onDisconnect:()=>e.close()});return S({enabled:e.open,onDismiss:()=>e.close(),refs:()=>[e.trigger(),e.content()]}),i(R,{get when(){return n.present()},get children(){return i(C,{get mount(){return a.portalMount()},get children(){var o=j(),c=o.firstChild;return g(o,"focusout",e.leave,!0),g(o,"focusin",e.enter,!0),g(o,"pointerleave",e.leave),g(o,"pointerenter",e.enter),P(r=>{e.setContent(r),n.setRef(r)},o),k(c,()=>t.children),z(r=>{var s={left:`${l.pos().x}px`,top:`${l.pos().y}px`,visibility:l.hidden()?"hidden":"visible",...N(l.pos().placement,K)},d=n.state()==="open"?"":void 0,u=n.state()==="closed"?"":void 0,p=m("rounded-lg bg-card kai-elevation","animate-in fade-in-0 zoom-in-95 data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:zoom-out-95",t.class);return r.e=H(o,s,r.e),d!==r.t&&f(c,"data-expanded",r.t=d),u!==r.a&&f(c,"data-closed",r.a=u),p!==r.o&&O(c,r.o=p),r},{e:void 0,t:void 0,a:void 0,o:void 0}),o}})}})}function U(t){const[e]=A(t,["trigger","children","class","openDelay","closeDelay","placement"]);return i(y,{get openDelay(){return e.openDelay},get closeDelay(){return e.closeDelay},get children(){return[i(w,{get children(){return e.trigger}}),i(D,{get class(){return m("w-64 p-4",e.class)},get placement(){return e.placement},get children(){return e.children}})]}})}G(["focusin","focusout"]);export{U as H,y as a,w as b,D as c};