@snowball-tech/fractal
Version:
Fractal's (Snowball's design system) React component library based on RadixUI and PandaCSS
3 lines • 2.66 kB
JavaScript
'use client';
import{a as n,c as R}from"./chunk-4ZAWXKKY.js";import{a as E,c as N}from"./chunk-WJB4GYBF.js";import{c as w}from"./chunk-LYTTDLE2.js";import{a as x}from"./chunk-AOLTZ2WJ.js";import{b as t}from"./chunk-CMFNILWJ.js";import{a as d,b as T}from"./chunk-XYM7TA65.js";import{forwardRef as H,useImperativeHandle as S,useRef as I}from"react";import q from"lodash/fp/isEmpty";import m from"lodash/fp/isFunction";import B from"lodash/fp/isString";import v from"lodash/fp/omit";import{Fragment as O,jsx as f,jsxs as C}from"react/jsx-runtime";var F=H(({disabled:s=!1,label:l,onChange:r,triggerProps:e={},variant:i=R,...a},_)=>{let h=I(null),u=I(null);S(_,()=>({get fileInput(){return u?.current??null},get trigger(){return h?.current??null}}));let p=o=>{m(e.onClick)&&e.onClick(o),u.current&&u.current.click()},M=o=>{if(m(e.onTouchStart)){e.onTouchStart(o);return}"ontouchstart"in document.documentElement&&p(o)},c=i==="text",k=T(`${t}-${n}`,`${t}-${n}--${i}`,a.required?`${t}-${n}--required`:"","flex max-h-6 max-w-full items-center justify-center gap-2 rounded-full outline-none transition-colors duration-300 ease-out active:transition-none px-unset appearance-none box-border",c?"":"h-6 px-3 py-1",e.fullWidth&&!e.iconOnly?`${t}-${n}--full-width w-full`:"",s?`${t}-${n}--disabled cursor-not-allowed ${N.light[i]}`:`${E.light[i]} cursor-pointer`,q(e.icon)?"":`${t}-${n}--with-addendum ${t}-${n}--with-addendum-${e.iconPosition}`,e.iconOnly?`${t}-${n}--icon-only w-6`:e.fullWidth?"":"w-fit",a.className),$=f("div",{className:d(`${t}-${n}__icon--${e.iconPosition}`,"flex h-3 w-3 items-center [&>svg]:h-3",c?"mt-0":""),children:e.icon}),L=f(x,{className:d(`${t}-${n}__label`,`${t}-${n}__label--${i}`,"flex max-h-full max-w-full flex-1 items-center justify-center overflow-hidden text-ellipsis whitespace-nowrap text-center align-middle",c?"pt-0":"",a.required?`${t}-${n}__label--required after:text-feedback-danger-50 after:content-required`:""),element:"div",variant:c?"body-1-link":"body-1-median",children:l}),y=!!e.icon,b=B(l)?l:w(l);return C(O,{children:[C("button",{...e.id===void 0?{}:{id:e.id},ref:h,"aria-label":b,className:k,disabled:s,title:b,type:"button",onClick:p,onTouchStart:M,...v(["className","disabled","fullWidth","href","icon","iconOnly","iconPosition","id","label","onTouchStart","target","type","variant"],e),children:[y&&(e.iconPosition||"right")==="left"&&$,!e.iconOnly&&L,y&&(e.iconPosition||"right")==="right"&&$]}),f("input",{ref:u,disabled:s,hidden:!0,type:"file",...m(r)?{onChange:o=>r(o.target.files)}:{},...v(["type"],a)})]})});F.displayName="InputFile";var Y=F;export{F as a,Y as b};
//# sourceMappingURL=chunk-JTAIKEIC.js.map