UNPKG

@bothub-chat/ui

Version:

Bothub UI Components

2 lines (1 loc) 3.02 kB
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-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,disableHoverColor:S=!1}=i,H=o(i,["children","fullWidth","variant","component","type","size","corner","startIcon","endIcon","iconSize","iconFill","disabled","skeleton","color","disableHoverColor"]);const W=y(),A=s(null),T=l.Children.toArray(v),B=!!l.isValidElement(T[0])&&u(T[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=W.colors.grayScale.gray1;else switch(g){case"primary":if("custom"===W.scheme){h(W.colors.accent.primary)&&(F=h(W.colors.custom.interface.text)?"dark"===W.mode?W.colors.base.black:W.default.colors.base.black:W.colors.custom.interface.text),F=h(W.colors.custom.interface.text)?W.colors.custom.interface.text:W.default.colors.base.white;break}F=W.bright?"dark"===W.mode?W.colors.base.black:W.default.colors.base.black:W.default.colors.base.white;break;default:F=W.colors.base.white}const G={size:E,fill:F},{handleTooltipMouseEnter:V,handleTooltipMouseLeave:q}=p(),D=c((o=>{var e;null===(e=H.onMouseEnter)||void 0===e||e.call(H,o),V(o)}),[H.onMouseEnter,V]),J=c((o=>{var e;null===(e=H.onMouseLeave)||void 0===e||e.call(H,o),q(o)}),[H.onMouseLeave,q]);return n(j,(()=>A.current),[A.current]),e(a,Object.assign({},H,{disabled:I,type:x,$variant:g,$icon:B,$size:w,$corner:M,$fullWidth:k,$iconFill:F,$skeleton:L,$disabled:I,$disableHoverColor:S,$color:O,as:$},"button"===$&&{type:x,disabled:I},"a"===$&&{href:H.href},"label"===$&&{htmlFor:H.htmlFor},{ref:A,onMouseEnter:D,onMouseLeave:J,children:[z?t(d,Object.assign({},G,{children:z})):null,!L&&e(d,Object.assign({},G,{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:[W.colors.base.white],opacity:[.15,.45]}),C?t(d,Object.assign({},G,{children:C})):null]}))}));export{j as Button,a as ButtonStyled,m as ButtonText};