UNPKG

@drivy/cobalt

Version:

Opinionated design system for Drivy's projects.

54 lines (51 loc) 2.27 kB
import { jsx } from 'react/jsx-runtime'; import cx from 'classnames'; import { forwardRef } from 'react'; import Button from '../ButtonComponent.js'; import { getButtonContent, getButtonCommonClassNames } from '../helpers.js'; const getComputedClassName = ({ className, selected, primary, destructive, }) => cx(className, "cob-Button__default", { "cob-Button__default--selected": selected, "cob-Button__default--primary": primary, "cob-Button__default--destructive": destructive, }); const _DefaultButton = forwardRef((props, ref) => { const { children, selected, primary, destructive, icon, iconPosition, className, loading, disabled, rounded, size, fullWidth, ...restButtonProps } = props; const content = getButtonContent({ children, icon, iconPosition }); const isDisabled = disabled || loading; const buttonClassNames = getButtonCommonClassNames({ disabled: isDisabled, rounded, size, fullWidth, className, }); return (jsx(Button, { ...restButtonProps, className: getComputedClassName({ className: buttonClassNames, selected, primary, destructive, }), ref: ref, loading: loading, disabled: isDisabled, children: content })); }); _DefaultButton.displayName = "DefaultButton"; const DefaultLink = forwardRef((props, ref) => { const { children, selected, primary, destructive, icon, iconPosition, className, loading, disabled, rounded, size, fullWidth, ...restLinkProps } = props; const content = getButtonContent({ children, icon, iconPosition }); const isDisabled = disabled || loading; const buttonClassNames = getButtonCommonClassNames({ disabled: isDisabled, rounded, size, fullWidth, className, }); return (jsx(Button.Link, { ...restLinkProps, className: getComputedClassName({ className: buttonClassNames, selected, primary, destructive, }), ref: ref, loading: loading, disabled: isDisabled, children: content })); }); DefaultLink.displayName = "DefaultLink"; const DefaultButton = Object.assign(_DefaultButton, { Link: DefaultLink }); export { DefaultButton as default }; //# sourceMappingURL=index.js.map