@bothub-chat/ui
Version:
Bothub UI Components
2 lines (1 loc) • 3.05 kB
JavaScript
import{__rest as o}from"tslib";import{jsxs as e,jsx as t,Fragment as r}from"react/jsx-runtime";import l,{forwardRef as i,useRef as s,useCallback as c,useImperativeHandle as n}from"react";import{ButtonStyled as a,ButtonText as m}from"./styled.js";import"../../theme/index.js";import{IconProvider as d}from"../icon/context.js";import"../icon/styled.js";import"@react-spring/web";import"react-markdown";import"react-dom";import"../portal/styled.js";import"../tooltip/styled.js";import"../tooltip/arrow/styled.js";import{useTooltip as p}from"../tooltip/context.js";import{isIconComponent as u}from"../icon/component.js";import{Skeleton as f}from"../skeleton/index.js";import{InfoIcon as b}from"../../icons/info/index.js";import{isBright as h}from"../../utils/colors/isBright.js";import"../../utils/colors/calculateGrayScale.js";import"../../utils/colors/calculateAccentColors.js";import{useTheme as y}from"../../theme/hook.js";const j=i((i,j)=>{var{children:v,fullWidth:k=!1,variant:g="primary",component:$="button",type:x="button",size:w="small",corner:M="brick",startIcon:z=null,endIcon:C=null,iconSize:E,iconFill:F,disabled:I=!1,skeleton:L=!1,color:O,to:S,disableHoverColor:H=!1}=i,W=o(i,["children","fullWidth","variant","component","type","size","corner","startIcon","endIcon","iconSize","iconFill","disabled","skeleton","color","to","disableHoverColor"]);const A=y(),T=s(null),B=l.Children.toArray(v),G=!!l.isValidElement(B[0])&&u(B[0].type);if("number"!=typeof E)if("md"===w)E=20;else E=18;if("string"!=typeof F&&"text"!==g&&"help"!==g)if(I)F=A.colors.grayScale.gray1;else switch(g){case"primary":if("custom"===A.scheme){h(A.colors.accent.primary)&&(F=h(A.colors.custom.interface.text)?"dark"===A.mode?A.colors.base.black:A.default.colors.base.black:A.colors.custom.interface.text),F=h(A.colors.custom.interface.text)?A.colors.custom.interface.text:A.default.colors.base.white;break}F=A.bright?"dark"===A.mode?A.colors.base.black:A.default.colors.base.black:A.default.colors.base.white;break;default:F=A.colors.base.white}const V={size:E,fill:F},{handleTooltipMouseEnter:q,handleTooltipMouseLeave:D}=p(),J=c(o=>{var e;null===(e=W.onMouseEnter)||void 0===e||e.call(W,o),q(o)},[W.onMouseEnter,q]),K=c(o=>{var e;null===(e=W.onMouseLeave)||void 0===e||e.call(W,o),D(o)},[W.onMouseLeave,D]);return n(j,()=>T.current,[T.current]),e(a,Object.assign({},W,{disabled:I,type:x,$variant:g,$icon:G,$size:w,$corner:M,$fullWidth:k,$iconFill:F,$skeleton:L,$disabled:I,$disableHoverColor:H,$color:O,as:$},"button"===$&&{type:x,disabled:I},S&&{to:S},"a"===$&&{href:W.href},"label"===$&&{htmlFor:W.htmlFor},{ref:T,onMouseEnter:J,onMouseLeave:K,children:[z?t(d,Object.assign({},V,{children:z})):null,!L&&e(d,Object.assign({},V,{children:["help"===g&&t(b,{}),"help"!==g&&e(r,{children:["string"==typeof v&&t(m,{$variant:g,$size:w,$disabled:I,children:v}),"string"!=typeof v&&v]})]})),L&&t(f,{width:70,height:17.5,colors:[A.colors.base.white],opacity:[.15,.45]}),C?t(d,Object.assign({},V,{children:C})):null]}))});export{j as Button,a as ButtonStyled,m as ButtonText};