@bothub-chat/ui
Version:
Bothub UI Components
2 lines (1 loc) • 2.1 kB
JavaScript
import{jsx as t,jsxs as e}from"react/jsx-runtime";import{useRef as r,useState as n,useCallback as o,useEffect as i}from"react";import{useTransition as s}from"@react-spring/web";import{HeaderUserInfoStyled as c,HeaderUserInfoHead as l,HeaderUserInfoInfo as a,HeaderUserInfoInfoText as m,HeaderUserInfoName as d,HeaderUserInfoTokens as p,HeaderUserInfoArrow as u,HeaderUserInfoBody as f}from"./styled.js";export{HeaderUserInfoAvatar,HeaderUserInfoList}from"./styled.js";import{HeaderUserInfoProvider as j}from"./context.js";import{useHeaderMenu as h}from"../menu/context.js";import"tslib";import"../../../theme/index.js";import"../../icon/styled.js";import"react-dom";import"../../portal/styled.js";import"../../tooltip/styled.js";import"../../tooltip/arrow/styled.js";import"../../tooltip/context.js";import"./item/styled.js";const y=({avatar:y,name:v,tokens:g,children:w})=>{const{isInMenu:x}=h(),b=r(null),L=r(null),[k,E]=n(0),[I,M]=n(!1),$=o((()=>{let t;t=null!==L.current?L.current.getBoundingClientRect().width:0,E(t),M(!I)}),[I,L]);i((()=>{const t=b.current;if(null!==t){const e=e=>{t.contains(e.target)||M(!1)},r=()=>M(!1);return document.addEventListener("click",e),window.addEventListener("blur",r),()=>{document.removeEventListener("click",e),window.removeEventListener("blur",r)}}}),[]);const O=s(I,x?{}:{from:{opacity:0,transform:"scale(0)"},enter:{opacity:I?1:.5,transform:`scale(${I?1:.999})`,transition:{duration:.15}},leave:{opacity:0,transform:"scale(0.999)"},config:{duration:150}});return t(j,{setIsOpen:M,children:e(c,{ref:b,$inMenu:x,"data-test":"user-info",children:[e(l,{$inMenu:x,ref:L,onClick:$,children:[e(a,{children:[y,e(m,{children:[t(d,{children:v}),t(p,{children:g})]})]}),t(u,{style:{transform:I?"rotateZ(-180deg)":"rotateZ(0)"}})]}),O(((e,r)=>r&&t(f,{$inMenu:x,style:Object.assign(Object.assign({},e),{width:k}),children:w})))]})})};export{y as HeaderUserInfo,u as HeaderUserInfoArrow,f as HeaderUserInfoBody,l as HeaderUserInfoHead,a as HeaderUserInfoInfo,m as HeaderUserInfoInfoText,d as HeaderUserInfoName,c as HeaderUserInfoStyled,p as HeaderUserInfoTokens};