UNPKG

@stakefish/ui

Version:

<div align="center"> <a href="https://www.npmjs.com/package/@stakefish/ui"><img src="https://gateway.pinata.cloud/ipfs/QmbZL1ceA8Yiz2pKALTg919jYx141DPUGegC9L4XpyayW5" width="300" /></a> </div>

231 lines (228 loc) 9.3 kB
import { a as __rest, _ as __assign } from '../tslib.es6-35932c2c.js'; import { jsx } from 'react/jsx-runtime'; import { forwardRef } from 'react'; import { styled } from '@mui/material/styles'; import MuiInput from '@mui/material/Input'; import EndAdornment from './EndAdornment.js'; import '@mui/material/useMediaQuery'; import '@mui/material/Box'; import '@mui/material/InputAdornment'; import './Icon.js'; import '../icons/ArrowLeft.js'; import '../icons/ArrowRight.js'; import '../icons/CloseCircle.js'; import '../icons/InfoCircle.js'; import '../icons/ErrorCircle.js'; import '../icons/Attention.js'; import '../icons/HelpCircle.js'; import '../icons/Document.js'; import '../icons/DocumentText.js'; import '../icons/Lock.js'; import '../icons/Delete.js'; import '../icons/Users.js'; import '../icons/Stakefish.js'; import '../icons/Sound.js'; import '../icons/Beacon.js'; import '../icons/TriangleRight.js'; import '../icons/TriangleLeft.js'; import '../icons/TriangleUp.js'; import '../icons/TriangleDown.js'; import '../icons/Sent.js'; import '../icons/Download.js'; import '../icons/Faster.js'; import '../icons/Slower.js'; import '../icons/Usb.js'; import '../icons/Key.js'; import '../icons/Edit.js'; import '../icons/Expand.js'; import '../icons/Collapse.js'; import '../icons/Success.js'; import '../icons/SuccessCircle.js'; import '../icons/Fail.js'; import '../icons/Desktop.js'; import '../icons/Mobile.js'; import '../icons/Loading.js'; import '../icons/Upload.js'; import '../icons/Check.js'; import '../icons/ChevronLeft.js'; import '../icons/ChevronRight.js'; import '../icons/Plus.js'; import '../icons/Minus.js'; import '../icons/Globe.js'; import '../icons/Link.js'; import '../icons/Copy.js'; import '../icons/Medium.js'; import '../icons/Twitter.js'; import '../icons/Telegram.js'; import '../icons/Eth.js'; import '../icons/Sort.js'; import '../icons/Close.js'; import '../icons/DollarSign.js'; import '../icons/Search.js'; import '../icons/Range.js'; import '../icons/Instagram.js'; import '../icons/LinkedIn.js'; import '../icons/Reddit.js'; import '../icons/YouTube.js'; import '../icons/Chrome.js'; import '../icons/CloudConnect.js'; import '../icons/Update.js'; import '../icons/Menu.js'; import '../icons/Settings.js'; import './Button.js'; import '../clsx.m-6243b874.js'; import '@mui/material/Button'; import '../theme/colors.js'; var getFontSize = function (_a) { var size = _a.size, theme = _a.theme; switch (size) { case "xs": return { main: theme.typography.fontSizeXs2, mobile: theme.typography.fontSizeXs3 }; case "sm": return { main: theme.typography.fontSizeXs2, mobile: theme.typography.fontSizeXs3 }; case "md": return { main: theme.typography.fontSizeXs1, mobile: theme.typography.fontSizeXs1 }; case "lg": return { main: theme.typography.fontSizeXl1, mobile: theme.typography.fontSizeS }; } }; var getLineHeight = function (_a) { var size = _a.size, theme = _a.theme; switch (size) { case "xs": return { main: theme.typography.lineHeightXs1, mobile: theme.typography.lineHeightXs3 }; case "sm": return { main: theme.typography.lineHeightXs1, mobile: theme.typography.lineHeightXs3 }; case "md": return { main: theme.typography.lineHeightS, mobile: theme.typography.lineHeightS }; case "lg": return { main: theme.typography.lineHeightL, mobile: theme.typography.lineHeightM }; } }; var getPadding = function (_a) { var size = _a.size, theme = _a.theme, append = _a.$append; switch (size) { case "xs": return { main: theme.spacing(1.5, append ? 0.5 : 2.5, 1.5, 2.5), mobile: theme.spacing(0.75, append ? 0.4 : 1.5, 0.75, 1.5) }; case "sm": return { main: theme.spacing(1.75, append ? 0.75 : 2.5, 1.75, 2.5), mobile: theme.spacing(1, append ? 0.4 : 1.5, 1, 1.5) }; case "md": return { main: theme.spacing(2.125, append ? 1 : 2.5, 2.125, 2.5), mobile: theme.spacing(1.125, append ? 0.4 : 2, 1.125, 2) }; case "lg": return { main: theme.spacing(3, append ? 2 : 4, 3, 4), mobile: theme.spacing(1.375, append ? 0.4 : 2.5, 1.375, 2.5) }; } }; // TODO: Store form control's similar styles somewhere in utils var getRadius = function (_a) { var size = _a.size, theme = _a.theme; switch (size) { case "xs": return { main: theme.borders.radius.sm, mobile: theme.borders.radius.xs1 }; case "sm": return { main: theme.borders.radius.sm, mobile: theme.borders.radius.xs1 }; case "md": return { main: theme.borders.radius.md, mobile: theme.borders.radius.sm }; case "lg": return { main: theme.borders.radius.xl1, mobile: theme.borders.radius.sm }; } }; var formCommonStyles = function (theme) { var _a; return (_a = { caretColor: theme.palette.blue.main, backgroundColor: theme.palette.gray.white, "&.MuiInputBase-colorSecondary": { backgroundColor: theme.palette.gray[100] }, "& input": { height: "auto" }, "&.Mui-focused": { boxShadow: "0 0 0 ".concat(theme.borders.size.primary, "px ").concat(theme.palette.primary.main) }, "&.Mui-error": { boxShadow: "0 0 0 ".concat(theme.borders.size.primary, "px ").concat(theme.palette.negative.main) }, "&.Mui-disabled": { backgroundColor: theme.palette.gray[300] } }, _a[theme.breakpoints.down("sm")] = { "&.Mui-focused": { boxShadow: "0 0 0 ".concat(theme.borders.size.secondary, "px ").concat(theme.palette.primary.main) }, "&.Mui-error": { boxShadow: "0 0 0 ".concat(theme.borders.size.secondary, "px ").concat(theme.palette.negative.main) } }, _a); }; var StyledInput = styled(MuiInput)(function (_a) { var _b; var _c, _d, _e, _f, _g, _h, _j, _k; var theme = _a.theme, props = __rest(_a, ["theme"]); var size = props.size, $append = props.$append; return __assign(__assign({}, formCommonStyles(theme)), (_b = { padding: (_c = getPadding({ size: size, theme: theme, $append: $append })) === null || _c === void 0 ? void 0 : _c.main, fontSize: (_d = getFontSize({ size: size, theme: theme })) === null || _d === void 0 ? void 0 : _d.main, lineHeight: (_e = getLineHeight({ size: size, theme: theme })) === null || _e === void 0 ? void 0 : _e.main, borderRadius: (_f = getRadius({ size: size, theme: theme })) === null || _f === void 0 ? void 0 : _f.main }, _b[theme.breakpoints.down(601)] = { padding: (_g = getPadding({ size: size, theme: theme, $append: $append })) === null || _g === void 0 ? void 0 : _g.mobile, fontSize: (_h = getFontSize({ size: size, theme: theme })) === null || _h === void 0 ? void 0 : _h.mobile, lineHeight: (_j = getLineHeight({ size: size, theme: theme })) === null || _j === void 0 ? void 0 : _j.mobile, borderRadius: (_k = getRadius({ size: size, theme: theme })) === null || _k === void 0 ? void 0 : _k.mobile }, _b)); }); var Input = forwardRef(function (props, ref) { var _a = props.color, color = _a === void 0 ? "primary" : _a, _b = props.size, size = _b === void 0 ? "md" : _b, endAdornment = props.endAdornment, error = props.error, _c = props.overrideErrorAdornment, overrideErrorAdornment = _c === void 0 ? false : _c, actionButtonProps = props.actionButtonProps, rest = __rest(props // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing , ["color", "size", "endAdornment", "error", "overrideErrorAdornment", "actionButtonProps"]); // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing var append = Boolean(endAdornment || actionButtonProps); return (jsx(StyledInput, __assign({ inputRef: ref, color: color, size: size, "$append": append, className: "Input-size-".concat(size), endAdornment: jsx(EndAdornment, { size: size, error: error && !overrideErrorAdornment, endAdornment: overrideErrorAdornment ? endAdornment : undefined, actionButtonProps: actionButtonProps }, void 0) }, rest), void 0)); }); export { Input as default, formCommonStyles, getFontSize, getLineHeight, getPadding, getRadius };