UNPKG

@while-and-for/tremor-react

Version:

The React library to build dashboards faster.

3 lines (2 loc) 2.51 kB
'use client'; import{__rest as t}from"tslib";import e from"react";import{HorizontalPositions as o,Sizes as i}from"../../../lib/constants.js";import{border as n}from"../../../lib/shape.js";import{sizing as r}from"../../../lib/sizing.js";import{spacing as s}from"../../../lib/spacing.js";import{mergeRefs as a,makeClassName as l}from"../../../lib/utils.js";import{tremorTwMerge as m}from"../../../lib/tremorTwMerge.js";import{Transition as c}from"react-transition-group";import d,{useTooltip as p}from"../../util-elements/Tooltip/Tooltip.js";import{iconSizes as g,getButtonColors as f,getButtonProportions as h}from"./styles.js";import u from"../../../assets/LoadingSpinner.js";const b=l("Button"),x=({loading:t,iconSize:i,iconPosition:n,Icon:a,transitionState:l})=>{const c=n===o.Left?m(s.twoXs.negativeMarginLeft,s.xs.marginRight):m(s.twoXs.negativeMarginRight,s.xs.marginLeft),d=m(r.none.width,r.none.height),p={default:d,entering:d,entered:i,exiting:i,exited:d};return t?e.createElement(u,{className:m(b("icon"),"animate-spin shrink-0",c,p.default,p[l]),style:{transition:"width 150ms"}}):e.createElement(a,{className:m(b("icon"),"shrink-0",i,c)})},j=e.forwardRef(((r,s)=>{const{icon:l,iconPosition:u=o.Left,size:j=i.SM,color:w,variant:v="primary",disabled:S,loading:E=!1,loadingText:z,children:C,tooltip:N,className:P}=r,R=t(r,["icon","iconPosition","size","color","variant","disabled","loading","loadingText","children","tooltip","className"]),y=l,T=E||S,k=void 0!==y||E,B=E&&z,L=m(g[j].height,g[j].width),M="light"!==v?m("rounded-tremor-default","shadow-tremor-input","dark:shadow-dark-tremor-input",n.sm.all):"",I=f(v,w),X=h(v)[j],{tooltipProps:O,getReferenceProps:Y}=p(300);return e.createElement(c,{in:E,timeout:50},(t=>e.createElement("button",Object.assign({ref:a([s,O.refs.setReference]),className:m(b("root"),"flex-shrink-0 inline-flex justify-center items-center group font-medium outline-none",M,X.paddingX,X.paddingY,X.fontSize,I.textColor,I.bgColor,I.borderColor,I.hoverBorderColor,T?"opacity-50":m(f(v,w).hoverTextColor,f(v,w).hoverBgColor,f(v,w).hoverBorderColor),P),disabled:T},Y,R),e.createElement(d,Object.assign({text:N},O)),k&&u!==o.Right?e.createElement(x,{loading:E,iconSize:L,iconPosition:u,Icon:y,transitionState:t}):null,e.createElement("span",{className:m(b("text"),"text-sm whitespace-nowrap")},B?z:C),k&&u===o.Right?e.createElement(x,{loading:E,iconSize:L,iconPosition:u,Icon:y,transitionState:t}):null)))}));j.displayName="Button";export{x as ButtonIconOrSpinner,j as default};