@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.23 kB
JavaScript
import{s as M,x as S,r as $,g as s,p as j,c as v,P as q,u as B,d as f,i as G,a as H,z as g,b as J,S as K,t as N}from"./define-CNSKFZCd.js";import{c as Q}from"./cn-CU7UAWzk.js";import{c as U,u as V,a as W,A as X}from"./overlay-B1-MBI6h.js";var Y=N("<div role=tooltip style=position:fixed;pointer-events:none>");function Z(R){var x;const[n]=M(R,["content","children","class","openDelay","closeDelay","placement","defaultOpen","disabled","controllerRef","dismissOnClick"]),F=S(),b=$(),[i,t]=s(n.defaultOpen??!1),[r,A]=s(),[h,E]=s();(x=n.controllerRef)==null||x.call(n,{open:i,setOpen:e=>t(e&&!n.disabled)});let a,l=!1;const[I,c]=s(!1),[L,u]=s(!1),w=(e=0)=>{n.disabled||(clearTimeout(a),e?a=window.setTimeout(()=>t(!0),e):t(!0))},p=()=>{clearTimeout(a);const e=n.closeDelay??0;e?a=window.setTimeout(()=>t(!1),e):t(!1)},y=()=>{!I()&&!L()&&p()},T=()=>{n.dismissOnClick!==!1&&(c(!1),u(!1),p())};j(()=>clearTimeout(a));const d=U(i),m=V(r,h,{placement:n.placement??"top",gutter:6,onDisconnect:()=>t(!1)});return W({enabled:i,onDismiss:p,refs:()=>[r(),h()]}),[v(X,{as:"span",class:"inline-flex",ref:A,get"aria-describedby"(){return i()?b:void 0},onPointerEnter:()=>{c(!0),w(n.openDelay??600)},onPointerLeave:()=>{c(!1),y()},onPointerDown:()=>{l=!0,T(),window.setTimeout(()=>{l=!1},0)},onClick:T,onFocusIn:()=>{u(!0),l||w()},onFocusOut:e=>{const o=r();o&&o.contains(e.relatedTarget)||(u(!1),y())},get children(){return n.children}}),v(K,{get when(){return d.present()},get children(){return v(q,{get mount(){return F.portalMount()},get children(){var e=Y();return B(o=>{E(o),d.setRef(o)},e),f(e,"id",b),G(e,()=>n.content),H(o=>{var D=d.state()==="open"?"":void 0,O=d.state()==="closed"?"":void 0,z=`${m.pos().x}px`,P=`${m.pos().y}px`,k=m.hidden()?"hidden":"visible",C=Q("z-50 rounded-md bg-foreground px-2.5 py-1 text-xs text-background shadow-md","animate-in fade-in-0 zoom-in-95 data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:zoom-out-95",n.class);return D!==o.e&&f(e,"data-expanded",o.e=D),O!==o.t&&f(e,"data-closed",o.t=O),z!==o.a&&g(e,"left",o.a=z),P!==o.o&&g(e,"top",o.o=P),k!==o.i&&g(e,"visibility",o.i=k),C!==o.n&&J(e,o.n=C),o},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0}),e}})}})]}export{Z as T};